]> www.infradead.org Git - users/willy/xarray.git/commitdiff
drm/sti/sti_hdmi: convert to struct drm_edid
authorJani Nikula <jani.nikula@intel.com>
Thu, 22 Aug 2024 17:42:47 +0000 (20:42 +0300)
committerJani Nikula <jani.nikula@intel.com>
Thu, 29 Aug 2024 11:30:14 +0000 (14:30 +0300)
Prefer the struct drm_edid based functions for reading the EDID and
updating the connector.

The functional change is that the CEC physical address gets invalidated
when the EDID could not be read.

v2: Use drm_edid_read() instead of drm_edid_read_ddc() (Sima)

Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Link: https://patchwork.freedesktop.org/patch/msgid/25879a0183e30792bf0d63bdf56a03f11018e4a3.1724348429.git.jani.nikula@intel.com
Signed-off-by: Jani Nikula <jani.nikula@intel.com>
drivers/gpu/drm/sti/sti_hdmi.c

index b0d84440a87bc16f244b096e8a4bdafe44b012bd..847470f747c0efad61c2ebdc3fb3746a7a13a863 100644 (file)
@@ -974,28 +974,32 @@ static const struct drm_bridge_funcs sti_hdmi_bridge_funcs = {
 
 static int sti_hdmi_connector_get_modes(struct drm_connector *connector)
 {
+       const struct drm_display_info *info = &connector->display_info;
        struct sti_hdmi_connector *hdmi_connector
                = to_sti_hdmi_connector(connector);
        struct sti_hdmi *hdmi = hdmi_connector->hdmi;
-       struct edid *edid;
+       const struct drm_edid *drm_edid;
        int count;
 
        DRM_DEBUG_DRIVER("\n");
 
-       edid = drm_get_edid(connector, hdmi->ddc_adapt);
-       if (!edid)
-               goto fail;
+       drm_edid = drm_edid_read(connector);
+
+       drm_edid_connector_update(connector, drm_edid);
 
-       cec_notifier_set_phys_addr_from_edid(hdmi->notifier, edid);
+       cec_notifier_set_phys_addr(hdmi->notifier,
+                                  connector->display_info.source_physical_address);
+
+       if (!drm_edid)
+               goto fail;
 
-       count = drm_add_edid_modes(connector, edid);
-       drm_connector_update_edid_property(connector, edid);
+       count = drm_edid_connector_add_modes(connector);
 
        DRM_DEBUG_KMS("%s : %dx%d cm\n",
-                     (connector->display_info.is_hdmi ? "hdmi monitor" : "dvi monitor"),
-                     edid->width_cm, edid->height_cm);
+                     info->is_hdmi ? "hdmi monitor" : "dvi monitor",
+                     info->width_mm / 10, info->height_mm / 10);
 
-       kfree(edid);
+       drm_edid_free(drm_edid);
        return count;
 
 fail: