drm/amdgpu: update the handle ptr in soft_reset
authorSunil Khatri <sunil.khatri@amd.com>
Mon, 30 Sep 2024 09:30:30 +0000 (15:00 +0530)
committerAlex Deucher <alexander.deucher@amd.com>
Tue, 1 Oct 2024 21:45:44 +0000 (17:45 -0400)
Update the *handle to amdgpu_ip_block ptr for all
functions pointers of soft_reset.

Signed-off-by: Sunil Khatri <sunil.khatri@amd.com>
Reviewed-by: Christian König <christian.koenig@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
64 files changed:
drivers/gpu/drm/amd/amdgpu/amdgpu_acp.c
drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
drivers/gpu/drm/amd/amdgpu/amdgpu_isp.c
drivers/gpu/drm/amd/amdgpu/amdgpu_vkms.c
drivers/gpu/drm/amd/amdgpu/cik.c
drivers/gpu/drm/amd/amdgpu/cik_ih.c
drivers/gpu/drm/amd/amdgpu/cik_sdma.c
drivers/gpu/drm/amd/amdgpu/cz_ih.c
drivers/gpu/drm/amd/amdgpu/dce_v10_0.c
drivers/gpu/drm/amd/amdgpu/dce_v11_0.c
drivers/gpu/drm/amd/amdgpu/dce_v6_0.c
drivers/gpu/drm/amd/amdgpu/dce_v8_0.c
drivers/gpu/drm/amd/amdgpu/gfx_v10_0.c
drivers/gpu/drm/amd/amdgpu/gfx_v11_0.c
drivers/gpu/drm/amd/amdgpu/gfx_v6_0.c
drivers/gpu/drm/amd/amdgpu/gfx_v7_0.c
drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c
drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c
drivers/gpu/drm/amd/amdgpu/gfx_v9_4_3.c
drivers/gpu/drm/amd/amdgpu/gmc_v10_0.c
drivers/gpu/drm/amd/amdgpu/gmc_v11_0.c
drivers/gpu/drm/amd/amdgpu/gmc_v12_0.c
drivers/gpu/drm/amd/amdgpu/gmc_v6_0.c
drivers/gpu/drm/amd/amdgpu/gmc_v7_0.c
drivers/gpu/drm/amd/amdgpu/gmc_v8_0.c
drivers/gpu/drm/amd/amdgpu/gmc_v9_0.c
drivers/gpu/drm/amd/amdgpu/iceland_ih.c
drivers/gpu/drm/amd/amdgpu/ih_v6_0.c
drivers/gpu/drm/amd/amdgpu/ih_v6_1.c
drivers/gpu/drm/amd/amdgpu/ih_v7_0.c
drivers/gpu/drm/amd/amdgpu/navi10_ih.c
drivers/gpu/drm/amd/amdgpu/nv.c
drivers/gpu/drm/amd/amdgpu/sdma_v2_4.c
drivers/gpu/drm/amd/amdgpu/sdma_v3_0.c
drivers/gpu/drm/amd/amdgpu/sdma_v4_0.c
drivers/gpu/drm/amd/amdgpu/sdma_v4_4_2.c
drivers/gpu/drm/amd/amdgpu/sdma_v5_0.c
drivers/gpu/drm/amd/amdgpu/sdma_v5_2.c
drivers/gpu/drm/amd/amdgpu/sdma_v6_0.c
drivers/gpu/drm/amd/amdgpu/sdma_v7_0.c
drivers/gpu/drm/amd/amdgpu/si.c
drivers/gpu/drm/amd/amdgpu/si_dma.c
drivers/gpu/drm/amd/amdgpu/si_ih.c
drivers/gpu/drm/amd/amdgpu/soc15.c
drivers/gpu/drm/amd/amdgpu/soc21.c
drivers/gpu/drm/amd/amdgpu/soc24.c
drivers/gpu/drm/amd/amdgpu/tonga_ih.c
drivers/gpu/drm/amd/amdgpu/uvd_v3_1.c
drivers/gpu/drm/amd/amdgpu/uvd_v4_2.c
drivers/gpu/drm/amd/amdgpu/uvd_v5_0.c
drivers/gpu/drm/amd/amdgpu/uvd_v6_0.c
drivers/gpu/drm/amd/amdgpu/uvd_v7_0.c
drivers/gpu/drm/amd/amdgpu/vce_v2_0.c
drivers/gpu/drm/amd/amdgpu/vce_v3_0.c
drivers/gpu/drm/amd/amdgpu/vce_v4_0.c
drivers/gpu/drm/amd/amdgpu/vega10_ih.c
drivers/gpu/drm/amd/amdgpu/vega20_ih.c
drivers/gpu/drm/amd/amdgpu/vi.c
drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
drivers/gpu/drm/amd/include/amd_shared.h
drivers/gpu/drm/amd/pm/legacy-dpm/kv_dpm.c
drivers/gpu/drm/amd/pm/legacy-dpm/si_dpm.c
drivers/gpu/drm/amd/pm/powerplay/amd_powerplay.c
drivers/gpu/drm/amd/pm/swsmu/amdgpu_smu.c

index 8c85d7a..436f24d 100644 (file)
@@ -595,7 +595,7 @@ static int acp_wait_for_idle(void *handle)
        return 0;
 }
 
-static int acp_soft_reset(void *handle)
+static int acp_soft_reset(struct amdgpu_ip_block *ip_block)
 {
        return 0;
 }
index be5ec1d..041eef1 100644 (file)
@@ -5041,7 +5041,7 @@ static int amdgpu_device_ip_soft_reset(struct amdgpu_device *adev)
                        continue;
                if (adev->ip_blocks[i].status.hang &&
                    adev->ip_blocks[i].version->funcs->soft_reset) {
-                       r = adev->ip_blocks[i].version->funcs->soft_reset(adev);
+                       r = adev->ip_blocks[i].version->funcs->soft_reset(&adev->ip_blocks[i]);
                        if (r)
                                return r;
                }
index f2198ac..e90b5f8 100644 (file)
@@ -160,7 +160,7 @@ static int isp_wait_for_idle(void *handle)
        return 0;
 }
 
-static int isp_soft_reset(void *handle)
+static int isp_soft_reset(struct amdgpu_ip_block *ip_block)
 {
        return 0;
 }
index d2eafca..af274e6 100644 (file)
@@ -637,7 +637,7 @@ static int amdgpu_vkms_wait_for_idle(void *handle)
        return 0;
 }
 
-static int amdgpu_vkms_soft_reset(void *handle)
+static int amdgpu_vkms_soft_reset(struct amdgpu_ip_block *ip_block)
 {
        return 0;
 }
index 8e8e266..b39944e 100644 (file)
@@ -2177,7 +2177,7 @@ static int cik_common_wait_for_idle(void *handle)
        return 0;
 }
 
-static int cik_common_soft_reset(void *handle)
+static int cik_common_soft_reset(struct amdgpu_ip_block *ip_block)
 {
        /* XXX hard reset?? */
        return 0;
index 2ce7a60..612330f 100644 (file)
@@ -378,9 +378,9 @@ static int cik_ih_wait_for_idle(void *handle)
        return -ETIMEDOUT;
 }
 
-static int cik_ih_soft_reset(void *handle)
+static int cik_ih_soft_reset(struct amdgpu_ip_block *ip_block)
 {
-       struct amdgpu_device *adev = (struct amdgpu_device *)handle;
+       struct amdgpu_device *adev = ip_block->adev;
 
        u32 srbm_soft_reset = 0;
        u32 tmp = RREG32(mmSRBM_STATUS);
index 6e7e780..8706855 100644 (file)
@@ -54,7 +54,7 @@ static void cik_sdma_set_ring_funcs(struct amdgpu_device *adev);
 static void cik_sdma_set_irq_funcs(struct amdgpu_device *adev);
 static void cik_sdma_set_buffer_funcs(struct amdgpu_device *adev);
 static void cik_sdma_set_vm_pte_funcs(struct amdgpu_device *adev);
-static int cik_sdma_soft_reset(void *handle);
+static int cik_sdma_soft_reset(struct amdgpu_ip_block *ip_block);
 
 MODULE_FIRMWARE("amdgpu/bonaire_sdma.bin");
 MODULE_FIRMWARE("amdgpu/bonaire_sdma1.bin");
@@ -1056,10 +1056,10 @@ static int cik_sdma_wait_for_idle(void *handle)
        return -ETIMEDOUT;
 }
 
-static int cik_sdma_soft_reset(void *handle)
+static int cik_sdma_soft_reset(struct amdgpu_ip_block *ip_block)
 {
        u32 srbm_soft_reset = 0;
-       struct amdgpu_device *adev = (struct amdgpu_device *)handle;
+       struct amdgpu_device *adev = ip_block->adev;
        u32 tmp;
 
        /* sdma0 */
index 71fe213..12a55f1 100644 (file)
@@ -374,10 +374,10 @@ static int cz_ih_wait_for_idle(void *handle)
        return -ETIMEDOUT;
 }
 
-static int cz_ih_soft_reset(void *handle)
+static int cz_ih_soft_reset(struct amdgpu_ip_block *ip_block)
 {
        u32 srbm_soft_reset = 0;
-       struct amdgpu_device *adev = (struct amdgpu_device *)handle;
+       struct amdgpu_device *adev = ip_block->adev;
        u32 tmp = RREG32(mmSRBM_STATUS);
 
        if (tmp & SRBM_STATUS__IH_BUSY_MASK)
index 4eb3313..6f81621 100644 (file)
@@ -2960,10 +2960,10 @@ static bool dce_v10_0_check_soft_reset(struct amdgpu_ip_block *ip_block)
        return dce_v10_0_is_display_hung(adev);
 }
 
