Hi Rob, On 12/12/20 4:18 am, Rob Herring wrote: > On Fri, Dec 11, 2020 at 6:04 AM Aswath Govindraju <a-govindraju@xxxxxx> wrote: >> >> Hi, >> On 11/12/20 11:34 am, Aswath Govindraju wrote: >>> Add compatible string in j721e-usb binding file as the same USB subsystem >>> is present in AM64. >>> >>> Signed-off-by: Aswath Govindraju <a-govindraju@xxxxxx> >>> --- >>> >>> Changes since v3: >>> - used enum instead of anyOf. >>> >>> Changes since v2: >>> - added changes done over the versions. >>> >>> Changes since v1: >>> - replaced the '\t' at the beginning of the lines with spaces as it was >>> causing the dt_binding_check to fail. >>> >>> Documentation/devicetree/bindings/usb/ti,j721e-usb.yaml | 5 +++-- >>> 1 file changed, 3 insertions(+), 2 deletions(-) >>> >>> diff --git a/Documentation/devicetree/bindings/usb/ti,j721e-usb.yaml b/Documentation/devicetree/bindings/usb/ti,j721e-usb.yaml >>> index 388245b91a55..1a5c7bbb40d1 100644 >>> --- a/Documentation/devicetree/bindings/usb/ti,j721e-usb.yaml >>> +++ b/Documentation/devicetree/bindings/usb/ti,j721e-usb.yaml >>> @@ -11,8 +11,9 @@ maintainers: >>> >>> properties: >>> compatible: >>> - items: >>> - - const: ti,j721e-usb >>> + enum: >>> + - ti,j721e-usb >>> + - ti,am64-usb >>> >> >> I am trying to use the compatible strings in the following manner >> >> ``` >> compatible = "ti,am64-usb", "ti,j721e-usb"; >> >> ``` >> If I use above patch I am getting an error while doing a dtbs check. >> >> ``` >> /home/gsaswath/src/ti-linux-kernel/arch/arm64/boot/dts/ti/k3-am642-evm.dt.yaml: >> cdns-usb@f900000: compatible: Additional items are not allowed >> ('ti,j721e-usb' was unexpected) >> From schema: >> /home/gsaswath/src/ti-linux-kernel/Documentation/devicetree/bindings/usb/ti,j721e-usb.yaml >> /home/gsaswath/src/ti-linux-kernel/arch/arm64/boot/dts/ti/k3-am642-evm.dt.yaml: >> cdns-usb@f900000: compatible: ['ti,am64-usb', 'ti,j721e-usb'] is too long >> From schema: >> /home/gsaswath/src/ti-linux-kernel/Documentation/devicetree/bindings/usb/ti,j721e-usb.yaml >> >> ``` >> >> >> I have looked around for examples but I am unable to find a similar >> case. I tried using anyOf in the following manner > > You didn't look hard enough. There are lots. > >> ``` >> compatible: >> anyOf: >> - const: ti,am64-usb >> - const: ti,j721e-usb > > This is really no different than a single 'enum' with the 2 values. > 'anyOf' means one or more in the list are true, but more than 1 is > impossible here. > > If you have different possible lengths of values, then you need > 'oneOf' for each case and then 'items' when you have a value with > multiple entries: > > oneOf: > - const: ti,j721e-usb > - items: > - const: ti,am64-usb > - const: ti,j721e-usb > Thank you for the detailed explanation :) . I am sorry for not being able figure this out on my own. I have sent a respin of this patch(v5). Thanks, Aswath >> ``` >> >> But I am getting an error >> >> ``` >> /home/gsaswath/src/ti-linux-kernel/Documentation/devicetree/bindings/usb/ti,j721e-usb.example.dt.yaml: >> cdns_usb@4104000: compatible: 'anyOf' conditional failed, one must be fixed: >> Additional items are not allowed ('ti,j721e-usb' was unexpected) >> ['ti,am64-usb', 'ti,j721e-usb'] is too long >> 'ti,j721e-usb' was expected >> ``` >> >> Doesn't anyof mean that the compatible strings can be used in any >> combination ?? >> >> Thanks, >> Aswath >> >>> reg: >>> description: module registers >>> >>