From: Likun Gao <Likun.Gao@xxxxxxx> Use struct pointer to call rlc function. Signed-off-by: Likun Gao <Likun.Gao@xxxxxxx> --- drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c | 28 +++++++++++++++++----------- 1 file changed, 17 insertions(+), 11 deletions(-) diff --git a/drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c b/drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c index 8439f9a..7735545 100644 --- a/drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c +++ b/drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c @@ -1391,7 +1391,7 @@ static int gfx_v8_0_rlc_init(struct amdgpu_device *adev) (void **)&adev->gfx.rlc.cs_ptr); if (r) { dev_warn(adev->dev, "(%d) create RLC c bo failed\n", r); - gfx_v8_0_rlc_fini(adev); + adev->gfx.rlc.funcs->rlc_fini(adev); return r; } @@ -2088,7 +2088,7 @@ static int gfx_v8_0_sw_init(void *handle) return r; } - r = gfx_v8_0_rlc_init(adev); + r = adev->gfx.rlc.funcs->rlc_init(adev); if (r) { DRM_ERROR("Failed to init rlc BOs!\n"); return r; @@ -2181,7 +2181,7 @@ static int gfx_v8_0_sw_fini(void *handle) amdgpu_gfx_kiq_fini(adev); gfx_v8_0_mec_fini(adev); - gfx_v8_0_rlc_fini(adev); + adev->gfx.rlc.funcs->rlc_fini(adev); amdgpu_bo_free_kernel(&adev->gfx.rlc.clear_state_obj, &adev->gfx.rlc.clear_state_gpu_addr, (void **)&adev->gfx.rlc.cs_ptr); @@ -4177,8 +4177,8 @@ static int gfx_v8_0_rlc_resume(struct amdgpu_device *adev) { int r; - gfx_v8_0_rlc_stop(adev); - gfx_v8_0_rlc_reset(adev); + adev->gfx.rlc.funcs->rlc_stop(adev); + adev->gfx.rlc.funcs->rlc_reset(adev); gfx_v8_0_init_pg(adev); if (adev->powerplay.pp_funcs->load_firmware) { @@ -4189,7 +4189,7 @@ static int gfx_v8_0_rlc_resume(struct amdgpu_device *adev) } } - gfx_v8_0_rlc_start(adev); + adev->gfx.rlc.funcs->rlc_start(adev); return 0; } @@ -4876,7 +4876,7 @@ static int gfx_v8_0_hw_init(void *handle) gfx_v8_0_init_golden_registers(adev); gfx_v8_0_constants_init(adev); - r = gfx_v8_0_rlc_resume(adev); + r = adev->gfx.rlc.funcs->rlc_resume(adev); if (r) return r; @@ -4988,7 +4988,7 @@ static int gfx_v8_0_hw_fini(void *handle) else pr_err("cp is busy, skip halt cp\n"); if (!gfx_v8_0_wait_for_rlc_idle(adev)) - gfx_v8_0_rlc_stop(adev); + adev->gfx.rlc.funcs->rlc_stop(adev); else pr_err("rlc is busy, skip halt rlc\n"); adev->gfx.rlc.funcs->exit_safe_mode(adev); @@ -5080,7 +5080,7 @@ static int gfx_v8_0_pre_soft_reset(void *handle) srbm_soft_reset = adev->gfx.srbm_soft_reset; /* stop the rlc */ - gfx_v8_0_rlc_stop(adev); + adev->gfx.rlc.funcs->rlc_stop(adev); if (REG_GET_FIELD(grbm_soft_reset, GRBM_SOFT_RESET, SOFT_RESET_CP) || REG_GET_FIELD(grbm_soft_reset, GRBM_SOFT_RESET, SOFT_RESET_GFX)) @@ -5206,7 +5206,7 @@ static int gfx_v8_0_post_soft_reset(void *handle) REG_GET_FIELD(grbm_soft_reset, GRBM_SOFT_RESET, SOFT_RESET_GFX)) gfx_v8_0_cp_gfx_resume(adev); - gfx_v8_0_rlc_start(adev); + adev->gfx.rlc.funcs->rlc_start(adev); return 0; } @@ -5663,7 +5663,13 @@ static void iceland_exit_rlc_safe_mode(struct amdgpu_device *adev) static const struct amdgpu_rlc_funcs iceland_rlc_funcs = { .enter_safe_mode = iceland_enter_rlc_safe_mode, - .exit_safe_mode = iceland_exit_rlc_safe_mode + .exit_safe_mode = iceland_exit_rlc_safe_mode, + .rlc_init = gfx_v8_0_rlc_init, + .rlc_fini = gfx_v8_0_rlc_fini, + .rlc_resume = gfx_v8_0_rlc_resume, + .rlc_stop = gfx_v8_0_rlc_stop, + .rlc_reset = gfx_v8_0_rlc_reset, + .rlc_start = gfx_v8_0_rlc_start }; static void gfx_v8_0_update_medium_grain_clock_gating(struct amdgpu_device *adev, -- 2.7.4 _______________________________________________ amd-gfx mailing list amd-gfx@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/amd-gfx