-static int dce_v10_0_soft_reset(void *handle)
+static int dce_v10_0_soft_reset(struct amdgpu_ip_block *ip_block)
 {
        u32 srbm_soft_reset = 0, tmp;
-       struct amdgpu_device *adev = (struct amdgpu_device *)handle;
+       struct amdgpu_device *adev = ip_block->adev;
 
        if (dce_v10_0_is_display_hung(adev))
                srbm_soft_reset |= SRBM_SOFT_RESET__SOFT_RESET_DC_MASK;
index 9929b5b..b1afe4b 100644 (file)
@@ -3091,10 +3091,10 @@ static int dce_v11_0_wait_for_idle(void *handle)
        return 0;
 }
 
-static int dce_v11_0_soft_reset(void *handle)
+static int dce_v11_0_soft_reset(struct amdgpu_ip_block *ip_block)
 {
        u32 srbm_soft_reset = 0, tmp;
-       struct amdgpu_device *adev = (struct amdgpu_device *)handle;
+       struct amdgpu_device *adev = ip_block->adev;
 
        if (dce_v11_0_is_display_hung(adev))
                srbm_soft_reset |= SRBM_SOFT_RESET__SOFT_RESET_DC_MASK;
index 7c464fc..a6bbeb3 100644 (file)
@@ -2848,7 +2848,7 @@ static int dce_v6_0_wait_for_idle(void *handle)
        return 0;
 }
 
-static int dce_v6_0_soft_reset(void *handle)
+static int dce_v6_0_soft_reset(struct amdgpu_ip_block *ip_block)
 {
        DRM_INFO("xxxx: dce_v6_0_soft_reset --- no impl!!\n");
        return 0;
index 3fbc275..0b57e22 100644 (file)
@@ -2871,10 +2871,10 @@ static int dce_v8_0_wait_for_idle(void *handle)
        return 0;
 }
 
-static int dce_v8_0_soft_reset(void *handle)
+static int dce_v8_0_soft_reset(struct amdgpu_ip_block *ip_block)
 {
        u32 srbm_soft_reset = 0, tmp;
-       struct amdgpu_device *adev = (struct amdgpu_device *)handle;
+       struct amdgpu_device *adev = ip_block->adev;
 
        if (dce_v8_0_is_display_hung(adev))
                srbm_soft_reset |= SRBM_SOFT_RESET__SOFT_RESET_DC_MASK;
index 123da87..c544ea2 100644 (file)
@@ -7495,11 +7495,11 @@ static int gfx_v10_0_wait_for_idle(void *handle)
        return -ETIMEDOUT;
 }
 
-static int gfx_v10_0_soft_reset(void *handle)
+static int gfx_v10_0_soft_reset(struct amdgpu_ip_block *ip_block)
 {
        u32 grbm_soft_reset = 0;
        u32 tmp;
-       struct amdgpu_device *adev = (struct amdgpu_device *)handle;
+       struct amdgpu_device *adev = ip_block->adev;
 
        /* GRBM_STATUS */
        tmp = RREG32_SOC15(GC, 0, mmGRBM_STATUS);
index df08f29..ebf7837 100644 (file)
@@ -4776,12 +4776,12 @@ int gfx_v11_0_request_gfx_index_mutex(struct amdgpu_device *adev,
        return 0;
 }
 
-static int gfx_v11_0_soft_reset(void *handle)
+static int gfx_v11_0_soft_reset(struct amdgpu_ip_block *ip_block)
 {
        u32 grbm_soft_reset = 0;
        u32 tmp;
        int r, i, j, k;
-       struct amdgpu_device *adev = (struct amdgpu_device *)handle;
+       struct amdgpu_device *adev = ip_block->adev;
 
        amdgpu_gfx_rlc_enter_safe_mode(adev, 0);
 
index 1fef477..60579b3 100644 (file)
@@ -3190,7 +3190,7 @@ static int gfx_v6_0_wait_for_idle(void *handle)
        return -ETIMEDOUT;
 }
 
-static int gfx_v6_0_soft_reset(void *handle)
+static int gfx_v6_0_soft_reset(struct amdgpu_ip_block *ip_block)
 {
        return 0;
 }
index 6fa6114..990e7de 100644 (file)
@@ -4540,11 +4540,11 @@ static int gfx_v7_0_wait_for_idle(void *handle)
        return -ETIMEDOUT;
 }
 
-static int gfx_v7_0_soft_reset(void *handle)
+static int gfx_v7_0_soft_reset(struct amdgpu_ip_block *ip_block)
 {
        u32 grbm_soft_reset = 0, srbm_soft_reset = 0;
        u32 tmp;
-       struct amdgpu_device *adev = (struct amdgpu_device *)handle;
+       struct amdgpu_device *adev = ip_block->adev;
 
        /* GRBM_STATUS */
        tmp = RREG32(mmGRBM_STATUS);
index 9a15bf5..0b72dc3 100644 (file)
@@ -5024,9 +5024,9 @@ static int gfx_v8_0_pre_soft_reset(struct amdgpu_ip_block *ip_block)
        return 0;
 }
 
