blob: 234481c5d52d716e81e2e9cec0d765ce9aef3912 [file] [log] [blame]
* 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
- (MX8-only) "video_pll, "osc_25", "osc_27" for the VIDEO_PLL,
OSC_25M and OSC_27M clocks
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,
},
};