On Mon, Mar 22, 2021 at 07:19:48PM +0100, Michael Walle wrote: > Flash devices can have one-time-programmable regions. Add a nvmem > binding so they can be used as a nvmem provider. > > Signed-off-by: Michael Walle <michael@xxxxxxxx> > --- > .../devicetree/bindings/mtd/mtd.yaml | 71 +++++++++++++++++++ > 1 file changed, 71 insertions(+) > > diff --git a/Documentation/devicetree/bindings/mtd/mtd.yaml b/Documentation/devicetree/bindings/mtd/mtd.yaml > index 321259aab0f6..2b852f91a6a9 100644 > --- a/Documentation/devicetree/bindings/mtd/mtd.yaml > +++ b/Documentation/devicetree/bindings/mtd/mtd.yaml > @@ -21,6 +21,25 @@ properties: > based name) in order to ease flash device identification and/or > describe what they are used for. > > +patternProperties: > + "^otp(-[0-9]+)?": Needs '$' on the end. > + type: object > + $ref: ../nvmem/nvmem.yaml# > + > + description: | > + An OTP memory region. Some flashes provide a one-time-programmable > + memory whose content can either be programmed by a user or is already > + pre-programmed by the factory. Some flashes might provide both. > + > + properties: > + compatible: > + enum: > + - mtd-user-otp > + - mtd-factory-otp > + > + required: > + - compatible > + > additionalProperties: true > > examples: > @@ -36,4 +55,56 @@ examples: > }; > }; > > + - | > + spi { > + #address-cells = <1>; > + #size-cells = <0>; > + > + flash@0 { > + reg = <0>; > + compatible = "some,flash"; Soon (in linux-next, but off by default) this will be a warning for undocumented compatible string. Use a real device. > + > + otp { > + compatible = "mtd-user-otp"; > + #address-cells = <1>; > + #size-cells = <1>; > + > + serial-number@0 { > + reg = <0 16>; > + }; > + }; > + }; > + }; > + > + - | > + spi { > + #address-cells = <1>; > + #size-cells = <0>; > + > + flash@0 { > + reg = <0>; > + compatible = "some,flash"; > + > + otp-1 { > + compatible = "mtd-factory-otp"; > + #address-cells = <1>; > + #size-cells = <1>; > + > + electronic-serial-number@0 { > + reg = <0 8>; > + }; > + }; > + > + otp-2 { > + compatible = "mtd-user-otp"; > + #address-cells = <1>; > + #size-cells = <1>; > + > + mac-address@0 { > + reg = <0 6>; > + }; > + }; > + }; > + }; The 2nd example is a superset of the 1st, so drop the first one. Rob