On Wed, Jun 08, 2022 at 10:50:37AM +0300, Jani Nikula wrote: > Abstract the .get_modes() connector helper call, including the > override/firmware EDID fallback, for clarity. > > Signed-off-by: Jani Nikula <jani.nikula@xxxxxxxxx> Reviewed-by: Ville Syrjälä <ville.syrjala@xxxxxxxxxxxxxxx> > --- > drivers/gpu/drm/drm_probe_helper.c | 29 +++++++++++++++++++---------- > 1 file changed, 19 insertions(+), 10 deletions(-) > > diff --git a/drivers/gpu/drm/drm_probe_helper.c b/drivers/gpu/drm/drm_probe_helper.c > index 75a71649b64d..a8d26b29bfa0 100644 > --- a/drivers/gpu/drm/drm_probe_helper.c > +++ b/drivers/gpu/drm/drm_probe_helper.c > @@ -354,6 +354,24 @@ drm_helper_probe_detect(struct drm_connector *connector, > } > EXPORT_SYMBOL(drm_helper_probe_detect); > > +static int drm_helper_probe_get_modes(struct drm_connector *connector) > +{ > + const struct drm_connector_helper_funcs *connector_funcs = > + connector->helper_private; > + int count; > + > + count = connector_funcs->get_modes(connector); > + > + /* > + * Fallback for when DDC probe failed in drm_get_edid() and thus skipped > + * override/firmware EDID. > + */ > + if (count == 0 && connector->status == connector_status_connected) > + count = drm_add_override_edid_modes(connector); > + > + return count; > +} > + > static int __drm_helper_update_and_validate(struct drm_connector *connector, > uint32_t maxX, uint32_t maxY, > struct drm_modeset_acquire_ctx *ctx) > @@ -473,8 +491,6 @@ int drm_helper_probe_single_connector_modes(struct drm_connector *connector, > { > struct drm_device *dev = connector->dev; > struct drm_display_mode *mode; > - const struct drm_connector_helper_funcs *connector_funcs = > - connector->helper_private; > int count = 0, ret; > enum drm_connector_status old_status; > struct drm_modeset_acquire_ctx ctx; > @@ -559,14 +575,7 @@ int drm_helper_probe_single_connector_modes(struct drm_connector *connector, > goto exit; > } > > - count = (*connector_funcs->get_modes)(connector); > - > - /* > - * Fallback for when DDC probe failed in drm_get_edid() and thus skipped > - * override/firmware EDID. > - */ > - if (count == 0 && connector->status == connector_status_connected) > - count = drm_add_override_edid_modes(connector); > + count = drm_helper_probe_get_modes(connector); > > if (count == 0 && (connector->status == connector_status_connected || > connector->status == connector_status_unknown)) { > -- > 2.30.2 -- Ville Syrjälä Intel