[PATCH] dt-bindings: mmc: fsl-imx-esdhc: allow more compatible combinations

Andreas Kemnade andreas at kemnade.info
Sat Jan 7 05:43:36 PST 2023


On Sat, 7 Jan 2023 14:23:08 +0100
Krzysztof Kozlowski <krzysztof.kozlowski at linaro.org> wrote:

> On 06/01/2023 20:33, Andreas Kemnade wrote:
> > On Fri, 6 Jan 2023 09:41:01 +0100
> > Krzysztof Kozlowski <krzysztof.kozlowski at linaro.org> wrote:
> >   
> >> On 05/01/2023 22:38, Andreas Kemnade wrote:  
> >>> Currently make dtbs_check shows lots of errors because imx*.dtsi does
> >>> not use single compatibles but combinations of them.
> >>> Allow all the combinations used there.
> >>>
> >>> Patches fixing the dtsi files according to binding documentation were
> >>> submitted multiple times and are commonly rejected, so relax the rules.
> >>> Example:
> >>> https://lore.kernel.org/linux-devicetree/72e1194e10ccb4f87aed96265114f0963e805092.camel@pengutronix.de/
> >>>
> >>> Reason: compatibility of new dtbs with old kernels or bootloaders.
> >>>
> >>> This will significantly reduce noise on make dtbs_check.
> >>>
> >>> Signed-off-by: Andreas Kemnade <andreas at kemnade.info>
> >>> ---
> >>>  .../bindings/mmc/fsl-imx-esdhc.yaml           | 24 +++++++++++++++++++
> >>>  1 file changed, 24 insertions(+)
> >>>
> >>> diff --git a/Documentation/devicetree/bindings/mmc/fsl-imx-esdhc.yaml b/Documentation/devicetree/bindings/mmc/fsl-imx-esdhc.yaml
> >>> index dc6256f04b42..118ebb75f136 100644
> >>> --- a/Documentation/devicetree/bindings/mmc/fsl-imx-esdhc.yaml
> >>> +++ b/Documentation/devicetree/bindings/mmc/fsl-imx-esdhc.yaml
> >>> @@ -37,6 +37,30 @@ properties:
> >>>            - fsl,imx8mm-usdhc
> >>>            - fsl,imxrt1050-usdhc
> >>>            - nxp,s32g2-usdhc    
> >>
> >> You must drop the items from enum above. Binding saying:
> >> compatible="A"
> >> or:
> >> compatible="A", "B"
> >>
> >> is not correct. Either A is or is not compatible with B.
> >>  
> > hmm, here we have A = B + some additional features
> > or
> > A = B + some additional features and additional quirks required.  
> 
> So why do you allow A alone?
> 
because A is full-compatible, and B is half-compatible, because
the additional required quirks are not applied.
> > 
> > For the latter we have e.g.
> > A=
> > static const struct esdhc_soc_data usdhc_imx6sx_data = {
> >         .flags = ESDHC_FLAG_USDHC | ESDHC_FLAG_STD_TUNING
> >                         | ESDHC_FLAG_HAVE_CAP1 | ESDHC_FLAG_HS200
> >                         | ESDHC_FLAG_STATE_LOST_IN_LPMODE
> >                         | ESDHC_FLAG_BROKEN_AUTO_CMD23,
> > };
> > B=
> > static const struct esdhc_soc_data usdhc_imx6sl_data = {
> >         .flags = ESDHC_FLAG_USDHC | ESDHC_FLAG_STD_TUNING
> >                         | ESDHC_FLAG_HAVE_CAP1 | ESDHC_FLAG_ERR004536
> >                         | ESDHC_FLAG_HS200
> >                         | ESDHC_FLAG_BROKEN_AUTO_CMD23,
> > };
> > 
> > so there is the difference in ESDHC_FLAG_STATE_LOST_IN_LPMODE.
> > That might make no difference in some usage scenario (e.g. some bootloader
> > not doing any LPMODE), but I wonder why
> > we need to *enforce* specifying such half-compatible things.  
> 
> I asked to remove half-compatible. Not to enforce.
> 
well B is half-compatible, I (and others) have sent patches to remove,
but they were rejected. I consider these patches the way to go.

Regards,
Andreas




More information about the linux-arm-kernel mailing list