diff options
author | Dave Airlie <airlied@redhat.com> | 2018-03-28 00:30:41 -0400 |
---|---|---|
committer | Dave Airlie <airlied@redhat.com> | 2018-03-28 00:30:41 -0400 |
commit | 2b4f44eec2be2688511c2b617d0e1b4f94c45ba4 (patch) | |
tree | 533c03602f4ae6d6404db6fa56c88e6f83e1bebe /drivers/gpu/drm/amd/amdgpu/amdgpu_connectors.c | |
parent | 33d009cd889490838c5db9b9339856c9e3d3facc (diff) | |
parent | 3eb2ce825ea1ad89d20f7a3b5780df850e4be274 (diff) |
Backmerge tag 'v4.16-rc7' into drm-next
Linux 4.16-rc7
This was requested by Daniel, and things were getting
a bit hard to reconcile, most of the conflicts were
trivial though.
Diffstat (limited to 'drivers/gpu/drm/amd/amdgpu/amdgpu_connectors.c')
-rw-r--r-- | drivers/gpu/drm/amd/amdgpu/amdgpu_connectors.c | 58 |
1 files changed, 38 insertions, 20 deletions
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_connectors.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_connectors.c index 9da8d5802980..96501ff0e55b 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_connectors.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_connectors.c | |||
@@ -729,9 +729,11 @@ amdgpu_connector_lvds_detect(struct drm_connector *connector, bool force) | |||
729 | enum drm_connector_status ret = connector_status_disconnected; | 729 | enum drm_connector_status ret = connector_status_disconnected; |
730 | int r; | 730 | int r; |
731 | 731 | ||
732 | r = pm_runtime_get_sync(connector->dev->dev); | 732 | if (!drm_kms_helper_is_poll_worker()) { |
733 | if (r < 0) | 733 | r = pm_runtime_get_sync(connector->dev->dev); |
734 | return connector_status_disconnected; | 734 | if (r < 0) |
735 | return connector_status_disconnected; | ||
736 | } | ||
735 | 737 | ||
736 | if (encoder) { | 738 | if (encoder) { |
737 | struct amdgpu_encoder *amdgpu_encoder = to_amdgpu_encoder(encoder); | 739 | struct amdgpu_encoder *amdgpu_encoder = to_amdgpu_encoder(encoder); |
@@ -750,8 +752,12 @@ amdgpu_connector_lvds_detect(struct drm_connector *connector, bool force) | |||
750 | /* check acpi lid status ??? */ | 752 | /* check acpi lid status ??? */ |
751 | 753 | ||
752 | amdgpu_connector_update_scratch_regs(connector, ret); | 754 | amdgpu_connector_update_scratch_regs(connector, ret); |
753 | pm_runtime_mark_last_busy(connector->dev->dev); | 755 | |
754 | pm_runtime_put_autosuspend(connector->dev->dev); | 756 | if (!drm_kms_helper_is_poll_worker()) { |
757 | pm_runtime_mark_last_busy(connector->dev->dev); | ||
758 | pm_runtime_put_autosuspend(connector->dev->dev); | ||
759 | } | ||
760 | |||
755 | return ret; | 761 | return ret; |
756 | } | 762 | } |
757 | 763 | ||
@@ -861,9 +867,11 @@ amdgpu_connector_vga_detect(struct drm_connector *connector, bool force) | |||
861 | enum drm_connector_status ret = connector_status_disconnected; | 867 | enum drm_connector_status ret = connector_status_disconnected; |
862 | int r; | 868 | int r; |
863 | 869 | ||
864 | r = pm_runtime_get_sync(connector->dev->dev); | 870 | if (!drm_kms_helper_is_poll_worker()) { |
865 | if (r < 0) | 871 | r = pm_runtime_get_sync(connector->dev->dev); |
866 | return connector_status_disconnected; | 872 | if (r < 0) |
873 | return connector_status_disconnected; | ||
874 | } | ||
867 | 875 | ||
868 | encoder = amdgpu_connector_best_single_encoder(connector); | 876 | encoder = amdgpu_connector_best_single_encoder(connector); |
869 | if (!encoder) | 877 | if (!encoder) |
@@ -917,8 +925,10 @@ amdgpu_connector_vga_detect(struct drm_connector *connector, bool force) | |||
917 | amdgpu_connector_update_scratch_regs(connector, ret); | 925 | amdgpu_connector_update_scratch_regs(connector, ret); |
918 | 926 | ||
919 | out: | 927 | out: |
920 | pm_runtime_mark_last_busy(connector->dev->dev); | 928 | if (!drm_kms_helper_is_poll_worker()) { |
921 | pm_runtime_put_autosuspend(connector->dev->dev); | 929 | pm_runtime_mark_last_busy(connector->dev->dev); |
930 | pm_runtime_put_autosuspend(connector->dev->dev); | ||
931 | } | ||
922 | 932 | ||
923 | return ret; | 933 | return ret; |
924 | } | 934 | } |
@@ -981,9 +991,11 @@ amdgpu_connector_dvi_detect(struct drm_connector *connector, bool force) | |||
981 | enum drm_connector_status ret = connector_status_disconnected; | 991 | enum drm_connector_status ret = connector_status_disconnected; |
982 | bool dret = false, broken_edid = false; | 992 | bool dret = false, broken_edid = false; |
983 | 993 | ||
984 | r = pm_runtime_get_sync(connector->dev->dev); | 994 | if (!drm_kms_helper_is_poll_worker()) { |
985 | if (r < 0) | 995 | r = pm_runtime_get_sync(connector->dev->dev); |
986 | return connector_status_disconnected; | 996 | if (r < 0) |
997 | return connector_status_disconnected; | ||
998 | } | ||
987 | 999 | ||
988 | if (!force && amdgpu_connector_check_hpd_status_unchanged(connector)) { | 1000 | if (!force && amdgpu_connector_check_hpd_status_unchanged(connector)) { |
989 | ret = connector->status; | 1001 | ret = connector->status; |
@@ -1108,8 +1120,10 @@ out: | |||
1108 | amdgpu_connector_update_scratch_regs(connector, ret); | 1120 | amdgpu_connector_update_scratch_regs(connector, ret); |
1109 | 1121 | ||
1110 | exit: | 1122 | exit: |
1111 | pm_runtime_mark_last_busy(connector->dev->dev); | 1123 | if (!drm_kms_helper_is_poll_worker()) { |
1112 | pm_runtime_put_autosuspend(connector->dev->dev); | 1124 | pm_runtime_mark_last_busy(connector->dev->dev); |
1125 | pm_runtime_put_autosuspend(connector->dev->dev); | ||
1126 | } | ||
1113 | 1127 | ||
1114 | return ret; | 1128 | return ret; |
1115 | } | 1129 | } |
@@ -1352,9 +1366,11 @@ amdgpu_connector_dp_detect(struct drm_connector *connector, bool force) | |||
1352 | struct drm_encoder *encoder = amdgpu_connector_best_single_encoder(connector); | 1366 | struct drm_encoder *encoder = amdgpu_connector_best_single_encoder(connector); |
1353 | int r; | 1367 | int r; |
1354 | 1368 | ||
1355 | r = pm_runtime_get_sync(connector->dev->dev); | 1369 | if (!drm_kms_helper_is_poll_worker()) { |
1356 | if (r < 0) | 1370 | r = pm_runtime_get_sync(connector->dev->dev); |
1357 | return connector_status_disconnected; | 1371 | if (r < 0) |
1372 | return connector_status_disconnected; | ||
1373 | } | ||
1358 | 1374 | ||
1359 | if (!force && amdgpu_connector_check_hpd_status_unchanged(connector)) { | 1375 | if (!force && amdgpu_connector_check_hpd_status_unchanged(connector)) { |
1360 | ret = connector->status; | 1376 | ret = connector->status; |
@@ -1424,8 +1440,10 @@ amdgpu_connector_dp_detect(struct drm_connector *connector, bool force) | |||
1424 | 1440 | ||
1425 | amdgpu_connector_update_scratch_regs(connector, ret); | 1441 | amdgpu_connector_update_scratch_regs(connector, ret); |
1426 | out: | 1442 | out: |
1427 | pm_runtime_mark_last_busy(connector->dev->dev); | 1443 | if (!drm_kms_helper_is_poll_worker()) { |
1428 | pm_runtime_put_autosuspend(connector->dev->dev); | 1444 | pm_runtime_mark_last_busy(connector->dev->dev); |
1445 | pm_runtime_put_autosuspend(connector->dev->dev); | ||
1446 | } | ||
1429 | 1447 | ||
1430 | return ret; | 1448 | return ret; |
1431 | } | 1449 | } |