dt_binding_check report false alarm?

William Zhang william.zhang at broadcom.com
Thu May 25 10:10:46 PDT 2023



On 05/25/2023 08:33 AM, Conor Dooley wrote:
> On Thu, May 25, 2023 at 08:23:30AM -0700, William Zhang wrote:
>> Sorry for the multiple emails. Our mail relay server was not working
>> properly.
> 
> I only got one /shrug
> 
That's good.  Maybe it only flushed queued email to internal email accounts.

>> On 05/25/2023 06:23 AM, Conor Dooley wrote:
>>> Hey William,
>>>
>>> On Wed, May 24, 2023 at 10:02:41PM -0700, William Zhang wrote:
>>>> Hi,
>>>>
>>>> It seems dt_binding_check reports a false error when run on this
>>>> modified yaml. I picked this simple file just to demostrate this issue.
>>>> Basically I made the interrupts and interrupt-names as optional
>>>> properties. But when there are two interrupts present, then
>>>> interrupt-names are required.  However in the example, I don't define
>>>> interrupts and interrupt-name at all, the dt binding check reports error
>>>> that interrupt-names are required:
>>>
>>> Rob and Krzysztof would know more than me, but since they're not
>>> around...
>>>
>>>> diff --git a/Documentation/devicetree/bindings/crypto/fsl-imx-scc.yaml b/Documentation/devicetree/bindings/crypto/fsl-imx-scc.yaml
>>>> index 563a31605d2b..c37a3a64a78c 100644
>>>> --- a/Documentation/devicetree/bindings/crypto/fsl-imx-scc.yaml
>>>> +++ b/Documentation/devicetree/bindings/crypto/fsl-imx-scc.yaml
>>>> @@ -32,11 +32,18 @@ properties:
>>>>      clock-names:
>>>>        const: ipg
>>>> +allOf:
>>>> +  - if:
>>>> +      properties:
>>>> +        interrupts:
>>>> +          minItems: 2
>>>
>>> ...I don't think you can actually do this and "minItems: 2" will always
>>> evaluate to true because it is an assignment. Don't hold me to that
>>> though! The standard pattern here is to do:
>>> allOf:
>>>     - if:
>>>         properties:
>>>           compatible:
>>>             contains:
>>>               const: foo
>>>       then:
>>>         required:
>>>           - interrupt-names
>>>
>>> Cheers,
>>> Conor.
>>>
>> Our device can use one or two interrupt, or choose to not use interrupt at
>> all(polling mode). Interrupt names is only required when there are two
>> interrupts(so the driver code can tell which is which).  So I will need to
>> check if it contains two interrupts. My check does work if I have two
>> interrupt but don't have interrupt name, the check catches the error.  If I
>> have one interrupt without interrupt name, the check pass. Only when I does
>> not have interrupt and interrupt name,  it falsely report error.  Looks to
>> me that it does not treat minItem = 0 case properly.
> 
> Right. I would not bother with the "only interrupt-names when 2
> interrupts" stuff & do the simple thing of always making it required
> when you have interrupts.
> Then you can use allOf and oneOf to allow for both schemes for the new
> device and keep enforcement of 2 items for the existing one.
> 
> Cheers,
> Conor.
> 
I agree it is better to keep it simple. Sorry I am still new to yaml but 
what is the best way to check if interrupt property exist?  What I can 
think of is similar

  - if:
       properties:
         interrupts:
           minItems: 1
     then:
       required:
         - interrupt-names

But this still reports the same error when there is no interrupt.

>>>> +    then:
>>>> +      required:
>>>> +        - interrupt-names
>>>> +
>>>>    required:
>>>>      - compatible
>>>>      - reg
>>>> -  - interrupts
>>>> -  - interrupt-names
>>>>      - clocks
>>>>      - clock-names
>>>> @@ -49,6 +56,4 @@ examples:
>>>>            reg = <0x53fac000 0x4000>;
>>>>            clocks = <&clks 111>;
>>>>            clock-names = "ipg";
>>>> -        interrupts = <49>, <50>;
>>>> -        interrupt-names = "scm", "smn";
>>>>        };
>>>> -- 
>>>> 2.34.1
>>>>
>>>
>>>
> 
> 
-------------- next part --------------
A non-text attachment was scrubbed...
Name: smime.p7s
Type: application/pkcs7-signature
Size: 4212 bytes
Desc: S/MIME Cryptographic Signature
URL: <http://lists.infradead.org/pipermail/linux-arm-kernel/attachments/20230525/d102059a/attachment-0001.p7s>


More information about the linux-arm-kernel mailing list