staging: imx_drm: imx_ldb: fix 18 bit format
Subsystems (2)
PATCH 1/1 staging: imx_drm: imx_ldb: fix 18 bit format
From: Markus Niebel <[email protected]>
Since 18 bit is supported as datawidth in device tree it should be supported in driver. Beside the LDB channel the IPU channel has also to be configured to use BGR666.
---
This is based on the series: "staging: drm/imx: Add LDB support" by Philipp.
drivers/staging/imx-drm/imx-ldb.c | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-)
drivers/staging/imx-drm/imx-ldb.c +17 -1
@@ -179,6 +179,7 @@ static void imx_ldb_encoder_prepare(struct drm_encoder *encoder)struct imx_ldb_channel *imx_ldb_ch =enc_to_imx_ldb_ch (encoder);struct imx_ldb *ldb = imx_ldb_ch->ldb;struct drm_display_mode *mode = &encoder->crtc->mode; +u32 pixel_fmt;unsigned long serial_clk;unsigned long di_clk = mode->clock *1000 ; int mux = imx_drm_encoder_get_mux_id(imx_ldb_ch->imx_drm_encoder,
@@ -194,8 +195,23 @@ static void imx_ldb_encoder_prepare(struct drm_encoder *encoder)imx_ldb_set_clock (ldb, mux, imx_ldb_ch->chno, serial_clk, di_clk); } +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 ; +break ; +case 1 : + pixel_fmt = (ldb->ldb_ctrl &LDB_DATA_WIDTH_CH1_24 ) ? +V4L2_PIX_FMT_RGB24 :V4L2_PIX_FMT_BGR666 ; +break ; +default : +dev_err (ldb->dev,"unable to config di%d panel format\n" , + imx_ldb_ch->chno); + pixel_fmt =V4L2_PIX_FMT_RGB24 ; + } +imx_drm_crtc_panel_format_pins (encoder->crtc,DRM_MODE_ENCODER_LVDS , -V4L2_PIX_FMT_RGB24 ,2 ,3 ); + pixel_fmt,2 ,3 ); }static void imx_ldb_encoder_commit (struct drm_encoder *encoder)
Signature · 1 line
1.8.2.rc2
PATCH 1/1 staging: imx_drm: imx_ldb: fix 18 bit format
Quoted 40 lines · Steffen Trumtrar
From: Markus Niebel <[email protected]>
Since 18 bit is supported as datawidth in device tree it should be supported in driver. Beside the LDB channel the IPU channel has also to be configured to use BGR666.
Signed-off-by Markus Niebel <[email protected]>Signed-off-by Steffen Trumtrar <[email protected]>---
This is based on the series: "staging: drm/imx: Add LDB support" by Philipp.drivers/staging/imx-drm/imx-ldb.c | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-)drivers/staging/imx-drm/imx-ldb.c +9
-0@@ -179,6 +179,7 @@ static void imx_ldb_encoder_prepare(struct drm_encoder *encoder)struct imx_ldb_channel *imx_ldb_ch =enc_to_imx_ldb_ch (encoder);struct imx_ldb *ldb = imx_ldb_ch->ldb;struct drm_display_mode *mode = &encoder->crtc->mode; +u32 pixel_fmt;unsigned long serial_clk;unsigned long di_clk = mode->clock *1000 ; int mux = imx_drm_encoder_get_mux_id(imx_ldb_ch->imx_drm_encoder,@@ -194,8 +195,23 @@ static void imx_ldb_encoder_prepare(struct drm_encoder *encoder)imx_ldb_set_clock (ldb, mux, imx_ldb_ch->chno, serial_clk, di_clk); } +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 ; +break ; +case 1 : + pixel_fmt = (ldb->ldb_ctrl &LDB_DATA_WIDTH_CH1_24 ) ? +V4L2_PIX_FMT_RGB24 :V4L2_PIX_FMT_BGR666 ;
drivers/staging/imx-drm/imx-ldb.c static void imx_ldb_encoder_prepare(struct drm_encoder *encoder) · line 214
Quoted 10 lines
drivers/staging/imx-drm/imx-ldb.c +8
-1+break ; +default : +dev_err (ldb->dev,"unable to config di%d panel format\n" , + imx_ldb_ch->chno); + pixel_fmt =V4L2_PIX_FMT_RGB24 ; + } +imx_drm_crtc_panel_format_pins (encoder->crtc,DRM_MODE_ENCODER_LVDS , -V4L2_PIX_FMT_RGB24 ,2 ,3 ); + pixel_fmt,2 ,3 );
It seems the patch is based on an updated version of "staging: drm/imx:
Add LDB support"? The last one from Philipp [1] calls function imx_drm_crtc_panel_format() rather than imx_drm_crtc_panel_format_pins() there.
Shawn
[1] http://thread.gmane.org/gmane.linux.drivers.driver-project.devel/36836/focus=36834
Quoted 6 lines
drivers/staging/imx-drm/imx-ldb.c +0
-0}static void imx_ldb_encoder_commit (struct drm_encoder *encoder)Signature · 1 line
1.8.2.rc2
PATCH 1/1 staging: imx_drm: imx_ldb: fix 18 bit format
Hi Shawn!
Quoted 48 lines · Shawn Guo
Quoted 47 lines · Steffen Trumtrar
From: Markus Niebel <[email protected]>
Since 18 bit is supported as datawidth in device tree it should be supported in driver. Beside the LDB channel the IPU channel has also to be configured to use BGR666.
Signed-off-by Markus Niebel <[email protected]>Signed-off-by Steffen Trumtrar <[email protected]>---
This is based on the series: "staging: drm/imx: Add LDB support" by Philipp.drivers/staging/imx-drm/imx-ldb.c | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-)drivers/staging/imx-drm/imx-ldb.c +16
-0@@ -179,6 +179,7 @@ static void imx_ldb_encoder_prepare(struct drm_encoder *encoder)struct imx_ldb_channel *imx_ldb_ch =enc_to_imx_ldb_ch (encoder);struct imx_ldb *ldb = imx_ldb_ch->ldb;struct drm_display_mode *mode = &encoder->crtc->mode; +u32 pixel_fmt;unsigned long serial_clk;unsigned long di_clk = mode->clock *1000 ; int mux = imx_drm_encoder_get_mux_id(imx_ldb_ch->imx_drm_encoder,@@ -194,8 +195,23 @@ static void imx_ldb_encoder_prepare(struct drm_encoder *encoder)imx_ldb_set_clock (ldb, mux, imx_ldb_ch->chno, serial_clk, di_clk); } +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 ; +break ; +case 1 : + pixel_fmt = (ldb->ldb_ctrl &LDB_DATA_WIDTH_CH1_24 ) ? +V4L2_PIX_FMT_RGB24 :V4L2_PIX_FMT_BGR666 ; +break ; +default : +dev_err (ldb->dev,"unable to config di%d panel format\n" , + imx_ldb_ch->chno); + pixel_fmt =V4L2_PIX_FMT_RGB24 ; + } +
Quoted 9 lines
drivers/staging/imx-drm/imx-ldb.c static void imx_ldb_encoder_prepare(struct drm_encoder *encoder) · line 214
Quoted 3 lines
drivers/staging/imx-drm/imx-ldb.c +1
-1imx_drm_crtc_panel_format_pins (encoder->crtc,DRM_MODE_ENCODER_LVDS , -V4L2_PIX_FMT_RGB24 ,2 ,3 ); + pixel_fmt,2 ,3 );It seems the patch is based on an updated version of "staging: drm/imx:
Add LDB support"? The last one from Philipp [1] calls functionimx_drm_crtc_panel_format()rather thanimx_drm_crtc_panel_format_pins()there.
Grmbl! Yes. The last call should be
imx_drm_crtc_panel_format(encoder->crtc, DRM_MODE_ENCODER_LVDS,
V4L2_PIX_FMT_RGB24);
like it already is in Philipps series.
This patch sits on a topic branch, that (I think) Philipp didn't yet sent out. I will resent.
Thanks,
Steffen
Signature · 4 lines
Pengutronix e.K. | | Industrial Linux Solutions | http://www.pengutronix.de/ | Peiner Str. 6-8, 31137 Hildesheim, Germany | Phone: +49-5121-206917-0 | Amtsgericht Hildesheim, HRA 2686 | Fax: +49-5121-206917-5555 |
PATCH 1/1 staging: imx_drm: imx_ldb: fix 18 bit format
Am 08.06.2013 09:25, wrote Steffen Trumtrar:
Quoted 61 lines
Hi Shawn!
Quoted 48 lines · Shawn Guo
Quoted 47 lines · Steffen Trumtrar
From: Markus Niebel <[email protected]>
Since 18 bit is supported as datawidth in device tree it should be supported in driver. Beside the LDB channel the IPU channel has also to be configured to use BGR666.
Signed-off-by Markus Niebel <[email protected]>Signed-off-by Steffen Trumtrar <[email protected]>---
This is based on the series: "staging: drm/imx: Add LDB support" by Philipp.drivers/staging/imx-drm/imx-ldb.c | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-)drivers/staging/imx-drm/imx-ldb.c +16
-0@@ -179,6 +179,7 @@ static void imx_ldb_encoder_prepare(struct drm_encoder *encoder)struct imx_ldb_channel *imx_ldb_ch =enc_to_imx_ldb_ch (encoder);struct imx_ldb *ldb = imx_ldb_ch->ldb;struct drm_display_mode *mode = &encoder->crtc->mode; +u32 pixel_fmt;unsigned long serial_clk;unsigned long di_clk = mode->clock *1000 ; int mux = imx_drm_encoder_get_mux_id(imx_ldb_ch->imx_drm_encoder,@@ -194,8 +195,23 @@ static void imx_ldb_encoder_prepare(struct drm_encoder *encoder)imx_ldb_set_clock (ldb, mux, imx_ldb_ch->chno, serial_clk, di_clk); } +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 ; +break ; +case 1 : + pixel_fmt = (ldb->ldb_ctrl &LDB_DATA_WIDTH_CH1_24 ) ? +V4L2_PIX_FMT_RGB24 :V4L2_PIX_FMT_BGR666 ; +break ; +default : +dev_err (ldb->dev,"unable to config di%d panel format\n" , + imx_ldb_ch->chno); + pixel_fmt =V4L2_PIX_FMT_RGB24 ; + } +Quoted 9 lines
drivers/staging/imx-drm/imx-ldb.c static void imx_ldb_encoder_prepare(struct drm_encoder *encoder) · line 214
Quoted 3 lines
drivers/staging/imx-drm/imx-ldb.c +1
-1imx_drm_crtc_panel_format_pins (encoder->crtc,DRM_MODE_ENCODER_LVDS , -V4L2_PIX_FMT_RGB24 ,2 ,3 ); + pixel_fmt,2 ,3 );It seems the patch is based on an updated version of "staging: drm/imx:
Add LDB support"? The last one from Philipp [1] calls functionimx_drm_crtc_panel_format()rather thanimx_drm_crtc_panel_format_pins()there.
Quoted 8 lines
Grmbl! Yes. The last call should be
imx_drm_crtc_panel_format(encoder->crtc,
DRM_MODE_ENCODER_LVDS,V4L2_PIX_FMT_RGB24);like it already is in Philipps series.
This patch sits on a topic branch, that (I think) Philipp didn't yet sent out. I will resent.
We should call
imx_drm_crtc_panel_format(encoder->crtc, DRM_MODE_ENCODER_LVDS, pixel_fmt);
Sorry, original patch was created before fixing imx_drm_crtc_panel_format.
Quoted 4 lines
Thanks,
Steffen