aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/imx/imx-ldb.c
diff options
context:
space:
mode:
authorLothar Waßmann <LW@KARO-electronics.de>2016-07-12 09:30:03 -0400
committerPhilipp Zabel <p.zabel@pengutronix.de>2016-08-08 05:44:20 -0400
commitfafc79ef2e9148d0085585b6b71bc7154c14ebb6 (patch)
treefc10a39232083944ec0727f71ac6c16a8e647fcd /drivers/gpu/drm/imx/imx-ldb.c
parentd72daa0d75e8fe71368113350254b9da2c64b235 (diff)
drm/imx: convey the pixelclk-active and de-active flags from DT to the ipu-di driver
The 'de-active' and 'pixelclk-active' DT properties are evaluated by of_parse_display_timing() called from of_get_drm_display_mode(), but later lost in the conversion from videomode.flags to drm_display_mode.flags. Enhance of_get_drm_display_mode() to also return the bus flags in a separate variable, so that they can be passed on to the ipu-di driver. Signed-off-by: Lothar Waßmann <LW@KARO-electronics.de> Signed-off-by: Philipp Zabel <p.zabel@pengutronix.de>
Diffstat (limited to 'drivers/gpu/drm/imx/imx-ldb.c')
-rw-r--r--drivers/gpu/drm/imx/imx-ldb.c9
1 files changed, 8 insertions, 1 deletions
diff --git a/drivers/gpu/drm/imx/imx-ldb.c b/drivers/gpu/drm/imx/imx-ldb.c
index b03919ed60ba..3ed2d5037fe2 100644
--- a/drivers/gpu/drm/imx/imx-ldb.c
+++ b/drivers/gpu/drm/imx/imx-ldb.c
@@ -66,6 +66,7 @@ struct imx_ldb_channel {
66 struct drm_display_mode mode; 66 struct drm_display_mode mode;
67 int mode_valid; 67 int mode_valid;
68 u32 bus_format; 68 u32 bus_format;
69 u32 bus_flags;
69}; 70};
70 71
71static inline struct imx_ldb_channel *con_to_imx_ldb_ch(struct drm_connector *c) 72static inline struct imx_ldb_channel *con_to_imx_ldb_ch(struct drm_connector *c)
@@ -379,8 +380,13 @@ static int imx_ldb_encoder_atomic_check(struct drm_encoder *encoder,
379 u32 bus_format = imx_ldb_ch->bus_format; 380 u32 bus_format = imx_ldb_ch->bus_format;
380 381
381 /* Bus format description in DT overrides connector display info. */ 382 /* Bus format description in DT overrides connector display info. */
382 if (!bus_format && di->num_bus_formats) 383 if (!bus_format && di->num_bus_formats) {
383 bus_format = di->bus_formats[0]; 384 bus_format = di->bus_formats[0];
385 imx_crtc_state->bus_flags = di->bus_flags;
386 } else {
387 bus_format = imx_ldb_ch->bus_format;
388 imx_crtc_state->bus_flags = imx_ldb_ch->bus_flags;
389 }
384 switch (bus_format) { 390 switch (bus_format) {
385 case MEDIA_BUS_FMT_RGB666_1X7X3_SPWG: 391 case MEDIA_BUS_FMT_RGB666_1X7X3_SPWG:
386 imx_crtc_state->bus_format = MEDIA_BUS_FMT_RGB666_1X18; 392 imx_crtc_state->bus_format = MEDIA_BUS_FMT_RGB666_1X18;
@@ -674,6 +680,7 @@ static int imx_ldb_bind(struct device *dev, struct device *master, void *data)
674 /* fallback to display-timings node */ 680 /* fallback to display-timings node */
675 ret = of_get_drm_display_mode(child, 681 ret = of_get_drm_display_mode(child,
676 &channel->mode, 682 &channel->mode,
683 &channel->bus_flags,
677 OF_USE_NATIVE_MODE); 684 OF_USE_NATIVE_MODE);
678 if (!ret) 685 if (!ret)
679 channel->mode_valid = 1; 686 channel->mode_valid = 1;