lkml.org 
[lkml]   [2023]   [Jun]   [1]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    SubjectRe: [PATCH v8 3/3] dt-bindings: mtd: marvell-nand: Convert to YAML DT scheme
    From
    On 01/06/2023 01:49, Chris Packham wrote:
    > From: Vadym Kochan <vadym.kochan@plvision.eu>
    >
    > 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 <vadym.kochan@plvision.eu>
    > 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.

    > - 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://devicetree.org/schemas/mtd/marvell,nand-controller.yaml#
    > +$schema: http://devicetree.org/meta-schemas/core.yaml#
    > +
    > +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.

    > + maxItems: 1

    Didn't you have here minimum and maximum? I think I did not ask to
    remove them.

    > +
    > + 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

    > +
    > + partitions:
    > + type: object

    Drop partitions.

    > +
    > + 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

    > +
    > + required:
    > + - reg
    > + - nand-rb
    > +

    required: block goes here

    > +allOf:
    > + - $ref: nand-controller.yaml
    > +
    > + - if:
    > + properties:
    > + compatible:
    > + contains:
    > + const: marvell,pxa3xx-nand-controller
    > + then:
    > + required:
    > + - dmas
    > + - dma-names
    > +
    > + - if:
    > + properties:
    > + compatible:
    > + contains:
    > + const: marvell,armada-8k-nand-controller
    > + then:
    > + properties:
    > + clocks:
    > + minItems: 2
    > +
    > + clock-names:
    > + minItems: 2
    > +
    > + required:
    > + - marvell,system-controller
    > +


    Best regards,
    Krzysztof

    \
     
     \ /
      Last update: 2023-06-01 09:07    [W:3.029 / U:0.508 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site