Re: [U-Boot] [PATCH V3 1/2] mmc: add HS400 support

2018-08-10 Thread Peng Fan
Hi Marek,

> -Original Message-
> From: Marek Vasut [mailto:marek.va...@gmail.com]
> Sent: 2018年8月9日 15:32
> To: Peng Fan ; Faiz Abbas ;
> jh80.ch...@samsung.com
> Cc: u-boot@lists.denx.de; Kishon Vijay Abraham I 
> Subject: Re: [U-Boot] [PATCH V3 1/2] mmc: add HS400 support
> 
> On 07/24/2018 10:59 AM, Peng Fan wrote:
> [...]
> >>>> Please add SPL_MMC_HS400_SUPPORT also.
> >>>
> >>> What issue do you see? I did not test SPL MMC with HS400 support.
> >>> You mean only add a Kconfig entry SPL_MMC_HS400_SUPPORT?
> >>
> >> Yes only a Kconfig. It helps people who want to include/exclude it
> >> from SPL. You are implicitly checking for the config in
> >> CONFIG_IS_ENABLED(MMC_HS400_SUPPORT) below.
> >>
> >> I was just using your patch for some out of tree development and
> >> figured it would be useful to have the CONFIG.
> >
> > Ok. I'll add it and post out V4 patchset.
> 
> Any news on that V4 , are you planning to post it ?

Just posted out V4. Please help review.

Thanks,
Peng.

> 
> --
> Best regards,
> Marek Vasut
___
U-Boot mailing list
U-Boot@lists.denx.de
https://lists.denx.de/listinfo/u-boot


Re: [U-Boot] [PATCH V3 1/2] mmc: add HS400 support

2018-08-09 Thread Marek Vasut
On 07/24/2018 10:59 AM, Peng Fan wrote:
[...]
 Please add SPL_MMC_HS400_SUPPORT also.
>>>
>>> What issue do you see? I did not test SPL MMC with HS400 support.  You
>>> mean only add a Kconfig entry SPL_MMC_HS400_SUPPORT?
>>
>> Yes only a Kconfig. It helps people who want to include/exclude it from SPL. 
>> You
>> are implicitly checking for the config in
>> CONFIG_IS_ENABLED(MMC_HS400_SUPPORT) below.
>>
>> I was just using your patch for some out of tree development and figured it
>> would be useful to have the CONFIG.
> 
> Ok. I'll add it and post out V4 patchset.

Any news on that V4 , are you planning to post it ?

-- 
Best regards,
Marek Vasut
___
U-Boot mailing list
U-Boot@lists.denx.de
https://lists.denx.de/listinfo/u-boot


Re: [U-Boot] [PATCH V3 1/2] mmc: add HS400 support

2018-07-24 Thread Peng Fan
> 
> On Tuesday 24 July 2018 02:14 PM, Peng Fan wrote:
> > Hi Faiz,
> >
> > It's 2 months since this patchset out (:
> 
> Has it already been accepted?

No. I did not receive response from Jaehoon.

> 
> > drivers/mmc/Kconfig
> >>
> >> On Saturday 19 May 2018 06:24 PM, Peng Fan 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 
> >>> Cc: Jaehoon Chung 
> >>> Cc: Jean-Jacques Hiblot 
> >>> Cc: Stefano Babic 
> >>> Cc: Simon Glass 
> >>> Cc: Kishon Vijay Abraham I 
> >>> Cc: Bin Meng 
> >>> ---
> >>>
> >>> V3:
> >>>  Simplify code
> >>>  add error msg
> >>>
> >>> V2:
> >>>  remove 4bits support from HS400, as HS400 does not support 4bits per
> spec.
> >>>
> >>>  drivers/mmc/Kconfig |   7 +++
> >>>  drivers/mmc/mmc.c   | 137
> >> +---
> >>>  include/mmc.h   |  11 +
> >>>  3 files changed, 128 insertions(+), 27 deletions(-)
> >>>
> >>> diff --git a/drivers/mmc/Kconfig b/drivers/mmc/Kconfig index
> >>> 3f15f85efd..a535a87a8e 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.
> >>> +
> >>
> >> Please add SPL_MMC_HS400_SUPPORT also.
> >
> > What issue do you see? I did not test SPL MMC with HS400 support.  You
> > mean only add a Kconfig entry SPL_MMC_HS400_SUPPORT?
> 
> Yes only a Kconfig. It helps people who want to include/exclude it from SPL. 
> You
> are implicitly checking for the config in
> CONFIG_IS_ENABLED(MMC_HS400_SUPPORT) below.
> 
> I was just using your patch for some out of tree development and figured it
> would be useful to have the CONFIG.