-static int gfx_v8_0_soft_reset(void *handle)
+static int gfx_v8_0_soft_reset(struct amdgpu_ip_block *ip_block)
 {
-       struct amdgpu_device *adev = (struct amdgpu_device *)handle;
+       struct amdgpu_device *adev = ip_block->adev;
        u32 grbm_soft_reset = 0, srbm_soft_reset = 0;
        u32 tmp;
 
index 1deb5ee..99334af 100644 (file)
@@ -4108,11 +4108,11 @@ static int gfx_v9_0_wait_for_idle(void *handle)
        return -ETIMEDOUT;
 }
 
-static int gfx_v9_0_soft_reset(void *handle)
+static int gfx_v9_0_soft_reset(struct amdgpu_ip_block *ip_block)
 {
        u32 grbm_soft_reset = 0;
        u32 tmp;
-       struct amdgpu_device *adev = (struct amdgpu_device *)handle;
+       struct amdgpu_device *adev = ip_block->adev;
 
        /* GRBM_STATUS */
        tmp = RREG32_SOC15(GC, 0, mmGRBM_STATUS);
index 27f331e..81bd4ca 100644 (file)
@@ -2423,11 +2423,11 @@ static int gfx_v9_4_3_wait_for_idle(void *handle)
        return -ETIMEDOUT;
 }
 
-static int gfx_v9_4_3_soft_reset(void *handle)
+static int gfx_v9_4_3_soft_reset(struct amdgpu_ip_block *ip_block)
 {
        u32 grbm_soft_reset = 0;
        u32 tmp;
-       struct amdgpu_device *adev = (struct amdgpu_device *)handle;
+       struct amdgpu_device *adev = ip_block->adev;
 
        /* GRBM_STATUS */
        tmp = RREG32_SOC15(GC, GET_INST(GC, 0), regGRBM_STATUS);
index ff7596b..8e51c7e 100644 (file)
@@ -1088,7 +1088,7 @@ static int gmc_v10_0_wait_for_idle(void *handle)
        return 0;
 }
 
-static int gmc_v10_0_soft_reset(void *handle)
+static int gmc_v10_0_soft_reset(struct amdgpu_ip_block *ip_block)
 {
        return 0;
 }
index 3241eff..2fc69cd 100644 (file)
@@ -996,7 +996,7 @@ static int gmc_v11_0_wait_for_idle(void *handle)
        return 0;
 }
 
-static int gmc_v11_0_soft_reset(void *handle)
+static int gmc_v11_0_soft_reset(struct amdgpu_ip_block *ip_block)
 {
        return 0;
 }
index 745010a..3cbb582 100644 (file)
@@ -980,7 +980,7 @@ static int gmc_v12_0_wait_for_idle(void *handle)
        return 0;
 }
 
-static int gmc_v12_0_soft_reset(void *handle)
+static int gmc_v12_0_soft_reset(struct amdgpu_ip_block *ip_block)
 {
        return 0;
 }
index e8566a5..82a097d 100644 (file)
@@ -973,9 +973,9 @@ static int gmc_v6_0_wait_for_idle(void *handle)
 
 }
 
-static int gmc_v6_0_soft_reset(void *handle)
+static int gmc_v6_0_soft_reset(struct amdgpu_ip_block *ip_block)
 {
-       struct amdgpu_device *adev = (struct amdgpu_device *)handle;
+       struct amdgpu_device *adev = ip_block->adev;
        u32 srbm_soft_reset = 0;
        u32 tmp = RREG32(mmSRBM_STATUS);
 
index 77e0950..ad9bad9 100644 (file)
@@ -1167,9 +1167,9 @@ static int gmc_v7_0_wait_for_idle(void *handle)
 
 }
 
-static int gmc_v7_0_soft_reset(void *handle)
+static int gmc_v7_0_soft_reset(struct amdgpu_ip_block *ip_block)
 {
-       struct amdgpu_device *adev = (struct amdgpu_device *)handle;
+       struct amdgpu_device *adev = ip_block->adev;
        u32 srbm_soft_reset = 0;
        u32 tmp = RREG32(mmSRBM_STATUS);
 
index f579c71..7ffb33d 100644 (file)
@@ -1330,9 +1330,9 @@ static int gmc_v8_0_pre_soft_reset(struct amdgpu_ip_block *ip_block)
        return 0;
 }
 
-static int gmc_v8_0_soft_reset(void *handle)
+static int gmc_v8_0_soft_reset(struct amdgpu_ip_block *ip_block)
 {
-       struct amdgpu_device *adev = (struct amdgpu_device *)handle;
+       struct amdgpu_device *adev = ip_block->adev;
        u32 srbm_soft_reset;
 
        if (!adev->gmc.srbm_soft_reset)
index 24a269c..1d0eb31 100644 (file)
@@ -2461,7 +2461,7 @@ static int gmc_v9_0_wait_for_idle(void *handle)
        return 0;
 }
 
