Commit 393f026b authored by Boyuan Zhang's avatar Boyuan Zhang Committed by Alex Deucher
Browse files

drm/amdgpu: add inst to amdgpu_dpm_enable_vcn



Add an instance parameter to amdgpu_dpm_enable_vcn() function, and change
all calls from vcn ip functions to add instance argument. vcn generations
with only one instance (v1.0, v2.0) always use 0 as instance number. vcn
generations with multiple instances (v2.5, v3.0, v4.0, v4.0.3, v4.0.5,
v5.0.0) use the actual instance number.

v2: remove for-loop in amdgpu_dpm_enable_vcn(), and temporarily move it
to vcn ip with multiple instances, in order to keep the exact same logic
as before, until further separation in next patch.

v3: fix missing prefix

Signed-off-by: default avatarBoyuan Zhang <boyuan.zhang@amd.com>
Reviewed-by: default avatarChristian König <christian.koenig@amd.com>
Reviewed-by: default avatarAlex Deucher <alexander.deucher@amd.com>
Signed-off-by: default avatarAlex Deucher <alexander.deucher@amd.com>
parent ff69bba0
Loading
Loading
Loading
Loading
+3 −3
Original line number Diff line number Diff line
@@ -303,7 +303,7 @@ static int vcn_v1_0_suspend(struct amdgpu_ip_block *ip_block)
	idle_work_unexecuted = cancel_delayed_work_sync(&adev->vcn.idle_work);
	if (idle_work_unexecuted) {
		if (adev->pm.dpm_enabled)
			amdgpu_dpm_enable_vcn(adev, false);
			amdgpu_dpm_enable_vcn(adev, false, 0);
	}

	r = vcn_v1_0_hw_fini(ip_block);
@@ -1856,7 +1856,7 @@ static void vcn_v1_0_idle_work_handler(struct work_struct *work)
	if (fences == 0) {
		amdgpu_gfx_off_ctrl(adev, true);
		if (adev->pm.dpm_enabled)
			amdgpu_dpm_enable_vcn(adev, false);
			amdgpu_dpm_enable_vcn(adev, false, 0);
		else
			amdgpu_device_ip_set_powergating_state(adev, AMD_IP_BLOCK_TYPE_VCN,
			       AMD_PG_STATE_GATE);
@@ -1886,7 +1886,7 @@ void vcn_v1_0_set_pg_for_begin_use(struct amdgpu_ring *ring, bool set_clocks)
	if (set_clocks) {
		amdgpu_gfx_off_ctrl(adev, false);
		if (adev->pm.dpm_enabled)
			amdgpu_dpm_enable_vcn(adev, true);
			amdgpu_dpm_enable_vcn(adev, true, 0);
		else
			amdgpu_device_ip_set_powergating_state(adev, AMD_IP_BLOCK_TYPE_VCN,
			       AMD_PG_STATE_UNGATE);
+2 −2
Original line number Diff line number Diff line
@@ -978,7 +978,7 @@ static int vcn_v2_0_start(struct amdgpu_device *adev)
	int i, j, r;

	if (adev->pm.dpm_enabled)
		amdgpu_dpm_enable_vcn(adev, true);
		amdgpu_dpm_enable_vcn(adev, true, 0);

	if (adev->pg_flags & AMD_PG_SUPPORT_VCN_DPG)
		return vcn_v2_0_start_dpg_mode(adev, adev->vcn.indirect_sram);
@@ -1235,7 +1235,7 @@ static int vcn_v2_0_stop(struct amdgpu_device *adev)

power_off:
	if (adev->pm.dpm_enabled)
		amdgpu_dpm_enable_vcn(adev, false);
		amdgpu_dpm_enable_vcn(adev, false, 0);

	return 0;
}
+8 −4
Original line number Diff line number Diff line
@@ -1012,8 +1012,10 @@ static int vcn_v2_5_start(struct amdgpu_device *adev)
	uint32_t rb_bufsz, tmp;
	int i, j, k, r;

	for (i = 0; i < adev->vcn.num_vcn_inst; ++i) {
		if (adev->pm.dpm_enabled)
		amdgpu_dpm_enable_vcn(adev, true);
			amdgpu_dpm_enable_vcn(adev, true, i);
	}

	for (i = 0; i < adev->vcn.num_vcn_inst; ++i) {
		if (adev->vcn.harvest_config & (1 << i))
@@ -1485,8 +1487,10 @@ static int vcn_v2_5_stop(struct amdgpu_device *adev)
			~UVD_POWER_STATUS__UVD_POWER_STATUS_MASK);
	}

	for (i = 0; i < adev->vcn.num_vcn_inst; ++i) {
		if (adev->pm.dpm_enabled)
		amdgpu_dpm_enable_vcn(adev, false);
			amdgpu_dpm_enable_vcn(adev, false, i);
	}

	return 0;
}
+8 −4
Original line number Diff line number Diff line
@@ -1141,8 +1141,10 @@ static int vcn_v3_0_start(struct amdgpu_device *adev)
	uint32_t rb_bufsz, tmp;
	int i, j, k, r;

	for (i = 0; i < adev->vcn.num_vcn_inst; ++i) {
		if (adev->pm.dpm_enabled)
		amdgpu_dpm_enable_vcn(adev, true);
			amdgpu_dpm_enable_vcn(adev, true, i);
	}

	for (i = 0; i < adev->vcn.num_vcn_inst; ++i) {
		if (adev->vcn.harvest_config & (1 << i))
@@ -1632,8 +1634,10 @@ static int vcn_v3_0_stop(struct amdgpu_device *adev)
		vcn_v3_0_enable_static_power_gating(adev, i);
	}

	for (i = 0; i < adev->vcn.num_vcn_inst; ++i) {
		if (adev->pm.dpm_enabled)
		amdgpu_dpm_enable_vcn(adev, false);
			amdgpu_dpm_enable_vcn(adev, false, i);
	}

	return 0;
}
+8 −4
Original line number Diff line number Diff line
@@ -1097,8 +1097,10 @@ static int vcn_v4_0_start(struct amdgpu_device *adev)
	uint32_t tmp;
	int i, j, k, r;

	for (i = 0; i < adev->vcn.num_vcn_inst; ++i) {
		if (adev->pm.dpm_enabled)
		amdgpu_dpm_enable_vcn(adev, true);
			amdgpu_dpm_enable_vcn(adev, true, i);
	}

	for (i = 0; i < adev->vcn.num_vcn_inst; ++i) {
		if (adev->vcn.harvest_config & (1 << i))
@@ -1623,8 +1625,10 @@ static int vcn_v4_0_stop(struct amdgpu_device *adev)
		vcn_v4_0_enable_static_power_gating(adev, i);
	}

	for (i = 0; i < adev->vcn.num_vcn_inst; ++i) {
		if (adev->pm.dpm_enabled)
		amdgpu_dpm_enable_vcn(adev, false);
			amdgpu_dpm_enable_vcn(adev, false, i);
	}

	return 0;
}
Loading