|
@@ -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)
|
|
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)
|
|
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,
|
|
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,
|