Skip to content

Commit 91f4394

Browse files
lumagThomas Zimmermann
authored andcommitted
drm/probe_helper: extract two helper functions
Extract drm_kms_helper_enable_hpd() and drm_kms_helper_disable_hpd(), two helpers that enable and disable HPD handling on all device's connectors. Signed-off-by: Dmitry Baryshkov <[email protected]> Reviewed-by: Neil Armstrong <[email protected]> Reviewed-by: Jani Nikula <[email protected]> Signed-off-by: Neil Armstrong <[email protected]> Link: https://patchwork.freedesktop.org/patch/msgid/[email protected] (cherry picked from commit cbf143b) Signed-off-by: Thomas Zimmermann <[email protected]>
1 parent d20a8f4 commit 91f4394

File tree

1 file changed

+41
-27
lines changed

1 file changed

+41
-27
lines changed

drivers/gpu/drm/drm_probe_helper.c

Lines changed: 41 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -222,6 +222,45 @@ drm_connector_mode_valid(struct drm_connector *connector,
222222
return ret;
223223
}
224224

225+
static void drm_kms_helper_disable_hpd(struct drm_device *dev)
226+
{
227+
struct drm_connector *connector;
228+
struct drm_connector_list_iter conn_iter;
229+
230+
drm_connector_list_iter_begin(dev, &conn_iter);
231+
drm_for_each_connector_iter(connector, &conn_iter) {
232+
const struct drm_connector_helper_funcs *funcs =
233+
connector->helper_private;
234+
235+
if (funcs && funcs->disable_hpd)
236+
funcs->disable_hpd(connector);
237+
}
238+
drm_connector_list_iter_end(&conn_iter);
239+
}
240+
241+
static bool drm_kms_helper_enable_hpd(struct drm_device *dev)
242+
{
243+
bool poll = false;
244+
struct drm_connector *connector;
245+
struct drm_connector_list_iter conn_iter;
246+
247+
drm_connector_list_iter_begin(dev, &conn_iter);
248+
drm_for_each_connector_iter(connector, &conn_iter) {
249+
const struct drm_connector_helper_funcs *funcs =
250+
connector->helper_private;
251+
252+
if (funcs && funcs->enable_hpd)
253+
funcs->enable_hpd(connector);
254+
255+
if (connector->polled & (DRM_CONNECTOR_POLL_CONNECT |
256+
DRM_CONNECTOR_POLL_DISCONNECT))
257+
poll = true;
258+
}
259+
drm_connector_list_iter_end(&conn_iter);
260+
261+
return poll;
262+
}
263+
225264
#define DRM_OUTPUT_POLL_PERIOD (10*HZ)
226265
/**
227266
* drm_kms_helper_poll_enable - re-enable output polling.
@@ -241,26 +280,12 @@ drm_connector_mode_valid(struct drm_connector *connector,
241280
void drm_kms_helper_poll_enable(struct drm_device *dev)
242281
{
243282
bool poll = false;
244-
struct drm_connector *connector;
245-
struct drm_connector_list_iter conn_iter;
246283
unsigned long delay = DRM_OUTPUT_POLL_PERIOD;
247284

248285
if (!dev->mode_config.poll_enabled || !drm_kms_helper_poll)
249286
return;
250287

251-
drm_connector_list_iter_begin(dev, &conn_iter);
252-
drm_for_each_connector_iter(connector, &conn_iter) {
253-
const struct drm_connector_helper_funcs *funcs =
254-
connector->helper_private;
255-
256-
if (funcs && funcs->enable_hpd)
257-
funcs->enable_hpd(connector);
258-
259-
if (connector->polled & (DRM_CONNECTOR_POLL_CONNECT |
260-
DRM_CONNECTOR_POLL_DISCONNECT))
261-
poll = true;
262-
}
263-
drm_connector_list_iter_end(&conn_iter);
288+
poll = drm_kms_helper_enable_hpd(dev);
264289

265290
if (dev->mode_config.delayed_event) {
266291
/*
@@ -810,24 +835,13 @@ EXPORT_SYMBOL(drm_kms_helper_is_poll_worker);
810835

811836
static void drm_kms_helper_poll_disable_fini(struct drm_device *dev, bool fini)
812837
{
813-
struct drm_connector *connector;
814-
struct drm_connector_list_iter conn_iter;
815-
816838
if (!dev->mode_config.poll_enabled)
817839
return;
818840

819841
if (fini)
820842
dev->mode_config.poll_enabled = false;
821843

822-
drm_connector_list_iter_begin(dev, &conn_iter);
823-
drm_for_each_connector_iter(connector, &conn_iter) {
824-
const struct drm_connector_helper_funcs *funcs =
825-
connector->helper_private;
826-
827-
if (funcs && funcs->disable_hpd)
828-
funcs->disable_hpd(connector);
829-
}
830-
drm_connector_list_iter_end(&conn_iter);
844+
drm_kms_helper_disable_hpd(dev);
831845

832846
cancel_delayed_work_sync(&dev->mode_config.output_poll_work);
833847
}

0 commit comments

Comments
 (0)