18c2ecf20Sopenharmony_ciZTE VOU Display Controller
28c2ecf20Sopenharmony_ci
38c2ecf20Sopenharmony_ciThis is a display controller found on ZTE ZX296718 SoC.  It includes multiple
48c2ecf20Sopenharmony_ciGraphic Layer (GL) and Video Layer (VL), two Mixers/Channels, and a few blocks
58c2ecf20Sopenharmony_cihandling scaling, color space conversion etc.  VOU also integrates the support
68c2ecf20Sopenharmony_cifor typical output devices, like HDMI, TV Encoder, VGA, and RGB LCD.
78c2ecf20Sopenharmony_ci
88c2ecf20Sopenharmony_ci* Master VOU node
98c2ecf20Sopenharmony_ci
108c2ecf20Sopenharmony_ciIt must be the parent node of all the sub-device nodes.
118c2ecf20Sopenharmony_ci
128c2ecf20Sopenharmony_ciRequired properties:
138c2ecf20Sopenharmony_ci - compatible: should be "zte,zx296718-vou"
148c2ecf20Sopenharmony_ci - #address-cells: should be <1>
158c2ecf20Sopenharmony_ci - #size-cells: should be <1>
168c2ecf20Sopenharmony_ci - ranges: list of address translations between VOU and sub-devices
178c2ecf20Sopenharmony_ci
188c2ecf20Sopenharmony_ci* VOU DPC device
198c2ecf20Sopenharmony_ci
208c2ecf20Sopenharmony_ciRequired properties:
218c2ecf20Sopenharmony_ci - compatible: should be "zte,zx296718-dpc"
228c2ecf20Sopenharmony_ci - reg: Physical base address and length of DPC register regions, one for each
238c2ecf20Sopenharmony_ci   entry in 'reg-names'
248c2ecf20Sopenharmony_ci - reg-names: The names of register regions. The following regions are required:
258c2ecf20Sopenharmony_ci	"osd"
268c2ecf20Sopenharmony_ci	"timing_ctrl"
278c2ecf20Sopenharmony_ci	"dtrc"
288c2ecf20Sopenharmony_ci	"vou_ctrl"
298c2ecf20Sopenharmony_ci	"otfppu"
308c2ecf20Sopenharmony_ci - interrupts: VOU DPC interrupt number to CPU
318c2ecf20Sopenharmony_ci - clocks: A list of phandle + clock-specifier pairs, one for each entry
328c2ecf20Sopenharmony_ci   in 'clock-names'
338c2ecf20Sopenharmony_ci - clock-names: A list of clock names.  The following clocks are required:
348c2ecf20Sopenharmony_ci	"aclk"
358c2ecf20Sopenharmony_ci	"ppu_wclk"
368c2ecf20Sopenharmony_ci	"main_wclk"
378c2ecf20Sopenharmony_ci	"aux_wclk"
388c2ecf20Sopenharmony_ci
398c2ecf20Sopenharmony_ci* HDMI output device
408c2ecf20Sopenharmony_ci
418c2ecf20Sopenharmony_ciRequired properties:
428c2ecf20Sopenharmony_ci - compatible: should be "zte,zx296718-hdmi"
438c2ecf20Sopenharmony_ci - reg: Physical base address and length of the HDMI device IO region
448c2ecf20Sopenharmony_ci - interrupts : HDMI interrupt number to CPU
458c2ecf20Sopenharmony_ci - clocks: A list of phandle + clock-specifier pairs, one for each entry
468c2ecf20Sopenharmony_ci   in 'clock-names'
478c2ecf20Sopenharmony_ci - clock-names: A list of clock names.  The following clocks are required:
488c2ecf20Sopenharmony_ci	"osc_cec"
498c2ecf20Sopenharmony_ci	"osc_clk"
508c2ecf20Sopenharmony_ci	"xclk"
518c2ecf20Sopenharmony_ci
528c2ecf20Sopenharmony_ci* TV Encoder output device
538c2ecf20Sopenharmony_ci
548c2ecf20Sopenharmony_ciRequired properties:
558c2ecf20Sopenharmony_ci - compatible: should be "zte,zx296718-tvenc"
568c2ecf20Sopenharmony_ci - reg: Physical base address and length of the TVENC device IO region
578c2ecf20Sopenharmony_ci - zte,tvenc-power-control: the phandle to SYSCTRL block followed by two
588c2ecf20Sopenharmony_ci   integer cells.  The first cell is the offset of SYSCTRL register used
598c2ecf20Sopenharmony_ci   to control TV Encoder DAC power, and the second cell is the bit mask.
608c2ecf20Sopenharmony_ci
618c2ecf20Sopenharmony_ci* VGA output device
628c2ecf20Sopenharmony_ci
638c2ecf20Sopenharmony_ciRequired properties:
648c2ecf20Sopenharmony_ci - compatible: should be "zte,zx296718-vga"
658c2ecf20Sopenharmony_ci - reg: Physical base address and length of the VGA device IO region
668c2ecf20Sopenharmony_ci - interrupts : VGA interrupt number to CPU
678c2ecf20Sopenharmony_ci - clocks: Phandle with clock-specifier pointing to VGA I2C clock.
688c2ecf20Sopenharmony_ci - clock-names: Must be "i2c_wclk".
698c2ecf20Sopenharmony_ci - zte,vga-power-control: the phandle to SYSCTRL block followed by two
708c2ecf20Sopenharmony_ci   integer cells.  The first cell is the offset of SYSCTRL register used
718c2ecf20Sopenharmony_ci   to control VGA DAC power, and the second cell is the bit mask.
728c2ecf20Sopenharmony_ci
738c2ecf20Sopenharmony_ciExample:
748c2ecf20Sopenharmony_ci
758c2ecf20Sopenharmony_civou: vou@1440000 {
768c2ecf20Sopenharmony_ci	compatible = "zte,zx296718-vou";
778c2ecf20Sopenharmony_ci	#address-cells = <1>;
788c2ecf20Sopenharmony_ci	#size-cells = <1>;
798c2ecf20Sopenharmony_ci	ranges = <0 0x1440000 0x10000>;
808c2ecf20Sopenharmony_ci
818c2ecf20Sopenharmony_ci	dpc: dpc@0 {
828c2ecf20Sopenharmony_ci		compatible = "zte,zx296718-dpc";
838c2ecf20Sopenharmony_ci		reg = <0x0000 0x1000>, <0x1000 0x1000>,
848c2ecf20Sopenharmony_ci		      <0x5000 0x1000>, <0x6000 0x1000>,
858c2ecf20Sopenharmony_ci		      <0xa000 0x1000>;
868c2ecf20Sopenharmony_ci		reg-names = "osd", "timing_ctrl",
878c2ecf20Sopenharmony_ci			    "dtrc", "vou_ctrl",
888c2ecf20Sopenharmony_ci			    "otfppu";
898c2ecf20Sopenharmony_ci		interrupts = <GIC_SPI 81 IRQ_TYPE_LEVEL_HIGH>;
908c2ecf20Sopenharmony_ci		clocks = <&topcrm VOU_ACLK>, <&topcrm VOU_PPU_WCLK>,
918c2ecf20Sopenharmony_ci			 <&topcrm VOU_MAIN_WCLK>, <&topcrm VOU_AUX_WCLK>;
928c2ecf20Sopenharmony_ci		clock-names = "aclk", "ppu_wclk",
938c2ecf20Sopenharmony_ci			      "main_wclk", "aux_wclk";
948c2ecf20Sopenharmony_ci	};
958c2ecf20Sopenharmony_ci
968c2ecf20Sopenharmony_ci	vga: vga@8000 {
978c2ecf20Sopenharmony_ci		compatible = "zte,zx296718-vga";
988c2ecf20Sopenharmony_ci		reg = <0x8000 0x1000>;
998c2ecf20Sopenharmony_ci		interrupts = <GIC_SPI 86 IRQ_TYPE_LEVEL_HIGH>;
1008c2ecf20Sopenharmony_ci		clocks = <&topcrm VGA_I2C_WCLK>;
1018c2ecf20Sopenharmony_ci		clock-names = "i2c_wclk";
1028c2ecf20Sopenharmony_ci		zte,vga-power-control = <&sysctrl 0x170 0xe0>;
1038c2ecf20Sopenharmony_ci	};
1048c2ecf20Sopenharmony_ci
1058c2ecf20Sopenharmony_ci	hdmi: hdmi@c000 {
1068c2ecf20Sopenharmony_ci		compatible = "zte,zx296718-hdmi";
1078c2ecf20Sopenharmony_ci		reg = <0xc000 0x4000>;
1088c2ecf20Sopenharmony_ci		interrupts = <GIC_SPI 82 IRQ_TYPE_EDGE_RISING>;
1098c2ecf20Sopenharmony_ci		clocks = <&topcrm HDMI_OSC_CEC>,
1108c2ecf20Sopenharmony_ci			 <&topcrm HDMI_OSC_CLK>,
1118c2ecf20Sopenharmony_ci			 <&topcrm HDMI_XCLK>;
1128c2ecf20Sopenharmony_ci		clock-names = "osc_cec", "osc_clk", "xclk";
1138c2ecf20Sopenharmony_ci	};
1148c2ecf20Sopenharmony_ci
1158c2ecf20Sopenharmony_ci	tvenc: tvenc@2000 {
1168c2ecf20Sopenharmony_ci		compatible = "zte,zx296718-tvenc";
1178c2ecf20Sopenharmony_ci		reg = <0x2000 0x1000>;
1188c2ecf20Sopenharmony_ci		zte,tvenc-power-control = <&sysctrl 0x170 0x10>;
1198c2ecf20Sopenharmony_ci	};
1208c2ecf20Sopenharmony_ci};
121