Skip to content

Commit 3a3371f

Browse files
Ander Conselvan de Oliveiradanvet
authored andcommitted
drm/i915: Add a for_each_intel_connector macro
We have similar macros for crtcs and encoders, and the pattern happens often enough to justify the macro. Signed-off-by: Ander Conselvan de Oliveira <ander.conselvan.de.oliveira@intel.com> Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
1 parent a91572f commit 3a3371f

File tree

4 files changed

+27
-41
lines changed

4 files changed

+27
-41
lines changed

drivers/gpu/drm/i915/i915_debugfs.c

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2308,8 +2308,7 @@ static int i915_sink_crc(struct seq_file *m, void *data)
23082308
u8 crc[6];
23092309

23102310
drm_modeset_lock_all(dev);
2311-
list_for_each_entry(connector, &dev->mode_config.connector_list,
2312-
base.head) {
2311+
for_each_intel_encoder(dev, connector) {
23132312

23142313
if (connector->base.dpms != DRM_MODE_DPMS_ON)
23152314
continue;

drivers/gpu/drm/i915/i915_drv.h

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -243,6 +243,12 @@ enum hpd_pin {
243243
&(dev)->mode_config.encoder_list, \
244244
base.head)
245245

246+
#define for_each_intel_connector(dev, intel_connector) \
247+
list_for_each_entry(intel_connector, \
248+
&dev->mode_config.connector_list, \
249+
base.head)
250+
251+
246252
#define for_each_encoder_on_crtc(dev, __crtc, intel_encoder) \
247253
list_for_each_entry((intel_encoder), &(dev)->mode_config.encoder_list, base.head) \
248254
if ((intel_encoder)->base.crtc == (__crtc))

drivers/gpu/drm/i915/intel_display.c

Lines changed: 18 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -10014,8 +10014,7 @@ static void intel_modeset_update_staged_output_state(struct drm_device *dev)
1001410014
struct intel_encoder *encoder;
1001510015
struct intel_connector *connector;
1001610016

10017-
list_for_each_entry(connector, &dev->mode_config.connector_list,
10018-
base.head) {
10017+
for_each_intel_connector(dev, connector) {
1001910018
connector->new_encoder =
1002010019
to_intel_encoder(connector->base.encoder);
1002110020
}
@@ -10046,8 +10045,7 @@ static void intel_modeset_commit_output_state(struct drm_device *dev)
1004610045
struct intel_encoder *encoder;
1004710046
struct intel_connector *connector;
1004810047

10049-
list_for_each_entry(connector, &dev->mode_config.connector_list,
10050-
base.head) {
10048+
for_each_intel_connector(dev, connector) {
1005110049
connector->base.encoder = &connector->new_encoder->base;
1005210050
}
1005310051

@@ -10135,8 +10133,7 @@ compute_baseline_pipe_bpp(struct intel_crtc *crtc,
1013510133
pipe_config->pipe_bpp = bpp;
1013610134

1013710135
/* Clamp display bpp to EDID value */
10138-
list_for_each_entry(connector, &dev->mode_config.connector_list,
10139-
base.head) {
10136+
for_each_intel_connector(dev, connector) {
1014010137
if (!connector->new_encoder ||
1014110138
connector->new_encoder->new_crtc != crtc)
1014210139
continue;
@@ -10263,8 +10260,7 @@ static bool check_digital_port_conflicts(struct drm_device *dev)
1026310260
* list to detect the problem on ddi platforms
1026410261
* where there's just one encoder per digital port.
1026510262
*/
10266-
list_for_each_entry(connector,
10267-
&dev->mode_config.connector_list, base.head) {
10263+
for_each_intel_connector(dev, connector) {
1026810264
struct intel_encoder *encoder = connector->new_encoder;
1026910265

1027010266
if (!encoder)
@@ -10437,8 +10433,7 @@ intel_modeset_affected_pipes(struct drm_crtc *crtc, unsigned *modeset_pipes,
1043710433
* to be part of the prepare_pipes mask. We don't (yet) support global
1043810434
* modeset across multiple crtcs, so modeset_pipes will only have one
1043910435
* bit set at most. */
10440-
list_for_each_entry(connector, &dev->mode_config.connector_list,
10441-
base.head) {
10436+
for_each_intel_connector(dev, connector) {
1044210437
if (connector->base.encoder == &connector->new_encoder->base)
1044310438
continue;
1044410439

@@ -10841,8 +10836,7 @@ check_connector_state(struct drm_device *dev)
1084110836
{
1084210837
struct intel_connector *connector;
1084310838

10844-
list_for_each_entry(connector, &dev->mode_config.connector_list,
10845-
base.head) {
10839+
for_each_intel_connector(dev, connector) {
1084610840
/* This also checks the encoder/connector hw state with the
1084710841
* ->get_hw_state callbacks. */
1084810842
intel_connector_check_state(connector);
@@ -10872,8 +10866,7 @@ check_encoder_state(struct drm_device *dev)
1087210866
I915_STATE_WARN(encoder->connectors_active && !encoder->base.crtc,
1087310867
"encoder's active_connectors set, but no crtc\n");
1087410868

10875-
list_for_each_entry(connector, &dev->mode_config.connector_list,
10876-
base.head) {
10869+
for_each_intel_connector(dev, connector) {
1087710870
if (connector->base.encoder != &encoder->base)
1087810871
continue;
1087910872
enabled = true;
@@ -11394,7 +11387,7 @@ static void intel_set_config_restore_state(struct drm_device *dev,
1139411387
}
1139511388

1139611389
count = 0;
11397-
list_for_each_entry(connector, &dev->mode_config.connector_list, base.head) {
11390+
for_each_intel_connector(dev, connector) {
1139811391
connector->new_encoder =
1139911392
to_intel_encoder(config->save_connector_encoders[count++]);
1140011393
}
@@ -11486,8 +11479,7 @@ intel_modeset_stage_output_state(struct drm_device *dev,
1148611479
WARN_ON(!set->fb && (set->num_connectors != 0));
1148711480
WARN_ON(set->fb && (set->num_connectors == 0));
1148811481

11489-
list_for_each_entry(connector, &dev->mode_config.connector_list,
11490-
base.head) {
11482+
for_each_intel_connector(dev, connector) {
1149111483
/* Otherwise traverse passed in connector list and get encoders
1149211484
* for them. */
1149311485
for (ro = 0; ro < set->num_connectors; ro++) {
@@ -11519,8 +11511,7 @@ intel_modeset_stage_output_state(struct drm_device *dev,
1151911511
/* connector->new_encoder is now updated for all connectors. */
1152011512

1152111513
/* Update crtc of enabled connectors. */
11522-
list_for_each_entry(connector, &dev->mode_config.connector_list,
11523-
base.head) {
11514+
for_each_intel_connector(dev, connector) {
1152411515
struct drm_crtc *new_crtc;
1152511516

1152611517
if (!connector->new_encoder)
@@ -11549,9 +11540,7 @@ intel_modeset_stage_output_state(struct drm_device *dev,
1154911540
/* Check for any encoders that needs to be disabled. */
1155011541
for_each_intel_encoder(dev, encoder) {
1155111542
int num_connectors = 0;
11552-
list_for_each_entry(connector,
11553-
&dev->mode_config.connector_list,
11554-
base.head) {
11543+
for_each_intel_connector(dev, connector) {
1155511544
if (connector->new_encoder == encoder) {
1155611545
WARN_ON(!connector->new_encoder->new_crtc);
1155711546
num_connectors++;
@@ -11571,8 +11560,7 @@ intel_modeset_stage_output_state(struct drm_device *dev,
1157111560
}
1157211561
}
1157311562
/* Now we've also updated encoder->new_crtc for all encoders. */
11574-
list_for_each_entry(connector, &dev->mode_config.connector_list,
11575-
base.head) {
11563+
for_each_intel_connector(dev, connector) {
1157611564
if (connector->new_encoder)
1157711565
if (connector->new_encoder != connector->encoder)
1157811566
connector->encoder = connector->new_encoder;
@@ -11611,7 +11599,7 @@ static void disable_crtc_nofb(struct intel_crtc *crtc)
1161111599
DRM_DEBUG_KMS("Trying to restore without FB -> disabling pipe %c\n",
1161211600
pipe_name(crtc->pipe));
1161311601

11614-
list_for_each_entry(connector, &dev->mode_config.connector_list, base.head) {
11602+
for_each_intel_connector(dev, connector) {
1161511603
if (connector->new_encoder &&
1161611604
connector->new_encoder->new_crtc == crtc)
1161711605
connector->new_encoder = NULL;
@@ -13419,9 +13407,7 @@ static void intel_enable_pipe_a(struct drm_device *dev)
1341913407
/* We can't just switch on the pipe A, we need to set things up with a
1342013408
* proper mode and output configuration. As a gross hack, enable pipe A
1342113409
* by enabling the load detect pipe once. */
13422-
list_for_each_entry(connector,
13423-
&dev->mode_config.connector_list,
13424-
base.head) {
13410+
for_each_intel_connector(dev, connector) {
1342513411
if (connector->encoder->type == INTEL_OUTPUT_ANALOG) {
1342613412
crt = &connector->base;
1342713413
break;
@@ -13492,8 +13478,7 @@ static void intel_sanitize_crtc(struct intel_crtc *crtc)
1349213478
crtc->plane = plane;
1349313479

1349413480
/* ... and break all links. */
13495-
list_for_each_entry(connector, &dev->mode_config.connector_list,
13496-
base.head) {
13481+
for_each_intel_connector(dev, connector) {
1349713482
if (connector->encoder->base.crtc != &crtc->base)
1349813483
continue;
1349913484

@@ -13502,8 +13487,7 @@ static void intel_sanitize_crtc(struct intel_crtc *crtc)
1350213487
}
1350313488
/* multiple connectors may have the same encoder:
1350413489
* handle them and break crtc link separately */
13505-
list_for_each_entry(connector, &dev->mode_config.connector_list,
13506-
base.head)
13490+
for_each_intel_connector(dev, connector)
1350713491
if (connector->encoder->base.crtc == &crtc->base) {
1350813492
connector->encoder->base.crtc = NULL;
1350913493
connector->encoder->connectors_active = false;
@@ -13607,9 +13591,7 @@ static void intel_sanitize_encoder(struct intel_encoder *encoder)
1360713591
* a bug in one of the get_hw_state functions. Or someplace else
1360813592
* in our code, like the register restore mess on resume. Clamp
1360913593
* things to off as a safer default. */
13610-
list_for_each_entry(connector,
13611-
&dev->mode_config.connector_list,
13612-
base.head) {
13594+
for_each_intel_connector(dev, connector) {
1361313595
if (connector->encoder != encoder)
1361413596
continue;
1361513597
connector->base.dpms = DRM_MODE_DPMS_OFF;
@@ -13724,8 +13706,7 @@ static void intel_modeset_readout_hw_state(struct drm_device *dev)
1372413706
pipe_name(pipe));
1372513707
}
1372613708

13727-
list_for_each_entry(connector, &dev->mode_config.connector_list,
13728-
base.head) {
13709+
for_each_intel_connector(dev, connector) {
1372913710
if (connector->get_hw_state(connector)) {
1373013711
connector->base.dpms = DRM_MODE_DPMS_ON;
1373113712
connector->encoder->connectors_active = true;

drivers/gpu/drm/i915/intel_dp_mst.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@ static bool intel_dp_mst_compute_config(struct intel_encoder *encoder,
5858
pipe_config->pipe_bpp = 24;
5959
pipe_config->port_clock = drm_dp_bw_code_to_link_rate(intel_dp->link_bw);
6060

61-
list_for_each_entry(intel_connector, &dev->mode_config.connector_list, base.head) {
61+
for_each_intel_connector(dev, intel_connector) {
6262
if (intel_connector->new_encoder == encoder) {
6363
found = intel_connector;
6464
break;
@@ -140,7 +140,7 @@ static void intel_mst_pre_enable_dp(struct intel_encoder *encoder)
140140
struct drm_crtc *crtc = encoder->base.crtc;
141141
struct intel_crtc *intel_crtc = to_intel_crtc(crtc);
142142

143-
list_for_each_entry(intel_connector, &dev->mode_config.connector_list, base.head) {
143+
for_each_intel_connector(dev, intel_connector) {
144144
if (intel_connector->new_encoder == encoder) {
145145
found = intel_connector;
146146
break;

0 commit comments

Comments
 (0)