EmbeddedPkg/MmcDxe: Moved all the 'Print*()' functions to MmcDebug.c

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Olivier Martin <olivier.martin@arm.com>



git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@14612 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
Olivier Martin 2013-08-30 11:51:51 +00:00 committed by oliviermartin
parent 55b0a24ad2
commit 4ca3c688a4
5 changed files with 199 additions and 128 deletions

View File

@ -1,7 +1,7 @@
/** @file /** @file
Main file of the MMC Dxe driver. The driver entrypoint is defined into this file. Main file of the MMC Dxe driver. The driver entrypoint is defined into this file.
Copyright (c) 2011, ARM Limited. All rights reserved. Copyright (c) 2011-2013, ARM Limited. All rights reserved.
This program and the accompanying materials This program and the accompanying materials
are licensed and made available under the terms and conditions of the BSD License are licensed and made available under the terms and conditions of the BSD License
@ -14,14 +14,12 @@
**/ **/
#include <Protocol/DevicePath.h> #include <Protocol/DevicePath.h>
#include <Protocol/MmcHost.h>
#include <Library/BaseLib.h> #include <Library/BaseLib.h>
#include <Library/BaseMemoryLib.h> #include <Library/BaseMemoryLib.h>
#include <Library/MemoryAllocationLib.h> #include <Library/MemoryAllocationLib.h>
#include <Library/UefiBootServicesTableLib.h> #include <Library/UefiBootServicesTableLib.h>
#include <Library/DevicePathLib.h> #include <Library/DevicePathLib.h>
#include <Library/DebugLib.h>
#include "Mmc.h" #include "Mmc.h"

View File

