Message ID | 20210510190400.105162-1-l.stach@pengutronix.de |
---|---|
State | New |
Headers | show |
Series | [v2,1/3] dt-bindings: mmc: add no-mmc-hs400 flag | expand |
+ Chris Ruehl On Mon, 10 May 2021 at 21:04, Lucas Stach <l.stach@pengutronix.de> wrote: > > From: Lucas Stach <dev@lynxeye.de> > > On some boards the data strobe line isn't wired up, rendering HS400 > support broken, even if both the controller and the eMMC claim to > support it. Allow to disable HS400 mode via DT. Before I review the series, I just wanted to highlight that quite recently we got a related series posted from Chris [1]. I made some comments, but he hasn't replied yet. In any case, if I understood it correctly, it looks like some controllers may support HS400 ES, but not HS200. Could that be the case here as well? Or is this a different problem? Kind regards Uffe [1] https://patchwork.kernel.org/project/linux-mmc/patch/20201208061839.21163-7-chris.ruehl@gtsys.com.hk/ > > Signed-off-by: Lucas Stach <dev@lynxeye.de> > --- > v2: > - move to core > - actually disable all HS400 modes > --- > drivers/mmc/core/host.c | 3 +++ > 1 file changed, 3 insertions(+) > > diff --git a/drivers/mmc/core/host.c b/drivers/mmc/core/host.c > index 9b89a91b6b47..0e066c5f5243 100644 > --- a/drivers/mmc/core/host.c > +++ b/drivers/mmc/core/host.c > @@ -351,6 +351,9 @@ int mmc_of_parse(struct mmc_host *host) > host->caps2 |= MMC_CAP2_NO_SD; > if (device_property_read_bool(dev, "no-mmc")) > host->caps2 |= MMC_CAP2_NO_MMC; > + if (device_property_read_bool(dev, "no-mmc-hs400")) > + host->caps2 &= ~(MMC_CAP2_HS400_1_8V | MMC_CAP2_HS400_1_2V | > + MMC_CAP2_HS400_ES); > > /* Must be after "non-removable" check */ > if (device_property_read_u32(dev, "fixed-emmc-driver-type", &drv_type) == 0) { > -- > 2.31.1 >
On Tue, 11 May 2021 at 13:54, Lucas Stach <l.stach@pengutronix.de> wrote: > > Hi Ulf, > > Am Dienstag, dem 11.05.2021 um 13:14 +0200 schrieb Ulf Hansson: > > + Chris Ruehl > > > > On Mon, 10 May 2021 at 21:04, Lucas Stach <l.stach@pengutronix.de> wrote: > > > > > > From: Lucas Stach <dev@lynxeye.de> > > > > > > On some boards the data strobe line isn't wired up, rendering HS400 > > > support broken, even if both the controller and the eMMC claim to > > > support it. Allow to disable HS400 mode via DT. > > > > Before I review the series, I just wanted to highlight that quite > > recently we got a related series posted from Chris [1]. I made some > > comments, but he hasn't replied yet. > > > > In any case, if I understood it correctly, it looks like some > > controllers may support HS400 ES, but not HS200. Could that be the > > case here as well? Or is this a different problem? > > > > > That's not the issue I'm trying to solve here. HS400 modes, whether ES > nor not, require the data strobe line to work. ES mode just defines how > this line is used. I know for a fact that the board I'm dealing with > here, just hasn't wired up this line between the SoC and the eMMC. Thus > HS400 modes fail to work, even though both controller and eMMC support > this mode. > > When HS400 is disabled, like in this series, communication falls back > to HS200 mode and works fine this way. Alright, thanks for clarifying. I will look into the series soon. Kind regards Uffe > > Regards, > Lucas > > > Kind regards > > Uffe > > > > [1] > > https://patchwork.kernel.org/project/linux-mmc/patch/20201208061839.21163-7-chris.ruehl@gtsys.com.hk/ > > > > > > > > Signed-off-by: Lucas Stach <dev@lynxeye.de> > > > --- > > > v2: > > > - move to core > > > - actually disable all HS400 modes > > > --- > > > drivers/mmc/core/host.c | 3 +++ > > > 1 file changed, 3 insertions(+) > > > > > > diff --git a/drivers/mmc/core/host.c b/drivers/mmc/core/host.c > > > index 9b89a91b6b47..0e066c5f5243 100644 > > > --- a/drivers/mmc/core/host.c > > > +++ b/drivers/mmc/core/host.c > > > @@ -351,6 +351,9 @@ int mmc_of_parse(struct mmc_host *host) > > > host->caps2 |= MMC_CAP2_NO_SD; > > > if (device_property_read_bool(dev, "no-mmc")) > > > host->caps2 |= MMC_CAP2_NO_MMC; > > > + if (device_property_read_bool(dev, "no-mmc-hs400")) > > > + host->caps2 &= ~(MMC_CAP2_HS400_1_8V | MMC_CAP2_HS400_1_2V | > > > + MMC_CAP2_HS400_ES); > > > > > > /* Must be after "non-removable" check */ > > > if (device_property_read_u32(dev, "fixed-emmc-driver-type", &drv_type) == 0) { > > > -- > > > 2.31.1 > > > > >
On Mon, 10 May 2021 at 21:04, Lucas Stach <l.stach@pengutronix.de> wrote: > > From: Lucas Stach <dev@lynxeye.de> > > HS400 requires a data strobe line in addition to the usual MMC signal > lines. If a board design neglects to wire up this signal, HS400 mode is > not available, even if both the controller and the eMMC are claiming to > support this mode. Add a DT flag to allow boards to disable the HS400 > support in this case. > > Signed-off-by: Lucas Stach <dev@lynxeye.de> > Acked-by: Rob Herring <robh@kernel.org> Applied for next, thanks! Kind regards Uffe > --- > Documentation/devicetree/bindings/mmc/mmc-controller.yaml | 5 +++++ > 1 file changed, 5 insertions(+) > > diff --git a/Documentation/devicetree/bindings/mmc/mmc-controller.yaml b/Documentation/devicetree/bindings/mmc/mmc-controller.yaml > index e141330c1114..ac80d09df3a9 100644 > --- a/Documentation/devicetree/bindings/mmc/mmc-controller.yaml > +++ b/Documentation/devicetree/bindings/mmc/mmc-controller.yaml > @@ -220,6 +220,11 @@ properties: > description: > eMMC HS400 enhanced strobe mode is supported > > + no-mmc-hs400: > + $ref: /schemas/types.yaml#/definitions/flag > + description: > + All eMMC HS400 modes are not supported. > + > dsr: > description: > Value the card Driver Stage Register (DSR) should be programmed > -- > 2.31.1 >
diff --git a/Documentation/devicetree/bindings/mmc/mmc-controller.yaml b/Documentation/devicetree/bindings/mmc/mmc-controller.yaml index e141330c1114..ac80d09df3a9 100644 --- a/Documentation/devicetree/bindings/mmc/mmc-controller.yaml +++ b/Documentation/devicetree/bindings/mmc/mmc-controller.yaml @@ -220,6 +220,11 @@ properties: description: eMMC HS400 enhanced strobe mode is supported + no-mmc-hs400: + $ref: /schemas/types.yaml#/definitions/flag + description: + All eMMC HS400 modes are not supported. + dsr: description: Value the card Driver Stage Register (DSR) should be programmed