Commit 981a4742 authored by Mario Limonciello's avatar Mario Limonciello Committed by Alex Deucher
Browse files

drm/amd/display: Use _free() macro for amdgpu_dm_update_connector_after_detect()



By using a _free() macro multiple duplicated snippets of code to free
the sink can be dropped. The sink will be released when leaving scope.

Reviewed-by: default avatarAlex Hung <alex.hung@amd.com>
Signed-off-by: default avatarMario Limonciello <mario.limonciello@amd.com>
Signed-off-by: default avatarWayne Lin <wayne.lin@amd.com>
Tested-by: default avatarDaniel Wheeler <daniel.wheeler@amd.com>
Signed-off-by: default avatarAlex Deucher <alexander.deucher@amd.com>
parent aca9ec9b
Loading
Loading
Loading
Loading
+4 −11
Original line number Diff line number Diff line
@@ -3654,12 +3654,14 @@ static void update_connector_ext_caps(struct amdgpu_dm_connector *aconnector)
		caps->min_input_signal = min_input_signal_override;
}

DEFINE_FREE(sink_release, struct dc_sink *, if (_T) dc_sink_release(_T))

void amdgpu_dm_update_connector_after_detect(
		struct amdgpu_dm_connector *aconnector)
{
	struct drm_connector *connector = &aconnector->base;
	struct dc_sink *sink __free(sink_release) = NULL;
	struct drm_device *dev = connector->dev;
	struct dc_sink *sink;

	/* MST handled by drm_mst framework */
	if (aconnector->mst_mgr.mst_state == true)
@@ -3706,8 +3708,6 @@ void amdgpu_dm_update_connector_after_detect(
			}
		}

		if (sink)
			dc_sink_release(sink);
		return;
	}

@@ -3715,10 +3715,8 @@ void amdgpu_dm_update_connector_after_detect(
	 * TODO: temporary guard to look for proper fix
	 * if this sink is MST sink, we should not do anything
	 */
	if (sink && sink->sink_signal == SIGNAL_TYPE_DISPLAY_PORT_MST) {
		dc_sink_release(sink);
	if (sink && sink->sink_signal == SIGNAL_TYPE_DISPLAY_PORT_MST)
		return;
	}

	if (aconnector->dc_sink == sink) {
		/*
@@ -3727,8 +3725,6 @@ void amdgpu_dm_update_connector_after_detect(
		 */
		drm_dbg_kms(dev, "DCHPD: connector_id=%d: dc_sink didn't change.\n",
				 aconnector->connector_id);
		if (sink)
			dc_sink_release(sink);
		return;
	}

@@ -3798,9 +3794,6 @@ void amdgpu_dm_update_connector_after_detect(
	}

	update_subconnector_property(aconnector);

	if (sink)
		dc_sink_release(sink);
}

static void handle_hpd_irq_helper(struct amdgpu_dm_connector *aconnector)