Commit 64303b72 authored by Alex Deucher's avatar Alex Deucher
Browse files

drm/amdgpu/vcn: adjust pause_dpg_mode function signature



Change it to take a vcn instance rather than adev to align
with the vcn instance changes.

TODO: clean up the function internals to use the vinst state
directly rather than accessing it indirectly via adev->vcn.inst[].

Reviewed-by: default avatarBoyuan Zhang <Boyuan.Zhang@amd.com>
Signed-off-by: default avatarAlex Deucher <alexander.deucher@amd.com>
parent 0a3fb733
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -417,7 +417,7 @@ static void amdgpu_vcn_idle_work_handler(struct work_struct *work)
		else
			new_state.fw_based = VCN_DPG_STATE__UNPAUSE;

		adev->vcn.inst[i].pause_dpg_mode(adev, i, &new_state);
		adev->vcn.inst[i].pause_dpg_mode(vcn_inst, &new_state);
	}

	fence[i] += amdgpu_fence_count_emitted(&vcn_inst->ring_dec);
@@ -474,7 +474,7 @@ void amdgpu_vcn_ring_begin_use(struct amdgpu_ring *ring)
				new_state.fw_based = VCN_DPG_STATE__UNPAUSE;
		}

		adev->vcn.inst[ring->me].pause_dpg_mode(adev, ring->me, &new_state);
		adev->vcn.inst[ring->me].pause_dpg_mode(&adev->vcn.inst[ring->me], &new_state);
	}
	mutex_unlock(&adev->vcn.inst[ring->me].vcn_pg_lock);
}
+1 −2
Original line number Diff line number Diff line
@@ -327,8 +327,7 @@ struct amdgpu_vcn_inst {
	bool			indirect_sram;
	struct amdgpu_vcn_reg	 internal;
	struct mutex		vcn1_jpeg1_workaround;
	int (*pause_dpg_mode)(struct amdgpu_device *adev,
			      int inst_idx,
	int (*pause_dpg_mode)(struct amdgpu_vcn_inst *vinst,
			      struct dpg_pause_state *new_state);
	bool using_unified_queue;
};
+8 −6
Original line number Diff line number Diff line
@@ -87,8 +87,8 @@ static void vcn_v1_0_set_enc_ring_funcs(struct amdgpu_device *adev);
static void vcn_v1_0_set_irq_funcs(struct amdgpu_device *adev);
static int vcn_v1_0_set_powergating_state(struct amdgpu_ip_block *ip_block,
				enum amd_powergating_state state);
static int vcn_v1_0_pause_dpg_mode(struct amdgpu_device *adev,
				int inst_idx, struct dpg_pause_state *new_state);
static int vcn_v1_0_pause_dpg_mode(struct amdgpu_vcn_inst *vinst,
				   struct dpg_pause_state *new_state);

static void vcn_v1_0_idle_work_handler(struct work_struct *work);
static void vcn_v1_0_ring_begin_use(struct amdgpu_ring *ring);
@@ -1264,9 +1264,11 @@ static int vcn_v1_0_stop(struct amdgpu_vcn_inst *vinst)
	return r;
}

static int vcn_v1_0_pause_dpg_mode(struct amdgpu_device *adev,
				int inst_idx, struct dpg_pause_state *new_state)
static int vcn_v1_0_pause_dpg_mode(struct amdgpu_vcn_inst *vinst,
				   struct dpg_pause_state *new_state)
{
	struct amdgpu_device *adev = vinst->adev;
	int inst_idx = vinst->inst;
	int ret_code;
	uint32_t reg_data = 0;
	uint32_t reg_data2 = 0;
@@ -1866,7 +1868,7 @@ static void vcn_v1_0_idle_work_handler(struct work_struct *work)
		else
			new_state.jpeg = VCN_DPG_STATE__UNPAUSE;

		adev->vcn.inst[0].pause_dpg_mode(adev, 0, &new_state);
		adev->vcn.inst->pause_dpg_mode(vcn_inst, &new_state);
	}

	fences += amdgpu_fence_count_emitted(adev->jpeg.inst->ring_dec);
@@ -1933,7 +1935,7 @@ void vcn_v1_0_set_pg_for_begin_use(struct amdgpu_ring *ring, bool set_clocks)
		else if (ring->funcs->type == AMDGPU_RING_TYPE_VCN_JPEG)
			new_state.jpeg = VCN_DPG_STATE__PAUSE;

		adev->vcn.inst[0].pause_dpg_mode(adev, 0, &new_state);
		adev->vcn.inst->pause_dpg_mode(adev->vcn.inst, &new_state);
	}
}

+7 −5
Original line number Diff line number Diff line
@@ -94,8 +94,8 @@ static void vcn_v2_0_set_enc_ring_funcs(struct amdgpu_device *adev);
static void vcn_v2_0_set_irq_funcs(struct amdgpu_device *adev);
static int vcn_v2_0_set_powergating_state(struct amdgpu_ip_block *ip_block,
				enum amd_powergating_state state);
static int vcn_v2_0_pause_dpg_mode(struct amdgpu_device *adev,
				int inst_idx, struct dpg_pause_state *new_state);
static int vcn_v2_0_pause_dpg_mode(struct amdgpu_vcn_inst *vinst,
				   struct dpg_pause_state *new_state);
static int vcn_v2_0_start_sriov(struct amdgpu_device *adev);
/**
 * vcn_v2_0_early_init - set function pointers and load microcode
@@ -1158,7 +1158,7 @@ static int vcn_v2_0_stop_dpg_mode(struct amdgpu_vcn_inst *vinst)
	struct dpg_pause_state state = {.fw_based = VCN_DPG_STATE__UNPAUSE};
	uint32_t tmp;

	vcn_v2_0_pause_dpg_mode(adev, 0, &state);
	vcn_v2_0_pause_dpg_mode(vinst, &state);
	/* Wait for power status to be 1 */
	SOC15_WAIT_ON_RREG(UVD, 0, mmUVD_POWER_STATUS, 1,
		UVD_POWER_STATUS__UVD_POWER_STATUS_MASK);
@@ -1252,9 +1252,11 @@ static int vcn_v2_0_stop(struct amdgpu_vcn_inst *vinst)
	return 0;
}

static int vcn_v2_0_pause_dpg_mode(struct amdgpu_device *adev,
				int inst_idx, struct dpg_pause_state *new_state)
static int vcn_v2_0_pause_dpg_mode(struct amdgpu_vcn_inst *vinst,
				   struct dpg_pause_state *new_state)
{
	struct amdgpu_device *adev = vinst->adev;
	int inst_idx = vinst->inst;
	struct amdgpu_ring *ring;
	uint32_t reg_data = 0;
	int ret_code;
+6 −4
Original line number Diff line number Diff line
@@ -100,8 +100,8 @@ static int vcn_v2_5_set_powergating_state_inst(struct amdgpu_ip_block *ip_block,
					       int i);
static int vcn_v2_5_set_powergating_state(struct amdgpu_ip_block *ip_block,
					  enum amd_powergating_state state);
static int vcn_v2_5_pause_dpg_mode(struct amdgpu_device *adev,
				int inst_idx, struct dpg_pause_state *new_state);
static int vcn_v2_5_pause_dpg_mode(struct amdgpu_vcn_inst *vinst,
				   struct dpg_pause_state *new_state);
static int vcn_v2_5_sriov_start(struct amdgpu_device *adev);
static void vcn_v2_5_set_ras_funcs(struct amdgpu_device *adev);

@@ -1510,9 +1510,11 @@ static int vcn_v2_5_stop(struct amdgpu_vcn_inst *vinst)
	return r;
}

static int vcn_v2_5_pause_dpg_mode(struct amdgpu_device *adev,
				int inst_idx, struct dpg_pause_state *new_state)
static int vcn_v2_5_pause_dpg_mode(struct amdgpu_vcn_inst *vinst,
				   struct dpg_pause_state *new_state)
{
	struct amdgpu_device *adev = vinst->adev;
	int inst_idx = vinst->inst;
	struct amdgpu_ring *ring;
	uint32_t reg_data = 0;
	int ret_code = 0;
Loading