drm/bridge: ps8640: Get the EDID from eDP control
authorEnric Balletbo i Serra <enric.balletbo@collabora.com>
Wed, 26 Aug 2020 08:15:23 +0000 (10:15 +0200)
committerSam Ravnborg <sam@ravnborg.org>
Wed, 26 Aug 2020 17:12:20 +0000 (19:12 +0200)
The PS8640 DSI-to-eDP bridge can retrieve the EDID, so implement the
.get_edid callback and set the flag to indicate the core to use it.

Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Acked-by: Sam Ravnborg <sam@ravnborg.org>
Signed-off-by: Enric Balletbo i Serra <enric.balletbo@collabora.com>
Signed-off-by: Sam Ravnborg <sam@ravnborg.org>
Link: https://patchwork.freedesktop.org/patch/msgid/20200826081526.674866-3-enric.balletbo@collabora.com
drivers/gpu/drm/bridge/parade-ps8640.c

index 4b099196afeba12815bf41cc00372cbd4e8fd297..13755d278db6d51a880bd5a821bc440749dc3971 100644 (file)
@@ -242,8 +242,18 @@ err_dsi_attach:
        return ret;
 }
 
+static struct edid *ps8640_bridge_get_edid(struct drm_bridge *bridge,
+                                          struct drm_connector *connector)
+{
+       struct ps8640 *ps_bridge = bridge_to_ps8640(bridge);
+
+       return drm_get_edid(connector,
+                           ps_bridge->page[PAGE0_DP_CNTL]->adapter);
+}
+
 static const struct drm_bridge_funcs ps8640_bridge_funcs = {
        .attach = ps8640_bridge_attach,
+       .get_edid = ps8640_bridge_get_edid,
        .post_disable = ps8640_post_disable,
        .pre_enable = ps8640_pre_enable,
 };
@@ -294,6 +304,8 @@ static int ps8640_probe(struct i2c_client *client)
 
        ps_bridge->bridge.funcs = &ps8640_bridge_funcs;
        ps_bridge->bridge.of_node = dev->of_node;
+       ps_bridge->bridge.ops = DRM_BRIDGE_OP_EDID;
+       ps_bridge->bridge.type = DRM_MODE_CONNECTOR_eDP;
 
        ps_bridge->page[PAGE0_DP_CNTL] = client;