[U-Boot] [PATCH 1/2] mmc: add HS400 support
Peng Fan
peng.fan at nxp.com
Wed Mar 7 02:12:41 UTC 2018
Hi Simon,
> -----Original Message-----
> From: sjg at google.com [mailto:sjg at google.com] On Behalf Of Simon Glass
> Sent: 2018年3月7日 1:42
> To: Peng Fan <peng.fan at nxp.com>
> Cc: Jaehoon Chung <jh80.chung at samsung.com>; Stefano Babic
> <sbabic at denx.de>; U-Boot Mailing List <u-boot at lists.denx.de>; Jean-Jacques
> Hiblot <jjhiblot at ti.com>; Kishon Vijay Abraham I <kishon at ti.com>; Bin Meng
> <bmeng.cn at gmail.com>
> Subject: Re: [PATCH 1/2] mmc: add HS400 support
>
> Hi Peng,
>
> On 5 March 2018 at 02:11, Peng Fan <peng.fan at nxp.com> wrote:
> > Add HS400 support.
> > Selecting HS400 needs first select HS199 according to spec, so use a
> > dedicated function for HS400.
> > Add HS400 related macros.
> > Remove the restriction of only using the low 6 bits of
> > EXT_CSD_CARD_TYPE, using all the 8 bits.
> >
> > Signed-off-by: Peng Fan <peng.fan at nxp.com>
> > Cc: Jaehoon Chung <jh80.chung at samsung.com>
> > Cc: Jean-Jacques Hiblot <jjhiblot at ti.com>
> > Cc: Stefano Babic <sbabic at denx.de>
> > Cc: Simon Glass <sjg at chromium.org>
> > Cc: Kishon Vijay Abraham I <kishon at ti.com>
> > Cc: Bin Meng <bmeng.cn at gmail.com>
> > ---
> > drivers/mmc/Kconfig | 7 +++
> > drivers/mmc/mmc.c | 133
> ++++++++++++++++++++++++++++++++++++++++++----------
> > include/mmc.h | 12 +++++
> > 3 files changed, 127 insertions(+), 25 deletions(-)
> >
> > diff --git a/drivers/mmc/Kconfig b/drivers/mmc/Kconfig index
> > 5f67e336db..e9be18b333 100644
> > --- a/drivers/mmc/Kconfig
> > +++ b/drivers/mmc/Kconfig
> > @@ -104,6 +104,13 @@ config SPL_MMC_UHS_SUPPORT
> > cards. The IO voltage must be switchable from 3.3v to 1.8v. The
> bus
> > frequency can go up to 208MHz (SDR104)
> >
> > +config MMC_HS400_SUPPORT
> > + bool "enable HS400 support"
> > + select MMC_HS200_SUPPORT
> > + help
> > + The HS400 mode is support by some eMMC. The bus frequency is
> up to
> > + 200MHz. This mode requires tuning the IO.
> > +
> > config MMC_HS200_SUPPORT
> > bool "enable HS200 support"
> > help
> > diff --git a/drivers/mmc/mmc.c b/drivers/mmc/mmc.c index
> > 92ea78b8af..eef229c8b4 100644
> > --- a/drivers/mmc/mmc.c
> > +++ b/drivers/mmc/mmc.c
> > @@ -169,6 +169,7 @@ const char *mmc_mode_name(enum bus_mode
> mode)
> > [MMC_HS_52] = "MMC High Speed (52MHz)",
> > [MMC_DDR_52] = "MMC DDR52 (52MHz)",
> > [MMC_HS_200] = "HS200 (200MHz)",
> > + [MMC_HS_400] = "HS400 (200MHz)",
> > };
> >
> > if (mode >= MMC_MODES_END)
> > @@ -193,6 +194,7 @@ static uint mmc_mode2freq(struct mmc *mmc, enum
> bus_mode mode)
> > [UHS_DDR50] = 50000000,
> > [UHS_SDR104] = 208000000,
> > [MMC_HS_200] = 200000000,
> > + [MMC_HS_400] = 200000000,
> > };
> >
> > if (mode == MMC_LEGACY)
> > @@ -790,6 +792,11 @@ static int mmc_set_card_speed(struct mmc *mmc,
> enum bus_mode mode)
> > case MMC_HS_200:
> > speed_bits = EXT_CSD_TIMING_HS200;
> > break;
> > +#endif
> > +#if CONFIG_IS_ENABLED(MMC_HS400_SUPPORT)
> > + case MMC_HS_400:
> > + speed_bits = EXT_CSD_TIMING_HS400;
> > + break;
> > #endif
> > case MMC_LEGACY:
> > speed_bits = EXT_CSD_TIMING_LEGACY; @@ -837,7
> +844,7
> > @@ static int mmc_get_capabilities(struct mmc *mmc)
> >
> > mmc->card_caps |= MMC_MODE_4BIT | MMC_MODE_8BIT;
> >
> > - cardtype = ext_csd[EXT_CSD_CARD_TYPE] & 0x3f;
> > + cardtype = ext_csd[EXT_CSD_CARD_TYPE];
> > mmc->cardtype = cardtype;
> >
> > #if CONFIG_IS_ENABLED(MMC_HS200_SUPPORT)
> > @@ -845,6 +852,12 @@ static int mmc_get_capabilities(struct mmc *mmc)
> > EXT_CSD_CARD_TYPE_HS200_1_8V)) {
> > mmc->card_caps |= MMC_MODE_HS200;
> > }
> > +#endif
> > +#if CONFIG_IS_ENABLED(MMC_HS400_SUPPORT)
>
> Is it possible to use if () instead of #if
Just want to keep the same code style in the file. How about use a dedicated patch to
cleanup the file after this patch?
Thanks,
Peng.
>
> Regards,
> Simon
More information about the U-Boot
mailing list