Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit b982dab1 authored by Thierry Reding's avatar Thierry Reding
Browse files

drm: Rename connector list iterator API



Currently the functions that initialize and tear down a connector
iterator use the _get() and _put() suffixes. However, these suffixes
are typically used by reference counting functions.

Make these function names a little more consistent by changing the
suffixes to _begin() and _end(), which is a fairly common pattern in
the rest of the Linux kernel.

Suggested-by: default avatarJani Nikula <jani.nikula@linux.intel.com>
Signed-off-by: default avatarThierry Reding <treding@nvidia.com>
Link: http://patchwork.freedesktop.org/patch/msgid/20170228144643.5668-8-thierry.reding@gmail.com
parent 6472e509
Loading
Loading
Loading
Loading
+5 −5
Original line number Diff line number Diff line
@@ -1449,18 +1449,18 @@ drm_atomic_add_affected_connectors(struct drm_atomic_state *state,
	 * Changed connectors are already in @state, so only need to look
	 * at the connector_mask in crtc_state.
	 */
	drm_connector_list_iter_get(state->dev, &conn_iter);
	drm_connector_list_iter_begin(state->dev, &conn_iter);
	drm_for_each_connector_iter(connector, &conn_iter) {
		if (!(crtc_state->connector_mask & (1 << drm_connector_index(connector))))
			continue;

		conn_state = drm_atomic_get_connector_state(state, connector);
		if (IS_ERR(conn_state)) {
			drm_connector_list_iter_put(&conn_iter);
			drm_connector_list_iter_end(&conn_iter);
			return PTR_ERR(conn_state);
		}
	}
	drm_connector_list_iter_put(&conn_iter);
	drm_connector_list_iter_end(&conn_iter);

	return 0;
}
@@ -1722,10 +1722,10 @@ void drm_state_dump(struct drm_device *dev, struct drm_printer *p)
	list_for_each_entry(crtc, &config->crtc_list, head)
		drm_atomic_crtc_print_state(p, crtc->state);

	drm_connector_list_iter_get(dev, &conn_iter);
	drm_connector_list_iter_begin(dev, &conn_iter);
	drm_for_each_connector_iter(connector, &conn_iter)
		drm_atomic_connector_print_state(p, connector->state);
	drm_connector_list_iter_put(&conn_iter);
	drm_connector_list_iter_end(&conn_iter);
}
EXPORT_SYMBOL(drm_state_dump);

+7 −7
Original line number Diff line number Diff line
@@ -145,7 +145,7 @@ static int handle_conflicting_encoders(struct drm_atomic_state *state,
	 * and the crtc is disabled if no encoder is left. This preserves
	 * compatibility with the legacy set_config behavior.
	 */
	drm_connector_list_iter_get(state->dev, &conn_iter);
	drm_connector_list_iter_begin(state->dev, &conn_iter);
	drm_for_each_connector_iter(connector, &conn_iter) {
		struct drm_crtc_state *crtc_state;

@@ -193,7 +193,7 @@ static int handle_conflicting_encoders(struct drm_atomic_state *state,
		}
	}
out:
	drm_connector_list_iter_put(&conn_iter);
	drm_connector_list_iter_end(&conn_iter);

	return ret;
}
@@ -3018,7 +3018,7 @@ int drm_atomic_helper_connector_dpms(struct drm_connector *connector,

	WARN_ON(!drm_modeset_is_locked(&config->connection_mutex));

	drm_connector_list_iter_get(connector->dev, &conn_iter);
	drm_connector_list_iter_begin(connector->dev, &conn_iter);
	drm_for_each_connector_iter(tmp_connector, &conn_iter) {
		if (tmp_connector->state->crtc != crtc)
			continue;
@@ -3028,7 +3028,7 @@ int drm_atomic_helper_connector_dpms(struct drm_connector *connector,
			break;
		}
	}
	drm_connector_list_iter_put(&conn_iter);
	drm_connector_list_iter_end(&conn_iter);
	crtc_state->active = active;

	ret = drm_atomic_commit(state);
@@ -3439,18 +3439,18 @@ drm_atomic_helper_duplicate_state(struct drm_device *dev,
		}
	}

	drm_connector_list_iter_get(dev, &conn_iter);
	drm_connector_list_iter_begin(dev, &conn_iter);
	drm_for_each_connector_iter(conn, &conn_iter) {
		struct drm_connector_state *conn_state;

		conn_state = drm_atomic_get_connector_state(state, conn);
		if (IS_ERR(conn_state)) {
			err = PTR_ERR(conn_state);
			drm_connector_list_iter_put(&conn_iter);
			drm_connector_list_iter_end(&conn_iter);
			goto free;
		}
	}
	drm_connector_list_iter_put(&conn_iter);
	drm_connector_list_iter_end(&conn_iter);

	/* clear the acquire context so that it isn't accidentally reused */
	state->acquire_ctx = NULL;
