drm/bridge: ti-tfp410: Set connector type based on DT connector node
authorLaurent Pinchart <laurent.pinchart@ideasonboard.com>
Tue, 25 Sep 2018 13:59:28 +0000 (16:59 +0300)
committerTomi Valkeinen <tomi.valkeinen@ti.com>
Mon, 18 Mar 2019 09:42:13 +0000 (11:42 +0200)
The TI TFP410 is a DVI encoder, not a full HDMI encoder. Its output can
be routed to a DVI-D connector, even if in many cases embedded systems
will use an HDMI connector to carry the DVI signals.

Instead of hardcoding the connector type to HDMI, retrieve the connector
type from its DT node.

Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Reviewed-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
Reviewed-by: Jyri Sarha <jsarha@ti.com>
Tested-by: Sebastian Reichel <sebastian.reichel@collabora.com>
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
drivers/gpu/drm/bridge/ti-tfp410.c

index 7bfb4f3388134cafa34e35d0b680bf8beb574a1b..daf0967e00ba1397dd83e969707b97fd8ce4b238 100644 (file)
@@ -27,6 +27,7 @@
 struct tfp410 {
        struct drm_bridge       bridge;
        struct drm_connector    connector;
+       unsigned int            connector_type;
 
        struct i2c_adapter      *ddc;
        struct gpio_desc        *hpd;
@@ -126,7 +127,7 @@ static int tfp410_attach(struct drm_bridge *bridge)
        drm_connector_helper_add(&dvi->connector,
                                 &tfp410_con_helper_funcs);
        ret = drm_connector_init(bridge->dev, &dvi->connector,
-                                &tfp410_con_funcs, DRM_MODE_CONNECTOR_HDMIA);
+                                &tfp410_con_funcs, dvi->connector_type);
        if (ret) {
                dev_err(dvi->dev, "drm_connector_init() failed: %d\n", ret);
                return ret;
@@ -172,6 +173,11 @@ static int tfp410_get_connector_properties(struct tfp410 *dvi)
        if (!connector_node)
                return -ENODEV;
 
+       if (of_device_is_compatible(connector_node, "hdmi-connector"))
+               dvi->connector_type = DRM_MODE_CONNECTOR_HDMIA;
+       else
+               dvi->connector_type = DRM_MODE_CONNECTOR_DVID;
+
        dvi->hpd = fwnode_get_named_gpiod(&connector_node->fwnode,
                                        "hpd-gpios", 0, GPIOD_IN, "hpd");
        if (IS_ERR(dvi->hpd)) {