Ok. I'll add it and post out V4 patchset.

Thanks,
Peng

> 
> Thanks,
> Faiz
___
U-Boot mailing list
U-Boot@lists.denx.de
https://lists.denx.de/listinfo/u-boot


Re: [U-Boot] [PATCH V3 1/2] mmc: add HS400 support

2018-07-24 Thread Faiz Abbas
Hi Peng,

On Tuesday 24 July 2018 02:14 PM, Peng Fan wrote:
> Hi Faiz,
> 
> It's 2 months since this patchset out (:

Has it already been accepted?

> drivers/mmc/Kconfig
>>
>> On Saturday 19 May 2018 06:24 PM, Peng Fan 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 
>>> Cc: Jaehoon Chung 
>>> Cc: Jean-Jacques Hiblot 
>>> Cc: Stefano Babic 
>>> Cc: Simon Glass 
>>> Cc: Kishon Vijay Abraham I 
>>> Cc: Bin Meng 
>>> ---
>>>
>>> V3:
>>>  Simplify code
>>>  add error msg
>>>
>>> V2:
>>>  remove 4bits support from HS400, as HS400 does not support 4bits per spec.
>>>
>>>  drivers/mmc/Kconfig |   7 +++
>>>  drivers/mmc/mmc.c   | 137
>> +---
>>>  include/mmc.h   |  11 +
>>>  3 files changed, 128 insertions(+), 27 deletions(-)
>>>
>>> diff --git a/drivers/mmc/Kconfig b/drivers/mmc/Kconfig index
>>> 3f15f85efd..a535a87a8e 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.
>>> +
>>
>> Please add SPL_MMC_HS400_SUPPORT also.
> 
> What issue do you see? I did not test SPL MMC with HS400 support.  You mean 
> only add a Kconfig
> entry SPL_MMC_HS400_SUPPORT?

Yes only a Kconfig. It helps people who want to include/exclude it from
SPL. You are implicitly checking for the config in
CONFIG_IS_ENABLED(MMC_HS400_SUPPORT) below.

I was just using your patch for some out of tree development and figured
it would be useful to have the CONFIG.

Thanks,
Faiz
___
U-Boot mailing list
U-Boot@lists.denx.de
https://lists.denx.de/listinfo/u-boot


Re: [U-Boot] [PATCH V3 1/2] mmc: add HS400 support

2018-07-24 Thread Peng Fan
Hi Faiz,

It's 2 months since this patchset out (:
> 
> On Saturday 19 May 2018 06:24 PM, Peng Fan 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 
> > Cc: Jaehoon Chung 
> > Cc: Jean-Jacques Hiblot 
> > Cc: Stefano Babic 
> > Cc: Simon Glass 
> > Cc: Kishon Vijay Abraham I 
> > Cc: Bin Meng 
> > ---
> >
> > V3:
> >  Simplify code
> >  add error msg
> >
> > V2:
> >  remove 4bits support from HS400, as HS400 does not support 4bits per spec.
> >
> >  drivers/mmc/Kconfig |   7 +++
> >  drivers/mmc/mmc.c   | 137
> +---
> >  include/mmc.h   |  11 +
> >  3 files changed, 128 insertions(+), 27 deletions(-)
> >
> > diff --git a/drivers/mmc/Kconfig b/drivers/mmc/Kconfig index
> > 3f15f85efd..a535a87a8e 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.
> > +
> 
> Please add SPL_MMC_HS400_SUPPORT also.

What issue do you see? I did not test SPL MMC with HS400 support.  You mean 
only add a Kconfig
entry SPL_MMC_HS400_SUPPORT?

Regards,
Peng.

> 
> Thanks,
> Faiz
___
U-Boot mailing list
U-Boot@lists.denx.de
https://lists.denx.de/listinfo/u-boot


Re: [U-Boot] [PATCH V3 1/2] mmc: add HS400 support

2018-07-24 Thread Faiz Abbas
Hi,

On Saturday 19 May 2018 06:24 PM, Peng Fan 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 
> Cc: Jaehoon Chung 
> Cc: Jean-Jacques Hiblot 
> Cc: Stefano Babic 
> Cc: Simon Glass 
> Cc: Kishon Vijay Abraham I 
> Cc: Bin Meng 
> ---
> 
> V3:
>  Simplify code
>  add error msg
> 
> V2:
>  remove 4bits support from HS400, as HS400 does not support 4bits per spec.
> 
>  drivers/mmc/Kconfig |   7 +++
>  drivers/mmc/mmc.c   | 137 
> +---
>  include/mmc.h   |  11 +
>  3 files changed, 128 insertions(+), 27 deletions(-)
> 
> diff --git a/drivers/mmc/Kconfig b/drivers/mmc/Kconfig
> index 3f15f85efd..a535a87a8e 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.
> +

Please add SPL_MMC_HS400_SUPPORT also.

Thanks,
Faiz
___
U-Boot mailing list
U-Boot@lists.denx.de
https://lists.denx.de/listinfo/u-boot


Re: [U-Boot] [PATCH V3 1/2] mmc: add HS400 support

2018-06-12 Thread Marek Vasut
On 06/13/2018 06:38 AM, Peng Fan wrote:
> Hi Marek,
> 
>> -Original Message-
>> From: Marek Vasut [mailto:marek.va...@gmail.com]
>> Sent: 2018年6月13日 12:35
>> To: Peng Fan ; jh80.ch...@samsung.com
>> Cc: Kishon Vijay Abraham I ; u-boot@lists.denx.de
>> Subject: Re: [U-Boot] [PATCH V3 1/2] mmc: add HS400 support
>>
>> On 05/19/2018 02:54 PM, Peng Fan 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 
>>> Cc: Jaehoon Chung 
>>> Cc: Jean-Jacques Hiblot 
>>> Cc: Stefano Babic 
>>> Cc: Simon Glass 
>>> Cc: Kishon Vijay Abraham I 
>>> Cc: Bin Meng 
>>
>> Which controller do you use to test the HS400 ?
> 
> It is i.MX8QXP/QM. The QXP support is in patch reviewing process.

I see. I'll try this on the Renesas Gen3 SDHI controller.

-- 
Best regards,
Marek Vasut
___
U-Boot mailing list
U-Boot@lists.denx.de
https://lists.denx.de/listinfo/u-boot


Re: [U-Boot] [PATCH V3 1/2] mmc: add HS400 support

2018-06-12 Thread Peng Fan
Hi Marek,

> -Original Message-
> From: Marek Vasut [mailto:marek.va...@gmail.com]
> Sent: 2018年6月13日 12:35
> To: Peng Fan ; jh80.ch...@samsung.com
> Cc: Kishon Vijay Abraham I ; u-boot@lists.denx.de
> Subject: Re: [U-Boot] [PATCH V3 1/2] mmc: add HS400 support
> 
> On 05/19/2018 02:54 PM, Peng Fan 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 
> > Cc: Jaehoon Chung 
> > Cc: Jean-Jacques Hiblot 
> > Cc: Stefano Babic 
> > Cc: Simon Glass 
> > Cc: Kishon Vijay Abraham I 
> > Cc: Bin Meng 
> 
> Which controller do you use to test the HS400 ?

