"struct drm_edid" is the safe and recommended alternative to "struct edid".

Rename the member to make sure that no usage sites are missed,
as "struct drm_edid" has some restrictions, for example it can not be
used with kfree().

Signed-off-by: Thomas Weißschuh <li...@weissschuh.net>
---
 drivers/gpu/drm/amd/amdgpu/amdgpu_connectors.c | 56 +++++++++++++-------------
 drivers/gpu/drm/amd/amdgpu/amdgpu_mode.h       |  3 +-
 drivers/gpu/drm/amd/amdgpu/dce_v10_0.c         |  4 +-
 drivers/gpu/drm/amd/amdgpu/dce_v11_0.c         |  4 +-
 drivers/gpu/drm/amd/amdgpu/dce_v6_0.c          |  4 +-
 drivers/gpu/drm/amd/amdgpu/dce_v8_0.c          |  4 +-
 6 files changed, 38 insertions(+), 37 deletions(-)

diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_connectors.c 
b/drivers/gpu/drm/amd/amdgpu/amdgpu_connectors.c
index 344e0a9ee08a..75eac808b9e3 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_connectors.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_connectors.c
@@ -246,10 +246,10 @@ amdgpu_connector_find_encoder(struct drm_connector 
*connector,
        return NULL;
 }
 
-static struct edid *
+static const struct drm_edid *
 amdgpu_connector_get_hardcoded_edid(struct amdgpu_device *adev)
 {
-       return 
drm_edid_duplicate(drm_edid_raw(adev->mode_info.bios_hardcoded_edid));
+       return drm_edid_dup(adev->mode_info.bios_hardcoded_edid);
 }
 
 static void amdgpu_connector_get_edid(struct drm_connector *connector)
@@ -258,7 +258,7 @@ static void amdgpu_connector_get_edid(struct drm_connector 
*connector)
        struct amdgpu_device *adev = drm_to_adev(dev);
        struct amdgpu_connector *amdgpu_connector = 
to_amdgpu_connector(connector);
 
-       if (amdgpu_connector->edid)
+       if (amdgpu_connector->drm_edid)
                return;
 
        /* on hw with routers, select right port */
@@ -268,8 +268,8 @@ static void amdgpu_connector_get_edid(struct drm_connector 
*connector)
        if ((amdgpu_connector_encoder_get_dp_bridge_encoder_id(connector) !=
             ENCODER_OBJECT_ID_NONE) &&
            amdgpu_connector->ddc_bus->has_aux) {
-               amdgpu_connector->edid = drm_get_edid(connector,
-                                                     
&amdgpu_connector->ddc_bus->aux.ddc);
+               amdgpu_connector->drm_edid = drm_edid_read_ddc(
+                               connector, &amdgpu_connector->ddc_bus->aux.ddc);
        } else if ((connector->connector_type == 
DRM_MODE_CONNECTOR_DisplayPort) ||
                   (connector->connector_type == DRM_MODE_CONNECTOR_eDP)) {
                struct amdgpu_connector_atom_dig *dig = 
amdgpu_connector->con_priv;
@@ -277,32 +277,34 @@ static void amdgpu_connector_get_edid(struct 
drm_connector *connector)
                if ((dig->dp_sink_type == CONNECTOR_OBJECT_ID_DISPLAYPORT ||
                     dig->dp_sink_type == CONNECTOR_OBJECT_ID_eDP) &&
                    amdgpu_connector->ddc_bus->has_aux)
-                       amdgpu_connector->edid = drm_get_edid(connector,
-                                                             
&amdgpu_connector->ddc_bus->aux.ddc);
+                       amdgpu_connector->drm_edid = drm_edid_read_ddc(
+                                       connector, 
&amdgpu_connector->ddc_bus->aux.ddc);
                else if (amdgpu_connector->ddc_bus)
-                       amdgpu_connector->edid = drm_get_edid(connector,
-                                                             
&amdgpu_connector->ddc_bus->adapter);
+                       amdgpu_connector->drm_edid = drm_edid_read_ddc(
+                                       connector, 
&amdgpu_connector->ddc_bus->adapter);
        } else if (amdgpu_connector->ddc_bus) {
-               amdgpu_connector->edid = drm_get_edid(connector,
-                                                     
&amdgpu_connector->ddc_bus->adapter);
+               amdgpu_connector->drm_edid = drm_edid_read_ddc(
+                               connector, &amdgpu_connector->ddc_bus->adapter);
        }
 
