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

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 02/06/2023 01:06, Chris Packham wrote:
> Hi Krzystof,
> 
> On 1/06/23 19:05, Krzysztof Kozlowski wrote:
>> On 01/06/2023 01:49, Chris Packham wrote:
>>> From: Vadym Kochan <vadym.kochan@xxxxxxxxxxx>
>>>
>>> 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@xxxxxxxxxxx>
>>> Signed-off-by: Chris Packham <chris.packham@xxxxxxxxxxxxxxxxxxx>
>>> ---
>>>
>>> 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.

>>>      - 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@xxxxxxxxxxx>
>>> +
>>> +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.
> 
> 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
> 
>>
>>> +
>>> +      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.
> 
> 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.
> 
>>> +
>>> +      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




[Index of Archives]     [Device Tree Compilter]     [Device Tree Spec]     [Linux Driver Backports]     [Video for Linux]     [Linux USB Devel]     [Linux PCI Devel]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [XFree86]     [Yosemite Backpacking]


  Powered by Linux