+12 −12
Original line number Diff line number Diff line
@@ -435,10 +435,10 @@ void drm_connector_unregister_all(struct drm_device *dev)
	struct drm_connector *connector;
	struct drm_connector_list_iter conn_iter;

	drm_connector_list_iter_get(dev, &conn_iter);
	drm_connector_list_iter_begin(dev, &conn_iter);
	drm_for_each_connector_iter(connector, &conn_iter)
		drm_connector_unregister(connector);
	drm_connector_list_iter_put(&conn_iter);
	drm_connector_list_iter_end(&conn_iter);
}

int drm_connector_register_all(struct drm_device *dev)
@@ -447,13 +447,13 @@ int drm_connector_register_all(struct drm_device *dev)
	struct drm_connector_list_iter conn_iter;
	int ret = 0;

	drm_connector_list_iter_get(dev, &conn_iter);
	drm_connector_list_iter_begin(dev, &conn_iter);
	drm_for_each_connector_iter(connector, &conn_iter) {
		ret = drm_connector_register(connector);
		if (ret)
			break;
	}
	drm_connector_list_iter_put(&conn_iter);
	drm_connector_list_iter_end(&conn_iter);

	if (ret)
		drm_connector_unregister_all(dev);
@@ -507,23 +507,23 @@ static struct lockdep_map connector_list_iter_dep_map = {
#endif

/**
 * drm_connector_list_iter_get - initialize a connector_list iterator
 * drm_connector_list_iter_begin - initialize a connector_list iterator
 * @dev: DRM device
 * @iter: connector_list iterator
 *
 * Sets @iter up to walk the &drm_mode_config.connector_list of @dev. @iter
 * must always be cleaned up again by calling drm_connector_list_iter_put().
 * must always be cleaned up again by calling drm_connector_list_iter_end().
 * Iteration itself happens using drm_connector_list_iter_next() or
 * drm_for_each_connector_iter().
 */
void drm_connector_list_iter_get(struct drm_device *dev,
void drm_connector_list_iter_begin(struct drm_device *dev,
				   struct drm_connector_list_iter *iter)
{
	iter->dev = dev;
	iter->conn = NULL;
	lock_acquire_shared_recursive(&connector_list_iter_dep_map, 0, 1, NULL, _RET_IP_);
}
EXPORT_SYMBOL(drm_connector_list_iter_get);
EXPORT_SYMBOL(drm_connector_list_iter_begin);

/**
 * drm_connector_list_iter_next - return next connector
@@ -564,7 +564,7 @@ drm_connector_list_iter_next(struct drm_connector_list_iter *iter)
EXPORT_SYMBOL(drm_connector_list_iter_next);

/**
 * drm_connector_list_iter_put - tear down a connector_list iterator
 * drm_connector_list_iter_end - tear down a connector_list iterator
 * @iter: connector_list iterator
 *
 * Tears down @iter and releases any resources (like &drm_connector references)
@@ -572,14 +572,14 @@ EXPORT_SYMBOL(drm_connector_list_iter_next);
 * iteration completes fully or when it was aborted without walking the entire
 * list.
 */
void drm_connector_list_iter_put(struct drm_connector_list_iter *iter)
void drm_connector_list_iter_end(struct drm_connector_list_iter *iter)
{
	iter->dev = NULL;
	if (iter->conn)
		drm_connector_put(iter->conn);
	lock_release(&connector_list_iter_dep_map, 0, _RET_IP_);
}
EXPORT_SYMBOL(drm_connector_list_iter_put);
EXPORT_SYMBOL(drm_connector_list_iter_end);

static const struct drm_prop_enum_list drm_subpixel_enum_list[] = {
	{ SubPixelUnknown, "Unknown" },
+18 −18
Original line number Diff line number Diff line
@@ -102,14 +102,14 @@ bool drm_helper_encoder_in_use(struct drm_encoder *encoder)
	}


	drm_connector_list_iter_get(dev, &conn_iter);
	drm_connector_list_iter_begin(dev, &conn_iter);
	drm_for_each_connector_iter(connector, &conn_iter) {
		if (connector->encoder == encoder) {
			drm_connector_list_iter_put(&conn_iter);
			drm_connector_list_iter_end(&conn_iter);
			return true;
		}
	}
	drm_connector_list_iter_put(&conn_iter);
	drm_connector_list_iter_end(&conn_iter);
	return false;
}
EXPORT_SYMBOL(drm_helper_encoder_in_use);
@@ -449,7 +449,7 @@ drm_crtc_helper_disable(struct drm_crtc *crtc)
		if (encoder->crtc != crtc)
			continue;

		drm_connector_list_iter_get(dev, &conn_iter);
		drm_connector_list_iter_begin(dev, &conn_iter);
		drm_for_each_connector_iter(connector, &conn_iter) {
			if (connector->encoder != encoder)
				continue;
@@ -467,7 +467,7 @@ drm_crtc_helper_disable(struct drm_crtc *crtc)
			/* we keep a reference while the encoder is bound */
			drm_connector_put(connector);
		}
		drm_connector_list_iter_put(&conn_iter);
		drm_connector_list_iter_end(&conn_iter);
	}

	__drm_helper_disable_unused_functions(dev);
