mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/chenhuacai/linux-loongson
synced 2025-09-01 06:39:05 +00:00

The Allwinner H616 and variants have a new display engine revision (DE33). The mixer configuration registers are significantly different to the DE3 and DE2 revisions, being split into separate top and display blocks, therefore a fallback for the mixer compatible is not provided. Note that the DE33 mixer requires 3 register blocks instead of 1. To keep things simple the maxItems value for registers is conditionally removed for the H616 and replaced with the block names from the vendor BSP kernel. Add a display engine mixer binding for the DE33. Signed-off-by: Ryan Walklin <ryan@testtoast.com> Acked-by: Conor Dooley <conor.dooley@microchip.com> Reviewed-by: Chen-Yu Tsai <wens@csie.org> Signed-off-by: Chris Morgan <macromorgan@hotmail.com> Link: https://lore.kernel.org/r/20250528092431.28825-6-ryan@testtoast.com Signed-off-by: Maxime Ripard <mripard@kernel.org>
141 lines
3.2 KiB
YAML
141 lines
3.2 KiB
YAML
# SPDX-License-Identifier: GPL-2.0
|
|
%YAML 1.2
|
|
---
|
|
$id: http://devicetree.org/schemas/display/allwinner,sun8i-a83t-de2-mixer.yaml#
|
|
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
|
|
|
title: Allwinner Display Engine 2.0 Mixer
|
|
|
|
maintainers:
|
|
- Chen-Yu Tsai <wens@csie.org>
|
|
- Maxime Ripard <mripard@kernel.org>
|
|
|
|
properties:
|
|
compatible:
|
|
enum:
|
|
- allwinner,sun8i-a83t-de2-mixer-0
|
|
- allwinner,sun8i-a83t-de2-mixer-1
|
|
- allwinner,sun8i-h3-de2-mixer-0
|
|
- allwinner,sun8i-r40-de2-mixer-0
|
|
- allwinner,sun8i-r40-de2-mixer-1
|
|
- allwinner,sun8i-v3s-de2-mixer
|
|
- allwinner,sun20i-d1-de2-mixer-0
|
|
- allwinner,sun20i-d1-de2-mixer-1
|
|
- allwinner,sun50i-a64-de2-mixer-0
|
|
- allwinner,sun50i-a64-de2-mixer-1
|
|
- allwinner,sun50i-h6-de3-mixer-0
|
|
- allwinner,sun50i-h616-de33-mixer-0
|
|
|
|
reg: true
|
|
|
|
reg-names: true
|
|
|
|
clocks:
|
|
items:
|
|
- description: The mixer interface clock
|
|
- description: The mixer module clock
|
|
|
|
clock-names:
|
|
items:
|
|
- const: bus
|
|
- const: mod
|
|
|
|
iommus:
|
|
maxItems: 1
|
|
|
|
resets:
|
|
maxItems: 1
|
|
|
|
ports:
|
|
$ref: /schemas/graph.yaml#/properties/ports
|
|
|
|
properties:
|
|
port@0:
|
|
$ref: /schemas/graph.yaml#/properties/port
|
|
description: |
|
|
Input endpoints of the controller.
|
|
|
|
port@1:
|
|
$ref: /schemas/graph.yaml#/properties/port
|
|
description: |
|
|
Output endpoints of the controller.
|
|
|
|
required:
|
|
- port@1
|
|
|
|
allOf:
|
|
- if:
|
|
properties:
|
|
compatible:
|
|
contains:
|
|
enum:
|
|
- allwinner,sun50i-h616-de33-mixer-0
|
|
then:
|
|
properties:
|
|
reg:
|
|
description: |
|
|
Registers for controlling individual layers of the display
|
|
engine (layers), global control (top), and display blending
|
|
control (display). Names are from Allwinner BSP kernel.
|
|
maxItems: 3
|
|
reg-names:
|
|
items:
|
|
- const: layers
|
|
- const: top
|
|
- const: display
|
|
required:
|
|
- reg-names
|
|
|
|
else:
|
|
properties:
|
|
reg:
|
|
maxItems: 1
|
|
|
|
required:
|
|
- compatible
|
|
- reg
|
|
- clocks
|
|
- clock-names
|
|
- resets
|
|
- ports
|
|
|
|
additionalProperties: false
|
|
|
|
examples:
|
|
- |
|
|
#include <dt-bindings/clock/sun8i-de2.h>
|
|
#include <dt-bindings/reset/sun8i-de2.h>
|
|
|
|
mixer0: mixer@1100000 {
|
|
compatible = "allwinner,sun8i-a83t-de2-mixer-0";
|
|
reg = <0x01100000 0x100000>;
|
|
clocks = <&display_clocks CLK_BUS_MIXER0>,
|
|
<&display_clocks CLK_MIXER0>;
|
|
clock-names = "bus",
|
|
"mod";
|
|
resets = <&display_clocks RST_MIXER0>;
|
|
|
|
ports {
|
|
#address-cells = <1>;
|
|
#size-cells = <0>;
|
|
|
|
mixer0_out: port@1 {
|
|
#address-cells = <1>;
|
|
#size-cells = <0>;
|
|
reg = <1>;
|
|
|
|
mixer0_out_tcon0: endpoint@0 {
|
|
reg = <0>;
|
|
remote-endpoint = <&tcon0_in_mixer0>;
|
|
};
|
|
|
|
mixer0_out_tcon1: endpoint@1 {
|
|
reg = <1>;
|
|
remote-endpoint = <&tcon1_in_mixer0>;
|
|
};
|
|
};
|
|
};
|
|
};
|
|
|
|
...
|