Thread (21 messages) 21 messages, 4 authors, 2023-06-06

Re: [PATCH v8 3/3] dt-bindings: mtd: marvell-nand: Convert to YAML DT scheme

flat view

From: Krzysztof Kozlowski <hidden>
Date: 2023-06-04 09:26:33
Also in: linux-devicetree, lkml

On 02/06/2023 01:06, Chris Packham wrote:
Hi Krzystof,

On 1/06/23 19:05, Krzysztof Kozlowski wrote:
quoted
On 01/06/2023 01:49, Chris Packham wrote:
quoted
From: Vadym Kochan <redacted>

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

The text binding didn't mention it as a requirement but existing usage
has

    compatible = "marvell,armada-8k-nand-controller",
                 "marvell,armada370-nand-controller";

so the YAML allows this in addition to the individual compatible values.

There was also an incorrect reference to dma-names being "rxtx" where
the driver and existing device trees actually use dma-names = "data" so
this is corrected in the conversion.

Signed-off-by: Vadym Kochan <redacted>
Signed-off-by: Chris Packham <chris.packham@alliedtelesis.co.nz>
---

Notes:
     Changes in v8:
     - Mark deprecated compatible values as such
     - Allow "marvell,armada-8k-nand-controller" without
       "marvell,armada370-nand-controller"
     - Make dma-names usage reflect reality
     - Update commit message
     
     Changes in v7:
     - Restore "label" and "partitions" properties (should be picked up via
       nand-controller.yaml but aren't)
What do you mean by "aren't"? They are not needed.
(sorry I keep responding to snippets rather than putting all the replies 
in one place. For posterity here's the same response I provided in a 
separate message).

I mean I simply cannot make it work and I'm out of ideas (I'm also in an 
awkward timezone so it takes 24hrs for me to ask a question and get a 
response which leads to me making guesses instead of waiting).

nand-controller.yaml references nand-chip.yaml which references mtd.yaml 
which defines the "label" and "partitions" property.

I thought marvell,nand-controller.yaml could just say `$ref: 
nand-controller.yaml` and it would mean I'd get all the definitions down 
the chain but this doesn't seem to work the way I expect (or more likely 
I'm not doing it right). I thought it might have something to do with 
the different patternProperties pattern but even when I make that match 
what is used in nand-controller.yaml it doesn't seem to pick up those 
properties.
Then you are doing something different than all other bindings.
quoted
quoted
     - Add/restore nand-on-flash-bbt and nand-ecc-mode which aren't covered
       by nand-controller.yaml.
     - Use "unevalautedProperties: false"
     - Corrections for clock-names, dma-names, nand-rb and nand-ecc-strength
     - Add pxa3xx-nand-controller example
     
     Changes in v6:
     - remove properties covered by nand-controller.yaml
     - add example using armada-8k compatible
     
     earlier changes:
     
     v5:
        1) Get back "label" and "partitions" properties but without
           ref to the "partition.yaml" which was wrongly used.
     
        2) Add "additionalProperties: false" for nand@ because all possible
           properties are described.
     
     v4:
        1) Remove "label" and "partitions" properties
     
        2) Use 2 clocks for A7K/8K platform which is a requirement
     
     v3:
       1) Remove txt version from the MAINTAINERS list
     
       2) Use enum for some of compatible strings
     
       3) Drop:
             #address-cells
             #size-cells:
     
          as they are inherited from the nand-controller.yaml
     
       4) Add restriction to use 2 clocks for A8K SoC
     
       5) Dropped description for clock-names and extend it with
          minItems: 1
     
       6) Drop description for "dmas"
     
       7) Use "unevalautedProperties: false"
     
       8) Drop quites from yaml refs.
     
       9) Use 4-space indentation for the example section
     
     v2:
       1) Fixed warning by yamllint with incorrect indentation for compatible list

  .../bindings/mtd/marvell,nand-controller.yaml | 223 ++++++++++++++++++
  .../devicetree/bindings/mtd/marvell-nand.txt  | 126 ----------
  MAINTAINERS                                   |   1 -
  3 files changed, 223 insertions(+), 127 deletions(-)
  create mode 100644 Documentation/devicetree/bindings/mtd/marvell,nand-controller.yaml
  delete mode 100644 Documentation/devicetree/bindings/mtd/marvell-nand.txt
