diff mbox series

[v2,09/14] doc: dt: fsl-imx-esdhc: add auto-cmd23-broken binding

Message ID 20191203130120.11511-10-haibo.chen@nxp.com (mailing list archive)
State New, archived
Headers show
Series [v2,01/14] mmc: sdhci: do not enable card detect interrupt for gpio cd type | expand

Commit Message

Bough Chen Dec. 3, 2019, 12:54 p.m. UTC
Add sdhci,auto-cmd23-broken binding.

Signed-off-by: Haibo Chen <haibo.chen@nxp.com>
---
 Documentation/devicetree/bindings/mmc/fsl-imx-esdhc.txt | 8 ++++++++
 1 file changed, 8 insertions(+)

Comments

Linus Walleij Dec. 10, 2019, 11:32 p.m. UTC | #1
On Tue, Dec 3, 2019 at 1:54 PM BOUGH CHEN <haibo.chen@nxp.com> wrote:

> +- sdhci,auto-cmd23-broken: disable the ACMD23 function of USDHC.
> +  This is required for eMMC on imx6qpdl/imx6sx/imx7d when it use ADMA mode. Because
> +  for these SoC, it do not support the ACMD23 completely, only take the 16 bit block
> +  count from the 0x4 register (BLK_ATT) as argument for the ACMD23, the upper 16 bit
> +  of the CMD23's argument is ignored. This will impact the reliable write operation
> +  and the RPMB block write operation, because these operations need to set the bit 31
> +  of the CMD23's argument. SDMA mode will default disable the ACMD23 mode. SD card do
> +  not has this limitation on these SoCs.

This looks weird.

Is the bug in the *host controller* or in *the card*?

It looks like the card.

And then it should just be a quirk for this eMMC card in
drivers/mmc/core/quirks.h plus corresponding code in
the core.

Otherwise everyone using this eMMC card has to add this
property in their device tree and that is wrong if we can already
detect it from the card ID and apply it for that card, anywhere.

This is not the first time I see card quirks as DT properties,
it seems like a bit over-reliance on DT.

Yours,
Linus Walleij
Linus Walleij Dec. 10, 2019, 11:39 p.m. UTC | #2
On Wed, Dec 11, 2019 at 12:32 AM Linus Walleij <linus.walleij@linaro.org> wrote:
> On Tue, Dec 3, 2019 at 1:54 PM BOUGH CHEN <haibo.chen@nxp.com> wrote:
>
> > +- sdhci,auto-cmd23-broken: disable the ACMD23 function of USDHC.
> > +  This is required for eMMC on imx6qpdl/imx6sx/imx7d when it use ADMA mode. Because
> > +  for these SoC, it do not support the ACMD23 completely, only take the 16 bit block
> > +  count from the 0x4 register (BLK_ATT) as argument for the ACMD23, the upper 16 bit
> > +  of the CMD23's argument is ignored. This will impact the reliable write operation
> > +  and the RPMB block write operation, because these operations need to set the bit 31
> > +  of the CMD23's argument. SDMA mode will default disable the ACMD23 mode. SD card do
> > +  not has this limitation on these SoCs.
>
> This looks weird.
>
> Is the bug in the *host controller* or in *the card*?
>
> It looks like the card.

After looking at the next patch it looks like the host controller.

In that case the compatible-string should indicate what version of
the IP you are using and if it has this bug.

No special flags needed for that.

Yours,
Linus Walleij
Bough Chen Feb. 10, 2020, 3:08 a.m. UTC | #3
> -----Original Message-----
> From: Linus Walleij <linus.walleij@linaro.org>
> Sent: 2019年12月11日 7:40
> To: BOUGH CHEN <haibo.chen@nxp.com>
> Cc: ulf.hansson@linaro.org; adrian.hunter@intel.com;
> shawnguo@kernel.org; kernel@pengutronix.de; dl-linux-imx
> <linux-imx@nxp.com>; linux-mmc@vger.kernel.org
> Subject: Re: [PATCH v2 09/14] doc: dt: fsl-imx-esdhc: add
> auto-cmd23-broken binding
> 
> On Wed, Dec 11, 2019 at 12:32 AM Linus Walleij <linus.walleij@linaro.org>
> wrote:
> > On Tue, Dec 3, 2019 at 1:54 PM BOUGH CHEN <haibo.chen@nxp.com>
> wrote:
> >
> > > +- sdhci,auto-cmd23-broken: disable the ACMD23 function of USDHC.
> > > +  This is required for eMMC on imx6qpdl/imx6sx/imx7d when it use
> > > +ADMA mode. Because
> > > +  for these SoC, it do not support the ACMD23 completely, only take
> > > +the 16 bit block
> > > +  count from the 0x4 register (BLK_ATT) as argument for the ACMD23,
> > > +the upper 16 bit
> > > +  of the CMD23's argument is ignored. This will impact the reliable
> > > +write operation
> > > +  and the RPMB block write operation, because these operations need
> > > +to set the bit 31
> > > +  of the CMD23's argument. SDMA mode will default disable the
> > > +ACMD23 mode. SD card do
> > > +  not has this limitation on these SoCs.
> >
> > This looks weird.
> >
> > Is the bug in the *host controller* or in *the card*?
> >
> > It looks like the card.
> 
> After looking at the next patch it looks like the host controller.
> 
> In that case the compatible-string should indicate what version of the IP you
> are using and if it has this bug.
> 
> No special flags needed for that.

