drm/probe-helper: abstract .get_modes() connector helper call
Abstract the .get_modes() connector helper call, including the override/firmware EDID fallback, for clarity. Signed-off-by: Jani Nikula <jani.nikula@intel.com> Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com> Link: https://patchwork.freedesktop.org/patch/msgid/a4de51efc246e4f5bcbf7b84d66bb49aaf7fd974.1654674560.git.jani.nikula@intel.com
This commit is contained in:
parent
6537f79a2a
commit
019fd800cf
@ -354,6 +354,24 @@ drm_helper_probe_detect(struct drm_connector *connector,
|
|||||||
}
|
}
|
||||||
EXPORT_SYMBOL(drm_helper_probe_detect);
|
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,
|
static int __drm_helper_update_and_validate(struct drm_connector *connector,
|
||||||
uint32_t maxX, uint32_t maxY,
|
uint32_t maxX, uint32_t maxY,
|
||||||
struct drm_modeset_acquire_ctx *ctx)
|
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_device *dev = connector->dev;
|
||||||
struct drm_display_mode *mode;
|
struct drm_display_mode *mode;
|
||||||
const struct drm_connector_helper_funcs *connector_funcs =
|
|
||||||
connector->helper_private;
|
|
||||||
int count = 0, ret;
|
int count = 0, ret;
|
||||||
enum drm_connector_status old_status;
|
enum drm_connector_status old_status;
|
||||||
struct drm_modeset_acquire_ctx ctx;
|
struct drm_modeset_acquire_ctx ctx;
|
||||||
@ -559,14 +575,7 @@ retry:
|
|||||||
goto exit;
|
goto exit;
|
||||||
}
|
}
|
||||||
|
|
||||||
count = (*connector_funcs->get_modes)(connector);
|
count = drm_helper_probe_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);
|
|
||||||
|
|
||||||
if (count == 0 && (connector->status == connector_status_connected ||
|
if (count == 0 && (connector->status == connector_status_connected ||
|
||||||
connector->status == connector_status_unknown)) {
|
connector->status == connector_status_unknown)) {
|
||||||
|
Loading…
Reference in New Issue
Block a user