Allwinner Display Engine 3.3 contains planes, which are shared resources
between all mixers present in SoC. They can be assigned to specific
mixer by using registers which reside in display clocks MMIO.
Add a binding for them.
Signed-off-by: Jernej Skrabec <jernej.skrabec@gmail.com>
---
.../allwinner,sun50i-h616-de33-planes.yaml | 44 +++++++++++++++++++
1 file changed, 44 insertions(+)
create mode 100644 Documentation/devicetree/bindings/display/allwinner,sun50i-h616-de33-planes.yaml
diff --git a/Documentation/devicetree/bindings/display/allwinner,sun50i-h616-de33-planes.yaml b/Documentation/devicetree/bindings/display/allwinner,sun50i-h616-de33-planes.yaml
new file mode 100644
index 000000000000..801e5068a6b5
--- /dev/null
+++ b/Documentation/devicetree/bindings/display/allwinner,sun50i-h616-de33-planes.yaml
@@ -0,0 +1,44 @@
+# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/display/allwinner,sun50i-h616-de33-planes.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Allwinner H616 Display Engine 3.3 planes
+
+maintainers:
+ - Jernej Skrabec <jernej.skrabec@gmail.com>
+
+description: |
+ Display Engine 3.3 planes are independent of mixers, contrary to
+ previous generations of Display Engine. Planes can be assigned to
+ mixers independently and even dynamically during runtime.
+
+properties:
+ compatible:
+ enum:
+ - allwinner,sun50i-h616-de33-planes
+
+ reg:
+ maxItems: 1
+
+ allwinner,plane-mapping:
+ $ref: /schemas/types.yaml#/definitions/phandle
+ description: Phandle of Display Engine clock node
+
+required:
+ - compatible
+ - reg
+ - allwinner,plane-mapping
+
+additionalProperties: false
+
+examples:
+ - |
+ planes: planes@100000 {
+ compatible = "allwinner,sun50i-h616-de33-planes";
+ reg = <0x100000 0x180000>;
+ allwinner,plane-mapping = <&display_clocks>;
+ };
+
+...
--
2.51.2
On Sat, Nov 15, 2025 at 03:13:44PM +0100, Jernej Skrabec wrote: > Allwinner Display Engine 3.3 contains planes, which are shared resources > between all mixers present in SoC. They can be assigned to specific > mixer by using registers which reside in display clocks MMIO. > > Add a binding for them. > > Signed-off-by: Jernej Skrabec <jernej.skrabec@gmail.com> > --- > .../allwinner,sun50i-h616-de33-planes.yaml | 44 +++++++++++++++++++ > 1 file changed, 44 insertions(+) > create mode 100644 Documentation/devicetree/bindings/display/allwinner,sun50i-h616-de33-planes.yaml > > diff --git a/Documentation/devicetree/bindings/display/allwinner,sun50i-h616-de33-planes.yaml b/Documentation/devicetree/bindings/display/allwinner,sun50i-h616-de33-planes.yaml > new file mode 100644 > index 000000000000..801e5068a6b5 > --- /dev/null > +++ b/Documentation/devicetree/bindings/display/allwinner,sun50i-h616-de33-planes.yaml > @@ -0,0 +1,44 @@ > +# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause > +%YAML 1.2 > +--- > +$id: http://devicetree.org/schemas/display/allwinner,sun50i-h616-de33-planes.yaml# > +$schema: http://devicetree.org/meta-schemas/core.yaml# > + > +title: Allwinner H616 Display Engine 3.3 planes > + > +maintainers: > + - Jernej Skrabec <jernej.skrabec@gmail.com> > + > +description: | Do not need '|' unless you need to preserve formatting. > + Display Engine 3.3 planes are independent of mixers, contrary to > + previous generations of Display Engine. Planes can be assigned to > + mixers independently and even dynamically during runtime. > + > +properties: > + compatible: > + enum: > + - allwinner,sun50i-h616-de33-planes > + > + reg: > + maxItems: 1 > + > + allwinner,plane-mapping: > + $ref: /schemas/types.yaml#/definitions/phandle > + description: Phandle of Display Engine clock node You description is almost duplicating property name. You need to explain here how this device uses them. Esxpecially that clocks do not go via custom properties. Best regards, Krzysztof
Hi! Dne nedelja, 16. november 2025 ob 12:29:27 Srednjeevropski standardni čas je Krzysztof Kozlowski napisal(a): > On Sat, Nov 15, 2025 at 03:13:44PM +0100, Jernej Skrabec wrote: > > Allwinner Display Engine 3.3 contains planes, which are shared resources > > between all mixers present in SoC. They can be assigned to specific > > mixer by using registers which reside in display clocks MMIO. > > > > Add a binding for them. > > > > Signed-off-by: Jernej Skrabec <jernej.skrabec@gmail.com> > > --- > > .../allwinner,sun50i-h616-de33-planes.yaml | 44 +++++++++++++++++++ > > 1 file changed, 44 insertions(+) > > create mode 100644 Documentation/devicetree/bindings/display/allwinner,sun50i-h616-de33-planes.yaml > > > > diff --git a/Documentation/devicetree/bindings/display/allwinner,sun50i-h616-de33-planes.yaml b/Documentation/devicetree/bindings/display/allwinner,sun50i-h616-de33-planes.yaml > > new file mode 100644 > > index 000000000000..801e5068a6b5 > > --- /dev/null > > +++ b/Documentation/devicetree/bindings/display/allwinner,sun50i-h616-de33-planes.yaml > > @@ -0,0 +1,44 @@ > > +# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause > > +%YAML 1.2 > > +--- > > +$id: http://devicetree.org/schemas/display/allwinner,sun50i-h616-de33-planes.yaml# > > +$schema: http://devicetree.org/meta-schemas/core.yaml# > > + > > +title: Allwinner H616 Display Engine 3.3 planes > > + > > +maintainers: > > + - Jernej Skrabec <jernej.skrabec@gmail.com> > > + > > +description: | > > Do not need '|' unless you need to preserve formatting. > > > + Display Engine 3.3 planes are independent of mixers, contrary to > > + previous generations of Display Engine. Planes can be assigned to > > + mixers independently and even dynamically during runtime. > > + > > +properties: > > + compatible: > > + enum: > > + - allwinner,sun50i-h616-de33-planes > > + > > + reg: > > + maxItems: 1 > > + > > + allwinner,plane-mapping: > > + $ref: /schemas/types.yaml#/definitions/phandle > > + description: Phandle of Display Engine clock node > > You description is almost duplicating property name. You need to explain > here how this device uses them. So I guess I can copy commit description here? It is needed to access registers from different core, so it can assign (map) planes between mixers at runtime. > > Esxpecially that clocks do not go via custom properties. This has nothing to do with clocks per se, it's just that registers that driver needs to access for mapping planes between mixers are in IP core which takes care mostly for clocks and resets. Best regards, Jernej > > Best regards, > Krzysztof > >
On 16/11/2025 12:44, Jernej Škrabec wrote: > Hi! > > Dne nedelja, 16. november 2025 ob 12:29:27 Srednjeevropski standardni čas je Krzysztof Kozlowski napisal(a): >> On Sat, Nov 15, 2025 at 03:13:44PM +0100, Jernej Skrabec wrote: >>> Allwinner Display Engine 3.3 contains planes, which are shared resources >>> between all mixers present in SoC. They can be assigned to specific >>> mixer by using registers which reside in display clocks MMIO. >>> >>> Add a binding for them. >>> >>> Signed-off-by: Jernej Skrabec <jernej.skrabec@gmail.com> >>> --- >>> .../allwinner,sun50i-h616-de33-planes.yaml | 44 +++++++++++++++++++ >>> 1 file changed, 44 insertions(+) >>> create mode 100644 Documentation/devicetree/bindings/display/allwinner,sun50i-h616-de33-planes.yaml >>> >>> diff --git a/Documentation/devicetree/bindings/display/allwinner,sun50i-h616-de33-planes.yaml b/Documentation/devicetree/bindings/display/allwinner,sun50i-h616-de33-planes.yaml >>> new file mode 100644 >>> index 000000000000..801e5068a6b5 >>> --- /dev/null >>> +++ b/Documentation/devicetree/bindings/display/allwinner,sun50i-h616-de33-planes.yaml >>> @@ -0,0 +1,44 @@ >>> +# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause >>> +%YAML 1.2 >>> +--- >>> +$id: http://devicetree.org/schemas/display/allwinner,sun50i-h616-de33-planes.yaml# >>> +$schema: http://devicetree.org/meta-schemas/core.yaml# >>> + >>> +title: Allwinner H616 Display Engine 3.3 planes >>> + >>> +maintainers: >>> + - Jernej Skrabec <jernej.skrabec@gmail.com> >>> + >>> +description: | >> >> Do not need '|' unless you need to preserve formatting. >> >>> + Display Engine 3.3 planes are independent of mixers, contrary to >>> + previous generations of Display Engine. Planes can be assigned to >>> + mixers independently and even dynamically during runtime. >>> + >>> +properties: >>> + compatible: >>> + enum: >>> + - allwinner,sun50i-h616-de33-planes >>> + >>> + reg: >>> + maxItems: 1 >>> + >>> + allwinner,plane-mapping: >>> + $ref: /schemas/types.yaml#/definitions/phandle >>> + description: Phandle of Display Engine clock node >> >> You description is almost duplicating property name. You need to explain >> here how this device uses them. > > So I guess I can copy commit description here? It is needed to > access registers from different core, so it can assign (map) > planes between mixers at runtime. "to assign (map) planes between mixers." is enough. But it looks unfortunately like a spaghetti. Your mixer binding references via phandle this planes. These planes reference via phandle some other region to configure planes between mixers. Isn't this the job of this device? Best regards, Krzysztof
Dne nedelja, 16. november 2025 ob 12:49:45 Srednjeevropski standardni čas je Krzysztof Kozlowski napisal(a): > On 16/11/2025 12:44, Jernej Škrabec wrote: > > Hi! > > > > Dne nedelja, 16. november 2025 ob 12:29:27 Srednjeevropski standardni čas je Krzysztof Kozlowski napisal(a): > >> On Sat, Nov 15, 2025 at 03:13:44PM +0100, Jernej Skrabec wrote: > >>> Allwinner Display Engine 3.3 contains planes, which are shared resources > >>> between all mixers present in SoC. They can be assigned to specific > >>> mixer by using registers which reside in display clocks MMIO. > >>> > >>> Add a binding for them. > >>> > >>> Signed-off-by: Jernej Skrabec <jernej.skrabec@gmail.com> > >>> --- > >>> .../allwinner,sun50i-h616-de33-planes.yaml | 44 +++++++++++++++++++ > >>> 1 file changed, 44 insertions(+) > >>> create mode 100644 Documentation/devicetree/bindings/display/allwinner,sun50i-h616-de33-planes.yaml > >>> > >>> diff --git a/Documentation/devicetree/bindings/display/allwinner,sun50i-h616-de33-planes.yaml b/Documentation/devicetree/bindings/display/allwinner,sun50i-h616-de33-planes.yaml > >>> new file mode 100644 > >>> index 000000000000..801e5068a6b5 > >>> --- /dev/null > >>> +++ b/Documentation/devicetree/bindings/display/allwinner,sun50i-h616-de33-planes.yaml > >>> @@ -0,0 +1,44 @@ > >>> +# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause > >>> +%YAML 1.2 > >>> +--- > >>> +$id: http://devicetree.org/schemas/display/allwinner,sun50i-h616-de33-planes.yaml# > >>> +$schema: http://devicetree.org/meta-schemas/core.yaml# > >>> + > >>> +title: Allwinner H616 Display Engine 3.3 planes > >>> + > >>> +maintainers: > >>> + - Jernej Skrabec <jernej.skrabec@gmail.com> > >>> + > >>> +description: | > >> > >> Do not need '|' unless you need to preserve formatting. > >> > >>> + Display Engine 3.3 planes are independent of mixers, contrary to > >>> + previous generations of Display Engine. Planes can be assigned to > >>> + mixers independently and even dynamically during runtime. > >>> + > >>> +properties: > >>> + compatible: > >>> + enum: > >>> + - allwinner,sun50i-h616-de33-planes > >>> + > >>> + reg: > >>> + maxItems: 1 > >>> + > >>> + allwinner,plane-mapping: > >>> + $ref: /schemas/types.yaml#/definitions/phandle > >>> + description: Phandle of Display Engine clock node > >> > >> You description is almost duplicating property name. You need to explain > >> here how this device uses them. > > > > So I guess I can copy commit description here? It is needed to > > access registers from different core, so it can assign (map) > > planes between mixers at runtime. > > > "to assign (map) planes between mixers." is enough. > > But it looks unfortunately like a spaghetti. > > Your mixer binding references via phandle this planes. These planes > reference via phandle some other region to configure planes between mixers. > > Isn't this the job of this device? It is a bit confusing, yes. There is no clean split in register space for some functionality. Register space for this node on H616 SoC represents 6 planes (each plane consist of framebuffer management, CSC unit, scaler, etc.) but not actual registers which tell to which mixer they are currently assigned. Best regards, Jernej
© 2016 - 2026 Red Hat, Inc.