[U-Boot] [PATCH] mmc: sdhci: consider SDHCI_QUIRK_NO_HISPD_BIT in host_caps
Hannes Schmelzer
Hannes.Schmelzer at br-automation.com
Fri Mar 2 08:23:31 UTC 2018
>
> Dear Hannes,
Dear Jaehoon,
> >> Instead, its bit is used to other purpose.
> >
> > Please explain me more about this other purpose,
> > maybe i'm missunterstand here something.
>
> SD Host Controller has the HOST Controller register (Offset 0x28).
> BIT[2] is "High speed enable".
> - BIT[2] : 0 - Normal Speed mode
> - BIT[2] : 1 - High Speed mode.
> This bit is "RW" attribute.
>
> And Samsung SoC also has the HOST Controller register (offset 0x28).
> BIT[2] is "Output Edge Inversion".
> - BIT[2] : 0 - Rising edge output.
> - BIT[2] : 1 - Falling edge output.
>
> "High speed enable" bit is standard. but Samsung SoC is using it for
other purpose.
> So I had added the quirks for SDHCI_QUIRK_NO_HISPD_BIT.
> It means that there is no 'high speed bit'.
OK. Many thanks for clarifying this.
I took a look to the ZYNQ TRM and an the register 0x28 of the sdhci
controller,
here we have standard behaviour where bit[2] controls the high speed
stuff.
The conclusion of this is, that the "zynq_sdhci.c" uses the
SDHCI_QUIRK_NO_HISPD_BIT
wrong and this must be fixed.
I did grep for the "CONFIG_ZYNQ_HISPD_BROKEN" within source tree and
observed
that nobody or no boards except mine uses this #define.
This would explain that, i call it this bug, is unnoticed yet.
>
> If your patch is applied, Samsung SoC can work the unexpected behavior.
>
> If your ip also doesn't use this bit, then no problem.
> But your patch tried to use the other purpose.
OK.
>
> >
> > Maybe i've to introduce some new quirk, which tells the ip-core and
the
> > other layers> above not using HIGH_SPEED. But i think still this is
the right one ...
>
> Well, i don't want to add the new quirk, if there is a solution not to
add the quriks.
> If really needs, you need to add the SDHCI_QUIRK_BROKEN_HISPD_MODE.
>
> #define SDHCI_QUIRK_BROKEN_HISPD_MODE (1 << 5)
OK. But i fear that we've to introduce this new quirk.
Because in real life mistakes in hardware-design (in this case chip
design) happen and
we software guys have to workaround them.
https://www.xilinx.com/support/answers/59999.html
>
> and change from SDHCI_QUIRK_NO_HSIPD_BIT to
SDHCI_QUIRK_BROKEN_HISPD_MODE in
> zynq_sdhci.c.
I will do so.
I will also send some V2 of my patch, with doing:
- add this new QUIRK
- fix the zynq_sdhci.c
- consider this quirk in the host_cap
>
> I will update the descriptions about quirks. Because it can be confused
what
> purpose is used.
Great, so it will be more readable in the future.
>
> Best Regards,
> Jaehoon Chung
cheers,
Hannes
More information about the U-Boot
mailing list