linux-mtd.lists.infradead.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v2 1/2] dt-bindings: mtd: Add YAML schemas for the generic NAND options
@ 2019-04-02 14:54 Maxime Ripard
  2019-04-02 14:54 ` [PATCH v2 2/2] dt-bindings: mtd: sunxi-nand: Add YAML schemas Maxime Ripard
  2019-04-03  1:20 ` [PATCH v2 1/2] dt-bindings: mtd: Add YAML schemas for the generic NAND options Rob Herring
  0 siblings, 2 replies; 9+ messages in thread
From: Maxime Ripard @ 2019-04-02 14:54 UTC (permalink / raw)
  To: Boris Brezillon, Mark Rutland, Rob Herring, Frank Rowand, Miquel Raynal
  Cc: Maxime Ripard, devicetree, Chen-Yu Tsai, linux-mtd, linux-arm-kernel

The NAND chips in MTD have a bunch of generic options that are needed in a
device tree. Add a YAML schemas for those.

Signed-off-by: Maxime Ripard <maxime.ripard@bootlin.com>

---

Changes from v1:
  - Removed free form text binding
  - Enhanced properties descriptions
  - Fixed the SPDX license tag
  - Added minimums for nand-ecc-strength and nand-ecc-step-size
  - Removed Boris from the maintainers
---
 Documentation/devicetree/bindings/mtd/nand-controller.yaml | 141 +++++++-
 Documentation/devicetree/bindings/mtd/nand.txt             |  75 +----
 2 files changed, 141 insertions(+), 75 deletions(-)
 create mode 100644 Documentation/devicetree/bindings/mtd/nand-controller.yaml
 delete mode 100644 Documentation/devicetree/bindings/mtd/nand.txt