-static int gmc_v9_0_soft_reset(void *handle)
+static int gmc_v9_0_soft_reset(struct amdgpu_ip_block *ip_block)
 {
        /* XXX for emulation.*/
        return 0;
index 6e611ae..6210fa1 100644 (file)
@@ -368,10 +368,10 @@ static int iceland_ih_wait_for_idle(void *handle)
        return -ETIMEDOUT;
 }
 
-static int iceland_ih_soft_reset(void *handle)
+static int iceland_ih_soft_reset(struct amdgpu_ip_block *ip_block)
 {
        u32 srbm_soft_reset = 0;
-       struct amdgpu_device *adev = (struct amdgpu_device *)handle;
+       struct amdgpu_device *adev = ip_block->adev;
        u32 tmp = RREG32(mmSRBM_STATUS);
 
        if (tmp & SRBM_STATUS__IH_BUSY_MASK)
index e2bf3b5..80c0215 100644 (file)
@@ -670,7 +670,7 @@ static int ih_v6_0_wait_for_idle(void *handle)
        return -ETIMEDOUT;
 }
 
-static int ih_v6_0_soft_reset(void *handle)
+static int ih_v6_0_soft_reset(struct amdgpu_ip_block *ip_block)
 {
        /* todo */
        return 0;
index a401324..be70013 100644 (file)
@@ -649,7 +649,7 @@ static int ih_v6_1_wait_for_idle(void *handle)
        return -ETIMEDOUT;
 }
 
-static int ih_v6_1_soft_reset(void *handle)
+static int ih_v6_1_soft_reset(struct amdgpu_ip_block *ip_block)
 {
        /* todo */
        return 0;
index 646e007..a86d12e 100644 (file)
@@ -639,7 +639,7 @@ static int ih_v7_0_wait_for_idle(void *handle)
        return -ETIMEDOUT;
 }
 
-static int ih_v7_0_soft_reset(void *handle)
+static int ih_v7_0_soft_reset(struct amdgpu_ip_block *ip_block)
 {
        /* todo */
        return 0;
index 93bf5e5..85361dc 100644 (file)
@@ -644,7 +644,7 @@ static int navi10_ih_wait_for_idle(void *handle)
        return -ETIMEDOUT;
 }
 
-static int navi10_ih_soft_reset(void *handle)
+static int navi10_ih_soft_reset(struct amdgpu_ip_block *ip_block)
 {
        /* todo */
        return 0;
index 8966a8b..7fdd573 100644 (file)
@@ -1053,7 +1053,7 @@ static int nv_common_wait_for_idle(void *handle)
        return 0;
 }
 
-static int nv_common_soft_reset(void *handle)
+static int nv_common_soft_reset(struct amdgpu_ip_block *ip_block)
 {
        return 0;
 }
index 12add24..a779774 100644 (file)
@@ -944,10 +944,10 @@ static int sdma_v2_4_wait_for_idle(void *handle)
        return -ETIMEDOUT;
 }
 
