Message ID | 20210308011853.19360-1-ansuelsmth@gmail.com |
---|---|
State | Superseded |
Headers | show |
Series | [v3,1/2] mtd: core: add nvmem-cells compatible to parse mtd as nvmem cells | expand |
On Mon, Mar 08, 2021 at 02:18:45AM +0100, Ansuel Smith wrote: > Document nvmem-cells compatible used to treat mtd partitions as a > nvmem provider. > > Signed-off-by: Ansuel Smith <ansuelsmth@gmail.com> > --- > .../bindings/mtd/partitions/nvmem-cells.yaml | 105 ++++++++++++++++++ > 1 file changed, 105 insertions(+) > create mode 100644 Documentation/devicetree/bindings/mtd/partitions/nvmem-cells.yaml > > diff --git a/Documentation/devicetree/bindings/mtd/partitions/nvmem-cells.yaml b/Documentation/devicetree/bindings/mtd/partitions/nvmem-cells.yaml > new file mode 100644 > index 000000000000..4ed246b27985 > --- /dev/null > +++ b/Documentation/devicetree/bindings/mtd/partitions/nvmem-cells.yaml > @@ -0,0 +1,105 @@ > +# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause > +%YAML 1.2 > +--- > +$id: http://devicetree.org/schemas/mtd/partitions/nvmem-cells.yaml# > +$schema: http://devicetree.org/meta-schemas/core.yaml# > + > +title: Nvmem cells > + > +description: | > + This binding can be used to treat the specific partition as a nvmem provider. > + Each direct subnodes represents the nvmem cells and won't be parsed as fixed-partitions. > + Fixed-partitions bindings described in fixed-partitions.yaml apply to the nvmem provider node. > + > +maintainers: > + - Ansuel Smith <ansuelsmth@gmail.com> > + I think this should reference nvmem.yaml. We can drop the $nodename restrictions in it. > +properties: > + compatible: > + const: nvmem-cells > + > + "#address-cells": true > + > + "#size-cells": true > + > + reg: > + description: partition offset and size within the flash > + maxItems: 1 > + > +required: > + - compatible > + - "#address-cells" > + - "#size-cells" > + - reg > + > +additionalProperties: true > + > +examples: > + - | > + partitions { > + compatible = "fixed-partitions"; > + #address-cells = <1>; > + #size-cells = <1>; > + > + /* ... */ > + > + }; > + art: art@1200000 { > + compatible = "nvmem-cells"; > + reg = <0x1200000 0x0140000>; > + label = "art"; > + read-only; > + #address-cells = <1>; > + #size-cells = <1>; > + > + macaddr_gmac1: macaddr_gmac1@0 { > + reg = <0x0 0x6>; > + }; > + > + macaddr_gmac2: macaddr_gmac2@6 { > + reg = <0x6 0x6>; > + }; > + > + pre_cal_24g: pre_cal_24g@1000 { > + reg = <0x1000 0x2f20>; > + }; > + > + pre_cal_5g: pre_cal_5g@5000{ > + reg = <0x5000 0x2f20>; > + }; > + }; > + - | > + partitions { > + compatible = "fixed-partitions"; > + #address-cells = <1>; > + #size-cells = <1>; > + > + partition@0 { > + label = "bootloader"; > + reg = <0x000000 0x100000>; > + read-only; > + }; > + > + firmware@100000 { > + compatible = "brcm,trx"; > + label = "firmware"; > + reg = <0x100000 0xe00000>; > + }; > + > + calibration@f00000 { > + compatible = "nvmem-cells"; > + label = "calibration"; > + reg = <0xf00000 0x100000>; > + ranges = <0 0xf00000 0x100000>; > + #address-cells = <1>; > + #size-cells = <1>; > + > + wifi0@0 { > + reg = <0x000000 0x080000>; > + }; > + > + wifi1@80000 { > + reg = <0x080000 0x080000>; > + }; > + }; > + }; > -- > 2.30.0 >
diff --git a/drivers/mtd/mtdcore.c b/drivers/mtd/mtdcore.c index 2d6423d89a17..ac1b4f176a17 100644 --- a/drivers/mtd/mtdcore.c +++ b/drivers/mtd/mtdcore.c @@ -531,6 +531,7 @@ static int mtd_nvmem_reg_read(void *priv, unsigned int offset, static int mtd_nvmem_add(struct mtd_info *mtd) { + struct device_node *node = mtd_get_of_node(mtd); struct nvmem_config config = {}; config.id = -1; @@ -543,7 +544,7 @@ static int mtd_nvmem_add(struct mtd_info *mtd) config.stride = 1; config.read_only = true; config.root_only = true; - config.no_of_node = true; + config.no_of_node = !of_device_is_compatible(node, "nvmem-cells"); config.priv = mtd; mtd->nvmem = nvmem_register(&config);
Partitions that contains the nvmem-cells compatible will register their direct subonodes as nvmem cells and the node will be treated as a nvmem provider. Signed-off-by: Ansuel Smith <ansuelsmth@gmail.com> --- Depends on [PATCH] mtd: parsers: ofpart: limit parsing of deprecated DT syntax --- drivers/mtd/mtdcore.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-)