Re: [PATCH] dt-bindings: samsung: soc: match preferred naming in entire compatible

From: Krzysztof Kozlowski
Date: Fri Sep 30 2022 - 03:08:08 EST


On 29/09/2022 23:28, Rob Herring wrote:
> On Mon, Sep 26, 2022 at 02:47:57PM +0200, Krzysztof Kozlowski wrote:
>> Compatible is a string-array, therefore the "select" should look for
>> anything containing Samsung SoC part. This allows to validate cases
>> like:
>> - "samsung,exynos5250-gsc", "samsung,exynos5-gsc"
>> - "samsung,exynos5250-pmu", "syscon"
>> - "tesla,fsd-mct", "samsung,exynos4210-mct"
>>
>> Since Tesla FSD builts on top of Exynos blocks, add an adidtional
>> pattern for it.
>>
>> Signed-off-by: Krzysztof Kozlowski <krzysztof.kozlowski@xxxxxxxxxx>
>> ---
>> .../bindings/arm/samsung/samsung-soc.yaml | 26 +++++++++++++++----
>> 1 file changed, 21 insertions(+), 5 deletions(-)
>>
>> diff --git a/Documentation/devicetree/bindings/arm/samsung/samsung-soc.yaml b/Documentation/devicetree/bindings/arm/samsung/samsung-soc.yaml
>> index 653f85997643..bb1fdc205b44 100644
>> --- a/Documentation/devicetree/bindings/arm/samsung/samsung-soc.yaml
>> +++ b/Documentation/devicetree/bindings/arm/samsung/samsung-soc.yaml
>> @@ -18,17 +18,33 @@ description: |
>> samsung,exynos5433-cmu-isp
>>
>> select:
>> - properties:
>> - compatible:
>> - pattern: "^samsung,.*(s3c|s5pv|exynos)[0-9a-z]+.*$"
>> + allOf:
>> + - properties:
>> + $nodename:
>> + pattern: '^[a-z]'
>
> Why do you need this?

Because otherwise I am matching top-level board compatible, which
obviously do not fall into my patterns.

>
>> + - properties:
>> + compatible:
>> + contains:
>> + pattern: "^samsung,.*(s3c|s5pv|exynos)[0-9a-z]+.*$"
>> required:
>> - compatible
>>
>> properties:
>> compatible:
>> oneOf:
>> - - description: Preferred naming style for compatibles of SoC components
>> - pattern: "^samsung,(s3c|s5pv|exynos|exynosautov)[0-9]+-.*$"
>> + - description: Preferred naming style for compatibles of S3C/S5P/Exynos SoC components
>> + minItems: 1
>> + items:
>> + - pattern: "^samsung,(s3c|s5pv|exynos|exynosautov)[0-9]+-.*$"
>> + - {}
>> + - {}
>
> Wouldn't just contains be fine here too:
>
> contains:
> pattern: "^samsung,(s3c|s5pv|exynos|exynosautov)[0-9]+-.*$"

Somehow it does not work like it should - nodes with wrong compatibles
pass. I tested with fake compatibles like:
samsung,cmu-exynos5433-cmu-top
samsung,exynos54xx-cmu-cpif

Best regards,
Krzysztof