The H616 NAND controller is quite different from the A10 and A23 ones,
some registers offset changed, and some new one are introduced.
Also, the DMA handling is different (it uses chained descriptors)
So, introduce a new compatible to represent this version of the IP.
Signed-off-by: Richard Genoud <richard.genoud@bootlin.com>
---
.../mtd/allwinner,sun4i-a10-nand.yaml | 56 ++++++++++++++-----
1 file changed, 43 insertions(+), 13 deletions(-)
diff --git a/Documentation/devicetree/bindings/mtd/allwinner,sun4i-a10-nand.yaml b/Documentation/devicetree/bindings/mtd/allwinner,sun4i-a10-nand.yaml
index 054b6b8bf9b9..cc63091fe936 100644
--- a/Documentation/devicetree/bindings/mtd/allwinner,sun4i-a10-nand.yaml
+++ b/Documentation/devicetree/bindings/mtd/allwinner,sun4i-a10-nand.yaml
@@ -6,34 +6,64 @@ $schema: http://devicetree.org/meta-schemas/core.yaml#
title: Allwinner A10 NAND Controller
-allOf:
- - $ref: nand-controller.yaml
-
maintainers:
- Chen-Yu Tsai <wens@csie.org>
- Maxime Ripard <mripard@kernel.org>
+allOf:
+ - $ref: nand-controller.yaml
+
+ - if:
+ properties:
+ compatible:
+ contains:
+ enum:
+ - allwinner,sun4i-a10-nand
+ - allwinner,sun8i-a23-nand-controller
+ then:
+ properties:
+ clocks:
+ items:
+ - description: Bus Clock
+ - description: Module Clock
+ clock-names:
+ items:
+ - const: ahb
+ - const: mod
+
+ - if:
+ properties:
+ compatible:
+ contains:
+ enum:
+ - allwinner,sun50i-h616-nand-controller
+ then:
+ properties:
+ clocks:
+ items:
+ - description: Bus Clock
+ - description: Module Clock
+ - description: ECC Clock
+ - description: MBus Clock
+ clock-names:
+ items:
+ - const: ahb
+ - const: mod
+ - const: ecc
+ - const: mbus
+
properties:
compatible:
enum:
- allwinner,sun4i-a10-nand
- allwinner,sun8i-a23-nand-controller
+ - allwinner,sun50i-h616-nand-controller
reg:
maxItems: 1
interrupts:
maxItems: 1
- clocks:
- items:
- - description: Bus Clock
- - description: Module Clock
-
- clock-names:
- items:
- - const: ahb
- - const: mod
-
resets:
maxItems: 1
--
2.47.3
On 10/10/2025 10:40, Richard Genoud wrote: > + > properties: > compatible: > enum: > - allwinner,sun4i-a10-nand > - allwinner,sun8i-a23-nand-controller > + - allwinner,sun50i-h616-nand-controller Also: 1. missing new line - why did you remove it? 2. Keep existing sunxi preferred order of entries. In other platforms it is alphanumerical, not natural. In case sunxi uses something else, just be sure you use sunxi order. Best regards, Krzysztof
Le 10/10/2025 à 10:49, Krzysztof Kozlowski a écrit : > On 10/10/2025 10:40, Richard Genoud wrote: >> + >> properties: >> compatible: >> enum: >> - allwinner,sun4i-a10-nand >> - allwinner,sun8i-a23-nand-controller >> + - allwinner,sun50i-h616-nand-controller > > > Also: > 1. missing new line - why did you remove it? > 2. Keep existing sunxi preferred order of entries. In other platforms it > is alphanumerical, not natural. In case sunxi uses something else, just > be sure you use sunxi order. ok, make sens Thanks! > > Best regards, > Krzysztof -- Richard Genoud, Bootlin Embedded Linux and Kernel engineering https://bootlin.com
Hi, Dne petek, 10. oktober 2025 ob 12:18:56 Srednjeevropski poletni čas je Richard GENOUD napisal(a): > Le 10/10/2025 à 10:49, Krzysztof Kozlowski a écrit : > > On 10/10/2025 10:40, Richard Genoud wrote: > >> + > >> properties: > >> compatible: > >> enum: > >> - allwinner,sun4i-a10-nand > >> - allwinner,sun8i-a23-nand-controller > >> + - allwinner,sun50i-h616-nand-controller > > > > > > Also: > > 1. missing new line - why did you remove it? > > 2. Keep existing sunxi preferred order of entries. In other platforms it > > is alphanumerical, not natural. In case sunxi uses something else, just > > be sure you use sunxi order. Sunxi order is from oldest generation to newest and then alphabetically by soc name. This is already correctly ordered. Best regards, Jernej > ok, make sens > > Thanks! > > > > > Best regards, > > Krzysztof > > >
Le 11/10/2025 à 12:27, Jernej Škrabec a écrit : > Hi, > > Dne petek, 10. oktober 2025 ob 12:18:56 Srednjeevropski poletni čas je Richard GENOUD napisal(a): >> Le 10/10/2025 à 10:49, Krzysztof Kozlowski a écrit : >>> On 10/10/2025 10:40, Richard Genoud wrote: >>>> + >>>> properties: >>>> compatible: >>>> enum: >>>> - allwinner,sun4i-a10-nand >>>> - allwinner,sun8i-a23-nand-controller >>>> + - allwinner,sun50i-h616-nand-controller >>> >>> >>> Also: >>> 1. missing new line - why did you remove it? >>> 2. Keep existing sunxi preferred order of entries. In other platforms it >>> is alphanumerical, not natural. In case sunxi uses something else, just >>> be sure you use sunxi order. > > Sunxi order is from oldest generation to newest and then alphabetically > by soc name. > > This is already correctly ordered. Ok. Thanks! > > Best regards, > Jernej > >> ok, make sens >> >> Thanks! >> >>> >>> Best regards, >>> Krzysztof >>
On 10/10/2025 10:40, Richard Genoud wrote: > The H616 NAND controller is quite different from the A10 and A23 ones, > some registers offset changed, and some new one are introduced. > Also, the DMA handling is different (it uses chained descriptors) > Subject: not new compatible, but "H616" or whatever device is called. Otherwise every commit would be called like that making git log --oneline useless. > So, introduce a new compatible to represent this version of the IP. > > Signed-off-by: Richard Genoud <richard.genoud@bootlin.com> > --- > .../mtd/allwinner,sun4i-a10-nand.yaml | 56 ++++++++++++++----- > 1 file changed, 43 insertions(+), 13 deletions(-) > > diff --git a/Documentation/devicetree/bindings/mtd/allwinner,sun4i-a10-nand.yaml b/Documentation/devicetree/bindings/mtd/allwinner,sun4i-a10-nand.yaml > index 054b6b8bf9b9..cc63091fe936 100644 > --- a/Documentation/devicetree/bindings/mtd/allwinner,sun4i-a10-nand.yaml > +++ b/Documentation/devicetree/bindings/mtd/allwinner,sun4i-a10-nand.yaml > @@ -6,34 +6,64 @@ $schema: http://devicetree.org/meta-schemas/core.yaml# > > title: Allwinner A10 NAND Controller > > -allOf: > - - $ref: nand-controller.yaml > - > maintainers: > - Chen-Yu Tsai <wens@csie.org> > - Maxime Ripard <mripard@kernel.org> > > +allOf: > + - $ref: nand-controller.yaml If moving it, can you place it like in example-schema, so at the bottom, above unevaluatedProps? > + > + - if: > + properties: > + compatible: > + contains: > + enum: > + - allwinner,sun4i-a10-nand > + - allwinner,sun8i-a23-nand-controller > + then: > + properties: > + clocks: > + items: > + - description: Bus Clock > + - description: Module Clock > + clock-names: > + items: > + - const: ahb > + - const: mod > + > + - if: > + properties: > + compatible: > + contains: > + enum: > + - allwinner,sun50i-h616-nand-controller > + then: > + properties: > + clocks: > + items: > + - description: Bus Clock > + - description: Module Clock > + - description: ECC Clock > + - description: MBus Clock > + clock-names: > + items: > + - const: ahb > + - const: mod > + - const: ecc > + - const: mbus > + > properties: > compatible: > enum: > - allwinner,sun4i-a10-nand > - allwinner,sun8i-a23-nand-controller > + - allwinner,sun50i-h616-nand-controller > reg: > maxItems: 1 > > interrupts: > maxItems: 1 > > - clocks: > - items: > - - description: Bus Clock > - - description: Module Clock > - > - clock-names: > - items: > - - const: ahb > - - const: mod You cannot remove it. Broadest constraints, see writing schema. or my standard reference example: https://elixir.bootlin.com/linux/v6.11-rc6/source/Documentation/devicetree/bindings/ufs/qcom,ufs.yaml#L127 Best regards, Krzysztof
Hi Krzysztof, Le 10/10/2025 à 10:45, Krzysztof Kozlowski a écrit : > On 10/10/2025 10:40, Richard Genoud wrote: >> The H616 NAND controller is quite different from the A10 and A23 ones, >> some registers offset changed, and some new one are introduced. >> Also, the DMA handling is different (it uses chained descriptors) >> > > > Subject: not new compatible, but "H616" or whatever device is called. > Otherwise every commit would be called like that making git log > --oneline useless. Indeed. > >> So, introduce a new compatible to represent this version of the IP. >> >> Signed-off-by: Richard Genoud <richard.genoud@bootlin.com> >> --- >> .../mtd/allwinner,sun4i-a10-nand.yaml | 56 ++++++++++++++----- >> 1 file changed, 43 insertions(+), 13 deletions(-) >> >> diff --git a/Documentation/devicetree/bindings/mtd/allwinner,sun4i-a10-nand.yaml b/Documentation/devicetree/bindings/mtd/allwinner,sun4i-a10-nand.yaml >> index 054b6b8bf9b9..cc63091fe936 100644 >> --- a/Documentation/devicetree/bindings/mtd/allwinner,sun4i-a10-nand.yaml >> +++ b/Documentation/devicetree/bindings/mtd/allwinner,sun4i-a10-nand.yaml >> @@ -6,34 +6,64 @@ $schema: http://devicetree.org/meta-schemas/core.yaml# >> >> title: Allwinner A10 NAND Controller >> >> -allOf: >> - - $ref: nand-controller.yaml >> - >> maintainers: >> - Chen-Yu Tsai <wens@csie.org> >> - Maxime Ripard <mripard@kernel.org> >> >> +allOf: >> + - $ref: nand-controller.yaml > > > If moving it, can you place it like in example-schema, so at the bottom, > above unevaluatedProps? Yes, absolutely. > >> + >> + - if: >> + properties: >> + compatible: >> + contains: >> + enum: >> + - allwinner,sun4i-a10-nand >> + - allwinner,sun8i-a23-nand-controller >> + then: >> + properties: >> + clocks: >> + items: >> + - description: Bus Clock >> + - description: Module Clock >> + clock-names: >> + items: >> + - const: ahb >> + - const: mod >> + >> + - if: >> + properties: >> + compatible: >> + contains: >> + enum: >> + - allwinner,sun50i-h616-nand-controller >> + then: >> + properties: >> + clocks: >> + items: >> + - description: Bus Clock >> + - description: Module Clock >> + - description: ECC Clock >> + - description: MBus Clock >> + clock-names: >> + items: >> + - const: ahb >> + - const: mod >> + - const: ecc >> + - const: mbus >> + >> properties: >> compatible: >> enum: >> - allwinner,sun4i-a10-nand >> - allwinner,sun8i-a23-nand-controller >> + - allwinner,sun50i-h616-nand-controller >> reg: >> maxItems: 1 >> >> interrupts: >> maxItems: 1 >> >> - clocks: >> - items: >> - - description: Bus Clock >> - - description: Module Clock >> - >> - clock-names: >> - items: >> - - const: ahb >> - - const: mod > > > You cannot remove it. Broadest constraints, see writing schema. > > or my standard reference example: > https://elixir.bootlin.com/linux/v6.11-rc6/source/Documentation/devicetree/bindings/ufs/qcom,ufs.yaml#L127 Ok Thanks! > > > Best regards, > Krzysztof -- Richard Genoud, Bootlin Embedded Linux and Kernel engineering https://bootlin.com
© 2016 - 2025 Red Hat, Inc.