Re: [PATCH v3 7/9] arm64: dts: qcom: sm6115: Add basic soc dtsi

Iskren Chernev
2022-09-11T10:22:13Z

On 9/11/22 13:07, Krzysztof Kozlowski wrote:
> On 11/09/2022 11:09, Iskren Chernev wrote:
>>
>>
>> On 9/11/22 11:40, Krzysztof Kozlowski wrote:
>>> On 10/09/2022 16:32, Iskren Chernev wrote:
>>>> Add support for Qualcomm SM6115 SoC. This includes:
>>>> - GCC
>>>> - Pinctrl
>>>> - RPM (CC+PD)
>>>> - USB
>>>> - MMC
>>>> - UFS
>>>>
>>>> Signed-off-by: Iskren Chernev <iskren.chernev@gmail.com>
>>>> ---
>>>> pending issues with dtschema:
>>>> - for some reason, using pinctrl phandles (in mmc) breaks the pinctrl
>>>> schema (4 times)
>>>> .output/arch/arm64/boot/dts/qcom/sm4250-oneplus-billie2.dtb: pinctrl@500000: sdc1-on-state: 'oneOf' conditional failed, one must be fixed:
>>>> 'pins' is a required property
>>>> 'clk', 'cmd', 'data', 'rclk' do not match any of the regexes: 'pinctrl-[0-9]+'
>>>> [[26]] is not of type 'object'
>>>> From schema: /home/iskren/src/pmos/linux-postmarketos/Documentation/devicetree/bindings/pinctrl/qcom,sm6115-pinctrl.yaml
>>>
>>> It's the same as 06367559766b7c9bd96d2baef8bfc5a9bb451e25. I propose to
>>> fix it the same way. I can do a biger change for all pinctrls, so here
>>> you would need to add "-pins" prefix to entries (see patch
>>> 4fcdaf4b0320f93d0ccb4d36b795ed258fb07b27).
>>
>> OK, that makes sense. One thing that is a bit odd -- the current pattern
>> "(pinconf|-pins)$" matches anything that ends in pinconf OR -pins (so it could
>> be sth-pinconf).
>
> Yeah, I am fixing it to ^(pinconf|.*-pins)$
>
>> Also, if you only have a single block, isn't the idea to just
>> list it in the -states node. I mean we either force everybody to nest with
>> a pinconf, or we allow -pins for nested stuff and directly in -state for the
>> non-nested. Just my 2c.
>
> I didn't get this one... We allow exactly this, don't we (in PMIC GPIOs)?

Currently the schema (you linked) has:

patternProperties:
'-state$':
oneOf:
- $ref: "#/$defs/qcom-pmic-gpio-state" // 1st case
- patternProperties: // 2nd case
"(pinconf|-pins)$":
$ref: "#/$defs/qcom-pmic-gpio-state"
additionalProperties: false

The idea being that you can have

pinctrl@xxx {
basic-state { // this matches the first state in oneOf
pins: "gpio1";
funciton: "normal";
};

nested-state {
some-pins { // this matches the second state in oneOf
pins: "gpio1";
funciton: "normal";
};
other-pins {
pins: "gpio2"
funciton: "normal";
};
}

// but also, matching second state in oneOf
nested-basic-state {
pinconf {
pins: "gpio1";
funciton: "normal";
};
};
};

So I'm saying, we should either choose basic-state and nested-state, in which
case we don't need the "^pinconf$" variant, or we can have nested-state and
nested-basic-state, in which case we don't need the 1st case of the oneOf.

Otherwise people have to choose between basic-state and nested-basic-state,
which are equivalent in semantics.

On a tangent -- why specifying the .* regex of pinctrl subnodes has effect on
pinctrl references in other nodes. I.e I don't understand why this fix fixes
the issue (but it does).

> Best regards,
> Krzysztof