summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRussell King <rmk+kernel@armlinux.org.uk>2018-07-31 11:12:27 +0100
committerRussell King <rmk+kernel@armlinux.org.uk>2020-08-04 17:42:05 +0100
commit495956a04143de9f2f959631eeca7eab0601e59e (patch)
tree0cdda6ae4d0211d7341cea40aac27c1d4700b49d
parente02e7813df718e01d51de6e6cc8a760e786457bd (diff)
drm/i2c: tda998x: add bridge timing information
Add bridge timing information so that bridge users can figure out the timing parameters that are necessary for TDA998x. Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk>
-rw-r--r--drivers/gpu/drm/i2c/tda998x_drv.c23
1 files changed, 23 insertions, 0 deletions
diff --git a/drivers/gpu/drm/i2c/tda998x_drv.c b/drivers/gpu/drm/i2c/tda998x_drv.c
index 77787daab6d5..4c6906d0766c 100644
--- a/drivers/gpu/drm/i2c/tda998x_drv.c
+++ b/drivers/gpu/drm/i2c/tda998x_drv.c
@@ -1710,6 +1710,18 @@ static const struct drm_bridge_funcs tda998x_bridge_funcs = {
.enable = tda998x_bridge_enable,
};
+static const struct drm_bridge_timings tda9989_timings = {
+ .input_bus_flags = DRM_BUS_FLAG_PIXDATA_SAMPLE_POSEDGE,
+ .setup_time_ps = 1500,
+ .hold_time_ps = 1000,
+};
+
+static const struct drm_bridge_timings tda19988_timings = {
+ .input_bus_flags = DRM_BUS_FLAG_PIXDATA_SAMPLE_POSEDGE,
+ .setup_time_ps = 1600,
+ .hold_time_ps = 1200,
+};
+
/* I2C driver functions */
static int tda998x_get_audio_ports(struct tda998x_priv *priv,
@@ -2014,6 +2026,17 @@ static int tda998x_create(struct device *dev)
priv->bridge.of_node = dev->of_node;
#endif
+ switch (priv->rev) {
+ case TDA9989N2:
+ case TDA19989:
+ case TDA19989N2:
+ priv->bridge.timings = &tda9989_timings;
+ break;
+ case TDA19988:
+ priv->bridge.timings = &tda19988_timings;
+ break;
+ }
+
drm_bridge_add(&priv->bridge);
return 0;