aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu
diff options
context:
space:
mode:
authorHuang Rui <ray.huang@amd.com>2016-12-14 03:26:54 -0500
committerAlex Deucher <alexander.deucher@amd.com>2017-01-27 11:12:36 -0500
commit167112bff8a753f0b1e5f649a3dfb48246bc6afe (patch)
treeec3402d1598a69507fbef94444065e4a0edff92d /drivers/gpu
parenta5b2b6ebf34b20e70a2bdb5214c371744e7fa260 (diff)
drm/amd/powerplay: add callbacks to move smc firmware request into sw_init phase
Signed-off-by: Huang Rui <ray.huang@amd.com> Acked-by: Alex Deucher <alexander.deucher@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
Diffstat (limited to 'drivers/gpu')
-rw-r--r--drivers/gpu/drm/amd/powerplay/amd_powerplay.c12
-rw-r--r--drivers/gpu/drm/amd/powerplay/inc/hwmgr.h2
2 files changed, 14 insertions, 0 deletions
diff --git a/drivers/gpu/drm/amd/powerplay/amd_powerplay.c b/drivers/gpu/drm/amd/powerplay/amd_powerplay.c
index c81cf1412728..cc7219084fad 100644
--- a/drivers/gpu/drm/amd/powerplay/amd_powerplay.c
+++ b/drivers/gpu/drm/amd/powerplay/amd_powerplay.c
@@ -76,9 +76,18 @@ static int pp_sw_init(void *handle)
76 if (ret) 76 if (ret)
77 goto err1; 77 goto err1;
78 78
79 if (hwmgr->hwmgr_func->request_firmware) {
80 ret = hwmgr->hwmgr_func->request_firmware(hwmgr);
81 if (ret)
82 goto err2;
83 }
84
79 pr_info("amdgpu: powerplay initialized\n"); 85 pr_info("amdgpu: powerplay initialized\n");
80 86
81 return 0; 87 return 0;
88err2:
89 if (hwmgr->hwmgr_func->backend_fini)
90 hwmgr->hwmgr_func->backend_fini(hwmgr);
82err1: 91err1:
83 if (hwmgr->pptable_func->pptable_fini) 92 if (hwmgr->pptable_func->pptable_fini)
84 hwmgr->pptable_func->pptable_fini(hwmgr); 93 hwmgr->pptable_func->pptable_fini(hwmgr);
@@ -101,6 +110,9 @@ static int pp_sw_fini(void *handle)
101 110
102 PP_CHECK_HW(hwmgr); 111 PP_CHECK_HW(hwmgr);
103 112
113 if (hwmgr->hwmgr_func->release_firmware)
114 ret = hwmgr->hwmgr_func->release_firmware(hwmgr);
115
104 if (hwmgr->hwmgr_func->backend_fini != NULL) 116 if (hwmgr->hwmgr_func->backend_fini != NULL)
105 ret = hwmgr->hwmgr_func->backend_fini(hwmgr); 117 ret = hwmgr->hwmgr_func->backend_fini(hwmgr);
106 118
diff --git a/drivers/gpu/drm/amd/powerplay/inc/hwmgr.h b/drivers/gpu/drm/amd/powerplay/inc/hwmgr.h
index 6cdb7cbf515e..3b7450ee7163 100644
--- a/drivers/gpu/drm/amd/powerplay/inc/hwmgr.h
+++ b/drivers/gpu/drm/amd/powerplay/inc/hwmgr.h
@@ -358,6 +358,8 @@ struct pp_hwmgr_func {
358 int (*get_mclk_od)(struct pp_hwmgr *hwmgr); 358 int (*get_mclk_od)(struct pp_hwmgr *hwmgr);
359 int (*set_mclk_od)(struct pp_hwmgr *hwmgr, uint32_t value); 359 int (*set_mclk_od)(struct pp_hwmgr *hwmgr, uint32_t value);
360 int (*read_sensor)(struct pp_hwmgr *hwmgr, int idx, int32_t *value); 360 int (*read_sensor)(struct pp_hwmgr *hwmgr, int idx, int32_t *value);
361 int (*request_firmware)(struct pp_hwmgr *hwmgr);
362 int (*release_firmware)(struct pp_hwmgr *hwmgr);
361}; 363};
362 364
363struct pp_table_func { 365struct pp_table_func {