The nvmem cell binding applies to all objects which match "^.*@[0-9a-f]+$", without taking a compatible into account. This precludes extension of e.g. eeprom nodes by any child nodes other than nvmem. Consider following example: eeprom@0 { reg = <0 64>; #address-cells = <1>; #size-cells = <1>; partitions { compatible = "fixed-partitions"; #address-cells = <1>; #size-cells = <1>; bits = <64 64 64>; /* to verify it's skipped */ part@0 { reg = <0x00 16>; }; }; no-cell@10 { compatible = "not-nvmem-cell"; reg = <0x10 4>; bits = <64 64 64>; /* to verify it's skipped */ }; cell-old@14 { reg = <0x14 0x2>; }; cell-new@16 { compatible = "nvmem-cell"; reg = <0x16 4>; }; }; Without this series, the NVMEM driver interprets all direct children of eeprom@0 as NVMEM cells and driver probe fails, because the partitions node lacks a reg property, e.g.: nvmem 0-00000: nvmem: invalid reg on /eeprom@0 Running dtbs_check on the snippet will skip partitions (it doesn't match above regex), but will flag no-cell@10 and cell-new@16 as invalid. With this series applied, the driver will skip partitions and no-cell@10, because they have a compatible but it's not "nvmem-cell". Both cell-old@14 and cell-new@16 will be interpreted as cells. Likewise, running dtbs_check on the snippet will skip partitions (compatible doesn't match and regex doesn't either) and no-cell@10, but accept the other two. This series resolves an existing clash between this nvmem-cell binding and the barebox bootloader binding that extends the fixed-partitions MTD binding to EEPROMs[1]. It's also a building block for getting nvmem cells and partitions in MTD devices to co-exist in the same device tree node[2]. The changes are backwards-compatible, because, per binding, a compatible property in a cell node was so far invalid. More details in the commit messages. [1]: https://www.mail-archive.com/barebox@xxxxxxxxxxxxxxxxxxx/msg33944.html [2]: https://patchwork.ozlabs.org/patch/890741/ v2 -> v3: - use optional compatible property to weed out nodes instead of name - extend binding documentation (Srini) v1 -> v2: - use ->full_name instead of ->name as to not break existing correct cells (Christian) Cheers, Ahmad Fatoum (2): dt-bindings: nvmem: skip nodes with compatibles other than "nvmem-cell" nvmem: core: skip nodes with compatibles other than "nvmem-cell" Documentation/devicetree/bindings/nvmem/nvmem.yaml | 14 +++++++++++++- drivers/nvmem/core.c | 4 ++++ 2 files changed, 17 insertions(+), 1 deletion(-) Cc: Rob Herring <robh+dt@xxxxxxxxxx> Cc: devicetree@xxxxxxxxxxxxxxx -- 2.26.2