@ -1,7 +1,7 @@
/** @file /** @file
Main Header file for the MMC DXE driver Main Header file for the MMC DXE driver
Copyright (c) 2011, ARM Limited. All rights reserved. Copyright (c) 2011-2013, ARM Limited. All rights reserved.
This program and the accompanying materials This program and the accompanying materials
are licensed and made available under the terms and conditions of the BSD License are licensed and made available under the terms and conditions of the BSD License
@ -24,6 +24,7 @@
#include <Protocol/MmcHost.h> #include <Protocol/MmcHost.h>
#include <Library/UefiLib.h> #include <Library/UefiLib.h>
#include <Library/DebugLib.h>
#define MMC_TRACE(txt) DEBUG((EFI_D_BLKIO, "MMC: " txt "\n")) #define MMC_TRACE(txt) DEBUG((EFI_D_BLKIO, "MMC: " txt "\n"))
@ -299,4 +300,29 @@ CheckCardsCallback (
IN VOID *Context IN VOID *Context
); );
VOID
PrintCSD (
IN UINT32* Csd
);
VOID
PrintRCA (
IN UINT32 Rca
);
VOID
PrintOCR (
IN UINT32 Ocr
);
VOID
PrintResponseR1 (
IN UINT32 Response
);
VOID
PrintCID (
IN UINT32* Cid
);
#endif #endif

View File

@ -12,8 +12,6 @@
* *
**/ **/
#include <Protocol/MmcHost.h>
#include <Library/DebugLib.h>
#include <Library/BaseMemoryLib.h> #include <Library/BaseMemoryLib.h>
#include <Library/TimerLib.h> #include <Library/TimerLib.h>
@ -32,126 +30,6 @@ MmcNotifyState (
return MmcHostInstance->MmcHost->NotifyState (MmcHostInstance->MmcHost, State); return MmcHostInstance->MmcHost->NotifyState (MmcHostInstance->MmcHost, State);
} }
VOID
PrintOCR (
IN UINT32 Ocr
)
{
UINTN MinV;
UINTN MaxV;
UINTN Volts;
UINTN Loop;
MinV = 36; // 3.6
MaxV = 20; // 2.0
Volts = 20; // 2.0
// The MMC register bits [23:8] indicate the working range of the card
for (Loop = 8; Loop < 24; Loop++) {
if (Ocr & (1 << Loop)) {
if (MinV > Volts) MinV = Volts;
if (MaxV < Volts) MaxV = Volts + 1;
}
Volts = Volts + 1;
}
DEBUG ((EFI_D_ERROR, "- PrintOCR Ocr (0x%X)\n",Ocr));
DEBUG ((EFI_D_ERROR, "\t- Card operating voltage: %d.%d to %d.%d\n", MinV/10, MinV % 10, MaxV/10, MaxV % 10));
if (((Ocr >> 29) & 3) == 0) {
DEBUG ((EFI_D_ERROR, "\t- AccessMode: Byte Mode\n"));
} else {
DEBUG ((EFI_D_ERROR, "\t- AccessMode: Block Mode (0x%X)\n", ((Ocr >> 29) & 3)));
}
if (Ocr & MMC_OCR_POWERUP) {
DEBUG ((EFI_D_ERROR, "\t- PowerUp\n"));
} else {
DEBUG ((EFI_D_ERROR, "\t- Voltage Not Supported\n"));
}
}
VOID PrintCID (
IN UINT32* Cid
)
{
DEBUG ((EFI_D_ERROR, "- PrintCID\n"));
DEBUG ((EFI_D_ERROR, "\t- Manufacturing date: %d/%d\n", (Cid[0] >> 8) & 0xF, (Cid[0] >> 12) & 0xFF));
DEBUG ((EFI_D_ERROR, "\t- Product serial number: 0x%X%X\n", Cid[1] & 0xFFFFFF, (Cid[0] >> 24) & 0xFF));
DEBUG ((EFI_D_ERROR, "\t- Product revision: %d\n", Cid[1] >> 24));
//DEBUG ((EFI_D_ERROR, "\t- Product name: %s\n", (char*)(Cid + 2)));
DEBUG ((EFI_D_ERROR, "\t- OEM ID: %c%c\n", (Cid[3] >> 8) & 0xFF, (Cid[3] >> 16) & 0xFF));
}
#if !defined(MDEPKG_NDEBUG)
CONST CHAR8* mStrUnit[] = { "100kbit/s", "1Mbit/s", "10Mbit/s", "100MBit/s",
"Unknown", "Unknown", "Unknown", "Unknown" };
CONST CHAR8* mStrValue[] = { "1.0", "1.2", "1.3", "1.5", "2.0", "2.5", "3.0", "3.5", "4.0", "4.5", "5.0",
"Unknown", "Unknown", "Unknown", "Unknown" };
#endif
VOID
PrintCSD (
IN UINT32* Csd
)
{
UINTN Value;
if (((Csd[2] >> 30) & 0x3) == 0) {
DEBUG ((EFI_D_ERROR, "- PrintCSD Version 1.01-1.10/Version 2.00/Standard Capacity\n"));
} else if (((Csd[2] >> 30) & 0x3) == 1) {
DEBUG ((EFI_D_ERROR, "- PrintCSD Version 2.00/High Capacity\n"));
} else {
DEBUG ((EFI_D_ERROR, "- PrintCSD Version Higher than v3.3\n"));
}
DEBUG ((EFI_D_ERROR, "\t- Supported card command class: 0x%X\n", MMC_CSD_GET_CCC(Csd)));
DEBUG ((EFI_D_ERROR, "\t- Speed: %a %a\n",mStrValue[(MMC_CSD_GET_TRANSPEED(Csd) >> 3) & 0xF],mStrUnit[MMC_CSD_GET_TRANSPEED(Csd) & 7]));
DEBUG ((EFI_D_ERROR, "\t- Maximum Read Data Block: %d\n",2 << (MMC_CSD_GET_READBLLEN(Csd)-1)));
DEBUG ((EFI_D_ERROR, "\t- Maximum Write Data Block: %d\n",2 << (MMC_CSD_GET_WRITEBLLEN(Csd)-1)));
if (!MMC_CSD_GET_FILEFORMATGRP (Csd)) {
Value = MMC_CSD_GET_FILEFORMAT (Csd);
if (Value == 0) DEBUG ((EFI_D_ERROR, "\t- Format (0): Hard disk-like file system with partition table\n"));
else if (Value == 1) DEBUG ((EFI_D_ERROR, "\t- Format (1): DOS FAT (floppy-like) with boot sector only (no partition table)\n"));
else if (Value == 2) DEBUG ((EFI_D_ERROR, "\t- Format (2): Universal File Format\n"));
else DEBUG ((EFI_D_ERROR, "\t- Format (3): Others/Unknown\n"));
} else {
DEBUG ((EFI_D_ERROR, "\t- Format: Reserved\n"));
}
}
VOID
PrintRCA (
IN UINT32 Rca
)
{
DEBUG ((EFI_D_ERROR, "- PrintRCA: 0x%X\n", Rca));
DEBUG ((EFI_D_ERROR, "\t- Status: 0x%X\n", Rca & 0xFFFF));
DEBUG ((EFI_D_ERROR, "\t- RCA: 0x%X\n", (Rca >> 16) & 0xFFFF));
}
VOID
PrintResponseR1 (
IN UINT32 Response
)
{
DEBUG ((EFI_D_INFO, "Response: 0x%X\n", Response));
if (Response & MMC_R0_READY_FOR_DATA) {
DEBUG ((EFI_D_INFO, "\t- READY_FOR_DATA\n"));
}
if (((Response >> 9) & 0xF) == 0) DEBUG ((EFI_D_INFO, "\t- State: Idle\n"));
else if (((Response >> 9) & 0xF) == 1) DEBUG ((EFI_D_INFO, "\t- State: Ready\n"));
else if (((Response >> 9) & 0xF) == 2) DEBUG ((EFI_D_INFO, "\t- State: Ident\n"));
else if (((Response >> 9) & 0xF) == 3) DEBUG ((EFI_D_INFO, "\t- State: StandBy\n"));
else if (((Response >> 9) & 0xF) == 4) DEBUG ((EFI_D_INFO, "\t- State: Tran\n"));
else if (((Response >> 9) & 0xF) == 5) DEBUG ((EFI_D_INFO, "\t- State: Data\n"));
else if (((Response >> 9) & 0xF) == 6) DEBUG ((EFI_D_INFO, "\t- State: Rcv\n"));
else if (((Response >> 9) & 0xF) == 7) DEBUG ((EFI_D_INFO, "\t- State: Prg\n"));
else if (((Response >> 9) & 0xF) == 8) DEBUG ((EFI_D_INFO, "\t- State: Dis\n"));
else DEBUG ((EFI_D_INFO, "\t- State: Reserved\n"));
}
EFI_STATUS EFI_STATUS
EFIAPI EFIAPI
MmcGetCardStatus ( MmcGetCardStatus (

View File

@ -0,0 +1,168 @@
/** @file
*
* Copyright (c) 2011-2013, ARM Limited. All rights reserved.
*
* This program and the accompanying materials
* are licensed and made available under the terms and conditions of the BSD License
* which accompanies this distribution. The full text of the license may be found at
* http://opensource.org/licenses/bsd-license.php
*
* THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
* WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
*
**/
#include "Mmc.h"
#if !defined(MDEPKG_NDEBUG)
CONST CHAR8* mStrUnit[] = { "100kbit/s", "1Mbit/s", "10Mbit/s", "100MBit/s",
"Unknown", "Unknown", "Unknown", "Unknown" };
CONST CHAR8* mStrValue[] = { "1.0", "1.2", "1.3", "1.5", "2.0", "2.5", "3.0", "3.5", "4.0", "4.5", "5.0",
"Unknown", "Unknown", "Unknown", "Unknown" };
#endif
VOID
PrintCID (
IN UINT32* Cid
)
{
DEBUG ((EFI_D_ERROR, "- PrintCID\n"));
DEBUG ((EFI_D_ERROR, "\t- Manufacturing date: %d/%d\n", (Cid[0] >> 8) & 0xF, (Cid[0] >> 12) & 0xFF));
DEBUG ((EFI_D_ERROR, "\t- Product serial number: 0x%X%X\n", Cid[1] & 0xFFFFFF, (Cid[0] >> 24) & 0xFF));
DEBUG ((EFI_D_ERROR, "\t- Product revision: %d\n", Cid[1] >> 24));
//DEBUG ((EFI_D_ERROR, "\t- Product name: %s\n", (char*)(Cid + 2)));
DEBUG ((EFI_D_ERROR, "\t- OEM ID: %c%c\n", (Cid[3] >> 8) & 0xFF, (Cid[3] >> 16) & 0xFF));
}
VOID
PrintCSD (
IN UINT32* Csd
)
{
UINTN Value;
if (((Csd[2] >> 30) & 0x3) == 0) {
DEBUG ((EFI_D_ERROR, "- PrintCSD Version 1.01-1.10/Version 2.00/Standard Capacity\n"));
} else if (((Csd[2] >> 30) & 0x3) == 1) {
DEBUG ((EFI_D_ERROR, "- PrintCSD Version 2.00/High Capacity\n"));
} else {
DEBUG ((EFI_D_ERROR, "- PrintCSD Version Higher than v3.3\n"));
}
DEBUG ((EFI_D_ERROR, "\t- Supported card command class: 0x%X\n", MMC_CSD_GET_CCC (Csd)));
DEBUG ((EFI_D_ERROR, "\t- Speed: %a %a\n",mStrValue[(MMC_CSD_GET_TRANSPEED (Csd) >> 3) & 0xF],mStrUnit[MMC_CSD_GET_TRANSPEED (Csd) & 7]));
DEBUG ((EFI_D_ERROR, "\t- Maximum Read Data Block: %d\n",2 << (MMC_CSD_GET_READBLLEN (Csd)-1)));
DEBUG ((EFI_D_ERROR, "\t- Maximum Write Data Block: %d\n",2 << (MMC_CSD_GET_WRITEBLLEN (Csd)-1)));
if (!MMC_CSD_GET_FILEFORMATGRP (Csd)) {
Value = MMC_CSD_GET_FILEFORMAT (Csd);
if (Value == 0) {
DEBUG ((EFI_D_ERROR, "\t- Format (0): Hard disk-like file system with partition table\n"));
} else if (Value == 1) {
DEBUG ((EFI_D_ERROR, "\t- Format (1): DOS FAT (floppy-like) with boot sector only (no partition table)\n"));
} else if (Value == 2) {
DEBUG ((EFI_D_ERROR, "\t- Format (2): Universal File Format\n"));
} else {
DEBUG ((EFI_D_ERROR, "\t- Format (3): Others/Unknown\n"));
}
} else {
DEBUG ((EFI_D_ERROR, "\t- Format: Reserved\n"));
}
}
VOID
PrintRCA (
IN UINT32 Rca
)
{
DEBUG ((EFI_D_ERROR, "- PrintRCA: 0x%X\n", Rca));
DEBUG ((EFI_D_ERROR, "\t- Status: 0x%X\n", Rca & 0xFFFF));
DEBUG ((EFI_D_ERROR, "\t- RCA: 0x%X\n", (Rca >> 16) & 0xFFFF));
}
VOID
PrintOCR (
IN UINT32 Ocr
)
{
UINTN MinV;
UINTN MaxV;
UINTN Volts;
UINTN Loop;
MinV = 36; // 3.6
MaxV = 20; // 2.0
Volts = 20; // 2.0
// The MMC register bits [23:8] indicate the working range of the card
for (Loop = 8; Loop < 24; Loop++) {
if (Ocr & (1 << Loop)) {
if (MinV > Volts) {
MinV = Volts;
}
if (MaxV < Volts) {
MaxV = Volts + 1;
}
}
Volts++;
}
DEBUG ((EFI_D_ERROR, "- PrintOCR Ocr (0x%X)\n",Ocr));
DEBUG ((EFI_D_ERROR, "\t- Card operating voltage: %d.%d to %d.%d\n", MinV/10, MinV % 10, MaxV/10, MaxV % 10));
if (((Ocr >> 29) & 3) == 0) {
DEBUG ((EFI_D_ERROR, "\t- AccessMode: Byte Mode\n"));
} else {
DEBUG ((EFI_D_ERROR, "\t- AccessMode: Block Mode (0x%X)\n", ((Ocr >> 29) & 3)));
}
if (Ocr & MMC_OCR_POWERUP) {
DEBUG ((EFI_D_ERROR, "\t- PowerUp\n"));
} else {
DEBUG ((EFI_D_ERROR, "\t- Voltage Not Supported\n"));
}
}
VOID
PrintResponseR1 (
IN UINT32 Response
)
{
DEBUG ((EFI_D_INFO, "Response: 0x%X\n", Response));
if (Response & MMC_R0_READY_FOR_DATA) {
DEBUG ((EFI_D_INFO, "\t- READY_FOR_DATA\n"));
}
switch ((Response >> 9) & 0xF) {
case 0:
DEBUG ((EFI_D_INFO, "\t- State: Idle\n"));
break;
case 1:
DEBUG ((EFI_D_INFO, "\t- State: Ready\n"));
break;
case 2:
DEBUG ((EFI_D_INFO, "\t- State: Ident\n"));
break;
case 3:
DEBUG ((EFI_D_INFO, "\t- State: StandBy\n"));
break;
case 4:
DEBUG ((EFI_D_INFO, "\t- State: Tran\n"));
break;
case 5:
DEBUG ((EFI_D_INFO, "\t- State: Data\n"));
break;
case 6:
DEBUG ((EFI_D_INFO, "\t- State: Rcv\n"));
break;
case 7:
DEBUG ((EFI_D_INFO, "\t- State: Prg\n"));
break;
case 8:
DEBUG ((EFI_D_INFO, "\t- State: Dis\n"));
break;
default:
DEBUG ((EFI_D_INFO, "\t- State: Reserved\n"));
break;
}
}

View File

@ -1,7 +1,7 @@
#/** @file #/** @file
# Build file for the MMC DXE driver # Build file for the MMC DXE driver
# #
# Copyright (c) 2011, ARM Limited. All rights reserved. # Copyright (c) 2011-2013, ARM Limited. All rights reserved.
# #
# This program and the accompanying materials # This program and the accompanying materials
# are licensed and made available under the terms and conditions of the BSD License # are licensed and made available under the terms and conditions of the BSD License
@ -26,6 +26,7 @@
ComponentName.c ComponentName.c
Mmc.c Mmc.c
MmcBlockIo.c MmcBlockIo.c
MmcDebug.c
Diagnostics.c Diagnostics.c
[Packages] [Packages]