-static int sdma_v2_4_soft_reset(void *handle)
+static int sdma_v2_4_soft_reset(struct amdgpu_ip_block *ip_block)
 {
        u32 srbm_soft_reset = 0;
-       struct amdgpu_device *adev = (struct amdgpu_device *)handle;
+       struct amdgpu_device *adev = ip_block->adev;
        u32 tmp = RREG32(mmSRBM_STATUS2);
 
        if (tmp & SRBM_STATUS2__SDMA_BUSY_MASK) {
index e7f4f71..3e70285 100644 (file)
@@ -1290,9 +1290,9 @@ static int sdma_v3_0_post_soft_reset(void *handle)
        return 0;
 }
 
-static int sdma_v3_0_soft_reset(void *handle)
+static int sdma_v3_0_soft_reset(struct amdgpu_ip_block *ip_block)
 {
-       struct amdgpu_device *adev = (struct amdgpu_device *)handle;
+       struct amdgpu_device *adev = ip_block->adev;
        u32 srbm_soft_reset = 0;
        u32 tmp;
 
index ae5abb9..10887ee 100644 (file)
@@ -2049,7 +2049,7 @@ static int sdma_v4_0_wait_for_idle(void *handle)
        return -ETIMEDOUT;
 }
 
-static int sdma_v4_0_soft_reset(void *handle)
+static int sdma_v4_0_soft_reset(struct amdgpu_ip_block *ip_block)
 {
        /* todo */
 
index 5d5b8d5..a8c5e30 100644 (file)
@@ -1559,7 +1559,7 @@ static int sdma_v4_4_2_wait_for_idle(void *handle)
        return -ETIMEDOUT;
 }
 
-static int sdma_v4_4_2_soft_reset(void *handle)
+static int sdma_v4_4_2_soft_reset(struct amdgpu_ip_block *ip_block)
 {
        /* todo */
 
index ab230b3..c67ccb5 100644 (file)
@@ -1548,7 +1548,7 @@ static int sdma_v5_0_wait_for_idle(void *handle)
        return -ETIMEDOUT;
 }
 
-static int sdma_v5_0_soft_reset(void *handle)
+static int sdma_v5_0_soft_reset(struct amdgpu_ip_block *ip_block)
 {
        /* todo */
 
index ddbb26f..b136621 100644 (file)
@@ -761,9 +761,9 @@ static int sdma_v5_2_load_microcode(struct amdgpu_device *adev)
        return 0;
 }
 
-static int sdma_v5_2_soft_reset(void *handle)
+static int sdma_v5_2_soft_reset(struct amdgpu_ip_block *ip_block)
 {
-       struct amdgpu_device *adev = (struct amdgpu_device *)handle;
+       struct amdgpu_device *adev = ip_block->adev;
        u32 grbm_soft_reset;
        u32 tmp;
        int i;
@@ -803,6 +803,7 @@ static int sdma_v5_2_soft_reset(void *handle)
 static int sdma_v5_2_start(struct amdgpu_device *adev)
 {
        int r = 0;
+       struct amdgpu_ip_block *ip_block;
 
        if (amdgpu_sriov_vf(adev)) {
                sdma_v5_2_ctx_switch_enable(adev, false);
@@ -823,7 +824,11 @@ static int sdma_v5_2_start(struct amdgpu_device *adev)
                        msleep(1000);
        }
 
-       sdma_v5_2_soft_reset(adev);
+       ip_block = amdgpu_device_ip_get_ip_block(adev, AMD_IP_BLOCK_TYPE_SDMA);
+       if (!ip_block)
+               return -EINVAL;
+
+       sdma_v5_2_soft_reset(ip_block);
        /* unhalt the MEs */
        sdma_v5_2_enable(adev, true);
        /* enable sdma ring preemption */
index edf8f23..f18e3a4 100644 (file)
@@ -755,9 +755,9 @@ static int sdma_v6_0_load_microcode(struct amdgpu_device *adev)
        return 0;
 }
 
-static int sdma_v6_0_soft_reset(void *handle)
+static int sdma_v6_0_soft_reset(struct amdgpu_ip_block *ip_block)
 {
-       struct amdgpu_device *adev = (struct amdgpu_device *)handle;
+       struct amdgpu_device *adev = ip_block->adev;
        u32 tmp;
        int i;
 
index 691870e..670529e 100644 (file)
@@ -747,9 +747,9 @@ static int sdma_v7_0_load_microcode(struct amdgpu_device *adev)
        return 0;
 }
 
-static int sdma_v7_0_soft_reset(void *handle)
+static int sdma_v7_0_soft_reset(struct amdgpu_ip_block *ip_block)
 {
-       struct amdgpu_device *adev = (struct amdgpu_device *)handle;
+       struct amdgpu_device *adev = ip_block->adev;
        u32 tmp;
        int i;
 
index b312c4c..096cf2d 100644 (file)
@@ -2674,7 +2674,7 @@ static int si_common_wait_for_idle(void *handle)
        return 0;
 }
 
-static int si_common_soft_reset(void *handle)
+static int si_common_soft_reset(struct amdgpu_ip_block *ip_block)
 {
        return 0;
 }
index 1e9669a..93f80ab 100644 (file)
@@ -571,7 +571,7 @@ static int si_dma_wait_for_idle(void *handle)
        return -ETIMEDOUT;
 }
 
-static int si_dma_soft_reset(void *handle)
+static int si_dma_soft_reset(struct amdgpu_ip_block *ip_block)
 {
        DRM_INFO("si_dma_soft_reset --- not implemented !!!!!!!\n");
        return 0;
index c8e664f..0899214 100644 (file)
@@ -240,9 +240,9 @@ static int si_ih_wait_for_idle(void *handle)
        return -ETIMEDOUT;
 }
 
-static int si_ih_soft_reset(void *handle)
+static int si_ih_soft_reset(struct amdgpu_ip_block *ip_block)
 {
-       struct amdgpu_device *adev = (struct amdgpu_device *)handle;
+       struct amdgpu_device *adev = ip_block->adev;
 
        u32 srbm_soft_reset = 0;
        u32 tmp = RREG32(SRBM_STATUS);
index 62b7c1a..2f9f7e3 100644 (file)
@@ -1346,7 +1346,7 @@ static int soc15_common_wait_for_idle(void *handle)
        return 0;
 }
 
-static int soc15_common_soft_reset(void *handle)
+static int soc15_common_soft_reset(struct amdgpu_ip_block *ip_block)
 {
        return 0;
 }
index 4ed3b82..5946911 100644 (file)
@@ -939,7 +939,7 @@ static int soc21_common_wait_for_idle(void *handle)
        return 0;
 }
 
-static int soc21_common_soft_reset(void *handle)
+static int soc21_common_soft_reset(struct amdgpu_ip_block *ip_block)
 {
        return 0;
 }
index 83714f4..64d2f8c 100644 (file)
@@ -536,7 +536,7 @@ static int soc24_common_wait_for_idle(void *handle)
        return 0;
 }
 
-static int soc24_common_soft_reset(void *handle)
+static int soc24_common_soft_reset(struct amdgpu_ip_block *ip_block)
 {
        return 0;
 }
index 7cdf6a1..59f1671 100644 (file)
@@ -425,9 +425,9 @@ static int tonga_ih_post_soft_reset(void *handle)
        return tonga_ih_hw_init(adev);
 }
 
-static int tonga_ih_soft_reset(void *handle)
+static int tonga_ih_soft_reset(struct amdgpu_ip_block *ip_block)
 {
-       struct amdgpu_device *adev = (struct amdgpu_device *)handle;
+       struct amdgpu_device *adev = ip_block->adev;
        u32 srbm_soft_reset;
 
        if (!adev->irq.srbm_soft_reset)
index c33b86f..0fd8642 100644 (file)
@@ -778,9 +778,9 @@ static int uvd_v3_1_wait_for_idle(void *handle)
        return -ETIMEDOUT;
 }
 
-static int uvd_v3_1_soft_reset(void *handle)
+static int uvd_v3_1_soft_reset(struct amdgpu_ip_block *ip_block)
 {
-       struct amdgpu_device *adev = (struct amdgpu_device *)handle;
+       struct amdgpu_device *adev = ip_block->adev;
 
        uvd_v3_1_stop(adev);
 
index de9e622..853af18 100644 (file)
@@ -678,9 +678,9 @@ static int uvd_v4_2_wait_for_idle(void *handle)
        return -ETIMEDOUT;
 }
 
-static int uvd_v4_2_soft_reset(void *handle)
+static int uvd_v4_2_soft_reset(struct amdgpu_ip_block *ip_block)
 {
-       struct amdgpu_device *adev = (struct amdgpu_device *)handle;
+       struct amdgpu_device *adev = ip_block->adev;
 
        uvd_v4_2_stop(adev);
 
index f9bdbd1..7b61286 100644 (file)
@@ -600,9 +600,9 @@ static int uvd_v5_0_wait_for_idle(void *handle)
        return -ETIMEDOUT;
 }
 
-static int uvd_v5_0_soft_reset(void *handle)
+static int uvd_v5_0_soft_reset(struct amdgpu_ip_block *ip_block)
 {
-       struct amdgpu_device *adev = (struct amdgpu_device *)handle;
+       struct amdgpu_device *adev = ip_block->adev;
 
        uvd_v5_0_stop(adev);
 
index 9e6043f..1046ab6 100644 (file)
@@ -1195,9 +1195,9 @@ static int uvd_v6_0_pre_soft_reset(struct amdgpu_ip_block *ip_block)
        return 0;
 }
 
-static int uvd_v6_0_soft_reset(void *handle)
+static int uvd_v6_0_soft_reset(struct amdgpu_ip_block *ip_block)
 {
-       struct amdgpu_device *adev = (struct amdgpu_device *)handle;
+       struct amdgpu_device *adev = ip_block->adev;
        u32 srbm_soft_reset;
 
        if (!adev->uvd.inst->srbm_soft_reset)
index eebdf7b..d434255 100644 (file)
@@ -1517,9 +1517,9 @@ static int uvd_v7_0_pre_soft_reset(struct amdgpu_ip_block *ip_block)
        return 0;
 }
 
-static int uvd_v7_0_soft_reset(void *handle)
+static int uvd_v7_0_soft_reset(struct amdgpu_ip_block *ip_block)
 {
-       struct amdgpu_device *adev = (struct amdgpu_device *)handle;
+       struct amdgpu_device *adev = ip_block->adev;
        u32 srbm_soft_reset;
 
        if (!adev->uvd.inst[ring->me].srbm_soft_reset)
index cb77a9c..71ca996 100644 (file)
@@ -532,9 +532,9 @@ static int vce_v2_0_resume(void *handle)
        return vce_v2_0_hw_init(adev);
 }
 
-static int vce_v2_0_soft_reset(void *handle)
+static int vce_v2_0_soft_reset(struct amdgpu_ip_block *ip_block)
 {
-       struct amdgpu_device *adev = (struct amdgpu_device *)handle;
+       struct amdgpu_device *adev = ip_block->adev;
 
        WREG32_FIELD(SRBM_SOFT_RESET, SOFT_RESET_VCE, 1);
        mdelay(5);
index 6b7916c..34d7c2e 100644 (file)
@@ -668,9 +668,9 @@ static bool vce_v3_0_check_soft_reset(struct amdgpu_ip_block *ip_block)
        }
 }
 