It is i.MX8QXP/QM. The QXP support is in patch reviewing process.

-Peng.

> 
> --
> Best regards,
> Marek Vasut
___
U-Boot mailing list
U-Boot@lists.denx.de
https://lists.denx.de/listinfo/u-boot


Re: [U-Boot] [PATCH V3 1/2] mmc: add HS400 support

2018-06-12 Thread Marek Vasut
On 05/19/2018 02:54 PM, Peng Fan 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 
> Cc: Jaehoon Chung 
> Cc: Jean-Jacques Hiblot 
> Cc: Stefano Babic 
> Cc: Simon Glass 
> Cc: Kishon Vijay Abraham I 
> Cc: Bin Meng 

Which controller do you use to test the HS400 ?

-- 
Best regards,
Marek Vasut
___
U-Boot mailing list
U-Boot@lists.denx.de
https://lists.denx.de/listinfo/u-boot


Re: [U-Boot] [PATCH V3 1/2] mmc: add HS400 support

2018-06-12 Thread Marek Vasut
On 05/24/2018 02:23 PM, Peng Fan wrote:
> Hi Fabio,
> 
>> -Original Message-
>> From: Fabio Estevam [mailto:feste...@gmail.com]
>> Sent: 2018年5月19日 22:39
>> To: Peng Fan 
>> Cc: Jaehoon Chung ; Kishon Vijay Abraham I
>> ; U-Boot-Denx 
>> Subject: Re: [U-Boot] [PATCH V3 1/2] mmc: add HS400 support
>>
>> On Sat, May 19, 2018 at 9:54 AM, Peng Fan  wrote:
>>> Add HS400 support.
>>> Selecting HS400 needs first select HS199 according to spec, so use
>>
>> I think you meant HS200 instead?
> Yes HS200, thanks.
> 
> Jaehoon, would you mind help fix the typo if no more comments?

Bump ? This patch would be useful upstream, IMO it looks OK too.
Jaehoon, what is going on ?

-- 
Best regards,
Marek Vasut
___
U-Boot mailing list
U-Boot@lists.denx.de
https://lists.denx.de/listinfo/u-boot


Re: [U-Boot] [PATCH V3 1/2] mmc: add HS400 support

2018-05-24 Thread Peng Fan
Hi Fabio,

> -Original Message-
> From: Fabio Estevam [mailto:feste...@gmail.com]
> Sent: 2018年5月19日 22:39
> To: Peng Fan <peng@nxp.com>
> Cc: Jaehoon Chung <jh80.ch...@samsung.com>; Kishon Vijay Abraham I
> <kis...@ti.com>; U-Boot-Denx <u-boot@lists.denx.de>
> Subject: Re: [U-Boot] [PATCH V3 1/2] mmc: add HS400 support
> 
> On Sat, May 19, 2018 at 9:54 AM, Peng Fan <peng@nxp.com> wrote:
> > Add HS400 support.
> > Selecting HS400 needs first select HS199 according to spec, so use
> 
> I think you meant HS200 instead?
Yes HS200, thanks.

Jaehoon, would you mind help fix the typo if no more comments?

Thanks,
Peng.
___
U-Boot mailing list
U-Boot@lists.denx.de
https://lists.denx.de/listinfo/u-boot


Re: [U-Boot] [PATCH V3 1/2] mmc: add HS400 support

2018-05-19 Thread Fabio Estevam
On Sat, May 19, 2018 at 9:54 AM, Peng Fan  wrote:
> Add HS400 support.
> Selecting HS400 needs first select HS199 according to spec, so use

I think you meant HS200 instead?
___
U-Boot mailing list
U-Boot@lists.denx.de
https://lists.denx.de/listinfo/u-boot


[U-Boot] [PATCH V3 1/2] mmc: add HS400 support