diff --git a/Documentation/devicetree/bindings/mtd/marvell,nand-controller.yaml b/Documentation/devicetree/bindings/mtd/marvell,nand-controller.yaml
new file mode 100644
index 000000000000..433feb430555
--- /dev/null
+++ b/Documentation/devicetree/bindings/mtd/marvell,nand-controller.yaml
@@ -0,0 +1,223 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://scanmail.trustwave.com/?c=20988&d=18P45NWaR4V6pXt_kuivNCiVAXCm3C7MEF-_8xrP2A&u=http%3a%2f%2fdevicetree%2eorg%2fschemas%2fmtd%2fmarvell%2cnand-controller%2eyaml%23
+$schema: http://scanmail.trustwave.com/?c=20988&d=18P45NWaR4V6pXt_kuivNCiVAXCm3C7MEFvq8B-ZjQ&u=http%3a%2f%2fdevicetree%2eorg%2fmeta-schemas%2fcore%2eyaml%23
+
+title: Marvell NAND Flash Controller (NFC)
+
+maintainers:
+  - Miquel Raynal <miquel.raynal@bootlin.com>
+
+properties:
+  compatible:
+    oneOf:
+      - items:
+          - const: marvell,armada-8k-nand-controller
+          - const: marvell,armada370-nand-controller
+      - enum:
+          - marvell,armada-8k-nand-controller
+          - marvell,armada370-nand-controller
+          - marvell,pxa3xx-nand-controller
+      - description: legacy bindings
+        deprecated: true
+        enum:
+          - marvell,armada-8k-nand
+          - marvell,armada370-nand
+          - marvell,pxa3xx-nand
+
+  reg:
+    maxItems: 1
+
+  interrupts:
+    maxItems: 1
+
+  clocks:
+    description:
+      Shall reference the NAND controller clocks, the second one is
+      is only needed for the Armada 7K/8K SoCs
+    minItems: 1
+    maxItems: 2
+
+  clock-names:
+    minItems: 1
+    items:
+      - const: core
+      - const: reg
+
+  dmas:
+    maxItems: 1
+
+  dma-names:
+    items:
+      - const: data
+
+  marvell,system-controller:
+    $ref: /schemas/types.yaml#/definitions/phandle
+    description: Syscon node that handles NAND controller related registers
+
+patternProperties:
+  "^nand@[0-3]$":
+    type: object
+    unevaluatedProperties: false
+    properties:
+      reg:
+        minimum: 0
+        maximum: 3
+
+      nand-rb:
+        minItems: 1
Drop minItems.
quoted
+        maxItems: 1
Didn't you have here minimum and maximum? I think I did not ask to
remove them.
I did but I couldn't figure out how to do minimum and maximum with an 
array would the following be correct (note removing both minItems and 
maxItems as dtb_check complains if I have maxItems and items).
items:
  minimum: n
  maximum: n
  maxItems: n

or

items:
 - minimum: n
   maximum: n

See for example Documentation/devicetree/bindings/arm/l2c2x0.yaml

        nand-rb:
         items:
           - minimum: 0
             maximum: 1
quoted
quoted
+
+      nand-ecc-step-size:
+        const: 512
+
+      nand-ecc-strength:
+        enum: [1, 4, 8, 12, 16]
+
+      nand-on-flash-bbt:
+        $ref: /schemas/types.yaml#/definitions/flag
+
+      nand-ecc-mode:
+        const: hw
+
+      label:
+        $ref: /schemas/types.yaml#/definitions/string
Drop label
quoted
+
+      partitions:
+        type: object
Drop partitions.
This is the part I can't get to work. It should pick it up via 
nand-controller.yaml but nothing I do seems to work.
quoted
quoted
+
+      marvell,nand-keep-config:
+        description: |
+          Orders the driver not to take the timings from the core and
+          leaving them completely untouched. Bootloader timings will then
+          be used.
+        $ref: /schemas/types.yaml#/definitions/flag
+
+      marvell,nand-enable-arbiter:
+        description: |
+          To enable the arbiter, all boards blindly used it,
+          this bit was set by the bootloader for many boards and even if
+          it is marked reserved in several datasheets, it might be needed to set
+          it (otherwise it is harmless).
+        $ref: /schemas/types.yaml#/definitions/flag
+        deprecated: true
+
+    additionalProperties: false
unevaluatedProperties: false
It was hiding by '"^nand@[0-3]$":'. Should I move it here?
You cannot have both additionalProps and unevaluatedProps at the same
time, so we do not talk about same thing or this was never working?

Best regards,
Krzysztof


_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help