-static int vce_v3_0_soft_reset(void *handle)
+static int vce_v3_0_soft_reset(struct amdgpu_ip_block *ip_block)
 {
-       struct amdgpu_device *adev = (struct amdgpu_device *)handle;
+       struct amdgpu_device *adev = ip_block->adev;
        u32 srbm_soft_reset;
 
        if (!adev->vce.srbm_soft_reset)
index 83b7ce5..b5399ec 100644 (file)
@@ -762,9 +762,9 @@ static bool vce_v4_0_check_soft_reset(struct amdgpu_ip_block *ip_block)
        }
 }
 
-static int vce_v4_0_soft_reset(void *handle)
+static int vce_v4_0_soft_reset(struct amdgpu_ip_block *ip_block)
 {
-       struct amdgpu_device *adev = (struct amdgpu_device *)handle;
+       struct amdgpu_device *adev = ip_block->adev;
        u32 srbm_soft_reset;
 
        if (!adev->vce.srbm_soft_reset)
index 07c229d..2d80aaf 100644 (file)
@@ -576,7 +576,7 @@ static int vega10_ih_wait_for_idle(void *handle)
        return -ETIMEDOUT;
 }
 
-static int vega10_ih_soft_reset(void *handle)
+static int vega10_ih_soft_reset(struct amdgpu_ip_block *ip_block)
 {
        /* todo */
 
index 89880d9..c246121 100644 (file)
@@ -642,7 +642,7 @@ static int vega20_ih_wait_for_idle(void *handle)
        return -ETIMEDOUT;
 }
 
-static int vega20_ih_soft_reset(void *handle)
+static int vega20_ih_soft_reset(struct amdgpu_ip_block *ip_block)
 {
        /* todo */
 
index a13f8ed..e832dd5 100644 (file)
@@ -1755,7 +1755,7 @@ static int vi_common_wait_for_idle(void *handle)
        return 0;
 }
 
-static int vi_common_soft_reset(void *handle)
+static int vi_common_soft_reset(struct amdgpu_ip_block *ip_block)
 {
        return 0;
 }
index 51d692f..d1ca9e7 100644 (file)
@@ -331,7 +331,7 @@ static bool dm_check_soft_reset(struct amdgpu_ip_block *ip_block)
        return false;
 }
 
-static int dm_soft_reset(void *handle)
+static int dm_soft_reset(struct amdgpu_ip_block *ip_block)
 {
        /* XXX todo */
        return 0;
index 15cd828..97a1726 100644 (file)
@@ -394,7 +394,7 @@ struct amd_ip_funcs {
        int (*wait_for_idle)(void *handle);
        bool (*check_soft_reset)(struct amdgpu_ip_block *ip_block);
        int (*pre_soft_reset)(struct amdgpu_ip_block *ip_block);
-       int (*soft_reset)(void *handle);
+       int (*soft_reset)(struct amdgpu_ip_block *ip_block);
        int (*post_soft_reset)(void *handle);
        int (*set_clockgating_state)(void *handle,
                                     enum amd_clockgating_state state);
index 69aa624..92c7e45 100644 (file)
@@ -3105,7 +3105,7 @@ static int kv_dpm_wait_for_idle(void *handle)
 }
 
 
-static int kv_dpm_soft_reset(void *handle)
+static int kv_dpm_soft_reset(struct amdgpu_ip_block *ip_block)
 {
        return 0;
 }
index 415c651..157777d 100644 (file)
@@ -7849,7 +7849,7 @@ static int si_dpm_wait_for_idle(void *handle)
        return 0;
 }
 
-static int si_dpm_soft_reset(void *handle)
+static int si_dpm_soft_reset(struct amdgpu_ip_block *ip_block)
 {
        return 0;
 }
index 5c109be..334f03c 100644 (file)
@@ -250,7 +250,7 @@ static int pp_wait_for_idle(void *handle)
        return 0;
 }
 
-static int pp_sw_reset(void *handle)
+static int pp_sw_reset(struct amdgpu_ip_block *ip_block)
 {
        return 0;
 }
index b32e433..2dd3867 100644 (file)
@@ -2053,6 +2053,7 @@ static void smu_late_fini(struct amdgpu_ip_block *ip_block)
 static int smu_reset(struct smu_context *smu)
 {
        struct amdgpu_device *adev = smu->adev;
+       struct amdgpu_ip_block *ip_block;
        int ret;
 
        ret = smu_hw_fini(adev);
@@ -2063,7 +2064,11 @@ static int smu_reset(struct smu_context *smu)
        if (ret)
                return ret;
 
-       ret = smu_late_init(&adev->ip_blocks[AMD_IP_BLOCK_TYPE_SMC]);
+       ip_block = amdgpu_device_ip_get_ip_block(adev, AMD_IP_BLOCK_TYPE_SMC);
+       if (!ip_block)
+               return -EINVAL;
+
+       ret = smu_late_init(ip_block);
        if (ret)
                return ret;