@@ -583,10 +583,10 @@ int drm_crtc_helper_set_config(struct drm_mode_set *set)
	}

	count = 0;
	drm_connector_list_iter_get(dev, &conn_iter);
	drm_connector_list_iter_begin(dev, &conn_iter);
	drm_for_each_connector_iter(connector, &conn_iter)
		save_connector_encoders[count++] = connector->encoder;
	drm_connector_list_iter_put(&conn_iter);
	drm_connector_list_iter_end(&conn_iter);

	save_set.crtc = set->crtc;
	save_set.mode = &set->crtc->mode;
@@ -628,7 +628,7 @@ int drm_crtc_helper_set_config(struct drm_mode_set *set)

	/* a) traverse passed in connector list and get encoders for them */
	count = 0;
	drm_connector_list_iter_get(dev, &conn_iter);
	drm_connector_list_iter_begin(dev, &conn_iter);
	drm_for_each_connector_iter(connector, &conn_iter) {
		const struct drm_connector_helper_funcs *connector_funcs =
			connector->helper_private;
@@ -662,7 +662,7 @@ int drm_crtc_helper_set_config(struct drm_mode_set *set)
			connector->encoder = new_encoder;
		}
	}
	drm_connector_list_iter_put(&conn_iter);
	drm_connector_list_iter_end(&conn_iter);

	if (fail) {
		ret = -EINVAL;
@@ -670,7 +670,7 @@ int drm_crtc_helper_set_config(struct drm_mode_set *set)
	}

	count = 0;
	drm_connector_list_iter_get(dev, &conn_iter);
	drm_connector_list_iter_begin(dev, &conn_iter);
	drm_for_each_connector_iter(connector, &conn_iter) {
		if (!connector->encoder)
			continue;
@@ -689,7 +689,7 @@ int drm_crtc_helper_set_config(struct drm_mode_set *set)
		if (new_crtc &&
		    !drm_encoder_crtc_ok(connector->encoder, new_crtc)) {
			ret = -EINVAL;
			drm_connector_list_iter_put(&conn_iter);
			drm_connector_list_iter_end(&conn_iter);
			goto fail;
		}
		if (new_crtc != connector->encoder->crtc) {
@@ -706,7 +706,7 @@ int drm_crtc_helper_set_config(struct drm_mode_set *set)
				      connector->base.id, connector->name);
		}
	}
	drm_connector_list_iter_put(&conn_iter);
	drm_connector_list_iter_end(&conn_iter);

	/* mode_set_base is not a required function */
	if (fb_changed && !crtc_funcs->mode_set_base)