-       if (!amdgpu_connector->edid) {
+       if (!amdgpu_connector->drm_edid) {
                /* some laptops provide a hardcoded edid in rom for LCDs */
                if (((connector->connector_type == DRM_MODE_CONNECTOR_LVDS) ||
                     (connector->connector_type == DRM_MODE_CONNECTOR_eDP))) {
-                       amdgpu_connector->edid = 
amdgpu_connector_get_hardcoded_edid(adev);
-                       drm_connector_update_edid_property(connector, 
amdgpu_connector->edid);
+                       amdgpu_connector->drm_edid = 
amdgpu_connector_get_hardcoded_edid(adev);
+                       drm_edid_connector_update(connector, 
amdgpu_connector->drm_edid);
                }
        }
+
+       drm_edid_connector_update(connector, amdgpu_connector->drm_edid);
 }
 
 static void amdgpu_connector_free_edid(struct drm_connector *connector)
 {
        struct amdgpu_connector *amdgpu_connector = 
to_amdgpu_connector(connector);
 
-       kfree(amdgpu_connector->edid);
-       amdgpu_connector->edid = NULL;
+       drm_edid_free(amdgpu_connector->drm_edid);
+       amdgpu_connector->drm_edid = NULL;
 }
 
 static int amdgpu_connector_ddc_get_modes(struct drm_connector *connector)
@@ -310,12 +312,12 @@ static int amdgpu_connector_ddc_get_modes(struct 
drm_connector *connector)
        struct amdgpu_connector *amdgpu_connector = 
to_amdgpu_connector(connector);
        int ret;
 
-       if (amdgpu_connector->edid) {
-               drm_connector_update_edid_property(connector, 
amdgpu_connector->edid);
-               ret = drm_add_edid_modes(connector, amdgpu_connector->edid);
+       if (amdgpu_connector->drm_edid) {
+               drm_edid_connector_update(connector, 
amdgpu_connector->drm_edid);
+               ret = drm_edid_connector_add_modes(connector);
                return ret;
        }
-       drm_connector_update_edid_property(connector, NULL);
+       drm_edid_connector_update(connector, NULL);
        return 0;
 }
 
@@ -731,7 +733,7 @@ amdgpu_connector_lvds_detect(struct drm_connector 
*connector, bool force)
 
        /* check for edid as well */
        amdgpu_connector_get_edid(connector);
-       if (amdgpu_connector->edid)
+       if (amdgpu_connector->drm_edid)
                ret = connector_status_connected;
        /* check acpi lid status ??? */
 
@@ -881,13 +883,13 @@ amdgpu_connector_vga_detect(struct drm_connector 
*connector, bool force)
                amdgpu_connector_free_edid(connector);
                amdgpu_connector_get_edid(connector);
 
