Skip to content
Snippets Groups Projects
Commit 6e11ce84 authored by Thomas Zimmermann's avatar Thomas Zimmermann
Browse files

drm/probe-helper: Call connector detect functions in single helper


Move the logic to call the connector's detect helper into a single
internal function. Reduces code dupliction.

Signed-off-by: default avatarThomas Zimmermann <tzimmermann@suse.de>
Acked-by: default avatarMaxime Ripard <mripard@kernel.org>
Link: https://patchwork.freedesktop.org/patch/msgid/20240715093936.793552-2-tzimmermann@suse.de
parent b3dff598
No related branches found
No related tags found
No related merge requests found
...@@ -338,10 +338,23 @@ void drm_kms_helper_poll_reschedule(struct drm_device *dev) ...@@ -338,10 +338,23 @@ void drm_kms_helper_poll_reschedule(struct drm_device *dev)
} }
EXPORT_SYMBOL(drm_kms_helper_poll_reschedule); EXPORT_SYMBOL(drm_kms_helper_poll_reschedule);
static int detect_connector_status(struct drm_connector *connector,
struct drm_modeset_acquire_ctx *ctx,
bool force)
{
const struct drm_connector_helper_funcs *funcs = connector->helper_private;
if (funcs->detect_ctx)
return funcs->detect_ctx(connector, ctx, force);
else if (connector->funcs->detect)
return connector->funcs->detect(connector, force);
return connector_status_connected;
}
static enum drm_connector_status static enum drm_connector_status
drm_helper_probe_detect_ctx(struct drm_connector *connector, bool force) drm_helper_probe_detect_ctx(struct drm_connector *connector, bool force)
{ {
const struct drm_connector_helper_funcs *funcs = connector->helper_private;
struct drm_modeset_acquire_ctx ctx; struct drm_modeset_acquire_ctx ctx;
int ret; int ret;
...@@ -349,14 +362,8 @@ drm_helper_probe_detect_ctx(struct drm_connector *connector, bool force) ...@@ -349,14 +362,8 @@ drm_helper_probe_detect_ctx(struct drm_connector *connector, bool force)
retry: retry:
ret = drm_modeset_lock(&connector->dev->mode_config.connection_mutex, &ctx); ret = drm_modeset_lock(&connector->dev->mode_config.connection_mutex, &ctx);
if (!ret) { if (!ret)
if (funcs->detect_ctx) ret = detect_connector_status(connector, &ctx, force);
ret = funcs->detect_ctx(connector, &ctx, force);
else if (connector->funcs->detect)
ret = connector->funcs->detect(connector, force);
else
ret = connector_status_connected;
}
if (ret == -EDEADLK) { if (ret == -EDEADLK) {
drm_modeset_backoff(&ctx); drm_modeset_backoff(&ctx);
...@@ -390,7 +397,6 @@ drm_helper_probe_detect(struct drm_connector *connector, ...@@ -390,7 +397,6 @@ drm_helper_probe_detect(struct drm_connector *connector,
struct drm_modeset_acquire_ctx *ctx, struct drm_modeset_acquire_ctx *ctx,
bool force) bool force)
{ {
const struct drm_connector_helper_funcs *funcs = connector->helper_private;
struct drm_device *dev = connector->dev; struct drm_device *dev = connector->dev;
int ret; int ret;
...@@ -401,12 +407,7 @@ drm_helper_probe_detect(struct drm_connector *connector, ...@@ -401,12 +407,7 @@ drm_helper_probe_detect(struct drm_connector *connector,
if (ret) if (ret)
return ret; return ret;
if (funcs->detect_ctx) ret = detect_connector_status(connector, ctx, force);
ret = funcs->detect_ctx(connector, ctx, force);
else if (connector->funcs->detect)
ret = connector->funcs->detect(connector, force);
else
ret = connector_status_connected;
if (ret != connector->status) if (ret != connector->status)
connector->epoch_counter += 1; connector->epoch_counter += 1;
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment