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+ker...@armlinux.org.uk>
---
 drivers/gpu/drm/i2c/tda998x_drv.c | 23 +++++++++++++++++++++++
 1 file changed, 23 insertions(+)

diff --git a/drivers/gpu/drm/i2c/tda998x_drv.c 
b/drivers/gpu/drm/i2c/tda998x_drv.c
index a7bc3b7a9bcc..c399a7b73e2b 100644
--- a/drivers/gpu/drm/i2c/tda998x_drv.c
+++ b/drivers/gpu/drm/i2c/tda998x_drv.c
@@ -1572,6 +1572,18 @@ static const struct drm_bridge_funcs 
tda998x_bridge_funcs = {
        .enable = tda998x_bridge_enable,
 };
 
+static const struct drm_bridge_timings tda9989_timings = {
+       .sampling_edge = DRM_BUS_FLAG_PIXDATA_POSEDGE,
+       .setup_time_ps = 1500,
+       .hold_time_ps = 1000,
+};
+
+static const struct drm_bridge_timings tda19988_timings = {
+       .sampling_edge = DRM_BUS_FLAG_PIXDATA_POSEDGE,
+       .setup_time_ps = 1600,
+       .hold_time_ps = 1200,
+};
+
 /* I2C driver functions */
 
 static int tda998x_get_audio_ports(struct tda998x_priv *priv,
@@ -1842,6 +1854,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;
-- 
2.7.4

_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

Reply via email to