On Sat, 7 Jan 2023 14:23:08 +0100 Krzysztof Kozlowski <krzysztof.kozlowski@xxxxxxxxxx> wrote: > On 06/01/2023 20:33, Andreas Kemnade wrote: > > On Fri, 6 Jan 2023 09:41:01 +0100 > > Krzysztof Kozlowski <krzysztof.kozlowski@xxxxxxxxxx> 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@xxxxxxxxxxxxxx/ > >>> > >>> 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@xxxxxxxxxxxx> > >>> --- > >>> .../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