diff --git a/Documentation/devicetree/bindings/mtd/nand-controller.yaml b/Documentation/devicetree/bindings/mtd/nand-controller.yaml
new file mode 100644
index 000000000000..ebc7833ffc0c
--- /dev/null
+++ b/Documentation/devicetree/bindings/mtd/nand-controller.yaml
@@ -0,0 +1,141 @@
+# SPDX-License-Identifier: GPL-2.0
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/mtd/nand-controller.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: NAND Chip and NAND Controller Generic Binding
+
+maintainers:
+  - Miquel Raynal <miquel.raynal@bootlin.com>
+  - Richard Weinberger <richard@nod.at>
+
+description: |
+  The NAND controller should be represented with its own DT node, and
+  all NAND chips attached to this controller should be defined as
+  children nodes of the NAND controller. This representation should be
+  enforced even for simple controllers supporting only one chip.
+
+  The ECC strength and ECC step size properties define the user
+  desires in terms of correction capability of a controller. Together,
+  they request the ECC engine to correct {strength} bit errors per
+  {size} bytes.
+
+  The interpretation of these parameters is implementation-defined, so
+  not all implementations must support all possible
+  combinations. However, implementations are encouraged to further
+  specify the value(s) they support.
+
+properties:
+  $nodename:
+    pattern: "^nand-controller(@.*)?"
+
+  "#address-cells":
+    const: 1
+
+  "#size-cells":
+    const: 0
+
+  ranges: true
+
+patternProperties:
+  "^nand@[a-z0-9]$":
+    properties:
+      reg:
+        description:
+          Contains the native Ready/Busy IDs.
+
+      nand-ecc-mode:
+        allOf:
+          - $ref: /schemas/types.yaml#/definitions/string
+          - enum: [ none, soft, hw, hw_syndrome, hw_oob_first, on-die ]
+        description:
+          Desired ECC engine, either hardware (most of the time
+          embedded in the NAND controller) or software correction
+          (Linux will handle the calculations). soft_bch is deprecated
+          and should be replaced by soft and nand-ecc-algo.
+
+      nand-ecc-algo:
+        allOf:
+          - $ref: /schemas/types.yaml#/definitions/string
+          - enum: [ hamming, bch, rs ]
+        description:
+          Desired ECC algorithm.
+
+      nand-bus-width:
+        allOf:
+          - $ref: /schemas/types.yaml#/definitions/uint32
+          - enum: [ 8, 16 ]
+          - default: 8
+        description:
+          Bus width to the NAND chip
+
+      nand-on-flash-bbt:
+        $ref: /schemas/types.yaml#/definitions/flag
+        description:
+          With this property, the OS will search the device for a Bad
+          Block Table (BBT). If not found, it will create one, reserve
+          a few blocks at the end of the device to store it and update
+          it as the device ages. Otherwise, the out-of-band area of a
+          few pages of all the blocks will be scanned at boot time to
+          find Bad Block Markers (BBM). These markers will help to
+          build a volatile BBT in RAM.
+
+      nand-ecc-strength:
+        $ref: /schemas/types.yaml#/definitions/uint32
+        minimum: 1
+        description:
+          Maximum number of bits that can be corrected per ECC step.
+
+      nand-ecc-step-size:
+        $ref: /schemas/types.yaml#/definitions/uint32
+        minimum: 1
+        description:
+          Number of data bytes covered by a single ECC step.
+
+      nand-ecc-maximize:
+        $ref: /schemas/types.yaml#/definitions/flag
+        description:
+          Whether or not the ECC strength should be maximized. The
+          maximum ECC strength is both controller and chip
+          dependent. The ECC engine has to select the ECC config
+          providing the best strength and taking the OOB area size
+          constraint into account. This is particularly useful when
+          only the in-band area is used by the upper layers, and you
+          want to make your NAND as reliable as possible.
+
+      nand-is-boot-medium:
+        $ref: /schemas/types.yaml#/definitions/flag
+        description:
+          Whether or not the NAND chip is a boot medium. Drivers might
+          use this information to select ECC algorithms supported by
+          the boot ROM or similar restrictions.
+
+      nand-rb:
+        $ref: /schemas/types.yaml#/definitions/uint32-array
+        description:
+          Contains the native Ready/Busy IDs.
+
+    required:
+      - reg
+
+required:
+  - "#address-cells"
+  - "#size-cells"
+
+examples:
+  - |
+    nand-controller {
+      #address-cells = <1>;
+      #size-cells = <0>;
+
+      /* controller specific properties */
+
+      nand@0 {
+        reg = <0>;
+        nand-ecc-mode = "soft";
+        nand-ecc-algo = "bch";
+
+        /* controller specific properties */
+      };
+    };
diff --git a/Documentation/devicetree/bindings/mtd/nand.txt b/Documentation/devicetree/bindings/mtd/nand.txt
deleted file mode 100644
index e949c778e983..000000000000
--- a/Documentation/devicetree/bindings/mtd/nand.txt
+++ /dev/null
@@ -1,75 +0,0 @@
-* NAND chip and NAND controller generic binding
-
-NAND controller/NAND chip representation:
-
-The NAND controller should be represented with its own DT node, and all
-NAND chips attached to this controller should be defined as children nodes
-of the NAND controller. This representation should be enforced even for
-simple controllers supporting only one chip.
-
-Mandatory NAND controller properties:
-- #address-cells: depends on your controller. Should at least be 1 to
-		  encode the CS line id.
-- #size-cells: depends on your controller. Put zero unless you need a
-	       mapping between CS lines and dedicated memory regions
-
-Optional NAND controller properties
-- ranges: only needed if you need to define a mapping between CS lines and
-	  memory regions
-
-Optional NAND chip properties:
-
-- nand-ecc-mode : String, operation mode of the NAND ecc mode.
-		  Supported values are: "none", "soft", "hw", "hw_syndrome",
-		  "hw_oob_first", "on-die".
-		  Deprecated values:
-		  "soft_bch": use "soft" and nand-ecc-algo instead
-- nand-ecc-algo: string, algorithm of NAND ECC.
-		 Valid values are: "hamming", "bch", "rs".
-- nand-bus-width : 8 or 16 bus width if not present 8
-- nand-on-flash-bbt: boolean to enable on flash bbt option if not present false
-
-- nand-ecc-strength: integer representing the number of bits to correct
-		     per ECC step.
-
-- nand-ecc-step-size: integer representing the number of data bytes
-		      that are covered by a single ECC step.
-
-- nand-ecc-maximize: boolean used to specify that you want to maximize ECC
-		     strength. The maximum ECC strength is both controller and
-		     chip dependent. The controller side has to select the ECC
-		     config providing the best strength and taking the OOB area
-		     size constraint into account.
-		     This is particularly useful when only the in-band area is
-		     used by the upper layers, and you want to make your NAND
-		     as reliable as possible.
-- nand-is-boot-medium: Whether the NAND chip is a boot medium. Drivers might use
-		       this information to select ECC algorithms supported by
-		       the boot ROM or similar restrictions.
-
-- nand-rb: shall contain the native Ready/Busy ids.
-
-The ECC strength and ECC step size properties define the correction capability
-of a controller. Together, they say a controller can correct "{strength} bit
-errors per {size} bytes".
-
-The interpretation of these parameters is implementation-defined, so not all
-implementations must support all possible combinations. However, implementations
-are encouraged to further specify the value(s) they support.
-
-Example:
-
-	nand-controller {
-		#address-cells = <1>;
-		#size-cells = <0>;
-
-		/* controller specific properties */
-
-		nand@0 {
-			reg = <0>;
-			nand-ecc-mode = "soft";
-			nand-ecc-algo = "bch";
-
-			/* controller specific properties */
-		};
-	};

base-commit: 1244df4693747552c8efba995f4ebc3b247536cf
-- 
git-series 0.9.1

______________________________________________________
Linux MTD discussion mailing list
http://lists.infradead.org/mailman/listinfo/linux-mtd/

^ permalink raw reply related	[flat|nested] 9+ messages in thread

* [PATCH v2 2/2] dt-bindings: mtd: sunxi-nand: Add YAML schemas
  2019-04-02 14:54 [PATCH v2 1/2] dt-bindings: mtd: Add YAML schemas for the generic NAND options Maxime Ripard