2018-05-19 Thread Peng Fan
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 
Cc: Jaehoon Chung 
Cc: Jean-Jacques Hiblot 
Cc: Stefano Babic 
Cc: Simon Glass 
Cc: Kishon Vijay Abraham I 
Cc: Bin Meng 
---

V3:
 Simplify code
 add error msg

V2:
 remove 4bits support from HS400, as HS400 does not support 4bits per spec.

 drivers/mmc/Kconfig |   7 +++
 drivers/mmc/mmc.c   | 137 +---
 include/mmc.h   |  11 +
 3 files changed, 128 insertions(+), 27 deletions(-)

diff --git a/drivers/mmc/Kconfig b/drivers/mmc/Kconfig
index 3f15f85efd..a535a87a8e 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 f7827f527a..3bb6a68513 100644
--- a/drivers/mmc/mmc.c
+++ b/drivers/mmc/mmc.c
@@ -147,6 +147,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)
@@ -171,6 +172,7 @@ static uint mmc_mode2freq(struct mmc *mmc, enum bus_mode 
mode)
  [UHS_DDR50]   = 5000,
  [UHS_SDR104]  = 20800,
  [MMC_HS_200]  = 2,
+ [MMC_HS_400]  = 2,
};
 
if (mode == MMC_LEGACY)
@@ -769,6 +771,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;
@@ -816,7 +823,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)
@@ -824,6 +831,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)
+   if (cardtype & (EXT_CSD_CARD_TYPE_HS400_1_2V |
+   EXT_CSD_CARD_TYPE_HS400_1_8V)) {
+   mmc->card_caps |= MMC_MODE_HS400;
+   }
 #endif
if (cardtype & EXT_CSD_CARD_TYPE_52) {
if (cardtype & EXT_CSD_CARD_TYPE_DDR_52)
@@ -1734,10 +1747,13 @@ static int mmc_set_lowest_voltage(struct mmc *mmc, enum 
bus_mode mode,
u32 card_mask = 0;
 
switch (mode) {
+   case MMC_HS_400:
case MMC_HS_200:
-   if (mmc->cardtype & EXT_CSD_CARD_TYPE_HS200_1_8V)
+   if (mmc->cardtype & (EXT_CSD_CARD_TYPE_HS200_1_8V |
+   EXT_CSD_CARD_TYPE_HS400_1_8V))
card_mask |= MMC_SIGNAL_VOLTAGE_180;
-   if (mmc->cardtype & EXT_CSD_CARD_TYPE_HS200_1_2V)
+   if (mmc->cardtype & (EXT_CSD_CARD_TYPE_HS200_1_2V |
+   EXT_CSD_CARD_TYPE_HS400_1_2V))
card_mask |= MMC_SIGNAL_VOLTAGE_120;
break;
case MMC_DDR_52:
@@ -1773,6 +1789,13 @@ static inline int mmc_set_lowest_voltage(struct mmc 
*mmc, enum bus_mode mode,
 #endif
 
 static const struct mode_width_tuning mmc_modes_by_pref[] = {
+#if CONFIG_IS_ENABLED(MMC_HS400_SUPPORT)
+   {
+   .mode = MMC_HS_400,
+   .widths = MMC_MODE_8BIT,
+   .tuning = MMC_CMD_SEND_TUNING_BLOCK_HS200
+   },
+#endif
 #if CONFIG_IS_ENABLED(MMC_HS200_SUPPORT)
{
.mode = MMC_HS_200,
@@ -1816,6 +1839,54 @@ static const struct ext_csd_bus_width {
{MMC_MODE_1BIT, false, EXT_CSD_BUS_WIDTH_1},
 };
 
+#if CONFIG_IS_ENABLED(MMC_HS400_SUPPORT)
+static int mmc_select_hs400(struct mmc *mmc)
+{
+   int err;
+
+   /* Set timing to HS200 for tuning */
+   err =