Message ID | 20210322181949.2805-4-michael@walle.cc |
---|---|
State | New |
Headers | show |
Series | None | expand |
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@walle.cc> > --- > .../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
Hi Rob, Am 2021-03-27 18:09, schrieb Rob Herring: >> + 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. Two questions: (1) I guess this is also true for "PATCH 2/4", where you already added your Reviewed-by? (2) I'd add the "jedec,spi-nor" because, that is the one I target. But before doing so, I'd need to add the otp subnode to the spi-nor schema, correct? Otherwise, the schema validation will fail. Eg. --- a/Documentation/devicetree/bindings/mtd/jedec,spi-nor.yaml +++ b/Documentation/devicetree/bindings/mtd/jedec,spi-nor.yaml @@ -9,6 +9,9 @@ title: SPI NOR flash ST M25Pxx (and similar) serial flash chips maintainers: - Rob Herring <robh@kernel.org> +allOf: + - $ref: "mtd.yaml#" + properties: compatible: oneOf: @@ -82,6 +85,9 @@ patternProperties: '^partition@': type: object + "^otp(-[0-9]+)?$": + type: object + additionalProperties: false examples: -michael
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]+)?": + 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"; + + 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>; + }; + }; + }; + }; + ...
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@walle.cc> --- .../devicetree/bindings/mtd/mtd.yaml | 71 +++++++++++++++++++ 1 file changed, 71 insertions(+)