@ 2019-04-02 14:54 ` Maxime Ripard
  2019-04-03  1:25   ` Rob Herring
  2019-04-03  1:20 ` [PATCH v2 1/2] dt-bindings: mtd: Add YAML schemas for the generic NAND options Rob Herring
  1 sibling, 1 reply; 9+ messages in thread
From: Maxime Ripard @ 2019-04-02 14:54 UTC (permalink / raw)
  To: Boris Brezillon, Mark Rutland, Rob Herring, Frank Rowand, Miquel Raynal
  Cc: Maxime Ripard, devicetree, Chen-Yu Tsai, linux-mtd, linux-arm-kernel

Switch the DT binding to a YAML schema to enable the DT validation.

Signed-off-by: Maxime Ripard <maxime.ripard@bootlin.com>

---

Changes from v1
  - Added controller constraints to the generic options
---
 Documentation/devicetree/bindings/mtd/allwinner,sun4i-a10-nand.yaml | 96 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-
 Documentation/devicetree/bindings/mtd/sunxi-nand.txt                | 48 +------------------------------------
 2 files changed, 96 insertions(+), 48 deletions(-)
 create mode 100644 Documentation/devicetree/bindings/mtd/allwinner,sun4i-a10-nand.yaml
 delete mode 100644 Documentation/devicetree/bindings/mtd/sunxi-nand.txt

diff --git a/Documentation/devicetree/bindings/mtd/allwinner,sun4i-a10-nand.yaml b/Documentation/devicetree/bindings/mtd/allwinner,sun4i-a10-nand.yaml
new file mode 100644
index 000000000000..fcd2faec9af5
--- /dev/null
+++ b/Documentation/devicetree/bindings/mtd/allwinner,sun4i-a10-nand.yaml
@@ -0,0 +1,96 @@
+# SPDX-License-Identifier: GPL-2.0
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/mtd/allwinner,sun4i-a10-nand.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Allwinner A10 NAND Controller Device Tree Bindings
+
+allOf:
+  - $ref: "nand-controller.yaml"
+
+maintainers:
+  - Chen-Yu Tsai <wens@csie.org>
+  - Maxime Ripard <maxime.ripard@bootlin.com>
+
+properties:
+  "#address-cells": true
+  "#size-cells": true
+
+  compatible:
+    const: allwinner,sun4i-a10-nand
+
+  reg:
+    maxItems: 1
+
+  interrupts:
+    maxItems: 1
+
+  clocks:
+    items:
+      - description: Bus Clock
+      - description: Module Clock
+
+  clock-names:
+    items:
+      - const: ahb
+      - const: mod
+
+  resets:
+    maxItems: 1
+
+  reset-names:
+    const: ahb
+
+  dmas:
+    maxItems: 1
+
+  dma-names:
+    const: rxtx
+
+  pinctrl-names: true
+
+patternProperties:
+  "^pinctrl-[0-9]+$": true
+
+  "^nand@[a-z0-9]+$":
+    properties:
+      reg:
+        maxItems: 1
+        minimum: 0
+        maximum: 7
+
+      nand-ecc-mode: true
+
+      nand-ecc-algo:
+        const: bch
+
+      nand-ecc-step-size:
+        enum: [ 512, 1024 ]
+
+      nand-ecc-strength:
+        maximum: 80
+
+      allwinner,rb:
+        description:
+          Contains the native Ready/Busy IDs.
+        allOf:
+          - $ref: /schemas/types.yaml#/definitions/uint32-array
+          - minItems: 1
+            maxItems: 2
+            items:
+              minimum: 0
+              maximum: 1
+
+    additionalProperties: false
+
+required:
+  - compatible
+  - reg
+  - interrupts
+  - clocks
+  - clock-names
+
+additionalProperties: false
+
+...
diff --git a/Documentation/devicetree/bindings/mtd/sunxi-nand.txt b/Documentation/devicetree/bindings/mtd/sunxi-nand.txt
deleted file mode 100644
index dcd5a5d80dc0..000000000000
--- a/Documentation/devicetree/bindings/mtd/sunxi-nand.txt
+++ /dev/null
@@ -1,48 +0,0 @@
-Allwinner NAND Flash Controller (NFC)
-
-Required properties:
-- compatible : "allwinner,sun4i-a10-nand".
-- reg : shall contain registers location and length for data and reg.
-- interrupts : shall define the nand controller interrupt.
-- #address-cells: shall be set to 1. Encode the nand CS.
-- #size-cells : shall be set to 0.
-- clocks : shall reference nand controller clocks.
-- clock-names : nand controller internal clock names. Shall contain :
-    * "ahb" : AHB gating clock
-    * "mod" : nand controller clock
-
-Optional properties:
-- dmas : shall reference DMA channel associated to the NAND controller.
-- dma-names : shall be "rxtx".
-
-Optional children nodes:
-Children nodes represent the available nand chips.
-
-Optional properties:
-- reset : phandle + reset specifier pair
-- reset-names : must contain "ahb"
-- allwinner,rb : shall contain the native Ready/Busy ids.
-- nand-ecc-mode : one of the supported ECC modes ("hw", "soft", "soft_bch" or
-		  "none")
-
-see Documentation/devicetree/bindings/mtd/nand.txt for generic bindings.
-
-
-Examples:
-nfc: nand@1c03000 {
-	compatible = "allwinner,sun4i-a10-nand";
-	reg = <0x01c03000 0x1000>;
-	interrupts = <0 37 1>;
-	clocks = <&ahb_gates 13>, <&nand_clk>;
-	clock-names = "ahb", "mod";
-	#address-cells = <1>;
-	#size-cells = <0>;
-	pinctrl-names = "default";
-	pinctrl-0 = <&nand_pins_a &nand_cs0_pins_a &nand_rb0_pins_a>;
-
-	nand@0 {
-		reg = <0>;
-		allwinner,rb = <0>;
-		nand-ecc-mode = "soft_bch";
-	};
-};
-- 
git-series 0.9.1

______________________________________________________
Linux MTD discussion mailing list
http://lists.infradead.org/mailman/listinfo/linux-mtd/

^ permalink raw reply related	[flat|nested] 9+ messages in thread

* Re: [PATCH v2 1/2] dt-bindings: mtd: Add YAML schemas for the generic NAND options
  2019-04-02 14:54 [PATCH v2 1/2] dt-bindings: mtd: Add YAML schemas for the generic NAND options Maxime Ripard
  2019-04-02 14:54 ` [PATCH v2 2/2] dt-bindings: mtd: sunxi-nand: Add YAML schemas Maxime Ripard
@ 2019-04-03  1:20 ` Rob Herring
  2019-04-03  7:35   ` Maxime Ripard
  1 sibling, 1 reply; 9+ messages in thread
From: Rob Herring @ 2019-04-03  1:20 UTC (permalink / raw)
  To: Maxime Ripard
  Cc: Mark Rutland, devicetree, Chen-Yu Tsai, Boris Brezillon,
	MTD Maling List, Miquel Raynal, Frank Rowand,
	moderated list:ARM/FREESCALE IMX / MXC ARM ARCHITECTURE

On Tue, Apr 2, 2019 at 9:54 AM Maxime Ripard <maxime.ripard@bootlin.com> wrote:
>
> The NAND chips in MTD have a bunch of generic options that are needed in a
> device tree. Add a YAML schemas for those.
>
> Signed-off-by: Maxime Ripard <maxime.ripard@bootlin.com>
>
> ---
>
> Changes from v1:
>   - Removed free form text binding
>   - Enhanced properties descriptions
>   - Fixed the SPDX license tag
>   - Added minimums for nand-ecc-strength and nand-ecc-step-size
>   - Removed Boris from the maintainers
> ---
>  Documentation/devicetree/bindings/mtd/nand-controller.yaml | 141 +++++++-
>  Documentation/devicetree/bindings/mtd/nand.txt             |  75 +----
>  2 files changed, 141 insertions(+), 75 deletions(-)
>  create mode 100644 Documentation/devicetree/bindings/mtd/nand-controller.yaml
>  delete mode 100644 Documentation/devicetree/bindings/mtd/nand.txt
>
> diff --git a/Documentation/devicetree/bindings/mtd/nand-controller.yaml b/Documentation/devicetree/bindings/mtd/nand-controller.yaml
> new file mode 100644
> index 000000000000..ebc7833ffc0c
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/mtd/nand-controller.yaml
> @@ -0,0 +1,141 @@
> +# SPDX-License-Identifier: GPL-2.0
> +%YAML 1.2
> +---
> +$id: http://devicetree.org/schemas/mtd/nand-controller.yaml#
> +$schema: http://devicetree.org/meta-schemas/core.yaml#
> +
> +title: NAND Chip and NAND Controller Generic Binding
> +
> +maintainers:
> +  - Miquel Raynal <miquel.raynal@bootlin.com>
> +  - Richard Weinberger <richard@nod.at>
> +
> +description: |
> +  The NAND controller should be represented with its own DT node, and
> +  all NAND chips attached to this controller should be defined as
> +  children nodes of the NAND controller. This representation should be
> +  enforced even for simple controllers supporting only one chip.
> +
> +  The ECC strength and ECC step size properties define the user
> +  desires in terms of correction capability of a controller. Together,
> +  they request the ECC engine to correct {strength} bit errors per
> +  {size} bytes.
> +
> +  The interpretation of these parameters is implementation-defined, so
> +  not all implementations must support all possible
> +  combinations. However, implementations are encouraged to further
> +  specify the value(s) they support.
> +
> +properties:
> +  $nodename:
> +    pattern: "^nand-controller(@.*)?"
> +
> +  "#address-cells":
> +    const: 1
> +
> +  "#size-cells":
> +    const: 0
> +
> +  ranges: true
> +
> +patternProperties:
> +  "^nand@[a-z0-9]$":

'a-f' as this should be hex number.

> +    properties:
> +      reg:
> +        description:
> +          Contains the native Ready/Busy IDs.
> +
> +      nand-ecc-mode:
> +        allOf:
> +          - $ref: /schemas/types.yaml#/definitions/string
> +          - enum: [ none, soft, hw, hw_syndrome, hw_oob_first, on-die ]
> +        description:
> +          Desired ECC engine, either hardware (most of the time
> +          embedded in the NAND controller) or software correction
> +          (Linux will handle the calculations). soft_bch is deprecated
> +          and should be replaced by soft and nand-ecc-algo.
> +
> +      nand-ecc-algo:
> +        allOf:
> +          - $ref: /schemas/types.yaml#/definitions/string
> +          - enum: [ hamming, bch, rs ]
> +        description:
> +          Desired ECC algorithm.
> +
> +      nand-bus-width:
> +        allOf:
> +          - $ref: /schemas/types.yaml#/definitions/uint32
> +          - enum: [ 8, 16 ]
> +          - default: 8
> +        description:
> +          Bus width to the NAND chip
> +
> +      nand-on-flash-bbt:
> +        $ref: /schemas/types.yaml#/definitions/flag
> +        description:
> +          With this property, the OS will search the device for a Bad
> +          Block Table (BBT). If not found, it will create one, reserve
> +          a few blocks at the end of the device to store it and update
> +          it as the device ages. Otherwise, the out-of-band area of a
> +          few pages of all the blocks will be scanned at boot time to
> +          find Bad Block Markers (BBM). These markers will help to
> +          build a volatile BBT in RAM.
> +
> +      nand-ecc-strength:
> +        $ref: /schemas/types.yaml#/definitions/uint32
> +        minimum: 1

While I wished this worked, these 2 have to be under 'allOf'.
Unfortunately, this will also silently pass validation in json-schema.

