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@xxxxxxxxxxxxxxx> --- 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@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/dri-devel