@@ -761,10 +761,10 @@ int drm_crtc_helper_set_config(struct drm_mode_set *set)
	}

	count = 0;
	drm_connector_list_iter_get(dev, &conn_iter);
	drm_connector_list_iter_begin(dev, &conn_iter);
	drm_for_each_connector_iter(connector, &conn_iter)
		connector->encoder = save_connector_encoders[count++];
	drm_connector_list_iter_put(&conn_iter);
	drm_connector_list_iter_end(&conn_iter);

	/* after fail drop reference on all unbound connectors in set, let
	 * bound connectors keep their reference
@@ -794,12 +794,12 @@ static int drm_helper_choose_encoder_dpms(struct drm_encoder *encoder)
	struct drm_connector_list_iter conn_iter;
	struct drm_device *dev = encoder->dev;

	drm_connector_list_iter_get(dev, &conn_iter);
	drm_connector_list_iter_begin(dev, &conn_iter);
	drm_for_each_connector_iter(connector, &conn_iter)
		if (connector->encoder == encoder)
			if (connector->dpms < dpms)
				dpms = connector->dpms;
	drm_connector_list_iter_put(&conn_iter);
	drm_connector_list_iter_end(&conn_iter);

	return dpms;
}
@@ -835,12 +835,12 @@ static int drm_helper_choose_crtc_dpms(struct drm_crtc *crtc)
	struct drm_connector_list_iter conn_iter;
	struct drm_device *dev = crtc->dev;

	drm_connector_list_iter_get(dev, &conn_iter);
	drm_connector_list_iter_begin(dev, &conn_iter);
	drm_for_each_connector_iter(connector, &conn_iter)
		if (connector->encoder && connector->encoder->crtc == crtc)
			if (connector->dpms < dpms)
				dpms = connector->dpms;
	drm_connector_list_iter_put(&conn_iter);
	drm_connector_list_iter_end(&conn_iter);

	return dpms;
}
+3 −3
Original line number Diff line number Diff line
@@ -188,7 +188,7 @@ static struct drm_crtc *drm_encoder_get_crtc(struct drm_encoder *encoder)

	/* For atomic drivers only state objects are synchronously updated and
	 * protected by modeset locks, so check those first. */
	drm_connector_list_iter_get(dev, &conn_iter);
	drm_connector_list_iter_begin(dev, &conn_iter);
	drm_for_each_connector_iter(connector, &conn_iter) {
		if (!connector->state)
			continue;
@@ -198,10 +198,10 @@ static struct drm_crtc *drm_encoder_get_crtc(struct drm_encoder *encoder)
		if (connector->state->best_encoder != encoder)
			continue;

		drm_connector_list_iter_put(&conn_iter);
		drm_connector_list_iter_end(&conn_iter);
		return connector->state->crtc;
	}
	drm_connector_list_iter_put(&conn_iter);
	drm_connector_list_iter_end(&conn_iter);

	/* Don't return stale data (e.g. pending async disable). */
	if (uses_atomic)
Loading