> +        description:
> +          Maximum number of bits that can be corrected per ECC step.
> +
> +      nand-ecc-step-size:
> +        $ref: /schemas/types.yaml#/definitions/uint32
> +        minimum: 1
> +        description:
> +          Number of data bytes covered by a single ECC step.
> +
> +      nand-ecc-maximize:
> +        $ref: /schemas/types.yaml#/definitions/flag
> +        description:
> +          Whether or not the ECC strength should be maximized. The
> +          maximum ECC strength is both controller and chip
> +          dependent. The ECC engine has to select the ECC config
> +          providing the best strength and taking the OOB area size
> +          constraint into account. This is particularly useful when
> +          only the in-band area is used by the upper layers, and you
> +          want to make your NAND as reliable as possible.
> +
> +      nand-is-boot-medium:
> +        $ref: /schemas/types.yaml#/definitions/flag
> +        description:
> +          Whether or not the NAND chip is a boot medium. Drivers might
> +          use this information to select ECC algorithms supported by
> +          the boot ROM or similar restrictions.
> +
> +      nand-rb:
> +        $ref: /schemas/types.yaml#/definitions/uint32-array
> +        description:
> +          Contains the native Ready/Busy IDs.
> +
> +    required:
> +      - reg
> +
> +required:
> +  - "#address-cells"
> +  - "#size-cells"
> +
> +examples:
> +  - |
> +    nand-controller {
> +      #address-cells = <1>;
> +      #size-cells = <0>;
> +
> +      /* controller specific properties */
> +
> +      nand@0 {
> +        reg = <0>;
> +        nand-ecc-mode = "soft";
> +        nand-ecc-algo = "bch";
> +
> +        /* controller specific properties */
> +      };
> +    };
> diff --git a/Documentation/devicetree/bindings/mtd/nand.txt b/Documentation/devicetree/bindings/mtd/nand.txt
> deleted file mode 100644
> index e949c778e983..000000000000
> --- a/Documentation/devicetree/bindings/mtd/nand.txt
> +++ /dev/null
> @@ -1,75 +0,0 @@
> -* NAND chip and NAND controller generic binding
> -
> -NAND controller/NAND chip representation:
> -
> -The NAND controller should be represented with its own DT node, and all
> -NAND chips attached to this controller should be defined as children nodes
> -of the NAND controller. This representation should be enforced even for
> -simple controllers supporting only one chip.
> -
> -Mandatory NAND controller properties:
> -- #address-cells: depends on your controller. Should at least be 1 to
> -                 encode the CS line id.
> -- #size-cells: depends on your controller. Put zero unless you need a
> -              mapping between CS lines and dedicated memory regions
> -
> -Optional NAND controller properties
> -- ranges: only needed if you need to define a mapping between CS lines and
> -         memory regions
> -
> -Optional NAND chip properties:
> -
> -- nand-ecc-mode : String, operation mode of the NAND ecc mode.
> -                 Supported values are: "none", "soft", "hw", "hw_syndrome",
> -                 "hw_oob_first", "on-die".
> -                 Deprecated values:
> -                 "soft_bch": use "soft" and nand-ecc-algo instead
> -- nand-ecc-algo: string, algorithm of NAND ECC.
> -                Valid values are: "hamming", "bch", "rs".
> -- nand-bus-width : 8 or 16 bus width if not present 8
> -- nand-on-flash-bbt: boolean to enable on flash bbt option if not present false
> -
> -- nand-ecc-strength: integer representing the number of bits to correct
> -                    per ECC step.
> -
> -- nand-ecc-step-size: integer representing the number of data bytes
> -                     that are covered by a single ECC step.
> -
> -- nand-ecc-maximize: boolean used to specify that you want to maximize ECC
> -                    strength. The maximum ECC strength is both controller and
> -                    chip dependent. The controller side has to select the ECC
> -                    config providing the best strength and taking the OOB area
> -                    size constraint into account.
> -                    This is particularly useful when only the in-band area is
> -                    used by the upper layers, and you want to make your NAND
> -                    as reliable as possible.
> -- nand-is-boot-medium: Whether the NAND chip is a boot medium. Drivers might use
> -                      this information to select ECC algorithms supported by
> -                      the boot ROM or similar restrictions.
> -
> -- nand-rb: shall contain the native Ready/Busy ids.
> -
> -The ECC strength and ECC step size properties define the correction capability
> -of a controller. Together, they say a controller can correct "{strength} bit
> -errors per {size} bytes".
> -
> -The interpretation of these parameters is implementation-defined, so not all
> -implementations must support all possible combinations. However, implementations
> -are encouraged to further specify the value(s) they support.
> -
> -Example:
> -
> -       nand-controller {
> -               #address-cells = <1>;
> -               #size-cells = <0>;
> -
> -               /* controller specific properties */
> -
> -               nand@0 {
> -                       reg = <0>;
> -                       nand-ecc-mode = "soft";
> -                       nand-ecc-algo = "bch";
> -
> -                       /* controller specific properties */
> -               };
> -       };
>
> base-commit: 1244df4693747552c8efba995f4ebc3b247536cf
> --
> git-series 0.9.1

