On Thu, 30 Mar 2023, Jani Nikula <jani.nikula@xxxxxxxxx> wrote: > radeon_connector_edid() copies the EDID from edid_blob_ptr as a side > effect if radeon_connector->edid isn't initialized. However, everywhere > that the returned EDID is used, the EDID should have been set > beforehands. > > Only the EDID code and sysfs should look at the EDID property, anyway, > so stop using it. Never mind this, I need to fix my config to actually build this. *facepalm* > > Cc: Alex Deucher <alexander.deucher@xxxxxxx> > Cc: Christian König <christian.koenig@xxxxxxx> > Cc: Pan, Xinhui <Xinhui.Pan@xxxxxxx> > Cc: amd-gfx@xxxxxxxxxxxxxxxxxxxxx > Signed-off-by: Jani Nikula <jani.nikula@xxxxxxxxx> > --- > drivers/gpu/drm/radeon/radeon_audio.c | 5 ++--- > drivers/gpu/drm/radeon/radeon_connectors.c | 15 --------------- > drivers/gpu/drm/radeon/radeon_mode.h | 2 -- > 3 files changed, 2 insertions(+), 20 deletions(-) > > diff --git a/drivers/gpu/drm/radeon/radeon_audio.c b/drivers/gpu/drm/radeon/radeon_audio.c > index 947de91e13f6..759b5dfaca15 100644 > --- a/drivers/gpu/drm/radeon/radeon_audio.c > +++ b/drivers/gpu/drm/radeon/radeon_audio.c > @@ -309,7 +309,7 @@ static void radeon_audio_write_sad_regs(struct drm_encoder *encoder) > if (!connector) > return; > > - sad_count = drm_edid_to_sad(radeon_connector_edid(connector), &sads); > + sad_count = drm_edid_to_sad(radeon_connector->edid, &sads); > if (sad_count < 0) > DRM_ERROR("Couldn't read SADs: %d\n", sad_count); > if (sad_count <= 0) > @@ -332,8 +332,7 @@ static void radeon_audio_write_speaker_allocation(struct drm_encoder *encoder) > if (!connector) > return; > > - sad_count = drm_edid_to_speaker_allocation(radeon_connector_edid(connector), > - &sadb); > + sad_count = drm_edid_to_speaker_allocation(radeon_connector->edid, &sadb); > if (sad_count < 0) { > DRM_DEBUG("Couldn't read Speaker Allocation Data Block: %d\n", > sad_count); > diff --git a/drivers/gpu/drm/radeon/radeon_connectors.c b/drivers/gpu/drm/radeon/radeon_connectors.c > index adebf8e9d2bd..99e8f387fe21 100644 > --- a/drivers/gpu/drm/radeon/radeon_connectors.c > +++ b/drivers/gpu/drm/radeon/radeon_connectors.c > @@ -256,21 +256,6 @@ static struct drm_encoder *radeon_find_encoder(struct drm_connector *connector, > return NULL; > } > > -struct edid *radeon_connector_edid(struct drm_connector *connector) > -{ > - struct radeon_connector *radeon_connector = to_radeon_connector(connector); > - struct drm_property_blob *edid_blob = connector->edid_blob_ptr; > - > - if (radeon_connector->edid) { > - return radeon_connector->edid; > - } else if (edid_blob) { > - struct edid *edid = kmemdup(edid_blob->data, edid_blob->length, GFP_KERNEL); > - if (edid) > - radeon_connector->edid = edid; > - } > - return radeon_connector->edid; > -} > - > static void radeon_connector_get_edid(struct drm_connector *connector) > { > struct drm_device *dev = connector->dev; > diff --git a/drivers/gpu/drm/radeon/radeon_mode.h b/drivers/gpu/drm/radeon/radeon_mode.h > index 3a59d016e8cd..ab71a744d2b2 100644 > --- a/drivers/gpu/drm/radeon/radeon_mode.h > +++ b/drivers/gpu/drm/radeon/radeon_mode.h > @@ -708,8 +708,6 @@ extern u16 radeon_connector_encoder_get_dp_bridge_encoder_id(struct drm_connecto > extern bool radeon_connector_is_dp12_capable(struct drm_connector *connector); > extern int radeon_get_monitor_bpc(struct drm_connector *connector); > > -extern struct edid *radeon_connector_edid(struct drm_connector *connector); > - > extern void radeon_connector_hotplug(struct drm_connector *connector); > extern int radeon_dp_mode_valid_helper(struct drm_connector *connector, > struct drm_display_mode *mode); -- Jani Nikula, Intel Open Source Graphics Center