Commit 692d2cd1 authored by Sunil Khatri's avatar Sunil Khatri Committed by Alex Deucher
Browse files

drm/amdgpu: update the handle ptr in hw_fini



Update the *handle to amdgpu_ip_block ptr for all
functions pointers of hw_fini.

Also update the ip_block ptr where ever needed as
there were cyclic dependency of hw_fini on suspend
and some followed clean up.

Signed-off-by: default avatarSunil Khatri <sunil.khatri@amd.com>
Reviewed-by: default avatarChristian König <christian.koenig@amd.com>
Signed-off-by: default avatarAlex Deucher <alexander.deucher@amd.com>
parent 58608034
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -500,11 +500,11 @@ static int acp_hw_init(struct amdgpu_ip_block *ip_block)
 * @handle: handle used to pass amdgpu_device pointer
 *
 */
static int acp_hw_fini(void *handle)
static int acp_hw_fini(struct amdgpu_ip_block *ip_block)
{
	u32 val = 0;
	u32 count = 0;
	struct amdgpu_device *adev = (struct amdgpu_device *)handle;
	struct amdgpu_device *adev = ip_block->adev;

	/* return early if no ACP */
	if (!adev->acp.acp_genpd) {
+2 −2
Original line number Diff line number Diff line
@@ -3285,7 +3285,7 @@ static void amdgpu_device_smu_fini_early(struct amdgpu_device *adev)
		if (!adev->ip_blocks[i].status.hw)
			continue;
		if (adev->ip_blocks[i].version->type == AMD_IP_BLOCK_TYPE_SMC) {
			r = adev->ip_blocks[i].version->funcs->hw_fini((void *)adev);
			r = adev->ip_blocks[i].version->funcs->hw_fini(&adev->ip_blocks[i]);
			/* XXX handle errors */
			if (r) {
				DRM_DEBUG("hw_fini of IP block <%s> failed %d\n",
@@ -3324,7 +3324,7 @@ static int amdgpu_device_ip_fini_early(struct amdgpu_device *adev)
		if (!adev->ip_blocks[i].status.hw)
			continue;

		r = adev->ip_blocks[i].version->funcs->hw_fini((void *)adev);
		r = adev->ip_blocks[i].version->funcs->hw_fini(&adev->ip_blocks[i]);
		/* XXX handle errors */
		if (r) {
			DRM_DEBUG("hw_fini of IP block <%s> failed %d\n",
+2 −3
Original line number Diff line number Diff line
@@ -66,10 +66,9 @@ static int isp_hw_init(struct amdgpu_ip_block *ip_block)
 * @handle: handle for amdgpu_device pointer
 *
 */
static int isp_hw_fini(void *handle)
static int isp_hw_fini(struct amdgpu_ip_block *ip_block)
{
	struct amdgpu_device *adev = (struct amdgpu_device *)handle;
	struct amdgpu_isp *isp = &adev->isp;
	struct amdgpu_isp *isp = &ip_block->adev->isp;

	if (isp->funcs->hw_fini != NULL)
		return isp->funcs->hw_fini(isp);
+2 −2
Original line number Diff line number Diff line
@@ -3002,9 +3002,9 @@ static int psp_hw_init(struct amdgpu_ip_block *ip_block)
	return -EINVAL;
}

static int psp_hw_fini(void *handle)
static int psp_hw_fini(struct amdgpu_ip_block *ip_block)
{
	struct amdgpu_device *adev = (struct amdgpu_device *)handle;
	struct amdgpu_device *adev = ip_block->adev;
	struct psp_context *psp = &adev->psp;

	if (psp->ta_fw) {
+3 −5
Original line number Diff line number Diff line
@@ -857,9 +857,9 @@ static int umsch_mm_hw_init(struct amdgpu_ip_block *ip_block)
	return 0;
}

static int umsch_mm_hw_fini(void *handle)
static int umsch_mm_hw_fini(struct amdgpu_ip_block *ip_block)
{
	struct amdgpu_device *adev = (struct amdgpu_device *)handle;
	struct amdgpu_device *adev = ip_block->adev;

	umsch_mm_ring_stop(&adev->umsch_mm);

@@ -875,9 +875,7 @@ static int umsch_mm_hw_fini(void *handle)

static int umsch_mm_suspend(struct amdgpu_ip_block *ip_block)
{
	struct amdgpu_device *adev = ip_block->adev;

	return umsch_mm_hw_fini(adev);
	return umsch_mm_hw_fini(ip_block);
}

static int umsch_mm_resume(struct amdgpu_ip_block *ip_block)
Loading