Commit 0eb2766d authored by Peter Ujfalusi's avatar Peter Ujfalusi Committed by Andrzej Hajda

drm/bridge: ti-tfp410: Set the bus_format

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: default avatarPeter Ujfalusi <peter.ujfalusi@ti.com>
Reviewed-by: default avatarLaurent Pinchart <laurent.pinchart@ideasonboard.com>
Reviewed-by: default avatarAndrzej Hajda <a.hajda@samsung.com>
Signed-off-by: default avatarAndrzej Hajda <a.hajda@samsung.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20190401124143.17179-3-peter.ujfalusi@ti.com
parent 51c7b447
...@@ -29,6 +29,7 @@ struct tfp410 { ...@@ -29,6 +29,7 @@ struct tfp410 {
struct drm_connector connector; struct drm_connector connector;
unsigned int connector_type; unsigned int connector_type;
u32 bus_format;
struct i2c_adapter *ddc; struct i2c_adapter *ddc;
struct gpio_desc *hpd; struct gpio_desc *hpd;
int hpd_irq; int hpd_irq;
...@@ -139,6 +140,9 @@ static int tfp410_attach(struct drm_bridge *bridge) ...@@ -139,6 +140,9 @@ static int tfp410_attach(struct drm_bridge *bridge)
return ret; return ret;
} }
drm_display_info_set_bus_formats(&dvi->connector.display_info,
&dvi->bus_format, 1);
drm_connector_attach_encoder(&dvi->connector, drm_connector_attach_encoder(&dvi->connector,
bridge->encoder); bridge->encoder);
...@@ -197,6 +201,7 @@ static int tfp410_parse_timings(struct tfp410 *dvi, bool i2c) ...@@ -197,6 +201,7 @@ static int tfp410_parse_timings(struct tfp410 *dvi, bool i2c)
struct drm_bridge_timings *timings = &dvi->timings; struct drm_bridge_timings *timings = &dvi->timings;
struct device_node *ep; struct device_node *ep;
u32 pclk_sample = 0; u32 pclk_sample = 0;
u32 bus_width = 24;
s32 deskew = 0; s32 deskew = 0;
/* Start with defaults. */ /* Start with defaults. */
...@@ -221,6 +226,7 @@ static int tfp410_parse_timings(struct tfp410 *dvi, bool i2c) ...@@ -221,6 +226,7 @@ static int tfp410_parse_timings(struct tfp410 *dvi, bool i2c)
/* Get the sampling edge from the endpoint. */ /* Get the sampling edge from the endpoint. */
of_property_read_u32(ep, "pclk-sample", &pclk_sample); of_property_read_u32(ep, "pclk-sample", &pclk_sample);
of_property_read_u32(ep, "bus-width", &bus_width);
of_node_put(ep); of_node_put(ep);
timings->input_bus_flags = DRM_BUS_FLAG_DE_HIGH; timings->input_bus_flags = DRM_BUS_FLAG_DE_HIGH;
...@@ -238,6 +244,17 @@ static int tfp410_parse_timings(struct tfp410 *dvi, bool i2c) ...@@ -238,6 +244,17 @@ static int tfp410_parse_timings(struct tfp410 *dvi, bool i2c)
return -EINVAL; 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:
return -EINVAL;
}
/* Get the setup and hold time from vendor-specific properties. */ /* Get the setup and hold time from vendor-specific properties. */
of_property_read_u32(dvi->dev->of_node, "ti,deskew", (u32 *)&deskew); of_property_read_u32(dvi->dev->of_node, "ti,deskew", (u32 *)&deskew);
if (deskew < -4 || deskew > 3) if (deskew < -4 || deskew > 3)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment