drm: bridge: adv7511: Split EDID read to a separate function
authorLaurent Pinchart <laurent.pinchart+renesas@ideasonboard.com>
Tue, 26 May 2020 01:14:39 +0000 (04:14 +0300)
committerSam Ravnborg <sam@ravnborg.org>
Tue, 23 Jun 2020 17:51:08 +0000 (19:51 +0200)
To prepare for the implementation of the DRM bridge connector
operations, move EDID read out of adv7511_get_modes() to a separate
function.

Signed-off-by: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com>
Acked-by: Sam Ravnborg <sam@ravnborg.org>
Signed-off-by: Sam Ravnborg <sam@ravnborg.org>
Link: https://patchwork.freedesktop.org/patch/msgid/20200526011505.31884-2-laurent.pinchart+renesas@ideasonboard.com
drivers/gpu/drm/bridge/adv7511/adv7511_drv.c

index 87b58c1acff4af5ef61de7a45197b2d05bec46d4..58d02e92b6b951aee1fbcd228fde8712be15b3c5 100644 (file)
@@ -589,11 +589,10 @@ static int adv7511_get_edid_block(void *data, u8 *buf, unsigned int block,
  * ADV75xx helpers
  */
 
-static int adv7511_get_modes(struct adv7511 *adv7511,
-                            struct drm_connector *connector)
+static struct edid *adv7511_get_edid(struct adv7511 *adv7511,
+                                    struct drm_connector *connector)
 {
        struct edid *edid;
-       unsigned int count;
 
        /* Reading the EDID only works if the device is powered */
        if (!adv7511->powered) {
@@ -612,15 +611,25 @@ static int adv7511_get_modes(struct adv7511 *adv7511,
        if (!adv7511->powered)
                __adv7511_power_off(adv7511);
 
-
-       drm_connector_update_edid_property(connector, edid);
-       count = drm_add_edid_modes(connector, edid);
-
        adv7511_set_config_csc(adv7511, connector, adv7511->rgb,
                               drm_detect_hdmi_monitor(edid));
 
        cec_s_phys_addr_from_edid(adv7511->cec_adap, edid);
 
+       return edid;
+}
+
+static int adv7511_get_modes(struct adv7511 *adv7511,
+                            struct drm_connector *connector)
+{
+       struct edid *edid;
+       unsigned int count;
+
+       edid = adv7511_get_edid(adv7511, connector);
+
+       drm_connector_update_edid_property(connector, edid);
+       count = drm_add_edid_modes(connector, edid);
+
        kfree(edid);
 
        return count;