Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit b073a70e authored by Russell King's avatar Russell King
Browse files

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
Loading
Loading
Loading
Loading
+16 −16
Original line number Diff line number Diff line
@@ -1253,21 +1253,6 @@ static int tda998x_connector_get_modes(struct drm_connector *connector)
	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 *
tda998x_connector_best_encoder(struct drm_connector *connector)
{
@@ -1279,7 +1264,6 @@ tda998x_connector_best_encoder(struct drm_connector *connector)
static
const struct drm_connector_helper_funcs tda998x_connector_helper_funcs = {
	.get_modes = tda998x_connector_get_modes,
	.mode_valid = tda998x_connector_mode_valid,
	.best_encoder = tda998x_connector_best_encoder,
};

@@ -1325,6 +1309,21 @@ static void tda998x_bridge_detach(struct drm_bridge *bridge)
	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)
{
	struct tda998x_priv *priv = bridge_to_tda998x_priv(bridge);
@@ -1571,6 +1570,7 @@ static void tda998x_bridge_mode_set(struct drm_bridge *bridge,
static const struct drm_bridge_funcs tda998x_bridge_funcs = {
	.attach = tda998x_bridge_attach,
	.detach = tda998x_bridge_detach,
	.mode_valid = tda998x_bridge_mode_valid,
	.disable = tda998x_bridge_disable,
	.mode_set = tda998x_bridge_mode_set,
	.enable = tda998x_bridge_enable,