Commit 9e74d292 authored by Emil Renner Berthing's avatar Emil Renner Berthing Committed by Greg Kroah-Hartman

staging: imx-drm: add LVDS666 support for parallel display

Support the LVDS666 format on the IPUv3 parallel display.
This makes the screen work on my Hercules eCAFE Slim HD.
Signed-off-by: default avatarEmil Renner Berthing <kernel@esmil.dk>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent d63bc1fb
...@@ -61,6 +61,7 @@ Required properties: ...@@ -61,6 +61,7 @@ Required properties:
Optional properties: Optional properties:
- interface_pix_fmt: How this display is connected to the - interface_pix_fmt: How this display is connected to the
display interface. Currently supported types: "rgb24", "rgb565", "bgr666" display interface. Currently supported types: "rgb24", "rgb565", "bgr666"
and "lvds666".
- edid: verbatim EDID data block describing attached display. - edid: verbatim EDID data block describing attached display.
- ddc: phandle describing the i2c bus handling the display data - ddc: phandle describing the i2c bus handling the display data
channel channel
......
...@@ -91,6 +91,7 @@ enum ipu_dc_map { ...@@ -91,6 +91,7 @@ enum ipu_dc_map {
IPU_DC_MAP_RGB565, IPU_DC_MAP_RGB565,
IPU_DC_MAP_GBR24, /* TVEv2 */ IPU_DC_MAP_GBR24, /* TVEv2 */
IPU_DC_MAP_BGR666, IPU_DC_MAP_BGR666,
IPU_DC_MAP_LVDS666,
IPU_DC_MAP_BGR24, IPU_DC_MAP_BGR24,
}; };
...@@ -153,6 +154,8 @@ static int ipu_pixfmt_to_map(u32 fmt) ...@@ -153,6 +154,8 @@ static int ipu_pixfmt_to_map(u32 fmt)
return IPU_DC_MAP_GBR24; return IPU_DC_MAP_GBR24;
case V4L2_PIX_FMT_BGR666: case V4L2_PIX_FMT_BGR666:
return IPU_DC_MAP_BGR666; return IPU_DC_MAP_BGR666;
case v4l2_fourcc('L', 'V', 'D', '6'):
return IPU_DC_MAP_LVDS666;
case V4L2_PIX_FMT_BGR24: case V4L2_PIX_FMT_BGR24:
return IPU_DC_MAP_BGR24; return IPU_DC_MAP_BGR24;
default: default:
...@@ -398,6 +401,12 @@ int ipu_dc_init(struct ipu_soc *ipu, struct device *dev, ...@@ -398,6 +401,12 @@ int ipu_dc_init(struct ipu_soc *ipu, struct device *dev,
ipu_dc_map_config(priv, IPU_DC_MAP_BGR666, 1, 11, 0xfc); /* green */ ipu_dc_map_config(priv, IPU_DC_MAP_BGR666, 1, 11, 0xfc); /* green */
ipu_dc_map_config(priv, IPU_DC_MAP_BGR666, 2, 17, 0xfc); /* red */ ipu_dc_map_config(priv, IPU_DC_MAP_BGR666, 2, 17, 0xfc); /* red */
/* lvds666 */
ipu_dc_map_clear(priv, IPU_DC_MAP_LVDS666);
ipu_dc_map_config(priv, IPU_DC_MAP_LVDS666, 0, 5, 0xfc); /* blue */
ipu_dc_map_config(priv, IPU_DC_MAP_LVDS666, 1, 13, 0xfc); /* green */
ipu_dc_map_config(priv, IPU_DC_MAP_LVDS666, 2, 21, 0xfc); /* red */
/* bgr24 */ /* bgr24 */
ipu_dc_map_clear(priv, IPU_DC_MAP_BGR24); ipu_dc_map_clear(priv, IPU_DC_MAP_BGR24);
ipu_dc_map_config(priv, IPU_DC_MAP_BGR24, 2, 7, 0xff); /* red */ ipu_dc_map_config(priv, IPU_DC_MAP_BGR24, 2, 7, 0xff); /* red */
......
...@@ -219,6 +219,8 @@ static int imx_pd_bind(struct device *dev, struct device *master, void *data) ...@@ -219,6 +219,8 @@ static int imx_pd_bind(struct device *dev, struct device *master, void *data)
imxpd->interface_pix_fmt = V4L2_PIX_FMT_RGB565; imxpd->interface_pix_fmt = V4L2_PIX_FMT_RGB565;
else if (!strcmp(fmt, "bgr666")) else if (!strcmp(fmt, "bgr666"))
imxpd->interface_pix_fmt = V4L2_PIX_FMT_BGR666; imxpd->interface_pix_fmt = V4L2_PIX_FMT_BGR666;
else if (!strcmp(fmt, "lvds666"))
imxpd->interface_pix_fmt = v4l2_fourcc('L', 'V', 'D', '6');
} }
panel_node = of_parse_phandle(np, "fsl,panel", 0); panel_node = of_parse_phandle(np, "fsl,panel", 0);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment