drm: Fix output poll work for drm_kms_helper_poll=n
If drm_kms_helper_poll=n the output poll work will only get scheduled from drm_helper_probe_single_connector_modes() to handle a delayed hotplug event. Since polling is disabled the work in this case should just call drm_kms_helper_hotplug_event() w/o detecting the state of connectors and rescheduling the work. After commit d33a54e3991d after a delayed hotplug event above the connectors did get re-detected in the poll work and the work got re-scheduled periodically (since poll_running is also false if drm_kms_helper_poll=n), in effect ignoring the drm_kms_helper_poll=n kernel param. Fix the above by calling only drm_kms_helper_hotplug_event() for a delayed hotplug event if drm_kms_helper_hotplug_event=n, as was done before d33a54e3991d. Cc: Dmitry Baryshkov <dmitry.baryshkov@linaro.org> Reported-by: Ville Syrjälä <ville.syrjala@linux.intel.com> Fixes: d33a54e3991d ("drm/probe_helper: sort out poll_running vs poll_enabled") Reviewed-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org> Signed-off-by: Imre Deak <imre.deak@intel.com> Link: https://patchwork.freedesktop.org/patch/msgid/20240301152243.1670573-1-imre.deak@intel.com
This commit is contained in:
parent
c70703320e
commit
72e6d66877
@ -760,9 +760,11 @@ static void output_poll_execute(struct work_struct *work)
|
||||
changed = dev->mode_config.delayed_event;
|
||||
dev->mode_config.delayed_event = false;
|
||||
|
||||
if (!drm_kms_helper_poll && dev->mode_config.poll_running) {
|
||||
drm_kms_helper_disable_hpd(dev);
|
||||
dev->mode_config.poll_running = false;
|
||||
if (!drm_kms_helper_poll) {
|
||||
if (dev->mode_config.poll_running) {
|
||||
drm_kms_helper_disable_hpd(dev);
|
||||
dev->mode_config.poll_running = false;
|
||||
}
|
||||
goto out;
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user