[Intel-gfx] [PATCH v2 07/15] drm/probe-helper: abstract .get_modes() connector helper call
Ville Syrjälä
ville.syrjala at linux.intel.com
Fri Jun 10 19:36:42 UTC 2022
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 at intel.com>
Reviewed-by: Ville Syrjälä <ville.syrjala at linux.intel.com>
> ---
> 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
More information about the Intel-gfx
mailing list