EmbeddedPkg: MmcDxe: move ECSD into CardInfo structure
authorHaojian Zhuang <haojian.zhuang@linaro.org>
Sun, 13 Nov 2016 06:47:51 +0000 (14:47 +0800)
committerLeif Lindholm <leif.lindholm@linaro.org>
Mon, 14 Nov 2016 15:45:23 +0000 (15:45 +0000)
Since ECSD also describes the information of card, move it into
structure CardInfo.

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Haojian Zhuang <haojian.zhuang@linaro.org>
Tested-by: Ryan Harkin <ryan.harkin@linaro.org>
Reviewed-by: Leif Lindholm <leif.lindholm@linaro.org>
EmbeddedPkg/Universal/MmcDxe/Mmc.h
EmbeddedPkg/Universal/MmcDxe/MmcIdentification.c

index 46a156c..f4e0aa0 100644 (file)
@@ -138,6 +138,7 @@ typedef struct  {
   OCR       OCRData;\r
   CID       CIDData;\r
   CSD       CSDData;\r
+  UINT32    ECSD[128];      // MMC V4 extended card specific\r
 } CARD_INFO;\r
 \r
 typedef struct _MMC_HOST_INSTANCE {\r
index 0b0a044..3531fb4 100644 (file)
@@ -39,7 +39,6 @@ EmmcIdentificationMode (
   EFI_BLOCK_IO_MEDIA    *Media;\r
   EFI_STATUS Status;\r
   UINT32     RCA;\r
-  UINT32     ECSD[128];\r
 \r
   Host  = MmcHostInstance->MmcHost;\r
   Media = MmcHostInstance->BlockIo.Media;\r
@@ -91,7 +90,7 @@ EmmcIdentificationMode (
     DEBUG ((EFI_D_ERROR, "EmmcIdentificationMode(): ECSD fetch error, Status=%r.\n", Status));\r
   }\r
 \r
-  Status = Host->ReadBlockData (Host, 0, 512, ECSD);\r
+  Status = Host->ReadBlockData (Host, 0, 512, (UINT32 *)&(MmcHostInstance->CardInfo.ECSD));\r
   if (EFI_ERROR (Status)) {\r
     DEBUG ((EFI_D_ERROR, "EmmcIdentificationMode(): ECSD read error, Status=%r.\n", Status));\r
     return Status;\r
@@ -104,7 +103,7 @@ EmmcIdentificationMode (
   Media->LogicalBlocksPerPhysicalBlock = 1;\r
   Media->IoAlign = 4;\r
   // Compute last block using bits [215:212] of the ECSD\r
-  Media->LastBlock = ECSD[EMMC_ECSD_SIZE_OFFSET] - 1; // eMMC isn't supposed to report this for\r
+  Media->LastBlock = MmcHostInstance->CardInfo.ECSD[EMMC_ECSD_SIZE_OFFSET] - 1; // eMMC isn't supposed to report this for\r
   // Cards <2GB in size, but the model does.\r
 \r
   // Setup card type\r