Commit b073a70e authored by Russell King's avatar Russell King

drm/i2c: tda998x: move mode_valid() to bridge

Move the mode_valid() implementation to the bridge instead of the
connector, as we're checking the bridge's capabilities.
Tested-by: default avatarPeter Rosin <peda@axentia.se>
Signed-off-by: default avatarRussell King <rmk+kernel@armlinux.org.uk>
parent 5a03f534
...@@ -1253,21 +1253,6 @@ static int tda998x_connector_get_modes(struct drm_connector *connector) ...@@ -1253,21 +1253,6 @@ static int tda998x_connector_get_modes(struct drm_connector *connector)
return n; return n;
} }
static enum drm_mode_status tda998x_connector_mode_valid(struct drm_connector *connector,
struct drm_display_mode *mode)
{
/* TDA19988 dotclock can go up to 165MHz */
struct tda998x_priv *priv = conn_to_tda998x_priv(connector);
if (mode->clock > ((priv->rev == TDA19988) ? 165000 : 150000))
return MODE_CLOCK_HIGH;
if (mode->htotal >= BIT(13))
return MODE_BAD_HVALUE;
if (mode->vtotal >= BIT(11))
return MODE_BAD_VVALUE;
return MODE_OK;
}
static struct drm_encoder * static struct drm_encoder *
tda998x_connector_best_encoder(struct drm_connector *connector) tda998x_connector_best_encoder(struct drm_connector *connector)
{ {
...@@ -1279,7 +1264,6 @@ tda998x_connector_best_encoder(struct drm_connector *connector) ...@@ -1279,7 +1264,6 @@ tda998x_connector_best_encoder(struct drm_connector *connector)
static static
const struct drm_connector_helper_funcs tda998x_connector_helper_funcs = { const struct drm_connector_helper_funcs tda998x_connector_helper_funcs = {
.get_modes = tda998x_connector_get_modes, .get_modes = tda998x_connector_get_modes,
.mode_valid = tda998x_connector_mode_valid,
.best_encoder = tda998x_connector_best_encoder, .best_encoder = tda998x_connector_best_encoder,
}; };
...@@ -1325,6 +1309,21 @@ static void tda998x_bridge_detach(struct drm_bridge *bridge) ...@@ -1325,6 +1309,21 @@ static void tda998x_bridge_detach(struct drm_bridge *bridge)
drm_connector_cleanup(&priv->connector); drm_connector_cleanup(&priv->connector);
} }
static enum drm_mode_status tda998x_bridge_mode_valid(struct drm_bridge *bridge,
const struct drm_display_mode *mode)
{
/* TDA19988 dotclock can go up to 165MHz */
struct tda998x_priv *priv = bridge_to_tda998x_priv(bridge);
if (mode->clock > ((priv->rev == TDA19988) ? 165000 : 150000))
return MODE_CLOCK_HIGH;
if (mode->htotal >= BIT(13))
return MODE_BAD_HVALUE;
if (mode->vtotal >= BIT(11))
return MODE_BAD_VVALUE;
return MODE_OK;
}
static void tda998x_bridge_enable(struct drm_bridge *bridge) static void tda998x_bridge_enable(struct drm_bridge *bridge)
{ {
struct tda998x_priv *priv = bridge_to_tda998x_priv(bridge); struct tda998x_priv *priv = bridge_to_tda998x_priv(bridge);
...@@ -1571,6 +1570,7 @@ static void tda998x_bridge_mode_set(struct drm_bridge *bridge, ...@@ -1571,6 +1570,7 @@ static void tda998x_bridge_mode_set(struct drm_bridge *bridge,
static const struct drm_bridge_funcs tda998x_bridge_funcs = { static const struct drm_bridge_funcs tda998x_bridge_funcs = {
.attach = tda998x_bridge_attach, .attach = tda998x_bridge_attach,
.detach = tda998x_bridge_detach, .detach = tda998x_bridge_detach,
.mode_valid = tda998x_bridge_mode_valid,
.disable = tda998x_bridge_disable, .disable = tda998x_bridge_disable,
.mode_set = tda998x_bridge_mode_set, .mode_set = tda998x_bridge_mode_set,
.enable = tda998x_bridge_enable, .enable = tda998x_bridge_enable,
......
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