diff options
author | Lothar Waßmann <LW@KARO-electronics.de> | 2016-07-12 09:30:03 -0400 |
---|---|---|
committer | Philipp Zabel <p.zabel@pengutronix.de> | 2016-08-08 05:44:20 -0400 |
commit | fafc79ef2e9148d0085585b6b71bc7154c14ebb6 (patch) | |
tree | fc10a39232083944ec0727f71ac6c16a8e647fcd /drivers/gpu/drm/imx/imx-ldb.c | |
parent | d72daa0d75e8fe71368113350254b9da2c64b235 (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.c | 9 |
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 | ||
71 | static inline struct imx_ldb_channel *con_to_imx_ldb_ch(struct drm_connector *c) | 72 | static 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; |