public inbox for devel@edk2.groups.io
 help / color / mirror / Atom feed
* [PATCH] EmbeddedPkg/MmcDxe: Add non-DDR timing mode support
@ 2017-06-08  8:12 Jun Nie
  2017-06-08  8:39 ` Haojian Zhuang
  2017-06-08 16:51 ` Leif Lindholm
  0 siblings, 2 replies; 5+ messages in thread
From: Jun Nie @ 2017-06-08  8:12 UTC (permalink / raw)
  To: olivier.martin, haojian.zhuang, edk2-devel; +Cc: shawn.guo, jason.liu, Jun Nie

Only DDR mode is support for 8bit mode currently. Add
non-DDR case when configuring ECSD.

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Jun Nie <jun.nie@linaro.org>
---
 EmbeddedPkg/Universal/MmcDxe/MmcIdentification.c | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/EmbeddedPkg/Universal/MmcDxe/MmcIdentification.c b/EmbeddedPkg/Universal/MmcDxe/MmcIdentification.c
index 574a77e..5c0d7e7 100644
--- a/EmbeddedPkg/Universal/MmcDxe/MmcIdentification.c
+++ b/EmbeddedPkg/Universal/MmcDxe/MmcIdentification.c
@@ -286,7 +286,10 @@ InitializeEmmcDevice (
     }
     Status = Host->SetIos (Host, BusClockFreq, 8, TimingMode[Idx]);
     if (!EFI_ERROR (Status)) {
-      Status = EmmcSetEXTCSD (MmcHostInstance, EXTCSD_BUS_WIDTH, EMMC_BUS_WIDTH_DDR_8BIT);
+      if (Idx < 2)
+        Status = EmmcSetEXTCSD (MmcHostInstance, EXTCSD_BUS_WIDTH, EMMC_BUS_WIDTH_DDR_8BIT);
+      else
+        Status = EmmcSetEXTCSD (MmcHostInstance, EXTCSD_BUS_WIDTH, EMMC_BUS_WIDTH_8BIT);
       if (EFI_ERROR (Status)) {
         DEBUG ((DEBUG_ERROR, "InitializeEmmcDevice(): Failed to set EXTCSD bus width, Status:%r\n", Status));
       }
-- 
1.9.1



^ permalink raw reply related	[flat|nested] 5+ messages in thread

* Re: [PATCH] EmbeddedPkg/MmcDxe: Add non-DDR timing mode support
  2017-06-08  8:12 [PATCH] EmbeddedPkg/MmcDxe: Add non-DDR timing mode support Jun Nie
@ 2017-06-08  8:39 ` Haojian Zhuang
  2017-06-08 16:55   ` Leif Lindholm
  2017-06-08 16:51 ` Leif Lindholm
  1 sibling, 1 reply; 5+ messages in thread
From: Haojian Zhuang @ 2017-06-08  8:39 UTC (permalink / raw)
  To: Jun Nie, olivier.martin, edk2-devel; +Cc: shawn.guo, jason.liu

On 2017/6/8 16:12, Jun Nie wrote:
> Only DDR mode is support for 8bit mode currently. Add
> non-DDR case when configuring ECSD.
> 
> Contributed-under: TianoCore Contribution Agreement 1.0
> Signed-off-by: Jun Nie <jun.nie@linaro.org>
> ---
>   EmbeddedPkg/Universal/MmcDxe/MmcIdentification.c | 5 ++++-
>   1 file changed, 4 insertions(+), 1 deletion(-)
> 
> diff --git a/EmbeddedPkg/Universal/MmcDxe/MmcIdentification.c b/EmbeddedPkg/Universal/MmcDxe/MmcIdentification.c
> index 574a77e..5c0d7e7 100644
> --- a/EmbeddedPkg/Universal/MmcDxe/MmcIdentification.c
> +++ b/EmbeddedPkg/Universal/MmcDxe/MmcIdentification.c
> @@ -286,7 +286,10 @@ InitializeEmmcDevice (
>       }
>       Status = Host->SetIos (Host, BusClockFreq, 8, TimingMode[Idx]);
>       if (!EFI_ERROR (Status)) {
> -      Status = EmmcSetEXTCSD (MmcHostInstance, EXTCSD_BUS_WIDTH, EMMC_BUS_WIDTH_DDR_8BIT);
> +      if (Idx < 2)

It's better to avoid hardcoded value at here. Maybe you can use switch & 
case on TimingMode array at here.

> +        Status = EmmcSetEXTCSD (MmcHostInstance, EXTCSD_BUS_WIDTH, EMMC_BUS_WIDTH_DDR_8BIT);
> +      else
> +        Status = EmmcSetEXTCSD (MmcHostInstance, EXTCSD_BUS_WIDTH, EMMC_BUS_WIDTH_8BIT);
>         if (EFI_ERROR (Status)) {
>           DEBUG ((DEBUG_ERROR, "InitializeEmmcDevice(): Failed to set EXTCSD bus width, Status:%r\n", Status));
>         }
> 

Best Regards
Haojian


^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH] EmbeddedPkg/MmcDxe: Add non-DDR timing mode support
  2017-06-08  8:12 [PATCH] EmbeddedPkg/MmcDxe: Add non-DDR timing mode support Jun Nie
  2017-06-08  8:39 ` Haojian Zhuang
@ 2017-06-08 16:51 ` Leif Lindholm
  1 sibling, 0 replies; 5+ messages in thread
From: Leif Lindholm @ 2017-06-08 16:51 UTC (permalink / raw)
  To: Jun Nie; +Cc: haojian.zhuang, edk2-devel, jason.liu, shawn.guo, ard.biesheuvel

Hi Jun,

Don't forget to cc the package maintainers on your patch submission,
as found in top-level Maintainers.txt.

On Thu, Jun 08, 2017 at 04:12:27PM +0800, Jun Nie wrote:
> Only DDR mode is support for 8bit mode currently. Add
> non-DDR case when configuring ECSD.
> 
> Contributed-under: TianoCore Contribution Agreement 1.0
> Signed-off-by: Jun Nie <jun.nie@linaro.org>
> ---
>  EmbeddedPkg/Universal/MmcDxe/MmcIdentification.c | 5 ++++-
>  1 file changed, 4 insertions(+), 1 deletion(-)
> 
> diff --git a/EmbeddedPkg/Universal/MmcDxe/MmcIdentification.c b/EmbeddedPkg/Universal/MmcDxe/MmcIdentification.c
> index 574a77e..5c0d7e7 100644
> --- a/EmbeddedPkg/Universal/MmcDxe/MmcIdentification.c
> +++ b/EmbeddedPkg/Universal/MmcDxe/MmcIdentification.c
> @@ -286,7 +286,10 @@ InitializeEmmcDevice (
>      }
>      Status = Host->SetIos (Host, BusClockFreq, 8, TimingMode[Idx]);
>      if (!EFI_ERROR (Status)) {
> -      Status = EmmcSetEXTCSD (MmcHostInstance, EXTCSD_BUS_WIDTH, EMMC_BUS_WIDTH_DDR_8BIT);
> +      if (Idx < 2)

While currently programatically correct, this would break if anyone
changed the order of entries in TimingMode.

A less fragile test would be
  if (TimingMode[Idx] & (EMMCHS52DDR1V2 | EMMCHS52DDR1V8))

(If we ever need to support HS400 devices in this function, I would
suggest a rewrite without fixed indexes and with a helper macro to
determine DDR-ness.)

Regards,

Leif

> +        Status = EmmcSetEXTCSD (MmcHostInstance, EXTCSD_BUS_WIDTH, EMMC_BUS_WIDTH_DDR_8BIT);
> +      else
> +        Status = EmmcSetEXTCSD (MmcHostInstance, EXTCSD_BUS_WIDTH, EMMC_BUS_WIDTH_8BIT);
>        if (EFI_ERROR (Status)) {
>          DEBUG ((DEBUG_ERROR, "InitializeEmmcDevice(): Failed to set EXTCSD bus width, Status:%r\n", Status));
>        }
> -- 
> 1.9.1
> 
> _______________________________________________
> edk2-devel mailing list
> edk2-devel@lists.01.org
> https://lists.01.org/mailman/listinfo/edk2-devel


^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH] EmbeddedPkg/MmcDxe: Add non-DDR timing mode support
  2017-06-08  8:39 ` Haojian Zhuang
@ 2017-06-08 16:55   ` Leif Lindholm
  2017-06-09  3:54     ` Jun Nie
  0 siblings, 1 reply; 5+ messages in thread
From: Leif Lindholm @ 2017-06-08 16:55 UTC (permalink / raw)
  To: Haojian Zhuang; +Cc: Jun Nie, edk2-devel, jason.liu, shawn.guo

On Thu, Jun 08, 2017 at 04:39:44PM +0800, Haojian Zhuang wrote:
> On 2017/6/8 16:12, Jun Nie wrote:
> >Only DDR mode is support for 8bit mode currently. Add
> >non-DDR case when configuring ECSD.
> >
> >Contributed-under: TianoCore Contribution Agreement 1.0
> >Signed-off-by: Jun Nie <jun.nie@linaro.org>
> >---
> >  EmbeddedPkg/Universal/MmcDxe/MmcIdentification.c | 5 ++++-
> >  1 file changed, 4 insertions(+), 1 deletion(-)
> >
> >diff --git a/EmbeddedPkg/Universal/MmcDxe/MmcIdentification.c b/EmbeddedPkg/Universal/MmcDxe/MmcIdentification.c
> >index 574a77e..5c0d7e7 100644
> >--- a/EmbeddedPkg/Universal/MmcDxe/MmcIdentification.c
> >+++ b/EmbeddedPkg/Universal/MmcDxe/MmcIdentification.c
> >@@ -286,7 +286,10 @@ InitializeEmmcDevice (
> >      }
> >      Status = Host->SetIos (Host, BusClockFreq, 8, TimingMode[Idx]);
> >      if (!EFI_ERROR (Status)) {
> >-      Status = EmmcSetEXTCSD (MmcHostInstance, EXTCSD_BUS_WIDTH, EMMC_BUS_WIDTH_DDR_8BIT);
> >+      if (Idx < 2)
> 
> It's better to avoid hardcoded value at here. Maybe you can use switch &
> case on TimingMode array at here.

Yes, that would also work.

Indeed, if any other possible values than EMMC_BUS_WIDTH_DDR_8BIT or
EMMC_BUS_WIDTH_8BIT could be likely in the future, that would be the
preferable solution.

Regards,

Leif

> >+        Status = EmmcSetEXTCSD (MmcHostInstance, EXTCSD_BUS_WIDTH, EMMC_BUS_WIDTH_DDR_8BIT);
> >+      else
> >+        Status = EmmcSetEXTCSD (MmcHostInstance, EXTCSD_BUS_WIDTH, EMMC_BUS_WIDTH_8BIT);
> >        if (EFI_ERROR (Status)) {
> >          DEBUG ((DEBUG_ERROR, "InitializeEmmcDevice(): Failed to set EXTCSD bus width, Status:%r\n", Status));
> >        }
> >
> 
> Best Regards
> Haojian
> _______________________________________________
> edk2-devel mailing list
> edk2-devel@lists.01.org
> https://lists.01.org/mailman/listinfo/edk2-devel


^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH] EmbeddedPkg/MmcDxe: Add non-DDR timing mode support
  2017-06-08 16:55   ` Leif Lindholm
@ 2017-06-09  3:54     ` Jun Nie
  0 siblings, 0 replies; 5+ messages in thread
From: Jun Nie @ 2017-06-09  3:54 UTC (permalink / raw)
  To: Leif Lindholm; +Cc: Haojian Zhuang, edk2-devel, Jason Liu, Shawn Guo

2017-06-09 0:55 GMT+08:00 Leif Lindholm <leif.lindholm@linaro.org>:
> On Thu, Jun 08, 2017 at 04:39:44PM +0800, Haojian Zhuang wrote:
>> On 2017/6/8 16:12, Jun Nie wrote:
>> >Only DDR mode is support for 8bit mode currently. Add
>> >non-DDR case when configuring ECSD.
>> >
>> >Contributed-under: TianoCore Contribution Agreement 1.0
>> >Signed-off-by: Jun Nie <jun.nie@linaro.org>
>> >---
>> >  EmbeddedPkg/Universal/MmcDxe/MmcIdentification.c | 5 ++++-
>> >  1 file changed, 4 insertions(+), 1 deletion(-)
>> >
>> >diff --git a/EmbeddedPkg/Universal/MmcDxe/MmcIdentification.c b/EmbeddedPkg/Universal/MmcDxe/MmcIdentification.c
>> >index 574a77e..5c0d7e7 100644
>> >--- a/EmbeddedPkg/Universal/MmcDxe/MmcIdentification.c
>> >+++ b/EmbeddedPkg/Universal/MmcDxe/MmcIdentification.c
>> >@@ -286,7 +286,10 @@ InitializeEmmcDevice (
>> >      }
>> >      Status = Host->SetIos (Host, BusClockFreq, 8, TimingMode[Idx]);
>> >      if (!EFI_ERROR (Status)) {
>> >-      Status = EmmcSetEXTCSD (MmcHostInstance, EXTCSD_BUS_WIDTH, EMMC_BUS_WIDTH_DDR_8BIT);
>> >+      if (Idx < 2)
>>
>> It's better to avoid hardcoded value at here. Maybe you can use switch &
>> case on TimingMode array at here.
>
> Yes, that would also work.
>
> Indeed, if any other possible values than EMMC_BUS_WIDTH_DDR_8BIT or
> EMMC_BUS_WIDTH_8BIT could be likely in the future, that would be the
> preferable solution.
>
> Regards,
>
> Leif


Yes, follow switch/case way is more extendable. Will add it and add
maintainer in next version.

Jun

>
>> >+        Status = EmmcSetEXTCSD (MmcHostInstance, EXTCSD_BUS_WIDTH, EMMC_BUS_WIDTH_DDR_8BIT);
>> >+      else
>> >+        Status = EmmcSetEXTCSD (MmcHostInstance, EXTCSD_BUS_WIDTH, EMMC_BUS_WIDTH_8BIT);
>> >        if (EFI_ERROR (Status)) {
>> >          DEBUG ((DEBUG_ERROR, "InitializeEmmcDevice(): Failed to set EXTCSD bus width, Status:%r\n", Status));
>> >        }
>> >
>>
>> Best Regards
>> Haojian
>> _______________________________________________
>> edk2-devel mailing list
>> edk2-devel@lists.01.org
>> https://lists.01.org/mailman/listinfo/edk2-devel


^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2017-06-09  3:53 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2017-06-08  8:12 [PATCH] EmbeddedPkg/MmcDxe: Add non-DDR timing mode support Jun Nie
2017-06-08  8:39 ` Haojian Zhuang
2017-06-08 16:55   ` Leif Lindholm
2017-06-09  3:54     ` Jun Nie
2017-06-08 16:51 ` Leif Lindholm

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox