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.txtdiff --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: 1Drop minItems.quoted
+ maxItems: 1Didn'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: 1quoted
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/stringDrop labelquoted
+ + partitions: + type: objectDrop 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: falseunevaluatedProperties: falseIt 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