summaryrefslogtreecommitdiff
path: root/Documentation/devicetree/bindings/display/mxsfb.txt
blob: 7040fb0dfa2bb66341816ea6e0110303da78036d (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
* Freescale MXS LCD Interface (LCDIF)

New bindings:
=============
Required properties:
- compatible:	Should be "fsl,imx23-lcdif" for i.MX23.
		Should be "fsl,imx28-lcdif" for i.MX28.
		Should be "fsl,imx6sx-lcdif" for i.MX6SX.
- reg:		Address and length of the register set for LCDIF
- interrupts:	Should contain LCDIF interrupt
- clocks:	A list of phandle + clock-specifier pairs, one for each
		entry in 'clock-names'.
- clock-names:	A list of clock names. For MXSFB it should contain:
    - "pix" for the LCDIF block clock
    - (MX6SX-only) "axi", "disp_axi" for the bus interface clock

Required sub-nodes:
  - port: The connection to an encoder chip.

Optional properties:
- max-res:	an array with a maximum of two integers, representing the
		maximum supported resolution, in the form of
		<maxX>, <maxY>; if one of the item is <0>, the default
		driver-defined maximum resolution for that axis is used

Example:

	lcdif1: display-controller@2220000 {
		compatible = "fsl,imx6sx-lcdif", "fsl,imx28-lcdif";
		reg = <0x02220000 0x4000>;
		interrupts = <GIC_SPI 5 IRQ_TYPE_LEVEL_HIGH>;
		clocks = <&clks IMX6SX_CLK_LCDIF1_PIX>,
			 <&clks IMX6SX_CLK_LCDIF_APB>,
			 <&clks IMX6SX_CLK_DISPLAY_AXI>;
		clock-names = "pix", "axi", "disp_axi";

		port {
			parallel_out: endpoint {
				remote-endpoint = <&panel_in_parallel>;
			};
		};
	};

Deprecated bindings:
====================
Required properties:
- compatible:	Should be "fsl,imx23-lcdif" for i.MX23.
		Should be "fsl,imx28-lcdif" for i.MX28.
- reg:		Address and length of the register set for LCDIF
- interrupts:	Should contain LCDIF interrupts
- display:	phandle to display node (see below for details)

Optional properties:
- disp-dev: Display device driver name
- disp-videomode: Display device video mode name; this is used if the panel
  supports multiple video modes, in order to chose the right one (see below for
  examples)

* display node

Required properties:
- bits-per-pixel:	<16> for RGB565, <32> for RGB888/666.
- bus-width:		number of data lines.  Could be <8>, <16>, <18> or <24>.

Required sub-node:
- display-timings:	Refer to binding doc display-timing.txt for details.

Examples:

lcdif@80030000 {
	compatible = "fsl,imx28-lcdif";
	reg = <0x80030000 2000>;
	interrupts = <38 86>;

	display: display {
		bits-per-pixel = <32>;
		bus-width = <24>;

		display-timings {
			native-mode = <&timing0>;
			timing0: timing0 {
				clock-frequency = <33500000>;
				hactive = <800>;
				vactive = <480>;
				hfront-porch = <164>;
				hback-porch = <89>;
				hsync-len = <10>;
				vback-porch = <23>;
				vfront-porch = <10>;
				vsync-len = <10>;
				hsync-active = <0>;
				vsync-active = <0>;
				de-active = <1>;
				pixelclk-active = <0>;
			};
		};
	};
};

Examples - optional properties:

Snippet from imx7d-sdb-mipi-dsi.dts:

&lcdif {
	disp-dev = "mipi_dsi_samsung";
	disp-videomode = "TRUULY-WVGA-SYNC-LOW";
};

&mipi_dsi {
	pinctrl-names = "default";
	pinctrl-0 = <&pinctrl_mipi_dsi_reset>;
	lcd_panel = "TRULY-WVGA-TFT3P5581E";
	resets = <&mipi_dsi_reset>;
	status = "okay";
};

In the above example, the panel supports 2 video modes (snippet from
drivers/video/fbdev/mxc/mxcfb_hx8363_wvga.c):

#define ACTIVE_HIGH_NAME	"TRUULY-WVGA-SYNC-HIGH"
#define ACTIVE_LOW_NAME		"TRUULY-WVGA-SYNC-LOW"

static struct fb_videomode truly_lcd_modedb[] = {
	{
		ACTIVE_HIGH_NAME, 50, 480, 854, 41042,
		40, 60,
		3, 3,
		8, 4,
		0x0,
		FB_VMODE_NONINTERLACED,
		0,
	}, {
		ACTIVE_LOW_NAME, 50, 480, 854, 41042,
		40, 60,
		3, 3,
		8, 4,
		FB_SYNC_OE_LOW_ACT,
		FB_VMODE_NONINTERLACED,
		0,
	},
};