Commit d5c5b1de authored by Luca Ceresoli's avatar Luca Ceresoli
Browse files

drm/display: bridge-connector: use drm_for_each_bridge_in_chain_scoped()



Use drm_for_each_bridge_in_chain_scoped() instead of
drm_for_each_bridge_in_chain() to ensure the bridge being looped on is
refcounted.

Reviewed-by: default avatarMaxime Ripard <mripard@kernel.org>
Link: https://lore.kernel.org/r/20250808-drm-bridge-alloc-getput-for_each_bridge-v2-4-edb6ee81edf1@bootlin.com


Signed-off-by: default avatarLuca Ceresoli <luca.ceresoli@bootlin.com>
parent e46efc6a
Loading
Loading
Loading
Loading
+3 −4
Original line number Diff line number Diff line
@@ -137,10 +137,9 @@ static void drm_bridge_connector_hpd_notify(struct drm_connector *connector,
{
	struct drm_bridge_connector *bridge_connector =
		to_drm_bridge_connector(connector);
	struct drm_bridge *bridge;

	/* Notify all bridges in the pipeline of hotplug events. */
	drm_for_each_bridge_in_chain(bridge_connector->encoder, bridge) {
	drm_for_each_bridge_in_chain_scoped(bridge_connector->encoder, bridge) {
		if (bridge->funcs->hpd_notify)
			bridge->funcs->hpd_notify(bridge, status);
	}
@@ -639,7 +638,7 @@ struct drm_connector *drm_bridge_connector_init(struct drm_device *drm,
	struct drm_bridge_connector *bridge_connector;
	struct drm_connector *connector;
	struct i2c_adapter *ddc = NULL;
	struct drm_bridge *bridge, *panel_bridge = NULL;
	struct drm_bridge *panel_bridge = NULL;
	unsigned int supported_formats = BIT(HDMI_COLORSPACE_RGB);
	unsigned int max_bpc = 8;
	bool support_hdcp = false;
@@ -667,7 +666,7 @@ struct drm_connector *drm_bridge_connector_init(struct drm_device *drm,
	 * detection are available, we don't support hotplug detection at all.
	 */
	connector_type = DRM_MODE_CONNECTOR_Unknown;
	drm_for_each_bridge_in_chain(encoder, bridge) {
	drm_for_each_bridge_in_chain_scoped(encoder, bridge) {
		if (!bridge->interlace_allowed)
			connector->interlace_allowed = false;
		if (!bridge->ycbcr_420_allowed)