summaryrefslogtreecommitdiff
path: root/Documentation/devicetree/bindings/fb/fsl_ipuv3_fb.txt
blob: 3a59da799620ef3af73410f6f0e1d604b3be777a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
* FSL IPUv3 Display/FB

The FSL IPUv3 is Image Processing Unit version 3, a part of video and graphics
subsystem in an application processor. The goal of the IPU is to provide
comprehensive support for the flow of data from an image sensor or/and to a
display device.

Two IPU units are on the imx6q SOC while only one IPU unit on the imx6dl SOC.
Each IPU unit has two display interfaces.

For LDB/LVDS panel, there are two LVDS channels(LVDS0 and LVDS1) which can
transfer video data, these two channels can be used as
split/dual/single/separate mode.
-split mode means display data from DI0 or DI1 will send to both channels
 LVDS0+LVDS1.
-dual mode means display data from DI0 or DI1 will be duplicated on LVDS0
 and LVDS1, it said, LVDS0 and LVDS1 has the same content.
-single mode means only work for DI0/DI1->LVDS0 or DI0/DI1->LVDS1.
-separate mode means you can make DI0/DI1->LVDS0 and DI0/DI1->LVDS1 work
 at the same time.
 "ldb=spl0/1"	--      split mode on DI0/1
 "ldb=dul0/1"	--      dual mode on DI0/1
 "ldb=sin0/1"	--      single mode on LVDS0/1
 "ldb=sep0/1"	--      separate mode begin from LVDS0/1

Required properties for IPU:
- bypass_reset :Bypass reset to avoid display channel being.
  stopped by probe since it may start to work in bootloader: 0 or 1.
- compatible : should be "fsl,imx6q-ipu".
- reg : the register address range.
- interrupts : the error and sync interrupts request.
- clocks : the clock sources that it depends on.
- clock-names:  the related clock names.
- resets : IPU reset specifier.  See reset.txt and fsl,imx-src.txt in
  Documentation/devicetree/bindings/reset/ for details.

Required properties for fb:
- compatible : should be "fsl,mxc_sdc_fb".
- disp_dev : display device: "ldb", "lcd", "hdmi", "mipi_dsi".
- mode_str : video mode string: "LDB-XGA" or "LDB-1080P60" for ldb,
  "CLAA-WVGA" for lcd, "TRULY-WVGA" for TRULY mipi_dsi lcd panel,
  "1920x1080M@60" for hdmi.
- default_bpp : default bits per pixel: 8/16/24/32
- int_clk : use internal clock as pixel clock: 0 or 1
- late_init : to avoid display channel being re-initialized
  as we've probably setup the channel in bootloader: 0 or 1
- interface_pix_fmt : display interface pixel format as below:
	RGB666		IPU_PIX_FMT_RGB666
	RGB565		IPU_PIX_FMT_RGB565
	RGB24		IPU_PIX_FMT_RGB24
	BGR24		IPU_PIX_FMT_BGR24
	GBR24		IPU_PIX_FMT_GBR24
	YUV444		IPU_PIX_FMT_YUV444
	LVDS666		IPU_PIX_FMT_LVDS666
	YUYV		IPU_PIX_FMT_YUYV
	UYVY		IPU_PIX_FMT_UYVY
	YVYV		IPU_PIX_FMT_YVYU
	VYUY		IPU_PIX_FMT_VYUY

Required properties for display:
- compatible : should be "fsl,lcd" for lcd panel, "fsl,imx6q-ldb" for ldb
- reg : the register address range if necessary to have.
- interrupts : the error and sync interrupts if necessary to have.
- clocks : the clock sources that it depends on if necessary to have.
- clock-names: the related clock names if necessary to have.
- ipu_id : ipu id for the first display device: 0 or 1
- disp_id : display interface id for the first display interface: 0 or 1
- default_ifmt : save as above display interface pixel format for lcd
- pinctrl-names : should be "default"
- pinctrl-0 : should be pinctrl_ipu1_1 or pinctrl_ipu2_1, which depends on the
  IPU connected.
- sec_ipu_id : secondary ipu id for the second display device(ldb only): 0 or 1
- sec_disp_id : secondary display interface id for the second display
  device(ldb only): 0 or 1
- ext_ref : reference resistor select for ldb only: 0 or 1
- mode : ldb mode as below:
	spl0		LDB_SPL_DI0
	spl1		LDB_SPL_DI1
	dul0		LDB_DUL_DI0
	dul1		LDB_DUL_DI1
	sin0		LDB_SIN0
	sin1		LDB_SIN1
	sep0		LDB_SEP0
	sep1		LDB_SEP1
- gpr : the mux controller for the display engine's display interfaces and the display encoder
	(only valid for mipi dsi now).
- disp-power-on-supply : the regulator to control display panel's power.
			(only valid for mipi dsi now).
- resets : the gpio pin to reset the display device(only valid for mipi display panel now).
- lcd_panel : the video mode name for the display device(only valid for mipi display panel now).
- dev_id : the display engine's identity within the system, which intends to replace ipu_id
	   (only valid for mipi dsi now).

Example for IPU:
		ipu1: ipu@02400000 {
			compatible = "fsl,imx6q-ipu";
			reg = <0x02400000 0x400000>;
			interrupts = <0 6 0x4 0 5 0x4>;
			clocks = <&clks 130>, <&clks 131>, <&clks 132>,
				 <&clks 39>, <&clks 40>,
				 <&clks 135>, <&clks 136>;
			clock-names = "bus", "di0", "di1",
				      "di0_sel", "di1_sel",
				      "ldb_di0", "ldb_di1";
			resets = <&src 2>;
			bypass_reset = <0>;
		};

Example for fb:
		fb0 {
			compatible = "fsl,mxc_sdc_fb";
			disp_dev = "ldb";
			interface_pix_fmt = "RGB666";
			mode_str ="LDB-XGA";
			default_bpp = <16>;
			int_clk = <0>;
			late_init = <0>;
			status = "okay";
		};

Example for ldb display:
		ldb@020e0000 {
			ipu_id = <1>;
			disp_id = <0>;
			ext_ref = <1>;
			mode = "sep0";
			sec_ipu_id = <1>;
			sec_disp_id = <1>;
			status = "okay";
		};

Example for mipi dsi display:
		mipi_dsi: mipi@021e0000 {
			compatible = "fsl,imx6q-mipi-dsi";
			reg = <0x021e0000 0x4000>;
			interrupts = <0 102 0x04>;
			gpr = <&gpr>;
			clocks = <&clks 138>, <&clks 204>;
			clock-names = "mipi_pllref_clk", "mipi_cfg_clk";
			dev_id = <0>;
			disp_id = <0>;
			lcd_panel = "TRULY-WVGA";
			disp-power-on-supply = <&reg_mipi_dsi_pwr_on>
			resets = <&mipi_dsi_reset>;
			status = "okay";
		};