Re: [Intel-gfx] [PATCH v3 01/13] drm/edid: move drm_connector_update_edid_property() to drm_edid.c
On Wed, Jun 22, 2022 at 01:59:15PM +0300, Jani Nikula wrote: > The function needs access to drm_edid.c internals more than > drm_connector.c. We can make drm_reset_display_info(), > drm_add_display_info() and drm_update_tile_info() static. There will be > more benefits with follow-up struct drm_edid refactoring. > > Signed-off-by: Jani Nikula Reviewed-by: Ville Syrjälä > --- > drivers/gpu/drm/drm_connector.c | 74 - > drivers/gpu/drm/drm_crtc_internal.h | 3 - > drivers/gpu/drm/drm_edid.c | 86 +++-- > 3 files changed, 81 insertions(+), 82 deletions(-) > > diff --git a/drivers/gpu/drm/drm_connector.c b/drivers/gpu/drm/drm_connector.c > index 28ea0f8196b9..2b9a8972eff1 100644 > --- a/drivers/gpu/drm/drm_connector.c > +++ b/drivers/gpu/drm/drm_connector.c > @@ -2078,80 +2078,6 @@ int drm_connector_set_tile_property(struct > drm_connector *connector) > } > EXPORT_SYMBOL(drm_connector_set_tile_property); > > -/** > - * drm_connector_update_edid_property - update the edid property of a > connector > - * @connector: drm connector > - * @edid: new value of the edid property > - * > - * This function creates a new blob modeset object and assigns its id to the > - * connector's edid property. > - * Since we also parse tile information from EDID's displayID block, we also > - * set the connector's tile property here. See > drm_connector_set_tile_property() > - * for more details. > - * > - * Returns: > - * Zero on success, negative errno on failure. > - */ > -int drm_connector_update_edid_property(struct drm_connector *connector, > -const struct edid *edid) > -{ > - struct drm_device *dev = connector->dev; > - size_t size = 0; > - int ret; > - const struct edid *old_edid; > - > - /* ignore requests to set edid when overridden */ > - if (connector->override_edid) > - return 0; > - > - if (edid) > - size = EDID_LENGTH * (1 + edid->extensions); > - > - /* Set the display info, using edid if available, otherwise > - * resetting the values to defaults. This duplicates the work > - * done in drm_add_edid_modes, but that function is not > - * consistently called before this one in all drivers and the > - * computation is cheap enough that it seems better to > - * duplicate it rather than attempt to ensure some arbitrary > - * ordering of calls. > - */ > - if (edid) > - drm_add_display_info(connector, edid); > - else > - drm_reset_display_info(connector); > - > - drm_update_tile_info(connector, edid); > - > - if (connector->edid_blob_ptr) { > - old_edid = (const struct edid *)connector->edid_blob_ptr->data; > - if (old_edid) { > - if (!drm_edid_are_equal(edid, old_edid)) { > - DRM_DEBUG_KMS("[CONNECTOR:%d:%s] Edid was > changed.\n", > - connector->base.id, > connector->name); > - > - connector->epoch_counter += 1; > - DRM_DEBUG_KMS("Updating change counter to > %llu\n", > - connector->epoch_counter); > - } > - } > - } > - > - drm_object_property_set_value(>base, > - dev->mode_config.non_desktop_property, > - connector->display_info.non_desktop); > - > - ret = drm_property_replace_global_blob(dev, > ->edid_blob_ptr, > -size, > -edid, > ->base, > -dev->mode_config.edid_property); > - if (ret) > - return ret; > - return drm_connector_set_tile_property(connector); > -} > -EXPORT_SYMBOL(drm_connector_update_edid_property); > - > /** > * drm_connector_set_link_status_property - Set link status property of a > connector > * @connector: drm connector > diff --git a/drivers/gpu/drm/drm_crtc_internal.h > b/drivers/gpu/drm/drm_crtc_internal.h > index 63279e984342..aecab5308bae 100644 > --- a/drivers/gpu/drm/drm_crtc_internal.h > +++ b/drivers/gpu/drm/drm_crtc_internal.h > @@ -286,6 +286,3 @@ int drm_mode_page_flip_ioctl(struct drm_device *dev, > > /* drm_edid.c */ > void drm_mode_fixup_1366x768(struct drm_display_mode *mode); > -void drm_reset_display_info(struct drm_connector *connector); > -u32 drm_add_display_info(struct drm_connector *connector, const struct edid > *edid); > -void drm_update_tile_info(struct drm_connector *connector, const struct edid > *edid); > diff --git a/drivers/gpu/drm/drm_edid.c b/drivers/gpu/drm/drm_edid.c > index 2bdaf1e34a9d..36bf7b0fe8d9 100644 > --- a/drivers/gpu/drm/drm_edid.c > +++
[Intel-gfx] [PATCH v3 01/13] drm/edid: move drm_connector_update_edid_property() to drm_edid.c
The function needs access to drm_edid.c internals more than drm_connector.c. We can make drm_reset_display_info(), drm_add_display_info() and drm_update_tile_info() static. There will be more benefits with follow-up struct drm_edid refactoring. Signed-off-by: Jani Nikula --- drivers/gpu/drm/drm_connector.c | 74 - drivers/gpu/drm/drm_crtc_internal.h | 3 - drivers/gpu/drm/drm_edid.c | 86 +++-- 3 files changed, 81 insertions(+), 82 deletions(-) diff --git a/drivers/gpu/drm/drm_connector.c b/drivers/gpu/drm/drm_connector.c index 28ea0f8196b9..2b9a8972eff1 100644 --- a/drivers/gpu/drm/drm_connector.c +++ b/drivers/gpu/drm/drm_connector.c @@ -2078,80 +2078,6 @@ int drm_connector_set_tile_property(struct drm_connector *connector) } EXPORT_SYMBOL(drm_connector_set_tile_property); -/** - * drm_connector_update_edid_property - update the edid property of a connector - * @connector: drm connector - * @edid: new value of the edid property - * - * This function creates a new blob modeset object and assigns its id to the - * connector's edid property. - * Since we also parse tile information from EDID's displayID block, we also - * set the connector's tile property here. See drm_connector_set_tile_property() - * for more details. - * - * Returns: - * Zero on success, negative errno on failure. - */ -int drm_connector_update_edid_property(struct drm_connector *connector, - const struct edid *edid) -{ - struct drm_device *dev = connector->dev; - size_t size = 0; - int ret; - const struct edid *old_edid; - - /* ignore requests to set edid when overridden */ - if (connector->override_edid) - return 0; - - if (edid) - size = EDID_LENGTH * (1 + edid->extensions); - - /* Set the display info, using edid if available, otherwise -* resetting the values to defaults. This duplicates the work -* done in drm_add_edid_modes, but that function is not -* consistently called before this one in all drivers and the -* computation is cheap enough that it seems better to -* duplicate it rather than attempt to ensure some arbitrary -* ordering of calls. -*/ - if (edid) - drm_add_display_info(connector, edid); - else - drm_reset_display_info(connector); - - drm_update_tile_info(connector, edid); - - if (connector->edid_blob_ptr) { - old_edid = (const struct edid *)connector->edid_blob_ptr->data; - if (old_edid) { - if (!drm_edid_are_equal(edid, old_edid)) { - DRM_DEBUG_KMS("[CONNECTOR:%d:%s] Edid was changed.\n", - connector->base.id, connector->name); - - connector->epoch_counter += 1; - DRM_DEBUG_KMS("Updating change counter to %llu\n", - connector->epoch_counter); - } - } - } - - drm_object_property_set_value(>base, - dev->mode_config.non_desktop_property, - connector->display_info.non_desktop); - - ret = drm_property_replace_global_blob(dev, - >edid_blob_ptr, - size, - edid, - >base, - dev->mode_config.edid_property); - if (ret) - return ret; - return drm_connector_set_tile_property(connector); -} -EXPORT_SYMBOL(drm_connector_update_edid_property); - /** * drm_connector_set_link_status_property - Set link status property of a connector * @connector: drm connector diff --git a/drivers/gpu/drm/drm_crtc_internal.h b/drivers/gpu/drm/drm_crtc_internal.h index 63279e984342..aecab5308bae 100644 --- a/drivers/gpu/drm/drm_crtc_internal.h +++ b/drivers/gpu/drm/drm_crtc_internal.h @@ -286,6 +286,3 @@ int drm_mode_page_flip_ioctl(struct drm_device *dev, /* drm_edid.c */ void drm_mode_fixup_1366x768(struct drm_display_mode *mode); -void drm_reset_display_info(struct drm_connector *connector); -u32 drm_add_display_info(struct drm_connector *connector, const struct edid *edid); -void drm_update_tile_info(struct drm_connector *connector, const struct edid *edid); diff --git a/drivers/gpu/drm/drm_edid.c b/drivers/gpu/drm/drm_edid.c index 2bdaf1e34a9d..36bf7b0fe8d9 100644 --- a/drivers/gpu/drm/drm_edid.c +++ b/drivers/gpu/drm/drm_edid.c @@ -5928,8 +5928,7 @@ static void drm_update_mso(struct drm_connector *connector, /* A connector has no EDID information, so we've got no EDID to compute quirks from. Reset * all of the values which would have been set