From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jaehoon Chung Date: Mon, 03 Sep 2012 14:32:38 +0900 Subject: [U-Boot] [U-BOOT][PATCH] mmc: support the revision check for eMMC4.5 In-Reply-To: <201209010815.27149.marek.vasut@gmail.com> References: <4F716935.4070709@samsung.com> <201209010815.27149.marek.vasut@gmail.com> Message-ID: <504440F6.7020108@samsung.com> List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: u-boot@lists.denx.de Hi Marek, I will resend this patch with Andy's comment. If you have any other opinion, let me know plz. Best Regards, Jaehoon Chung On 09/01/2012 03:15 PM, Marek Vasut wrote: > Dear Jae hoon Chung, > >> Hi, >> >> Anybody think about this patch? >> mmcinfo is produce correctly? >> >> if i miss something, let me know, plz. > > Andy? > >> Best Regards, >> Jaehoon Chung >> >> 2012/3/27 Jaehoon Chung : >>> eMMC card is introduced the eMMC4.5. >>> But now eMMC card is checked up to eMMC4.0. >>> This patch is supported until eMMC4.5 >>> >>> Signed-off-by: Jaehoon Chung >>> Signed-off-by: Kyungmin Park >>> --- >>> common/cmd_mmc.c | 5 ++++- >>> drivers/mmc/mmc.c | 25 +++++++++++++++++++++++++ >>> include/mmc.h | 8 ++++++++ >>> 3 files changed, 37 insertions(+), 1 deletions(-) >>> >>> diff --git a/common/cmd_mmc.c b/common/cmd_mmc.c >>> index 8f13c22..ff150ca 100644 >>> --- a/common/cmd_mmc.c >>> +++ b/common/cmd_mmc.c >>> @@ -106,7 +106,10 @@ static void print_mmcinfo(struct mmc *mmc) >>> printf("Rd Block Len: %d\n", mmc->read_bl_len); >>> >>> printf("%s version %d.%d\n", IS_SD(mmc) ? "SD" : "MMC", >>> - (mmc->version >> 4) & 0xf, mmc->version & 0xf); >>> + (mmc->version >> 4) & 0xf, >>> + (mmc->version & 0xf) == EXT_CSD_REV_1_5 ? >>> + 41 :((mmc->version & 0xf) > EXT_CSD_REV_1_5 ? >>> + (mmc->version & 0xf) - 1 : (mmc->version & >>> 0xf))); >>> >>> printf("High Capacity: %s\n", mmc->high_capacity ? "Yes" : "No"); >>> puts("Capacity: "); >>> diff --git a/drivers/mmc/mmc.c b/drivers/mmc/mmc.c >>> index 49c3349..e035012 100644 >>> --- a/drivers/mmc/mmc.c >>> +++ b/drivers/mmc/mmc.c >>> @@ -651,6 +651,31 @@ int mmc_change_freq(struct mmc *mmc) >>> if (err) >>> return err; >>> >>> + switch (ext_csd[EXT_CSD_REV]) { >>> + case EXT_CSD_REV_1_0: >>> + mmc->version |= EXT_CSD_REV_1_0; >>> + break; >>> + case EXT_CSD_REV_1_1: >>> + mmc->version |= EXT_CSD_REV_1_1; >>> + break; >>> + case EXT_CSD_REV_1_2: >>> + mmc->version |= EXT_CSD_REV_1_2; >>> + break; >>> + case EXT_CSD_REV_1_3: >>> + mmc->version |= EXT_CSD_REV_1_3; >>> + break; >>> + case EXT_CSD_REV_1_5: >>> + mmc->version |= EXT_CSD_REV_1_5; >>> + break; >>> + case EXT_CSD_REV_1_6: >>> + mmc->version |= EXT_CSD_REV_1_6; >>> + break; >>> + case EXT_CSD_REV_1_4: >>> + default: >>> + printf("Unknown revision - %x\n", ext_csd[EXT_CSD_REV]); >>> + return 0; >>> + } >>> + >>> /* No high-speed support */ >>> if (!ext_csd[EXT_CSD_HS_TIMING]) >>> return 0; >>> diff --git a/include/mmc.h b/include/mmc.h >>> index 30c2375..726da99 100644 >>> --- a/include/mmc.h >>> +++ b/include/mmc.h >>> @@ -157,6 +157,14 @@ >>> #define EXT_CSD_SEC_CNT 212 /* RO, 4 bytes */ >>> #define EXT_CSD_HC_ERASE_GRP_SIZE 224 /* RO */ >>> >>> +#define EXT_CSD_REV_1_0 0 >>> +#define EXT_CSD_REV_1_1 1 >>> +#define EXT_CSD_REV_1_2 2 >>> +#define EXT_CSD_REV_1_3 3 >>> +#define EXT_CSD_REV_1_4 4 >>> +#define EXT_CSD_REV_1_5 5 >>> +#define EXT_CSD_REV_1_6 6 >>> + >>> /* >>> * EXT_CSD field definitions >>> */ >>> -- >>> 1.7.4.1 >>> _______________________________________________ >>> U-Boot mailing list >>> U-Boot at lists.denx.de >>> http://lists.denx.de/mailman/listinfo/u-boot >> >> _______________________________________________ >> U-Boot mailing list >> U-Boot at lists.denx.de >> http://lists.denx.de/mailman/listinfo/u-boot >