______________________________________________________
Linux MTD discussion mailing list
http://lists.infradead.org/mailman/listinfo/linux-mtd/

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH v2 2/2] dt-bindings: mtd: sunxi-nand: Add YAML schemas
  2019-04-02 14:54 ` [PATCH v2 2/2] dt-bindings: mtd: sunxi-nand: Add YAML schemas Maxime Ripard
@ 2019-04-03  1:25   ` Rob Herring
  2019-04-03  7:44     ` Maxime Ripard
  0 siblings, 1 reply; 9+ messages in thread
From: Rob Herring @ 2019-04-03  1:25 UTC (permalink / raw)
  To: Maxime Ripard
  Cc: Mark Rutland, devicetree, Chen-Yu Tsai, Boris Brezillon,
	MTD Maling List, Miquel Raynal, Frank Rowand,
	moderated list:ARM/FREESCALE IMX / MXC ARM ARCHITECTURE

On Tue, Apr 2, 2019 at 9:54 AM Maxime Ripard <maxime.ripard@bootlin.com> wrote:
>
> Switch the DT binding to a YAML schema to enable the DT validation.
>
> Signed-off-by: Maxime Ripard <maxime.ripard@bootlin.com>
>
> ---
>
> Changes from v1
>   - Added controller constraints to the generic options
> ---
>  Documentation/devicetree/bindings/mtd/allwinner,sun4i-a10-nand.yaml | 96 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-
>  Documentation/devicetree/bindings/mtd/sunxi-nand.txt                | 48 +------------------------------------
>  2 files changed, 96 insertions(+), 48 deletions(-)
>  create mode 100644 Documentation/devicetree/bindings/mtd/allwinner,sun4i-a10-nand.yaml
>  delete mode 100644 Documentation/devicetree/bindings/mtd/sunxi-nand.txt

Same 'a-f' comment here, but otherwise,

Reviewed-by: Rob Herring <robh@kernel.org>

And thanks for being an early adopter. Let me know if you have any
feedback on the schema or pain points.

Rob

______________________________________________________
Linux MTD discussion mailing list
http://lists.infradead.org/mailman/listinfo/linux-mtd/

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH v2 1/2] dt-bindings: mtd: Add YAML schemas for the generic NAND options
  2019-04-03  1:20 ` [PATCH v2 1/2] dt-bindings: mtd: Add YAML schemas for the generic NAND options Rob Herring
@ 2019-04-03  7:35   ` Maxime Ripard
  2019-04-11 13:19     ` Rob Herring
  0 siblings, 1 reply; 9+ messages in thread
From: Maxime Ripard @ 2019-04-03  7:35 UTC (permalink / raw)
  To: Rob Herring
  Cc: Mark Rutland, devicetree, Chen-Yu Tsai, Boris Brezillon,
	MTD Maling List, Miquel Raynal, Frank Rowand,
	moderated list:ARM/FREESCALE IMX / MXC ARM ARCHITECTURE


