Commit 3a2ad502 authored by Philipp Zabel's avatar Philipp Zabel

drm/imx: imx-ldb: use encoder atomic_mode_set callback

Using atomic_mode_set instead of mode_set allows to access crtc
and connector states in addition to the modes. This allows to
remove the connector list walk.
Signed-off-by: default avatarPhilipp Zabel <p.zabel@pengutronix.de>
parent fe4a11c9
...@@ -252,11 +252,13 @@ static void imx_ldb_encoder_enable(struct drm_encoder *encoder) ...@@ -252,11 +252,13 @@ static void imx_ldb_encoder_enable(struct drm_encoder *encoder)
drm_panel_enable(imx_ldb_ch->panel); drm_panel_enable(imx_ldb_ch->panel);
} }
static void imx_ldb_encoder_mode_set(struct drm_encoder *encoder, static void
struct drm_display_mode *orig_mode, imx_ldb_encoder_atomic_mode_set(struct drm_encoder *encoder,
struct drm_display_mode *mode) struct drm_crtc_state *crtc_state,
struct drm_connector_state *connector_state)
{ {
struct imx_ldb_channel *imx_ldb_ch = enc_to_imx_ldb_ch(encoder); struct imx_ldb_channel *imx_ldb_ch = enc_to_imx_ldb_ch(encoder);
struct drm_display_mode *mode = &crtc_state->adjusted_mode;
struct imx_ldb *ldb = imx_ldb_ch->ldb; struct imx_ldb *ldb = imx_ldb_ch->ldb;
int dual = ldb->ldb_ctrl & LDB_SPLIT_MODE_EN; int dual = ldb->ldb_ctrl & LDB_SPLIT_MODE_EN;
unsigned long serial_clk; unsigned long serial_clk;
...@@ -298,17 +300,11 @@ static void imx_ldb_encoder_mode_set(struct drm_encoder *encoder, ...@@ -298,17 +300,11 @@ static void imx_ldb_encoder_mode_set(struct drm_encoder *encoder,
} }
if (!bus_format) { if (!bus_format) {
struct drm_connector *connector; struct drm_connector *connector = connector_state->connector;
drm_for_each_connector(connector, encoder->dev) {
struct drm_display_info *di = &connector->display_info; struct drm_display_info *di = &connector->display_info;
if (connector->encoder == encoder && if (di->num_bus_formats)
di->num_bus_formats) {
bus_format = di->bus_formats[0]; bus_format = di->bus_formats[0];
break;
}
}
} }
imx_ldb_ch_set_bus_format(imx_ldb_ch, bus_format); imx_ldb_ch_set_bus_format(imx_ldb_ch, bus_format);
} }
...@@ -426,7 +422,7 @@ static const struct drm_encoder_funcs imx_ldb_encoder_funcs = { ...@@ -426,7 +422,7 @@ static const struct drm_encoder_funcs imx_ldb_encoder_funcs = {
}; };
static const struct drm_encoder_helper_funcs imx_ldb_encoder_helper_funcs = { static const struct drm_encoder_helper_funcs imx_ldb_encoder_helper_funcs = {
.mode_set = imx_ldb_encoder_mode_set, .atomic_mode_set = imx_ldb_encoder_atomic_mode_set,
.enable = imx_ldb_encoder_enable, .enable = imx_ldb_encoder_enable,
.disable = imx_ldb_encoder_disable, .disable = imx_ldb_encoder_disable,
.atomic_check = imx_ldb_encoder_atomic_check, .atomic_check = imx_ldb_encoder_atomic_check,
......
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