hc
2023-12-11 d2ccde1c8e90d38cee87a1b0309ad2827f3fd30d
kernel/drivers/gpu/drm/amd/amdgpu/amdgpu_encoders.c
....@@ -23,25 +23,28 @@
2323 * Authors: Dave Airlie
2424 * Alex Deucher
2525 */
26
-#include <drm/drmP.h>
26
+
2727 #include <drm/drm_crtc_helper.h>
2828 #include <drm/amdgpu_drm.h>
2929 #include "amdgpu.h"
3030 #include "amdgpu_connectors.h"
31
+#include "amdgpu_display.h"
3132 #include "atom.h"
3233 #include "atombios_encoders.h"
3334
3435 void
3536 amdgpu_link_encoder_connector(struct drm_device *dev)
3637 {
37
- struct amdgpu_device *adev = dev->dev_private;
38
+ struct amdgpu_device *adev = drm_to_adev(dev);
3839 struct drm_connector *connector;
40
+ struct drm_connector_list_iter iter;
3941 struct amdgpu_connector *amdgpu_connector;
4042 struct drm_encoder *encoder;
4143 struct amdgpu_encoder *amdgpu_encoder;
4244
45
+ drm_connector_list_iter_begin(dev, &iter);
4346 /* walk the list and link encoders to connectors */
44
- list_for_each_entry(connector, &dev->mode_config.connector_list, head) {
47
+ drm_for_each_connector_iter(connector, &iter) {
4548 amdgpu_connector = to_amdgpu_connector(connector);
4649 list_for_each_entry(encoder, &dev->mode_config.encoder_list, head) {
4750 amdgpu_encoder = to_amdgpu_encoder(encoder);
....@@ -54,6 +57,7 @@
5457 }
5558 }
5659 }
60
+ drm_connector_list_iter_end(&iter);
5761 }
5862
5963 void amdgpu_encoder_set_active_device(struct drm_encoder *encoder)
....@@ -61,8 +65,10 @@
6165 struct drm_device *dev = encoder->dev;
6266 struct amdgpu_encoder *amdgpu_encoder = to_amdgpu_encoder(encoder);
6367 struct drm_connector *connector;
68
+ struct drm_connector_list_iter iter;
6469
65
- list_for_each_entry(connector, &dev->mode_config.connector_list, head) {
70
+ drm_connector_list_iter_begin(dev, &iter);
71
+ drm_for_each_connector_iter(connector, &iter) {
6672 if (connector->encoder == encoder) {
6773 struct amdgpu_connector *amdgpu_connector = to_amdgpu_connector(connector);
6874 amdgpu_encoder->active_device = amdgpu_encoder->devices & amdgpu_connector->devices;
....@@ -71,6 +77,7 @@
7177 amdgpu_connector->devices, encoder->encoder_type);
7278 }
7379 }
80
+ drm_connector_list_iter_end(&iter);
7481 }
7582
7683 struct drm_connector *
....@@ -78,15 +85,20 @@
7885 {
7986 struct drm_device *dev = encoder->dev;
8087 struct amdgpu_encoder *amdgpu_encoder = to_amdgpu_encoder(encoder);
81
- struct drm_connector *connector;
88
+ struct drm_connector *connector, *found = NULL;
89
+ struct drm_connector_list_iter iter;
8290 struct amdgpu_connector *amdgpu_connector;
8391
84
- list_for_each_entry(connector, &dev->mode_config.connector_list, head) {
92
+ drm_connector_list_iter_begin(dev, &iter);
93
+ drm_for_each_connector_iter(connector, &iter) {
8594 amdgpu_connector = to_amdgpu_connector(connector);
86
- if (amdgpu_encoder->active_device & amdgpu_connector->devices)
87
- return connector;
95
+ if (amdgpu_encoder->active_device & amdgpu_connector->devices) {
96
+ found = connector;
97
+ break;
98
+ }
8899 }
89
- return NULL;
100
+ drm_connector_list_iter_end(&iter);
101
+ return found;
90102 }
91103
92104 struct drm_connector *
....@@ -94,15 +106,20 @@
94106 {
95107 struct drm_device *dev = encoder->dev;
96108 struct amdgpu_encoder *amdgpu_encoder = to_amdgpu_encoder(encoder);
97
- struct drm_connector *connector;
109
+ struct drm_connector *connector, *found = NULL;
110
+ struct drm_connector_list_iter iter;
98111 struct amdgpu_connector *amdgpu_connector;
99112
100
- list_for_each_entry(connector, &dev->mode_config.connector_list, head) {
113
+ drm_connector_list_iter_begin(dev, &iter);
114
+ drm_for_each_connector_iter(connector, &iter) {
101115 amdgpu_connector = to_amdgpu_connector(connector);
102
- if (amdgpu_encoder->devices & amdgpu_connector->devices)
103
- return connector;
116
+ if (amdgpu_encoder->devices & amdgpu_connector->devices) {
117
+ found = connector;
118
+ break;
119
+ }
104120 }
105
- return NULL;
121
+ drm_connector_list_iter_end(&iter);
122
+ return found;
106123 }
107124
108125 struct drm_encoder *amdgpu_get_external_encoder(struct drm_encoder *encoder)