-               if (!amdgpu_connector->edid) {
+               if (!amdgpu_connector->drm_edid) {
                        DRM_ERROR("%s: probed a monitor but no|invalid EDID\n",
                                        connector->name);
                        ret = connector_status_connected;
                } else {
-                       amdgpu_connector->use_digital =
-                               !!(amdgpu_connector->edid->input & 
DRM_EDID_INPUT_DIGITAL);
+                       amdgpu_connector->use_digital = drm_edid_is_digital(
+                                       amdgpu_connector->drm_edid);
 
                        /* some oems have boards with separate digital and 
analog connectors
                         * with a shared ddc line (often vga + hdmi)
@@ -1062,14 +1064,14 @@ amdgpu_connector_dvi_detect(struct drm_connector 
*connector, bool force)
                amdgpu_connector_free_edid(connector);
                amdgpu_connector_get_edid(connector);
 
-               if (!amdgpu_connector->edid) {
+               if (!amdgpu_connector->drm_edid) {
                        DRM_ERROR("%s: probed a monitor but no|invalid EDID\n",
                                        connector->name);
                        ret = connector_status_connected;
                        broken_edid = true; /* defer use_digital to later */
                } else {
-                       amdgpu_connector->use_digital =
-                               !!(amdgpu_connector->edid->input & 
DRM_EDID_INPUT_DIGITAL);
+                       amdgpu_connector->use_digital = drm_edid_is_digital(
+                                       amdgpu_connector->drm_edid);
 
                        /* some oems have boards with separate digital and 
analog connectors
                         * with a shared ddc line (often vga + hdmi)
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_mode.h 
b/drivers/gpu/drm/amd/amdgpu/amdgpu_mode.h
index 5e3faefc5510..e584997c7777 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_mode.h
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_mode.h
@@ -50,7 +50,6 @@ struct amdgpu_device;
 struct amdgpu_encoder;
 struct amdgpu_router;
 struct amdgpu_hpd;
-struct edid;
 struct drm_edid;
 
 #define to_amdgpu_crtc(x) container_of(x, struct amdgpu_crtc, base)
@@ -623,7 +622,7 @@ struct amdgpu_connector {
        bool use_digital;
        /* we need to mind the EDID between detect
           and get modes due to analog/digital/tvencoder */
-       struct edid *edid;
+       const struct drm_edid *drm_edid;
        void *con_priv;
        bool dac_load_detect;
        bool detected_by_load; /* if the connection status was determined by 
load */
diff --git a/drivers/gpu/drm/amd/amdgpu/dce_v10_0.c 
b/drivers/gpu/drm/amd/amdgpu/dce_v10_0.c
index 742adbc460c9..3ad9e58979ab 100644
--- a/drivers/gpu/drm/amd/amdgpu/dce_v10_0.c
+++ b/drivers/gpu/drm/amd/amdgpu/dce_v10_0.c
@@ -1299,7 +1299,7 @@ static void 
dce_v10_0_audio_write_speaker_allocation(struct drm_encoder *encoder
                return;
        }
 
-       sad_count = drm_edid_to_speaker_allocation(amdgpu_connector->edid, 
&sadb);
+       sad_count = 
drm_edid_to_speaker_allocation(drm_edid_raw(amdgpu_connector->drm_edid), &sadb);
        if (sad_count < 0) {
                DRM_ERROR("Couldn't read Speaker Allocation Data Block: %d\n", 
sad_count);
                sad_count = 0;
@@ -1369,7 +1369,7 @@ static void dce_v10_0_audio_write_sad_regs(struct 
drm_encoder *encoder)
                return;
        }
 
-       sad_count = drm_edid_to_sad(amdgpu_connector->edid, &sads);
+       sad_count = drm_edid_to_sad(drm_edid_raw(amdgpu_connector->drm_edid), 
&sads);
        if (sad_count < 0)
                DRM_ERROR("Couldn't read SADs: %d\n", sad_count);
        if (sad_count <= 0)
diff --git a/drivers/gpu/drm/amd/amdgpu/dce_v11_0.c 
b/drivers/gpu/drm/amd/amdgpu/dce_v11_0.c
index 8d46ebadfa46..5df1d69a2759 100644
--- a/drivers/gpu/drm/amd/amdgpu/dce_v11_0.c
+++ b/drivers/gpu/drm/amd/amdgpu/dce_v11_0.c
@@ -1331,7 +1331,7 @@ static void 
dce_v11_0_audio_write_speaker_allocation(struct drm_encoder *encoder
                return;
        }
 
-       sad_count = drm_edid_to_speaker_allocation(amdgpu_connector->edid, 
&sadb);
+       sad_count = 
drm_edid_to_speaker_allocation(drm_edid_raw(amdgpu_connector->drm_edid), &sadb);
        if (sad_count < 0) {
                DRM_ERROR("Couldn't read Speaker Allocation Data Block: %d\n", 
sad_count);
                sad_count = 0;
@@ -1401,7 +1401,7 @@ static void dce_v11_0_audio_write_sad_regs(struct 
drm_encoder *encoder)
                return;
        }
 
-       sad_count = drm_edid_to_sad(amdgpu_connector->edid, &sads);
+       sad_count = drm_edid_to_sad(drm_edid_raw(amdgpu_connector->drm_edid), 
&sads);
        if (sad_count < 0)
                DRM_ERROR("Couldn't read SADs: %d\n", sad_count);
        if (sad_count <= 0)
diff --git a/drivers/gpu/drm/amd/amdgpu/dce_v6_0.c 
b/drivers/gpu/drm/amd/amdgpu/dce_v6_0.c
index f08dc6a3886f..dbdb060a578c 100644
--- a/drivers/gpu/drm/amd/amdgpu/dce_v6_0.c
+++ b/drivers/gpu/drm/amd/amdgpu/dce_v6_0.c
@@ -1217,7 +1217,7 @@ static void 
dce_v6_0_audio_write_speaker_allocation(struct drm_encoder *encoder)
                return;
        }
 
-       sad_count = drm_edid_to_speaker_allocation(amdgpu_connector->edid, 
&sadb);
+       sad_count = 
drm_edid_to_speaker_allocation(drm_edid_raw(amdgpu_connector->drm_edid), &sadb);
        if (sad_count < 0) {
                DRM_ERROR("Couldn't read Speaker Allocation Data Block: %d\n", 
sad_count);
                sad_count = 0;
@@ -1292,7 +1292,7 @@ static void dce_v6_0_audio_write_sad_regs(struct 
drm_encoder *encoder)
                return;
        }
 
-       sad_count = drm_edid_to_sad(amdgpu_connector->edid, &sads);
+       sad_count = drm_edid_to_sad(drm_edid_raw(amdgpu_connector->drm_edid), 
&sads);
        if (sad_count < 0)
                DRM_ERROR("Couldn't read SADs: %d\n", sad_count);
        if (sad_count <= 0)
diff --git a/drivers/gpu/drm/amd/amdgpu/dce_v8_0.c 
b/drivers/gpu/drm/amd/amdgpu/dce_v8_0.c
index a6a3adf2ae13..f6b8deab9b49 100644
--- a/drivers/gpu/drm/amd/amdgpu/dce_v8_0.c
+++ b/drivers/gpu/drm/amd/amdgpu/dce_v8_0.c
@@ -1272,7 +1272,7 @@ static void 
dce_v8_0_audio_write_speaker_allocation(struct drm_encoder *encoder)
                return;
        }
 
-       sad_count = drm_edid_to_speaker_allocation(amdgpu_connector->edid, 
&sadb);
+       sad_count = 
drm_edid_to_speaker_allocation(drm_edid_raw(amdgpu_connector->drm_edid), &sadb);
        if (sad_count < 0) {
                DRM_ERROR("Couldn't read Speaker Allocation Data Block: %d\n", 
sad_count);
                sad_count = 0;
@@ -1340,7 +1340,7 @@ static void dce_v8_0_audio_write_sad_regs(struct 
drm_encoder *encoder)
                return;
        }
 
-       sad_count = drm_edid_to_sad(amdgpu_connector->edid, &sads);
+       sad_count = drm_edid_to_sad(drm_edid_raw(amdgpu_connector->drm_edid), 
&sads);
        if (sad_count < 0)
                DRM_ERROR("Couldn't read SADs: %d\n", sad_count);
        if (sad_count <= 0)

-- 
2.46.0

Reply via email to