On Thu, Jan 04, 2024 at 07:23:02PM +0800, Zhenhua Huang wrote: > Node name which includes "sram" not only represents MTD devices, but also > lots of sram devices(eg, qcom,imem.yaml, rules in folder sram/*). > > To avoid the conflicts, change the schema as: > - if node name includes "sram", must select "compatible" to match > (I have listed all "comptible" string in mtd.yaml by searching > drivers/mtd/* to find applicable drivers) > - if node name is nand/flash, use "nodename" to select. > You're right, it doesn't seem appropriate for the mtd binding to be selected for nodes intended to match e.g. the qcom,imem binding. > Fixes: 7bdc671822e9 ("dt-bindings: mtd: physmap: Reuse the generic definitions") > Signed-off-by: Zhenhua Huang <quic_zhenhuah@xxxxxxxxxxx> > --- > Hello, > > Tested a few devicetree nodes, which confirms: > "qcom,imem.yaml" which in sram/ not matches with mtd.yaml anymore. > All nodes include string "sram" must have "compatible" which listed in > mtd.yaml to be matched. > > Current I just modify the rule for "sram" as it is definitely conflicting with > rules in sram/*. I have not much backgrounds on nand/flash whether they may have > similar conflicts. > > Documentation/devicetree/bindings/mtd/mtd.yaml | 24 +++++++++++++++++++++--- > 1 file changed, 21 insertions(+), 3 deletions(-) > > diff --git a/Documentation/devicetree/bindings/mtd/mtd.yaml b/Documentation/devicetree/bindings/mtd/mtd.yaml > index f322290..1704437 100644 > --- a/Documentation/devicetree/bindings/mtd/mtd.yaml > +++ b/Documentation/devicetree/bindings/mtd/mtd.yaml > @@ -10,10 +10,28 @@ maintainers: > - Miquel Raynal <miquel.raynal@xxxxxxxxxxx> > - Richard Weinberger <richard@xxxxxx> > > -properties: > - $nodename: The mtd binding is $ref'ed by other bindings, similar to how we do with other bindings of common properties. So, I think the problem with mtd is that this ($nodename) turns into a "select" automatically, which causes this binding to match nodes by name, rather than just those $ref'ing it. We should be able to avoid the automatically created select from the $nodename, and rely on $ref, by just adding: select: false Regards, Bjorn > - pattern: "^(flash|.*sram|nand)(@.*)?$" > +select: > + if: > + properties: > + $nodename: > + pattern: "^.*sram(@.*)?$" > + then: > + properties: > + compatible: > + enum: > + - arm,vexpress-psram > + - cypress,cy7c1019dv33-10zsxi > + - microchip,48l640 > + - mtd-ram > + else: > + properties: > + $nodename: > + pattern: "^(flash|nand)(@.*)?$" > > + required: > + - $nodename > + > +properties: > label: > description: > User-defined MTD device name. Can be used to assign user friendly > -- > 2.7.4 >