Re: [PATCH v9 02/15] dt-bindings: mmc: cdns: Add AMD Pensando Elba SoC

From: Brad Larson
Date: Fri Jan 20 2023 - 20:10:46 EST


On 19/01/2023 7:47 UTC, Krzysztof Kozlowski wrote:
>On 19/01/2023 04:51, Brad Larson wrote:
>> AMD Pensando Elba ARM 64-bit SoC is integrated with this IP and
>> explicitly controls byte-lane enables.
>>
...
>> diff --git a/Documentation/devicetree/bindings/mmc/cdns,sdhci.yaml b/Documentation/devicetree/bindings/mmc/cdns,sdhci.yaml
>> index 8b1a0fdcb5e3..f7dd6f990f96 100644
>> --- a/Documentation/devicetree/bindings/mmc/cdns,sdhci.yaml
>> +++ b/Documentation/devicetree/bindings/mmc/cdns,sdhci.yaml
>> @@ -16,12 +16,14 @@ properties:
>> compatible:
>> items:
>> - enum:
>> + - amd,pensando-elba-sd4hc
>> - microchip,mpfs-sd4hc
>> - socionext,uniphier-sd4hc
>> - const: cdns,sd4hc
>>
>> reg:
>> - maxItems: 1
>> + minItems: 1
>> + maxItems: 2
>>
>> interrupts:
>> maxItems: 1
>> @@ -111,12 +113,36 @@ properties:
>> minimum: 0
>> maximum: 0x7f
>>
>> + reset-names:
>> + items:
>> + - const: hw
>> +
>> + resets:
>> + description:
>> + optional. phandle to the system reset controller with line index
>
>Drop "optional"
>Drop "phandle to the" and rephrase it to describe physical reset line.
>Don't describe here DT syntax (phandle) but the hardware. What is
>expected to be here?

Done, see the resulting diff below for full context. The missing
'contains' was the bug.

>> + for mmc hw reset line if exists.
>> + maxItems: 1
>> +
>> required:
>> - compatible
>> - reg
>> - interrupts
>> - clocks
>>
>> +if:
>
>Move the allO from the top here and put it under it. Saves indentation soon.

Yes.

>> + properties:
>> + compatible:
>> + const: amd,pensando-elba-sd4hc
>
>BTW, this probably won't even work and that's the answer why you added
>fake maxItems: 2... This should make you think about the bug. You must
>use contains.

That was the problem, see updated diff below. Passes dtbs_check and dt_binding_check.

>> +then:
>> + properties:
>> + reg:
>> + minItems: 2
>> +else:
>> + properties:
>> + reg:
>> + minItems: 1
>> + maxItems: 2
>
>No, why do you suddenly allow two items on all variants? This was not
>described in your commit msg at all, so I expect here maxItems: 1.

Set maxItems: 1.

>Also, unless your reset is applicable to all variants, resets: false and
>reset-names: false.

Added false for both, this is the diff with above changes

--- a/Documentation/devicetree/bindings/mmc/cdns,sdhci.yaml
+++ b/Documentation/devicetree/bindings/mmc/cdns,sdhci.yaml
@@ -9,19 +9,18 @@ title: Cadence SD/SDIO/eMMC Host Controller (SD4HC)
maintainers:
- Masahiro Yamada <yamada.masahiro@xxxxxxxxxxxxx>

-allOf:
- - $ref: mmc-controller.yaml
-
properties:
compatible:
items:
- enum:
+ - amd,pensando-elba-sd4hc
- microchip,mpfs-sd4hc
- socionext,uniphier-sd4hc
- const: cdns,sd4hc

reg:
- maxItems: 1
+ minItems: 1
+ maxItems: 2

interrupts:
maxItems: 1
@@ -111,12 +110,42 @@ properties:
minimum: 0
maximum: 0x7f

+ reset-names:
+ items:
+ - const: hw
+
+ resets:
+ description:
+ physical line number to hardware reset the mmc
+ maxItems: 1
+
required:
- compatible
- reg
- interrupts
- clocks

+allOf:
+ - $ref: mmc-controller.yaml
+ - if:
+ properties:
+ compatible:
+ contains:
+ const: amd,pensando-elba-sd4hc
+ then:
+ required:
+ - reset-names
+ - resets
+ properties:
+ reg:
+ minItems: 2
+ else:
+ properties:
+ reset-names: false
+ resets: false
+ reg:
+ maxItems: 1
+

Regards,
Brad