Hi Linus,

Yes, this is host IP limitation. I did consider the method as you suggested, use compatible-string to distinguish. But then I notice that this host limitation only impact the eMMC device for RPMB reliable write, for SD card, it do not support this mode, so this hardware limitation do not impact for sd card.
This is why I use "sdhci,auto-cmd23-broken" in devicetree, only the emmc device need to contain this in dts file.

I double check this issue, since this auto-cmd23 will not impact the sd performance, and it is the host IP limitation, I will chose to accept your suggestion, will send a new patch.

Thanks,

Bough Chen


> 
> Yours,
> Linus Walleij
Linus Walleij Feb. 10, 2020, 1:30 p.m. UTC | #4
On Mon, Feb 10, 2020 at 4:08 AM BOUGH CHEN <haibo.chen@nxp.com> wrote:
> > On Wed, Dec 11, 2019 at 12:32 AM Linus Walleij <linus.walleij@linaro.org>
> > wrote:
> > > On Tue, Dec 3, 2019 at 1:54 PM BOUGH CHEN <haibo.chen@nxp.com>
> > wrote:
> > >
> > > > +- sdhci,auto-cmd23-broken: disable the ACMD23 function of USDHC.
> > > > +  This is required for eMMC on imx6qpdl/imx6sx/imx7d when it use
> > > > +ADMA mode. Because
> > > > +  for these SoC, it do not support the ACMD23 completely, only take
> > > > +the 16 bit block
> > > > +  count from the 0x4 register (BLK_ATT) as argument for the ACMD23,
> > > > +the upper 16 bit
> > > > +  of the CMD23's argument is ignored. This will impact the reliable
> > > > +write operation
> > > > +  and the RPMB block write operation, because these operations need
> > > > +to set the bit 31
> > > > +  of the CMD23's argument. SDMA mode will default disable the
> > > > +ACMD23 mode. SD card do
> > > > +  not has this limitation on these SoCs.
> > >
> > > This looks weird.
> > >
> > > Is the bug in the *host controller* or in *the card*?
> > >
> > > It looks like the card.
> >
> > After looking at the next patch it looks like the host controller.
> >
> > In that case the compatible-string should indicate what version of the IP you
> > are using and if it has this bug.
> >
> > No special flags needed for that.
>
> Hi Linus,
>
> Yes, this is host IP limitation. I did consider the method as you suggested,
>  use compatible-string to distinguish. But then I notice that this host limitation
> only impact the eMMC device for RPMB reliable write, for SD card, it do not
> support this mode, so this hardware limitation do not impact for sd card.
> This is why I use "sdhci,auto-cmd23-broken" in devicetree, only the emmc
> device need to contain this in dts file.
>
> I double check this issue, since this auto-cmd23 will not impact the sd
> performance, and it is the host IP limitation, I will chose to accept your
> suggestion, will send a new patch.

Should be fine, the code in the MMC core knows if what you are using
is an eMMC or an SD card so you can just handle the quirk only in the
eMMC case.

Yours,
Linus Walleij
diff mbox series

Patch

diff --git a/Documentation/devicetree/bindings/mmc/fsl-imx-esdhc.txt b/Documentation/devicetree/bindings/mmc/fsl-imx-esdhc.txt
index 89b986a2f9d5..7ea8e0f14e5f 100644
--- a/Documentation/devicetree/bindings/mmc/fsl-imx-esdhc.txt
+++ b/Documentation/devicetree/bindings/mmc/fsl-imx-esdhc.txt
@@ -46,6 +46,14 @@  Optional properties:
   property allows user to change the delay target for the strobe input read clock.
   If not use this property, driver default set the delay target to value 7.
   Only eMMC HS400 mode need to take care of this property.
+- sdhci,auto-cmd23-broken: disable the ACMD23 function of USDHC.
+  This is required for eMMC on imx6qpdl/imx6sx/imx7d when it use ADMA mode. Because
+  for these SoC, it do not support the ACMD23 completely, only take the 16 bit block
+  count from the 0x4 register (BLK_ATT) as argument for the ACMD23, the upper 16 bit
+  of the CMD23's argument is ignored. This will impact the reliable write operation
+  and the RPMB block write operation, because these operations need to set the bit 31
+  of the CMD23's argument. SDMA mode will default disable the ACMD23 mode. SD card do
+  not has this limitation on these SoCs.
 
 Examples: