Hi Peter, Thank you for the patch. On Mon, Apr 01, 2019 at 03:41:43PM +0300, Peter Ujfalusi wrote: > The TFP410 supports 24 bit, single-edge and 12 bit, dual-edge modes. > Depending on how many wires are used (24/12) the driver can set the correct > bus_format. > > If the information is not available in DT then assume 24 bit, single-edge > setup. > > Signed-off-by: Peter Ujfalusi <peter.ujfalusi@xxxxxx> > --- > drivers/gpu/drm/bridge/ti-tfp410.c | 17 +++++++++++++++++ > 1 file changed, 17 insertions(+) > > diff --git a/drivers/gpu/drm/bridge/ti-tfp410.c b/drivers/gpu/drm/bridge/ti-tfp410.c > index 6fc831eb3804..8b0e71bd3ca7 100644 > --- a/drivers/gpu/drm/bridge/ti-tfp410.c > +++ b/drivers/gpu/drm/bridge/ti-tfp410.c > @@ -29,6 +29,7 @@ struct tfp410 { > struct drm_connector connector; > unsigned int connector_type; > > + u32 bus_format; > struct i2c_adapter *ddc; > struct gpio_desc *hpd; > int hpd_irq; > @@ -139,6 +140,9 @@ static int tfp410_attach(struct drm_bridge *bridge) > return ret; > } > > + drm_display_info_set_bus_formats(&dvi->connector.display_info, > + &dvi->bus_format, 1); > + > drm_connector_attach_encoder(&dvi->connector, > bridge->encoder); > > @@ -197,6 +201,7 @@ static int tfp410_parse_timings(struct tfp410 *dvi, bool i2c) > struct drm_bridge_timings *timings = &dvi->timings; > struct device_node *ep; > u32 pclk_sample = 0; > + u32 bus_width = 24; > s32 deskew = 0; > > /* Start with defaults. */ > @@ -221,6 +226,7 @@ static int tfp410_parse_timings(struct tfp410 *dvi, bool i2c) > > /* Get the sampling edge from the endpoint. */ > of_property_read_u32(ep, "pclk-sample", &pclk_sample); > + of_property_read_u32(ep, "bus-width", &bus_width); > of_node_put(ep); > > timings->input_bus_flags = DRM_BUS_FLAG_DE_HIGH; > @@ -238,6 +244,17 @@ static int tfp410_parse_timings(struct tfp410 *dvi, bool i2c) > return -EINVAL; > } > > + switch (bus_width) { > + case 12: > + dvi->bus_format = MEDIA_BUS_FMT_RGB888_2X12_LE; > + break; > + case 24: > + dvi->bus_format = MEDIA_BUS_FMT_RGB888_1X24; > + break; > + default: Maybe an error message here (possibly just dev_dbg()) ? Reviewed-by: Laurent Pinchart <laurent.pinchart@xxxxxxxxxxxxxxxx> > + return -EINVAL; > + } > + > /* Get the setup and hold time from vendor-specific properties. */ > of_property_read_u32(dvi->dev->of_node, "ti,deskew", (u32 *)&deskew); > if (deskew < -4 || deskew > 3) -- Regards, Laurent Pinchart