* [PATCH v2 0/2] Add support for "on-die" ECC on Davinci. @ 2024-10-02 9:01 Marcus Folkesson 2024-10-02 9:01 ` [PATCH v2 1/2] mtd: nand: davinci: add support for on-die ECC engine type Marcus Folkesson 2024-10-02 9:01 ` [PATCH v2 2/2] dt-bindings: mtd: davinci: convert to yaml Marcus Folkesson 0 siblings, 2 replies; 5+ messages in thread From: Marcus Folkesson @ 2024-10-02 9:01 UTC (permalink / raw) To: Miquel Raynal, Richard Weinberger, Vignesh Raghavendra, Rob Herring, Krzysztof Kozlowski, Conor Dooley Cc: linux-mtd, linux-kernel, devicetree, Marcus Folkesson Some chips, e.g. Micron MT29F1G08ABBFAH4, has a mandatory on-die ECC. Add "on-die" as ECC engine type in order to be compatible with those. Signed-off-by: Marcus Folkesson <marcus.folkesson@gmail.com> --- Changes in v2: - Convert dt-bindings file to yaml - Link to v1: https://lore.kernel.org/r/20241001-ondie-v1-0-a3daae15c89d@gmail.com --- Marcus Folkesson (2): mtd: nand: davinci: add support for on-die ECC engine type dt-bindings: mtd: davinci: convert to yaml .../devicetree/bindings/mtd/davinci-nand.txt | 94 ------------------ .../devicetree/bindings/mtd/ti,davinci-nand.yaml | 105 +++++++++++++++++++++ drivers/mtd/nand/raw/davinci_nand.c | 5 +- 3 files changed, 109 insertions(+), 95 deletions(-) --- base-commit: 200289db261f0c8131a5756133e9d30966289c3b change-id: 20241001-ondie-a0edcf28f846 Best regards, -- Marcus Folkesson <marcus.folkesson@gmail.com> ^ permalink raw reply [flat|nested] 5+ messages in thread
* [PATCH v2 1/2] mtd: nand: davinci: add support for on-die ECC engine type 2024-10-02 9:01 [PATCH v2 0/2] Add support for "on-die" ECC on Davinci Marcus Folkesson @ 2024-10-02 9:01 ` Marcus Folkesson 2024-10-02 9:01 ` [PATCH v2 2/2] dt-bindings: mtd: davinci: convert to yaml Marcus Folkesson 1 sibling, 0 replies; 5+ messages in thread From: Marcus Folkesson @ 2024-10-02 9:01 UTC (permalink / raw) To: Miquel Raynal, Richard Weinberger, Vignesh Raghavendra, Rob Herring, Krzysztof Kozlowski, Conor Dooley Cc: linux-mtd, linux-kernel, devicetree, Marcus Folkesson Some chips, e.g. Micron MT29F1G08ABBFAH4, has a mandatory on-die ECC. Add "on-die" as ECC engine type in order to be compatible with those. Signed-off-by: Marcus Folkesson <marcus.folkesson@gmail.com> --- drivers/mtd/nand/raw/davinci_nand.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/drivers/mtd/nand/raw/davinci_nand.c b/drivers/mtd/nand/raw/davinci_nand.c index 392678143a36b20b42c1827eee8203dc2e41889a..79e768d337ae12f6e8d7f21f1acd4e259f4f3020 100644 --- a/drivers/mtd/nand/raw/davinci_nand.c +++ b/drivers/mtd/nand/raw/davinci_nand.c @@ -66,6 +66,7 @@ struct davinci_nand_pdata { /* none == NAND_ECC_ENGINE_TYPE_NONE (strongly *not* advised!!) * soft == NAND_ECC_ENGINE_TYPE_SOFT + * on-die == NAND_ECC_ENGINE_TYPE_ON_DIE * else == NAND_ECC_ENGINE_TYPE_ON_HOST, according to ecc_bits * * All DaVinci-family chips support 1-bit hardware ECC. @@ -524,6 +525,8 @@ static struct davinci_nand_pdata pdata->engine_type = NAND_ECC_ENGINE_TYPE_SOFT; if (!strncmp("hw", mode, 2)) pdata->engine_type = NAND_ECC_ENGINE_TYPE_ON_HOST; + if (!strncmp("on-die", mode, 6)) + pdata->engine_type = NAND_ECC_ENGINE_TYPE_ON_DIE; } if (!of_property_read_u32(pdev->dev.of_node, "ti,davinci-ecc-bits", &prop)) @@ -580,6 +583,7 @@ static int davinci_nand_attach_chip(struct nand_chip *chip) switch (chip->ecc.engine_type) { case NAND_ECC_ENGINE_TYPE_NONE: + case NAND_ECC_ENGINE_TYPE_ON_DIE: pdata->ecc_bits = 0; break; case NAND_ECC_ENGINE_TYPE_SOFT: @@ -914,4 +918,3 @@ module_platform_driver(nand_davinci_driver); MODULE_LICENSE("GPL"); MODULE_AUTHOR("Texas Instruments"); MODULE_DESCRIPTION("Davinci NAND flash driver"); - -- 2.46.0 ^ permalink raw reply related [flat|nested] 5+ messages in thread
* [PATCH v2 2/2] dt-bindings: mtd: davinci: convert to yaml 2024-10-02 9:01 [PATCH v2 0/2] Add support for "on-die" ECC on Davinci Marcus Folkesson 2024-10-02 9:01 ` [PATCH v2 1/2] mtd: nand: davinci: add support for on-die ECC engine type Marcus Folkesson @ 2024-10-02 9:01 ` Marcus Folkesson 2024-10-02 14:08 ` Rob Herring (Arm) 2024-10-02 17:29 ` Rob Herring 1 sibling, 2 replies; 5+ messages in thread From: Marcus Folkesson @ 2024-10-02 9:01 UTC (permalink / raw) To: Miquel Raynal, Richard Weinberger, Vignesh Raghavendra, Rob Herring, Krzysztof Kozlowski, Conor Dooley Cc: linux-mtd, linux-kernel, devicetree, Marcus Folkesson Convert the bindings to yaml format. Signed-off-by: Marcus Folkesson <marcus.folkesson@gmail.com> --- .../devicetree/bindings/mtd/davinci-nand.txt | 94 ------------------ .../devicetree/bindings/mtd/ti,davinci-nand.yaml | 105 +++++++++++++++++++++ 2 files changed, 105 insertions(+), 94 deletions(-) diff --git a/Documentation/devicetree/bindings/mtd/davinci-nand.txt b/Documentation/devicetree/bindings/mtd/davinci-nand.txt deleted file mode 100644 index eb8e2ff4dbd2901b3c396f2e66c1f590a32dcf67..0000000000000000000000000000000000000000 --- a/Documentation/devicetree/bindings/mtd/davinci-nand.txt +++ /dev/null @@ -1,94 +0,0 @@ -Device tree bindings for Texas instruments Davinci/Keystone NAND controller - -This file provides information, what the device node for the davinci/keystone -NAND interface contains. - -Documentation: -Davinci DM646x - https://www.ti.com/lit/ug/sprueq7c/sprueq7c.pdf -Kestone - https://www.ti.com/lit/ug/sprugz3a/sprugz3a.pdf - -Required properties: - -- compatible: "ti,davinci-nand" - "ti,keystone-nand" - -- reg: Contains 2 offset/length values: - - offset and length for the access window. - - offset and length for accessing the AEMIF - control registers. - -- ti,davinci-chipselect: number of chipselect. Indicates on the - davinci_nand driver which chipselect is used - for accessing the nand. - Can be in the range [0-3]. - -Recommended properties : - -- ti,davinci-mask-ale: mask for ALE. Needed for executing address - phase. These offset will be added to the base - address for the chip select space the NAND Flash - device is connected to. - If not set equal to 0x08. - -- ti,davinci-mask-cle: mask for CLE. Needed for executing command - phase. These offset will be added to the base - address for the chip select space the NAND Flash - device is connected to. - If not set equal to 0x10. - -- ti,davinci-mask-chipsel: mask for chipselect address. Needed to mask - addresses for given chipselect. - -- nand-ecc-mode: operation mode of the NAND ecc mode. ECC mode - valid values for davinci driver: - - "none" - - "soft" - - "hw" - -- ti,davinci-ecc-bits: used ECC bits, currently supported 1 or 4. - -- nand-bus-width: buswidth 8 or 16. If not present 8. - -- nand-on-flash-bbt: use flash based bad block table support. OOB - identifier is saved in OOB area. If not present - false. - -Deprecated properties: - -- ti,davinci-ecc-mode: operation mode of the NAND ecc mode. ECC mode - valid values for davinci driver: - - "none" - - "soft" - - "hw" - -- ti,davinci-nand-buswidth: buswidth 8 or 16. If not present 8. - -- ti,davinci-nand-use-bbt: use flash based bad block table support. OOB - identifier is saved in OOB area. If not present - false. - -Nand device bindings may contain additional sub-nodes describing partitions of -the address space. See mtd.yaml for more detail. The NAND Flash timing -values must be programmed in the chip select’s node of AEMIF -memory-controller (see Documentation/devicetree/bindings/memory-controllers/ -davinci-aemif.txt). - -Example(da850 EVM ): - -nand_cs3@62000000 { - compatible = "ti,davinci-nand"; - reg = <0x62000000 0x807ff - 0x68000000 0x8000>; - ti,davinci-chipselect = <1>; - ti,davinci-mask-ale = <0>; - ti,davinci-mask-cle = <0>; - ti,davinci-mask-chipsel = <0>; - nand-ecc-mode = "hw"; - ti,davinci-ecc-bits = <4>; - nand-on-flash-bbt; - - partition@180000 { - label = "ubifs"; - reg = <0x180000 0x7e80000>; - }; -}; diff --git a/Documentation/devicetree/bindings/mtd/ti,davinci-nand.yaml b/Documentation/devicetree/bindings/mtd/ti,davinci-nand.yaml new file mode 100644 index 0000000000000000000000000000000000000000..c0e09cccea8e65a6fcb98291c0cee0db56a97def --- /dev/null +++ b/Documentation/devicetree/bindings/mtd/ti,davinci-nand.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/ti,davinci-nand.yaml# +$schema: http://devicetree.org/meta-schemas/core.yaml# + +title: TI DaVinci NAND controller + +maintainers: + - Marcus Folkesson <marcus.folkesson@gmail.com> + +allOf: + - $ref: nand-controller.yaml# + +properties: + compatible: + enum: + - ti,davinci-nand + - ti,keystone-nand + + reg: + maxItems: 1 + + ti,davinci-chipselect: + description: | + Number of chipselect. Indicate on the davinci_nand + driver which chipselect is used for accessing + the nand. + $ref: /schemas/types.yaml#/definitions/uint32 + enum: [0, 1, 2, 3] + + ti,davinci-mask-ale: + description: | + Mask for ALE. Needed for executing address + phase. These offset will be added to the base + address for the chip select space the NAND Flash + device is connected to. + $ref: /schemas/types.yaml#/definitions/uint32 + default: 0x08 + + ti,davinci-mask-cle: + description: | + Mask for CLE. Needed for executing command + phase. These offset will be added to the base + address for the chip select space the NAND Flash + device is connected to. + $ref: /schemas/types.yaml#/definitions/uint32 + default: 0x10 + + ti,davinci-mask-chipsel: + description: | + Mask for chipselect address. Needed to mask + addresses for given chipselect. + $ref: /schemas/types.yaml#/definitions/uint32 + default: 0 + + ti,davinci-ecc-bits: + description: Used ECC bits. + $ref: /schemas/types.yaml#/definitions/uint32 + enum: [1, 4] + + ti,davinci-ecc-mode: + description: Operation mode of the NAND ECC mode. + $ref: /schemas/types.yaml#/definitions/string + enum: [none, soft, hw, on-die] + deprecated: true + + ti,davinci-nand-buswidth: + description: Bus width to the NAND chip + $ref: /schemas/types.yaml#/definitions/uint32 + enum: [8, 16] + default: 8 + deprecated: true + + ti,davinci-nand-use-bbt: + type: boolean + description: | + Use flash based bad block table support. OOB + identifier is saved in OOB area. + deprecated: true + +required: + - compatible + - reg + - ti,davinci-chipselect + +examples: + - | + nand_cs3@62000000 { + compatible = "ti,davinci-nand"; + reg = <0x62000000 0x807ff + 0x68000000 0x8000>; + ti,davinci-chipselect = <1>; + ti,davinci-mask-ale = <0>; + ti,davinci-mask-cle = <0>; + ti,davinci-mask-chipsel = <0>; + nand-ecc-mode = "hw"; + ti,davinci-ecc-bits = <4>; + nand-on-flash-bbt; + + partition@180000 { + label = "ubifs"; + reg = <0x180000 0x7e80000>; + }; + }; -- 2.46.0 ^ permalink raw reply related [flat|nested] 5+ messages in thread
* Re: [PATCH v2 2/2] dt-bindings: mtd: davinci: convert to yaml 2024-10-02 9:01 ` [PATCH v2 2/2] dt-bindings: mtd: davinci: convert to yaml Marcus Folkesson @ 2024-10-02 14:08 ` Rob Herring (Arm) 2024-10-02 17:29 ` Rob Herring 1 sibling, 0 replies; 5+ messages in thread From: Rob Herring (Arm) @ 2024-10-02 14:08 UTC (permalink / raw) To: Marcus Folkesson Cc: Miquel Raynal, Richard Weinberger, Krzysztof Kozlowski, Vignesh Raghavendra, Conor Dooley, devicetree, linux-mtd, linux-kernel On Wed, 02 Oct 2024 11:01:31 +0200, Marcus Folkesson wrote: > Convert the bindings to yaml format. > > Signed-off-by: Marcus Folkesson <marcus.folkesson@gmail.com> > --- > .../devicetree/bindings/mtd/davinci-nand.txt | 94 ------------------ > .../devicetree/bindings/mtd/ti,davinci-nand.yaml | 105 +++++++++++++++++++++ > 2 files changed, 105 insertions(+), 94 deletions(-) > My bot found errors running 'make dt_binding_check' on your patch: yamllint warnings/errors: dtschema/dtc warnings/errors: /builds/robherring/dt-review-ci/linux/Documentation/devicetree/bindings/mtd/ti,davinci-nand.yaml: 'oneOf' conditional failed, one must be fixed: 'unevaluatedProperties' is a required property 'additionalProperties' is a required property hint: Either unevaluatedProperties or additionalProperties must be present from schema $id: http://devicetree.org/meta-schemas/core.yaml# /builds/robherring/dt-review-ci/linux/Documentation/devicetree/bindings/mtd/ti,davinci-nand.yaml: properties:ti,davinci-ecc-bits: '$ref' should not be valid under {'const': '$ref'} hint: Standard unit suffix properties don't need a type $ref from schema $id: http://devicetree.org/meta-schemas/core.yaml# Documentation/devicetree/bindings/mtd/ti,davinci-nand.example.dts:32.17-44: Warning (reg_format): /example-0/nand_cs3@62000000/partition@180000:reg: property has invalid length (8 bytes) (#address-cells == 2, #size-cells == 1) Documentation/devicetree/bindings/mtd/ti,davinci-nand.example.dtb: Warning (pci_device_reg): Failed prerequisite 'reg_format' Documentation/devicetree/bindings/mtd/ti,davinci-nand.example.dtb: Warning (pci_device_bus_num): Failed prerequisite 'reg_format' Documentation/devicetree/bindings/mtd/ti,davinci-nand.example.dtb: Warning (simple_bus_reg): Failed prerequisite 'reg_format' Documentation/devicetree/bindings/mtd/ti,davinci-nand.example.dtb: Warning (i2c_bus_reg): Failed prerequisite 'reg_format' Documentation/devicetree/bindings/mtd/ti,davinci-nand.example.dtb: Warning (spi_bus_reg): Failed prerequisite 'reg_format' Documentation/devicetree/bindings/mtd/ti,davinci-nand.example.dts:30.30-33.15: Warning (avoid_default_addr_size): /example-0/nand_cs3@62000000/partition@180000: Relying on default #address-cells value Documentation/devicetree/bindings/mtd/ti,davinci-nand.example.dts:30.30-33.15: Warning (avoid_default_addr_size): /example-0/nand_cs3@62000000/partition@180000: Relying on default #size-cells value Documentation/devicetree/bindings/mtd/ti,davinci-nand.example.dtb: Warning (unique_unit_address_if_enabled): Failed prerequisite 'avoid_default_addr_size' /builds/robherring/dt-review-ci/linux/Documentation/devicetree/bindings/mtd/ti,davinci-nand.example.dtb: nand_cs3@62000000: $nodename:0: 'nand_cs3@62000000' does not match '^nand-controller(@.*)?' from schema $id: http://devicetree.org/schemas/mtd/ti,davinci-nand.yaml# /builds/robherring/dt-review-ci/linux/Documentation/devicetree/bindings/mtd/ti,davinci-nand.example.dtb: nand_cs3@62000000: '#address-cells' is a required property from schema $id: http://devicetree.org/schemas/mtd/ti,davinci-nand.yaml# /builds/robherring/dt-review-ci/linux/Documentation/devicetree/bindings/mtd/ti,davinci-nand.example.dtb: nand_cs3@62000000: '#size-cells' is a required property from schema $id: http://devicetree.org/schemas/mtd/ti,davinci-nand.yaml# /builds/robherring/dt-review-ci/linux/Documentation/devicetree/bindings/mtd/ti,davinci-nand.example.dtb: nand_cs3@62000000: reg: [[1644167168, 526335], [1744830464, 32768]] is too long from schema $id: http://devicetree.org/schemas/mtd/ti,davinci-nand.yaml# /builds/robherring/dt-review-ci/linux/Documentation/devicetree/bindings/mtd/ti,davinci-nand.example.dtb: nand_cs3@62000000: ti,davinci-ecc-bits: 4 is not of type 'array' from schema $id: http://devicetree.org/schemas/mtd/ti,davinci-nand.yaml# /builds/robherring/dt-review-ci/linux/Documentation/devicetree/bindings/mtd/ti,davinci-nand.example.dtb: nand_cs3@62000000: ti,davinci-ecc-bits: 4 is not of type 'array' from schema $id: http://devicetree.org/schemas/property-units.yaml# doc reference errors (make refcheckdocs): See https://patchwork.ozlabs.org/project/devicetree-bindings/patch/20241002-ondie-v2-2-318156d8c7b4@gmail.com The base for the series is generally the latest rc1. A different dependency should be noted in *this* patch. If you already ran 'make dt_binding_check' and didn't see the above error(s), then make sure 'yamllint' is installed and dt-schema is up to date: pip3 install dtschema --upgrade Please check and re-submit after running the above command yourself. Note that DT_SCHEMA_FILES can be set to your schema file to speed up checking your schema. However, it must be unset to test all examples with your schema. ^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH v2 2/2] dt-bindings: mtd: davinci: convert to yaml 2024-10-02 9:01 ` [PATCH v2 2/2] dt-bindings: mtd: davinci: convert to yaml Marcus Folkesson 2024-10-02 14:08 ` Rob Herring (Arm) @ 2024-10-02 17:29 ` Rob Herring 1 sibling, 0 replies; 5+ messages in thread From: Rob Herring @ 2024-10-02 17:29 UTC (permalink / raw) To: Marcus Folkesson Cc: Miquel Raynal, Richard Weinberger, Vignesh Raghavendra, Krzysztof Kozlowski, Conor Dooley, linux-mtd, linux-kernel, devicetree On Wed, Oct 02, 2024 at 11:01:31AM +0200, Marcus Folkesson wrote: > Convert the bindings to yaml format. > > Signed-off-by: Marcus Folkesson <marcus.folkesson@gmail.com> > --- > .../devicetree/bindings/mtd/davinci-nand.txt | 94 ------------------ > .../devicetree/bindings/mtd/ti,davinci-nand.yaml | 105 +++++++++++++++++++++ > 2 files changed, 105 insertions(+), 94 deletions(-) > > diff --git a/Documentation/devicetree/bindings/mtd/ti,davinci-nand.yaml b/Documentation/devicetree/bindings/mtd/ti,davinci-nand.yaml > new file mode 100644 > index 0000000000000000000000000000000000000000..c0e09cccea8e65a6fcb98291c0cee0db56a97def > --- /dev/null > +++ b/Documentation/devicetree/bindings/mtd/ti,davinci-nand.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/ti,davinci-nand.yaml# > +$schema: http://devicetree.org/meta-schemas/core.yaml# > + > +title: TI DaVinci NAND controller > + > +maintainers: > + - Marcus Folkesson <marcus.folkesson@gmail.com> > + > +allOf: > + - $ref: nand-controller.yaml# > + > +properties: > + compatible: > + enum: > + - ti,davinci-nand > + - ti,keystone-nand > + > + reg: > + maxItems: 1 > + > + ti,davinci-chipselect: > + description: | Don't need '|' if no formatting. > + Number of chipselect. Indicate on the davinci_nand > + driver which chipselect is used for accessing > + the nand. Wrap lines at 80 char. > + $ref: /schemas/types.yaml#/definitions/uint32 > + enum: [0, 1, 2, 3] > + > + ti,davinci-mask-ale: > + description: | > + Mask for ALE. Needed for executing address > + phase. These offset will be added to the base > + address for the chip select space the NAND Flash > + device is connected to. > + $ref: /schemas/types.yaml#/definitions/uint32 > + default: 0x08 > + > + ti,davinci-mask-cle: > + description: | > + Mask for CLE. Needed for executing command > + phase. These offset will be added to the base > + address for the chip select space the NAND Flash > + device is connected to. > + $ref: /schemas/types.yaml#/definitions/uint32 > + default: 0x10 > + > + ti,davinci-mask-chipsel: > + description: | > + Mask for chipselect address. Needed to mask > + addresses for given chipselect. > + $ref: /schemas/types.yaml#/definitions/uint32 > + default: 0 > + > + ti,davinci-ecc-bits: > + description: Used ECC bits. > + $ref: /schemas/types.yaml#/definitions/uint32 > + enum: [1, 4] > + > + ti,davinci-ecc-mode: > + description: Operation mode of the NAND ECC mode. > + $ref: /schemas/types.yaml#/definitions/string > + enum: [none, soft, hw, on-die] > + deprecated: true > + > + ti,davinci-nand-buswidth: > + description: Bus width to the NAND chip > + $ref: /schemas/types.yaml#/definitions/uint32 > + enum: [8, 16] > + default: 8 > + deprecated: true > + > + ti,davinci-nand-use-bbt: > + type: boolean > + description: | > + Use flash based bad block table support. OOB > + identifier is saved in OOB area. > + deprecated: true > + > +required: > + - compatible > + - reg > + - ti,davinci-chipselect > + > +examples: > + - | > + nand_cs3@62000000 { nand-controller@... > + compatible = "ti,davinci-nand"; > + reg = <0x62000000 0x807ff > + 0x68000000 0x8000>; > + ti,davinci-chipselect = <1>; > + ti,davinci-mask-ale = <0>; > + ti,davinci-mask-cle = <0>; > + ti,davinci-mask-chipsel = <0>; > + nand-ecc-mode = "hw"; > + ti,davinci-ecc-bits = <4>; > + nand-on-flash-bbt; Wrong indentation. > + > + partition@180000 { > + label = "ubifs"; > + reg = <0x180000 0x7e80000>; > + }; > + }; > > -- > 2.46.0 > ^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2024-10-02 17:29 UTC | newest] Thread overview: 5+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2024-10-02 9:01 [PATCH v2 0/2] Add support for "on-die" ECC on Davinci Marcus Folkesson 2024-10-02 9:01 ` [PATCH v2 1/2] mtd: nand: davinci: add support for on-die ECC engine type Marcus Folkesson 2024-10-02 9:01 ` [PATCH v2 2/2] dt-bindings: mtd: davinci: convert to yaml Marcus Folkesson 2024-10-02 14:08 ` Rob Herring (Arm) 2024-10-02 17:29 ` Rob Herring
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).