drm/imx: switch to use media bus formats
imx-drm internally misused the V4L2_PIX_FMT constants, which are supposed to describe the pixel format of frame buffers in memory, to describe the pixel format on the bus between the display controller and the encoder hardware. Now that MEDIA_BUS_FMT constants are available to drm drivers, use those instead. Signed-off-by: Philipp Zabel <p.zabel@pengutronix.de> Tested-by: Emil Renner Berthing <kernel@esmil.dk>
This commit is contained in:
@@ -123,7 +123,7 @@ static void dw_hdmi_imx_encoder_commit(struct drm_encoder *encoder)
|
||||
|
||||
static void dw_hdmi_imx_encoder_prepare(struct drm_encoder *encoder)
|
||||
{
|
||||
imx_drm_panel_format(encoder, V4L2_PIX_FMT_RGB24);
|
||||
imx_drm_panel_format(encoder, MEDIA_BUS_FMT_RGB888_1X24);
|
||||
}
|
||||
|
||||
static struct drm_encoder_helper_funcs dw_hdmi_imx_encoder_helper_funcs = {
|
||||
|
@@ -168,16 +168,16 @@ static void imx_ldb_encoder_prepare(struct drm_encoder *encoder)
|
||||
switch (imx_ldb_ch->chno) {
|
||||
case 0:
|
||||
pixel_fmt = (ldb->ldb_ctrl & LDB_DATA_WIDTH_CH0_24) ?
|
||||
V4L2_PIX_FMT_RGB24 : V4L2_PIX_FMT_BGR666;
|
||||
MEDIA_BUS_FMT_RGB888_1X24 : MEDIA_BUS_FMT_RGB666_1X18;
|
||||
break;
|
||||
case 1:
|
||||
pixel_fmt = (ldb->ldb_ctrl & LDB_DATA_WIDTH_CH1_24) ?
|
||||
V4L2_PIX_FMT_RGB24 : V4L2_PIX_FMT_BGR666;
|
||||
MEDIA_BUS_FMT_RGB888_1X24 : MEDIA_BUS_FMT_RGB666_1X18;
|
||||
break;
|
||||
default:
|
||||
dev_err(ldb->dev, "unable to config di%d panel format\n",
|
||||
imx_ldb_ch->chno);
|
||||
pixel_fmt = V4L2_PIX_FMT_RGB24;
|
||||
pixel_fmt = MEDIA_BUS_FMT_RGB888_1X24;
|
||||
}
|
||||
|
||||
imx_drm_panel_format(encoder, pixel_fmt);
|
||||
|
@@ -301,11 +301,11 @@ static void imx_tve_encoder_prepare(struct drm_encoder *encoder)
|
||||
|
||||
switch (tve->mode) {
|
||||
case TVE_MODE_VGA:
|
||||
imx_drm_panel_format_pins(encoder, IPU_PIX_FMT_GBR24,
|
||||
imx_drm_panel_format_pins(encoder, MEDIA_BUS_FMT_YUV8_1X24,
|
||||
tve->hsync_pin, tve->vsync_pin);
|
||||
break;
|
||||
case TVE_MODE_TVOUT:
|
||||
imx_drm_panel_format(encoder, V4L2_PIX_FMT_YUV444);
|
||||
imx_drm_panel_format(encoder, MEDIA_BUS_FMT_YUV8_1X24);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
@@ -225,14 +225,14 @@ static int imx_pd_bind(struct device *dev, struct device *master, void *data)
|
||||
ret = of_property_read_string(np, "interface-pix-fmt", &fmt);
|
||||
if (!ret) {
|
||||
if (!strcmp(fmt, "rgb24"))
|
||||
imxpd->interface_pix_fmt = V4L2_PIX_FMT_RGB24;
|
||||
imxpd->interface_pix_fmt = MEDIA_BUS_FMT_RGB888_1X24;
|
||||
else if (!strcmp(fmt, "rgb565"))
|
||||
imxpd->interface_pix_fmt = V4L2_PIX_FMT_RGB565;
|
||||
imxpd->interface_pix_fmt = MEDIA_BUS_FMT_RGB565_1X16;
|
||||
else if (!strcmp(fmt, "bgr666"))
|
||||
imxpd->interface_pix_fmt = V4L2_PIX_FMT_BGR666;
|
||||
imxpd->interface_pix_fmt = MEDIA_BUS_FMT_RGB666_1X18;
|
||||
else if (!strcmp(fmt, "lvds666"))
|
||||
imxpd->interface_pix_fmt =
|
||||
v4l2_fourcc('L', 'V', 'D', '6');
|
||||
MEDIA_BUS_FMT_RGB666_1X24_CPADHI;
|
||||
}
|
||||
|
||||
panel_node = of_parse_phandle(np, "fsl,panel", 0);
|
||||
|
Reference in New Issue
Block a user