drm/i915: use for_each_intel_connector_iter in intel_display.c

This gets rid of the last users of for_each_intel_connector(), remove
that too.

At first I wasn't sure whether the 2 loops in the modeset state
checker should instead only loop over the connectors in the atomic
commit. But we never add connectors to an atomic update if they don't
(or won't have) a CRTC assigned, which means there'd be a gap in check
coverage. Hence loop over everything on those too.

v2: Rebase onto the iter_get/put->iter_begin/end rename.

Cc: Thierry Reding <thierry.reding@gmail.com>
Cc: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
Reviewed-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
Signed-off-by: Daniel Vetter <daniel.vetter@intel.com>
Link: http://patchwork.freedesktop.org/patch/msgid/20170301095226.30584-5-daniel.vetter@ffwll.ch
This commit is contained in:
Daniel Vetter 2017-03-01 10:52:25 +01:00
parent 51ec53da40
commit f9e905cabd
2 changed files with 16 additions and 9 deletions

View File

@ -489,11 +489,6 @@ struct i915_hotplug {
&(dev)->mode_config.encoder_list, \ &(dev)->mode_config.encoder_list, \
base.head) base.head)
#define for_each_intel_connector(dev, intel_connector) \
list_for_each_entry(intel_connector, \
&(dev)->mode_config.connector_list, \
base.head)
#define for_each_intel_connector_iter(intel_connector, iter) \ #define for_each_intel_connector_iter(intel_connector, iter) \
while ((intel_connector = to_intel_connector(drm_connector_list_iter_next(iter)))) while ((intel_connector = to_intel_connector(drm_connector_list_iter_next(iter))))

View File

@ -10979,8 +10979,10 @@ static const struct drm_crtc_helper_funcs intel_helper_funcs = {
static void intel_modeset_update_connector_atomic_state(struct drm_device *dev) static void intel_modeset_update_connector_atomic_state(struct drm_device *dev)
{ {
struct intel_connector *connector; struct intel_connector *connector;
struct drm_connector_list_iter conn_iter;
for_each_intel_connector(dev, connector) { drm_connector_list_iter_begin(dev, &conn_iter);
for_each_intel_connector_iter(connector, &conn_iter) {
if (connector->base.state->crtc) if (connector->base.state->crtc)
drm_connector_unreference(&connector->base); drm_connector_unreference(&connector->base);
@ -10996,6 +10998,7 @@ static void intel_modeset_update_connector_atomic_state(struct drm_device *dev)
connector->base.state->crtc = NULL; connector->base.state->crtc = NULL;
} }
} }
drm_connector_list_iter_end(&conn_iter);
} }
static void static void
@ -11908,6 +11911,7 @@ verify_encoder_state(struct drm_device *dev)
{ {
struct intel_encoder *encoder; struct intel_encoder *encoder;
struct intel_connector *connector; struct intel_connector *connector;
struct drm_connector_list_iter conn_iter;
for_each_intel_encoder(dev, encoder) { for_each_intel_encoder(dev, encoder) {
bool enabled = false; bool enabled = false;
@ -11917,7 +11921,8 @@ verify_encoder_state(struct drm_device *dev)
encoder->base.base.id, encoder->base.base.id,
encoder->base.name); encoder->base.name);
for_each_intel_connector(dev, connector) { drm_connector_list_iter_begin(dev, &conn_iter);
for_each_intel_connector_iter(connector, &conn_iter) {
if (connector->base.state->best_encoder != &encoder->base) if (connector->base.state->best_encoder != &encoder->base)
continue; continue;
enabled = true; enabled = true;
@ -11926,6 +11931,7 @@ verify_encoder_state(struct drm_device *dev)
encoder->base.crtc, encoder->base.crtc,
"connector's crtc doesn't match encoder crtc\n"); "connector's crtc doesn't match encoder crtc\n");
} }
drm_connector_list_iter_end(&conn_iter);
I915_STATE_WARN(!!encoder->base.crtc != enabled, I915_STATE_WARN(!!encoder->base.crtc != enabled,
"encoder's enabled state mismatch " "encoder's enabled state mismatch "
@ -15030,6 +15036,7 @@ int intel_modeset_init(struct drm_device *dev)
static void intel_enable_pipe_a(struct drm_device *dev) static void intel_enable_pipe_a(struct drm_device *dev)
{ {
struct intel_connector *connector; struct intel_connector *connector;
struct drm_connector_list_iter conn_iter;
struct drm_connector *crt = NULL; struct drm_connector *crt = NULL;
struct intel_load_detect_pipe load_detect_temp; struct intel_load_detect_pipe load_detect_temp;
struct drm_modeset_acquire_ctx *ctx = dev->mode_config.acquire_ctx; struct drm_modeset_acquire_ctx *ctx = dev->mode_config.acquire_ctx;
@ -15037,12 +15044,14 @@ static void intel_enable_pipe_a(struct drm_device *dev)
/* We can't just switch on the pipe A, we need to set things up with a /* We can't just switch on the pipe A, we need to set things up with a
* proper mode and output configuration. As a gross hack, enable pipe A * proper mode and output configuration. As a gross hack, enable pipe A
* by enabling the load detect pipe once. */ * by enabling the load detect pipe once. */
for_each_intel_connector(dev, connector) { drm_connector_list_iter_begin(dev, &conn_iter);
for_each_intel_connector_iter(connector, &conn_iter) {
if (connector->encoder->type == INTEL_OUTPUT_ANALOG) { if (connector->encoder->type == INTEL_OUTPUT_ANALOG) {
crt = &connector->base; crt = &connector->base;
break; break;
} }
} }
drm_connector_list_iter_end(&conn_iter);
if (!crt) if (!crt)
return; return;
@ -15288,6 +15297,7 @@ static void intel_modeset_readout_hw_state(struct drm_device *dev)
struct intel_crtc *crtc; struct intel_crtc *crtc;
struct intel_encoder *encoder; struct intel_encoder *encoder;
struct intel_connector *connector; struct intel_connector *connector;
struct drm_connector_list_iter conn_iter;
int i; int i;
dev_priv->active_crtcs = 0; dev_priv->active_crtcs = 0;
@ -15358,7 +15368,8 @@ static void intel_modeset_readout_hw_state(struct drm_device *dev)
pipe_name(pipe)); pipe_name(pipe));
} }
for_each_intel_connector(dev, connector) { drm_connector_list_iter_begin(dev, &conn_iter);
for_each_intel_connector_iter(connector, &conn_iter) {
if (connector->get_hw_state(connector)) { if (connector->get_hw_state(connector)) {
connector->base.dpms = DRM_MODE_DPMS_ON; connector->base.dpms = DRM_MODE_DPMS_ON;
@ -15386,6 +15397,7 @@ static void intel_modeset_readout_hw_state(struct drm_device *dev)
connector->base.base.id, connector->base.name, connector->base.base.id, connector->base.name,
enableddisabled(connector->base.encoder)); enableddisabled(connector->base.encoder));
} }
drm_connector_list_iter_end(&conn_iter);
for_each_intel_crtc(dev, crtc) { for_each_intel_crtc(dev, crtc) {
struct intel_crtc_state *crtc_state = struct intel_crtc_state *crtc_state =