[-- Attachment #1.1: Type: text/plain, Size: 742 bytes --]

Hi Rob,

On Tue, Apr 02, 2019 at 08:20:58PM -0500, Rob Herring wrote:
> > +      nand-ecc-strength:
> > +        $ref: /schemas/types.yaml#/definitions/uint32
> > +        minimum: 1
>
> While I wished this worked, these 2 have to be under 'allOf'.
> Unfortunately, this will also silently pass validation in json-schema.

Unfortunately, I'm not sure I fully get how the ref system is supposed
to work yet. Can you elaborate a bit on why we should put the ref and
whatever constraint we have in an allOf?

Should we do the same in a separate schema that would reference
another entire schema (like the second patch does with the first
one)?

Thanks!
Maxime

--
Maxime Ripard, Bootlin
Embedded Linux and Kernel engineering
https://bootlin.com

[-- Attachment #1.2: signature.asc --]
[-- Type: application/pgp-signature, Size: 228 bytes --]

[-- Attachment #2: Type: text/plain, Size: 144 bytes --]

______________________________________________________
Linux MTD discussion mailing list
http://lists.infradead.org/mailman/listinfo/linux-mtd/

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH v2 2/2] dt-bindings: mtd: sunxi-nand: Add YAML schemas
  2019-04-03  1:25   ` Rob Herring
@ 2019-04-03  7:44     ` Maxime Ripard
  2019-04-03  8:33       ` Rob Herring
  0 siblings, 1 reply; 9+ messages in thread
From: Maxime Ripard @ 2019-04-03  7:44 UTC (permalink / raw)
  To: Rob Herring
  Cc: Mark Rutland, devicetree, Chen-Yu Tsai, Boris Brezillon,
	MTD Maling List, Miquel Raynal, Frank Rowand,
	moderated list:ARM/FREESCALE IMX / MXC ARM ARCHITECTURE


[-- Attachment #1.1: Type: text/plain, Size: 2700 bytes --]

On Tue, Apr 02, 2019 at 08:25:59PM -0500, Rob Herring wrote:
> On Tue, Apr 2, 2019 at 9:54 AM Maxime Ripard <maxime.ripard@bootlin.com> wrote:
> >
> > Switch the DT binding to a YAML schema to enable the DT validation.
> >
> > Signed-off-by: Maxime Ripard <maxime.ripard@bootlin.com>
> >
> > ---
> >
> > Changes from v1
> >   - Added controller constraints to the generic options
> > ---
> >  Documentation/devicetree/bindings/mtd/allwinner,sun4i-a10-nand.yaml | 96 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-
> >  Documentation/devicetree/bindings/mtd/sunxi-nand.txt                | 48 +------------------------------------
> >  2 files changed, 96 insertions(+), 48 deletions(-)
> >  create mode 100644 Documentation/devicetree/bindings/mtd/allwinner,sun4i-a10-nand.yaml
> >  delete mode 100644 Documentation/devicetree/bindings/mtd/sunxi-nand.txt
>
> Same 'a-f' comment here, but otherwise,
>
> Reviewed-by: Rob Herring <robh@kernel.org>
>
> And thanks for being an early adopter. Let me know if you have any
> feedback on the schema or pain points.

My main feedback is that it's awesome :)

We (sunxi) have an awful lot of DT in the tree, and I made schemas for
most of the bindings we have now. It allowed us to find a huge (or at
least way more than what I was expecting) number of issues in our DTs,
like inconsistent node naming, typos, etc., and also that our bindings
were not updated as they should have.

The following patches are a direct result from that, and I expect to
find more.
http://lists.infradead.org/pipermail/linux-arm-kernel/2019-March/640978.html

On the pain point side, I guess the main one is that most of the time
it's not really clear to me how I should express a particular set of
constraints. You've been really helpful to deal with that one, and I
guess it also stems from the fact that there's not a lot of examples
in the tree right now. I expect it to go away the more schemas we
have.

The other one that might be more problematic is that it also tries to
validate nodes that are not enabled. For in-SoC components that don't
rely on anything external, it's fine, however, for components that
would require something that is connected on the board (like a
regulator, a phy, a GPIO, whatever), then we can't have all the
required resources in the DTSI, and boards that don't use that
component (and keep it disabled) will emit warning that this
particular property is missing.

I've tried to look into it but couldn't find an easy fix for that in
the tooling, so I've opened a github issue for this. Let me know if
it's not appropriate.

Maxime

--
Maxime Ripard, Bootlin
Embedded Linux and Kernel engineering
https://bootlin.com

[-- Attachment #1.2: signature.asc --]
[-- Type: application/pgp-signature, Size: 228 bytes --]

[-- Attachment #2: Type: text/plain, Size: 144 bytes --]

______________________________________________________
Linux MTD discussion mailing list
http://lists.infradead.org/mailman/listinfo/linux-mtd/

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH v2 2/2] dt-bindings: mtd: sunxi-nand: Add YAML schemas
  2019-04-03  7:44     ` Maxime Ripard
@ 2019-04-03  8:33       ` Rob Herring
  2019-04-03  8:49         ` Maxime Ripard
  0 siblings, 1 reply; 9+ messages in thread
From: Rob Herring @ 2019-04-03  8:33 UTC (permalink / raw)
  To: Maxime Ripard
  Cc: Mark Rutland, devicetree, Chen-Yu Tsai, Boris Brezillon,
	MTD Maling List, Miquel Raynal, Frank Rowand,
	moderated list:ARM/FREESCALE IMX / MXC ARM ARCHITECTURE

On Wed, Apr 3, 2019 at 2:44 AM Maxime Ripard <maxime.ripard@bootlin.com> wrote:
>
> On Tue, Apr 02, 2019 at 08:25:59PM -0500, Rob Herring wrote:
> > On Tue, Apr 2, 2019 at 9:54 AM Maxime Ripard <maxime.ripard@bootlin.com> wrote:
> > >
> > > Switch the DT binding to a YAML schema to enable the DT validation.
> > >
> > > Signed-off-by: Maxime Ripard <maxime.ripard@bootlin.com>
> > >
> > > ---
> > >
> > > Changes from v1
> > >   - Added controller constraints to the generic options
> > > ---
> > >  Documentation/devicetree/bindings/mtd/allwinner,sun4i-a10-nand.yaml | 96 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-
> > >  Documentation/devicetree/bindings/mtd/sunxi-nand.txt                | 48 +------------------------------------
> > >  2 files changed, 96 insertions(+), 48 deletions(-)
> > >  create mode 100644 Documentation/devicetree/bindings/mtd/allwinner,sun4i-a10-nand.yaml
> > >  delete mode 100644 Documentation/devicetree/bindings/mtd/sunxi-nand.txt
> >
> > Same 'a-f' comment here, but otherwise,
> >
> > Reviewed-by: Rob Herring <robh@kernel.org>
> >
> > And thanks for being an early adopter. Let me know if you have any
> > feedback on the schema or pain points.
>
> My main feedback is that it's awesome :)

Thanks.

> We (sunxi) have an awful lot of DT in the tree, and I made schemas for
> most of the bindings we have now. It allowed us to find a huge (or at
> least way more than what I was expecting) number of issues in our DTs,
> like inconsistent node naming, typos, etc., and also that our bindings
> were not updated as they should have.
>
> The following patches are a direct result from that, and I expect to
> find more.
> http://lists.infradead.org/pipermail/linux-arm-kernel/2019-March/640978.html
>
> On the pain point side, I guess the main one is that most of the time
> it's not really clear to me how I should express a particular set of
> constraints. You've been really helpful to deal with that one, and I
> guess it also stems from the fact that there's not a lot of examples
> in the tree right now. I expect it to go away the more schemas we
> have.

Yes, there is a bit of a learning curve to json-schema if you have to
do anything out of the ordinary. The meta-schema is supposed to help
constrain things, but it's only as good as what we define there. That
also mainly works for already known property names and patterns we've
thought of.

> The other one that might be more problematic is that it also tries to
> validate nodes that are not enabled. For in-SoC components that don't
> rely on anything external, it's fine, however, for components that
> would require something that is connected on the board (like a
> regulator, a phy, a GPIO, whatever), then we can't have all the
> required resources in the DTSI, and boards that don't use that
> component (and keep it disabled) will emit warning that this
> particular property is missing.
>
> I've tried to look into it but couldn't find an easy fix for that in
> the tooling, so I've opened a github issue for this. Let me know if
> it's not appropriate.

Yeah, I need to go look at that. Skipping disabled nodes shouldn't be
too hard to do within the tool. This came up before I think and I've
resisted because I don't want to skip validating at least what is
there. Maybe the better solution would be to drop 'required' from
schema when validating disabled nodes. (At least, I think just
'required' is the problem?) The complication would be we'd need 2 sets
of schemas and select the right one for each node. Another way to
implement it would be just to filter out the warning messages.

Rob

______________________________________________________
Linux MTD discussion mailing list
http://lists.infradead.org/mailman/listinfo/linux-mtd/

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH v2 2/2] dt-bindings: mtd: sunxi-nand: Add YAML schemas
  2019-04-03  8:33       ` Rob Herring
@ 2019-04-03  8:49         ` Maxime Ripard
  0 siblings, 0 replies; 9+ messages in thread
From: Maxime Ripard @ 2019-04-03  8:49 UTC (permalink / raw)
  To: Rob Herring
  Cc: Mark Rutland, devicetree, Chen-Yu Tsai, Boris Brezillon,
	MTD Maling List, Miquel Raynal, Frank Rowand,
	moderated list:ARM/FREESCALE IMX / MXC ARM ARCHITECTURE


[-- Attachment #1.1: Type: text/plain, Size: 1760 bytes --]

On Wed, Apr 03, 2019 at 03:33:42AM -0500, Rob Herring wrote:
> > The other one that might be more problematic is that it also tries to
> > validate nodes that are not enabled. For in-SoC components that don't
> > rely on anything external, it's fine, however, for components that
> > would require something that is connected on the board (like a
> > regulator, a phy, a GPIO, whatever), then we can't have all the
> > required resources in the DTSI, and boards that don't use that
> > component (and keep it disabled) will emit warning that this
> > particular property is missing.
> >
> > I've tried to look into it but couldn't find an easy fix for that in
> > the tooling, so I've opened a github issue for this. Let me know if
> > it's not appropriate.
>
> Yeah, I need to go look at that. Skipping disabled nodes shouldn't be
> too hard to do within the tool. This came up before I think and I've
> resisted because I don't want to skip validating at least what is
> there. Maybe the better solution would be to drop 'required' from
> schema when validating disabled nodes. (At least, I think just
> 'required' is the problem?)

I thought about something along those lines too, since indeed the only
thing that causes troube is required.

> The complication would be we'd need 2 sets of schemas and select the
> right one for each node.

You mean two instances of the schema in the tool, right? Not two
schema files? Do you expect any drawback to that (like
performance-wise maybe, if we have more schemas with more complicated
select patterns)?

> Another way to implement it would be just to filter out the warning
> messages.

That would work too I guess :)

Maxime

--
Maxime Ripard, Bootlin
Embedded Linux and Kernel engineering
https://bootlin.com

[-- Attachment #1.2: signature.asc --]
[-- Type: application/pgp-signature, Size: 228 bytes --]

[-- Attachment #2: Type: text/plain, Size: 144 bytes --]

______________________________________________________
Linux MTD discussion mailing list
http://lists.infradead.org/mailman/listinfo/linux-mtd/

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH v2 1/2] dt-bindings: mtd: Add YAML schemas for the generic NAND options
  2019-04-03  7:35   ` Maxime Ripard
@ 2019-04-11 13:19     ` Rob Herring
  0 siblings, 0 replies; 9+ messages in thread
From: Rob Herring @ 2019-04-11 13:19 UTC (permalink / raw)
  To: Maxime Ripard
  Cc: Mark Rutland, devicetree, Chen-Yu Tsai, Boris Brezillon,
	MTD Maling List, Miquel Raynal, Frank Rowand,
	moderated list:ARM/FREESCALE IMX / MXC ARM ARCHITECTURE

On Wed, Apr 3, 2019 at 2:35 AM Maxime Ripard <maxime.ripard@bootlin.com> wrote:
>
> Hi Rob,
>
> On Tue, Apr 02, 2019 at 08:20:58PM -0500, Rob Herring wrote:
> > > +      nand-ecc-strength:
> > > +        $ref: /schemas/types.yaml#/definitions/uint32
> > > +        minimum: 1
> >
> > While I wished this worked, these 2 have to be under 'allOf'.
> > Unfortunately, this will also silently pass validation in json-schema.
>
> Unfortunately, I'm not sure I fully get how the ref system is supposed
> to work yet. Can you elaborate a bit on why we should put the ref and
> whatever constraint we have in an allOf?

TL;DR is that is how sub-classing or extending schemas works.

I think I read something at one point which explained why it doesn't
work without allOf, but couldn't find it. Certainly, it seems like it
should at first.

> Should we do the same in a separate schema that would reference
> another entire schema (like the second patch does with the first
> one)?

That would just split defining the type from the additional
constraints. I prefer to keep the top-level 'allOf' including classes
of devices.

Rob

______________________________________________________
Linux MTD discussion mailing list
http://lists.infradead.org/mailman/listinfo/linux-mtd/

^ permalink raw reply	[flat|nested] 9+ messages in thread

end of thread, other threads:[~2019-04-11 13:19 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-04-02 14:54 [PATCH v2 1/2] dt-bindings: mtd: Add YAML schemas for the generic NAND options Maxime Ripard
2019-04-02 14:54 ` [PATCH v2 2/2] dt-bindings: mtd: sunxi-nand: Add YAML schemas Maxime Ripard
2019-04-03  1:25   ` Rob Herring
2019-04-03  7:44     ` Maxime Ripard
2019-04-03  8:33       ` Rob Herring
2019-04-03  8:49         ` Maxime Ripard
2019-04-03  1:20 ` [PATCH v2 1/2] dt-bindings: mtd: Add YAML schemas for the generic NAND options Rob Herring
2019-04-03  7:35   ` Maxime Ripard
2019-04-11 13:19     ` 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).