mirror of
https://github.com/linux-msm/laptops-kernel.git
synced 2026-08-13 14:19:53 -07:00
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: Sunil Khatri <sunil.khatri@amd.com> Reviewed-by: Christian König <christian.koenig@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
This commit is contained in:
committed by
Alex Deucher
parent
58608034ed
commit
692d2cd180
@@ -500,11 +500,11 @@ failure:
|
||||
* @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) {
|
||||
|
||||
@@ -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",
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -3002,9 +3002,9 @@ failed:
|
||||
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) {
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -600,7 +600,7 @@ static int amdgpu_vkms_hw_init(struct amdgpu_ip_block *ip_block)
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int amdgpu_vkms_hw_fini(void *handle)
|
||||
static int amdgpu_vkms_hw_fini(struct amdgpu_ip_block *ip_block)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
@@ -613,7 +613,7 @@ static int amdgpu_vkms_suspend(struct amdgpu_ip_block *ip_block)
|
||||
r = drm_mode_config_helper_suspend(adev_to_drm(adev));
|
||||
if (r)
|
||||
return r;
|
||||
return amdgpu_vkms_hw_fini(adev);
|
||||
return amdgpu_vkms_hw_fini(ip_block);
|
||||
}
|
||||
|
||||
static int amdgpu_vkms_resume(struct amdgpu_ip_block *ip_block)
|
||||
|
||||
@@ -421,9 +421,9 @@ static int vpe_hw_init(struct amdgpu_ip_block *ip_block)
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int vpe_hw_fini(void *handle)
|
||||
static int vpe_hw_fini(struct amdgpu_ip_block *ip_block)
|
||||
{
|
||||
struct amdgpu_device *adev = (struct amdgpu_device *)handle;
|
||||
struct amdgpu_device *adev = ip_block->adev;
|
||||
struct amdgpu_vpe *vpe = &adev->vpe;
|
||||
|
||||
vpe_ring_stop(vpe);
|
||||
@@ -440,7 +440,7 @@ static int vpe_suspend(struct amdgpu_ip_block *ip_block)
|
||||
|
||||
cancel_delayed_work_sync(&adev->vpe.idle_work);
|
||||
|
||||
return vpe_hw_fini(adev);
|
||||
return vpe_hw_fini(ip_block);
|
||||
}
|
||||
|
||||
static int vpe_resume(struct amdgpu_ip_block *ip_block)
|
||||
|
||||
@@ -2148,16 +2148,14 @@ static int cik_common_hw_init(struct amdgpu_ip_block *ip_block)
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int cik_common_hw_fini(void *handle)
|
||||
static int cik_common_hw_fini(struct amdgpu_ip_block *ip_block)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int cik_common_suspend(struct amdgpu_ip_block *ip_block)
|
||||
{
|
||||
struct amdgpu_device *adev = ip_block->adev;
|
||||
|
||||
return cik_common_hw_fini(adev);
|
||||
return cik_common_hw_fini(ip_block);
|
||||
}
|
||||
|
||||
static int cik_common_resume(struct amdgpu_ip_block *ip_block)
|
||||
|
||||
@@ -328,20 +328,16 @@ static int cik_ih_hw_init(struct amdgpu_ip_block *ip_block)
|
||||
return cik_ih_irq_init(adev);
|
||||
}
|
||||
|
||||
static int cik_ih_hw_fini(void *handle)
|
||||
static int cik_ih_hw_fini(struct amdgpu_ip_block *ip_block)
|
||||
{
|
||||
struct amdgpu_device *adev = (struct amdgpu_device *)handle;
|
||||
|
||||
cik_ih_irq_disable(adev);
|
||||
cik_ih_irq_disable(ip_block->adev);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int cik_ih_suspend(struct amdgpu_ip_block *ip_block)
|
||||
{
|
||||
struct amdgpu_device *adev = ip_block->adev;
|
||||
|
||||
return cik_ih_hw_fini(adev);
|
||||
return cik_ih_hw_fini(ip_block);
|
||||
}
|
||||
|
||||
static int cik_ih_resume(struct amdgpu_ip_block *ip_block)
|
||||
|
||||
@@ -1001,9 +1001,9 @@ static int cik_sdma_hw_init(struct amdgpu_ip_block *ip_block)
|
||||
return r;
|
||||
}
|
||||
|
||||
static int cik_sdma_hw_fini(void *handle)
|
||||
static int cik_sdma_hw_fini(struct amdgpu_ip_block *ip_block)
|
||||
{
|
||||
struct amdgpu_device *adev = (struct amdgpu_device *)handle;
|
||||
struct amdgpu_device *adev = ip_block->adev;
|
||||
|
||||
cik_ctx_switch_enable(adev, false);
|
||||
cik_sdma_enable(adev, false);
|
||||
@@ -1013,9 +1013,7 @@ static int cik_sdma_hw_fini(void *handle)
|
||||
|
||||
static int cik_sdma_suspend(struct amdgpu_ip_block *ip_block)
|
||||
{
|
||||
struct amdgpu_device *adev = ip_block->adev;
|
||||
|
||||
return cik_sdma_hw_fini(adev);
|
||||
return cik_sdma_hw_fini(ip_block);
|
||||
}
|
||||
|
||||
static int cik_sdma_resume(struct amdgpu_ip_block *ip_block)
|
||||
|
||||
@@ -324,20 +324,16 @@ static int cz_ih_hw_init(struct amdgpu_ip_block *ip_block)
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int cz_ih_hw_fini(void *handle)
|
||||
static int cz_ih_hw_fini(struct amdgpu_ip_block *ip_block)
|
||||
{
|
||||
struct amdgpu_device *adev = (struct amdgpu_device *)handle;
|
||||
|
||||
cz_ih_irq_disable(adev);
|
||||
cz_ih_irq_disable(ip_block->adev);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int cz_ih_suspend(struct amdgpu_ip_block *ip_block)
|
||||
{
|
||||
struct amdgpu_device *adev = ip_block->adev;
|
||||
|
||||
return cz_ih_hw_fini(adev);
|
||||
return cz_ih_hw_fini(ip_block);
|
||||
}
|
||||
|
||||
static int cz_ih_resume(struct amdgpu_ip_block *ip_block)
|
||||
|
||||
@@ -2887,10 +2887,10 @@ static int dce_v10_0_hw_init(struct amdgpu_ip_block *ip_block)
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int dce_v10_0_hw_fini(void *handle)
|
||||
static int dce_v10_0_hw_fini(struct amdgpu_ip_block *ip_block)
|
||||
{
|
||||
int i;
|
||||
struct amdgpu_device *adev = (struct amdgpu_device *)handle;
|
||||
struct amdgpu_device *adev = ip_block->adev;
|
||||
|
||||
dce_v10_0_hpd_fini(adev);
|
||||
|
||||
@@ -2917,7 +2917,7 @@ static int dce_v10_0_suspend(struct amdgpu_ip_block *ip_block)
|
||||
adev->mode_info.bl_level =
|
||||
amdgpu_atombios_encoder_get_backlight_level_from_reg(adev);
|
||||
|
||||
return dce_v10_0_hw_fini(adev);
|
||||
return dce_v10_0_hw_fini(ip_block);
|
||||
}
|
||||
|
||||
static int dce_v10_0_resume(struct amdgpu_ip_block *ip_block)
|
||||
|
||||
@@ -3025,10 +3025,10 @@ static int dce_v11_0_hw_init(struct amdgpu_ip_block *ip_block)
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int dce_v11_0_hw_fini(void *handle)
|
||||
static int dce_v11_0_hw_fini(struct amdgpu_ip_block *ip_block)
|
||||
{
|
||||
int i;
|
||||
struct amdgpu_device *adev = (struct amdgpu_device *)handle;
|
||||
struct amdgpu_device *adev = ip_block->adev;
|
||||
|
||||
dce_v11_0_hpd_fini(adev);
|
||||
|
||||
@@ -3055,7 +3055,7 @@ static int dce_v11_0_suspend(struct amdgpu_ip_block *ip_block)
|
||||
adev->mode_info.bl_level =
|
||||
amdgpu_atombios_encoder_get_backlight_level_from_reg(adev);
|
||||
|
||||
return dce_v11_0_hw_fini(adev);
|
||||
return dce_v11_0_hw_fini(ip_block);
|
||||
}
|
||||
|
||||
static int dce_v11_0_resume(struct amdgpu_ip_block *ip_block)
|
||||
|
||||
@@ -2783,10 +2783,10 @@ static int dce_v6_0_hw_init(struct amdgpu_ip_block *ip_block)
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int dce_v6_0_hw_fini(void *handle)
|
||||
static int dce_v6_0_hw_fini(struct amdgpu_ip_block *ip_block)
|
||||
{
|
||||
int i;
|
||||
struct amdgpu_device *adev = (struct amdgpu_device *)handle;
|
||||
struct amdgpu_device *adev = ip_block->adev;
|
||||
|
||||
dce_v6_0_hpd_fini(adev);
|
||||
|
||||
@@ -2812,7 +2812,7 @@ static int dce_v6_0_suspend(struct amdgpu_ip_block *ip_block)
|
||||
adev->mode_info.bl_level =
|
||||
amdgpu_atombios_encoder_get_backlight_level_from_reg(adev);
|
||||
|
||||
return dce_v6_0_hw_fini(adev);
|
||||
return dce_v6_0_hw_fini(ip_block);
|
||||
}
|
||||
|
||||
static int dce_v6_0_resume(struct amdgpu_ip_block *ip_block)
|
||||
|
||||
@@ -2805,10 +2805,10 @@ static int dce_v8_0_hw_init(struct amdgpu_ip_block *ip_block)
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int dce_v8_0_hw_fini(void *handle)
|
||||
static int dce_v8_0_hw_fini(struct amdgpu_ip_block *ip_block)
|
||||
{
|
||||
int i;
|
||||
struct amdgpu_device *adev = (struct amdgpu_device *)handle;
|
||||
struct amdgpu_device *adev = ip_block->adev;
|
||||
|
||||
dce_v8_0_hpd_fini(adev);
|
||||
|
||||
@@ -2835,7 +2835,7 @@ static int dce_v8_0_suspend(struct amdgpu_ip_block *ip_block)
|
||||
adev->mode_info.bl_level =
|
||||
amdgpu_atombios_encoder_get_backlight_level_from_reg(adev);
|
||||
|
||||
return dce_v8_0_hw_fini(adev);
|
||||
return dce_v8_0_hw_fini(ip_block);
|
||||
}
|
||||
|
||||
static int dce_v8_0_resume(struct amdgpu_ip_block *ip_block)
|
||||
|
||||
@@ -7418,9 +7418,9 @@ static int gfx_v10_0_hw_init(struct amdgpu_ip_block *ip_block)
|
||||
return r;
|
||||
}
|
||||
|
||||
static int gfx_v10_0_hw_fini(void *handle)
|
||||
static int gfx_v10_0_hw_fini(struct amdgpu_ip_block *ip_block)
|
||||
{
|
||||
struct amdgpu_device *adev = (struct amdgpu_device *)handle;
|
||||
struct amdgpu_device *adev = ip_block->adev;
|
||||
|
||||
amdgpu_irq_put(adev, &adev->gfx.priv_reg_irq, 0);
|
||||
amdgpu_irq_put(adev, &adev->gfx.priv_inst_irq, 0);
|
||||
@@ -7431,7 +7431,7 @@ static int gfx_v10_0_hw_fini(void *handle)
|
||||
* otherwise the gfxoff disallowing will be failed to set.
|
||||
*/
|
||||
if (amdgpu_ip_version(adev, GC_HWIP, 0) == IP_VERSION(10, 3, 1))
|
||||
gfx_v10_0_set_powergating_state(handle, AMD_PG_STATE_UNGATE);
|
||||
gfx_v10_0_set_powergating_state(ip_block->adev, AMD_PG_STATE_UNGATE);
|
||||
|
||||
if (!adev->no_hw_access) {
|
||||
if (amdgpu_async_gfx_ring) {
|
||||
@@ -7458,9 +7458,7 @@ static int gfx_v10_0_hw_fini(void *handle)
|
||||
|
||||
static int gfx_v10_0_suspend(struct amdgpu_ip_block *ip_block)
|
||||
{
|
||||
struct amdgpu_device *adev = ip_block->adev;
|
||||
|
||||
return gfx_v10_0_hw_fini(adev);
|
||||
return gfx_v10_0_hw_fini(ip_block);
|
||||
}
|
||||
|
||||
static int gfx_v10_0_resume(struct amdgpu_ip_block *ip_block)
|
||||
|
||||
@@ -4667,9 +4667,9 @@ static int gfx_v11_0_hw_init(struct amdgpu_ip_block *ip_block)
|
||||
return r;
|
||||
}
|
||||
|
||||
static int gfx_v11_0_hw_fini(void *handle)
|
||||
static int gfx_v11_0_hw_fini(struct amdgpu_ip_block *ip_block)
|
||||
{
|
||||
struct amdgpu_device *adev = (struct amdgpu_device *)handle;
|
||||
struct amdgpu_device *adev = ip_block->adev;
|
||||
|
||||
amdgpu_irq_put(adev, &adev->gfx.priv_reg_irq, 0);
|
||||
amdgpu_irq_put(adev, &adev->gfx.priv_inst_irq, 0);
|
||||
@@ -4707,9 +4707,7 @@ static int gfx_v11_0_hw_fini(void *handle)
|
||||
|
||||
static int gfx_v11_0_suspend(struct amdgpu_ip_block *ip_block)
|
||||
{
|
||||
struct amdgpu_device *adev = ip_block->adev;
|
||||
|
||||
return gfx_v11_0_hw_fini(adev);
|
||||
return gfx_v11_0_hw_fini(ip_block);
|
||||
}
|
||||
|
||||
static int gfx_v11_0_resume(struct amdgpu_ip_block *ip_block)
|
||||
|
||||
@@ -3603,9 +3603,9 @@ static int gfx_v12_0_hw_init(struct amdgpu_ip_block *ip_block)
|
||||
return r;
|
||||
}
|
||||
|
||||
static int gfx_v12_0_hw_fini(void *handle)
|
||||
static int gfx_v12_0_hw_fini(struct amdgpu_ip_block *ip_block)
|
||||
{
|
||||
struct amdgpu_device *adev = (struct amdgpu_device *)handle;
|
||||
struct amdgpu_device *adev = ip_block->adev;
|
||||
uint32_t tmp;
|
||||
|
||||
amdgpu_irq_put(adev, &adev->gfx.priv_reg_irq, 0);
|
||||
@@ -3645,9 +3645,7 @@ static int gfx_v12_0_hw_fini(void *handle)
|
||||
|
||||
static int gfx_v12_0_suspend(struct amdgpu_ip_block *ip_block)
|
||||
{
|
||||
struct amdgpu_device *adev = ip_block->adev;
|
||||
|
||||
return gfx_v12_0_hw_fini(adev);
|
||||
return gfx_v12_0_hw_fini(ip_block);
|
||||
}
|
||||
|
||||
static int gfx_v12_0_resume(struct amdgpu_ip_block *ip_block)
|
||||
|
||||
@@ -3142,9 +3142,9 @@ static int gfx_v6_0_hw_init(struct amdgpu_ip_block *ip_block)
|
||||
return r;
|
||||
}
|
||||
|
||||
static int gfx_v6_0_hw_fini(void *handle)
|
||||
static int gfx_v6_0_hw_fini(struct amdgpu_ip_block *ip_block)
|
||||
{
|
||||
struct amdgpu_device *adev = (struct amdgpu_device *)handle;
|
||||
struct amdgpu_device *adev = ip_block->adev;
|
||||
|
||||
gfx_v6_0_cp_enable(adev, false);
|
||||
adev->gfx.rlc.funcs->stop(adev);
|
||||
@@ -3155,9 +3155,7 @@ static int gfx_v6_0_hw_fini(void *handle)
|
||||
|
||||
static int gfx_v6_0_suspend(struct amdgpu_ip_block *ip_block)
|
||||
{
|
||||
struct amdgpu_device *adev = ip_block->adev;
|
||||
|
||||
return gfx_v6_0_hw_fini(adev);
|
||||
return gfx_v6_0_hw_fini(ip_block);
|
||||
}
|
||||
|
||||
static int gfx_v6_0_resume(struct amdgpu_ip_block *ip_block)
|
||||
|
||||
@@ -4486,9 +4486,9 @@ static int gfx_v7_0_hw_init(struct amdgpu_ip_block *ip_block)
|
||||
return r;
|
||||
}
|
||||
|
||||
static int gfx_v7_0_hw_fini(void *handle)
|
||||
static int gfx_v7_0_hw_fini(struct amdgpu_ip_block *ip_block)
|
||||
{
|
||||
struct amdgpu_device *adev = (struct amdgpu_device *)handle;
|
||||
struct amdgpu_device *adev = ip_block->adev;
|
||||
|
||||
amdgpu_irq_put(adev, &adev->gfx.priv_reg_irq, 0);
|
||||
amdgpu_irq_put(adev, &adev->gfx.priv_inst_irq, 0);
|
||||
@@ -4501,9 +4501,7 @@ static int gfx_v7_0_hw_fini(void *handle)
|
||||
|
||||
static int gfx_v7_0_suspend(struct amdgpu_ip_block *ip_block)
|
||||
{
|
||||
struct amdgpu_device *adev = ip_block->adev;
|
||||
|
||||
return gfx_v7_0_hw_fini(adev);
|
||||
return gfx_v7_0_hw_fini(ip_block);
|
||||
}
|
||||
|
||||
static int gfx_v7_0_resume(struct amdgpu_ip_block *ip_block)
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user