aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/gpu/drm/radeon/cik.c33
-rw-r--r--drivers/gpu/drm/radeon/cikd.h2
-rw-r--r--drivers/gpu/drm/radeon/radeon_asic.c2
-rw-r--r--drivers/gpu/drm/radeon/radeon_asic.h2
4 files changed, 39 insertions, 0 deletions
diff --git a/drivers/gpu/drm/radeon/cik.c b/drivers/gpu/drm/radeon/cik.c
index 3e670d344a20..e1db25e48688 100644
--- a/drivers/gpu/drm/radeon/cik.c
+++ b/drivers/gpu/drm/radeon/cik.c
@@ -141,6 +141,39 @@ static void cik_fini_cg(struct radeon_device *rdev);
141static void cik_enable_gui_idle_interrupt(struct radeon_device *rdev, 141static void cik_enable_gui_idle_interrupt(struct radeon_device *rdev,
142 bool enable); 142 bool enable);
143 143
144/**
145 * cik_get_allowed_info_register - fetch the register for the info ioctl
146 *
147 * @rdev: radeon_device pointer
148 * @reg: register offset in bytes
149 * @val: register value
150 *
151 * Returns 0 for success or -EINVAL for an invalid register
152 *
153 */
154int cik_get_allowed_info_register(struct radeon_device *rdev,
155 u32 reg, u32 *val)
156{
157 switch (reg) {
158 case GRBM_STATUS:
159 case GRBM_STATUS2:
160 case GRBM_STATUS_SE0:
161 case GRBM_STATUS_SE1:
162 case GRBM_STATUS_SE2:
163 case GRBM_STATUS_SE3:
164 case SRBM_STATUS:
165 case SRBM_STATUS2:
166 case (SDMA0_STATUS_REG + SDMA0_REGISTER_OFFSET):
167 case (SDMA0_STATUS_REG + SDMA1_REGISTER_OFFSET):
168 case UVD_STATUS:
169 /* TODO VCE */
170 *val = RREG32(reg);
171 return 0;
172 default:
173 return -EINVAL;
174 }
175}
176
144/* get temperature in millidegrees */ 177/* get temperature in millidegrees */
145int ci_get_temp(struct radeon_device *rdev) 178int ci_get_temp(struct radeon_device *rdev)
146{ 179{
diff --git a/drivers/gpu/drm/radeon/cikd.h b/drivers/gpu/drm/radeon/cikd.h
index c648e1996dab..4870df898230 100644
--- a/drivers/gpu/drm/radeon/cikd.h
+++ b/drivers/gpu/drm/radeon/cikd.h
@@ -2088,6 +2088,8 @@
2088# define CLK_OD(x) ((x) << 6) 2088# define CLK_OD(x) ((x) << 6)
2089# define CLK_OD_MASK (0x1f << 6) 2089# define CLK_OD_MASK (0x1f << 6)
2090 2090
2091#define UVD_STATUS 0xf6bc
2092
2091/* UVD clocks */ 2093/* UVD clocks */
2092 2094
2093#define CG_DCLK_CNTL 0xC050009C 2095#define CG_DCLK_CNTL 0xC050009C
diff --git a/drivers/gpu/drm/radeon/radeon_asic.c b/drivers/gpu/drm/radeon/radeon_asic.c
index 21e5fe64f362..fafd8ce4d58f 100644
--- a/drivers/gpu/drm/radeon/radeon_asic.c
+++ b/drivers/gpu/drm/radeon/radeon_asic.c
@@ -2075,6 +2075,7 @@ static struct radeon_asic ci_asic = {
2075 .mc_wait_for_idle = &evergreen_mc_wait_for_idle, 2075 .mc_wait_for_idle = &evergreen_mc_wait_for_idle,
2076 .get_xclk = &cik_get_xclk, 2076 .get_xclk = &cik_get_xclk,
2077 .get_gpu_clock_counter = &cik_get_gpu_clock_counter, 2077 .get_gpu_clock_counter = &cik_get_gpu_clock_counter,
2078 .get_allowed_info_register = cik_get_allowed_info_register,
2078 .gart = { 2079 .gart = {
2079 .tlb_flush = &cik_pcie_gart_tlb_flush, 2080 .tlb_flush = &cik_pcie_gart_tlb_flush,
2080 .get_page_entry = &rs600_gart_get_page_entry, 2081 .get_page_entry = &rs600_gart_get_page_entry,
@@ -2187,6 +2188,7 @@ static struct radeon_asic kv_asic = {
2187 .mc_wait_for_idle = &evergreen_mc_wait_for_idle, 2188 .mc_wait_for_idle = &evergreen_mc_wait_for_idle,
2188 .get_xclk = &cik_get_xclk, 2189 .get_xclk = &cik_get_xclk,
2189 .get_gpu_clock_counter = &cik_get_gpu_clock_counter, 2190 .get_gpu_clock_counter = &cik_get_gpu_clock_counter,
2191 .get_allowed_info_register = cik_get_allowed_info_register,
2190 .gart = { 2192 .gart = {
2191 .tlb_flush = &cik_pcie_gart_tlb_flush, 2193 .tlb_flush = &cik_pcie_gart_tlb_flush,
2192 .get_page_entry = &rs600_gart_get_page_entry, 2194 .get_page_entry = &rs600_gart_get_page_entry,
diff --git a/drivers/gpu/drm/radeon/radeon_asic.h b/drivers/gpu/drm/radeon/radeon_asic.h
index f650bff863cd..cf0a90bb61ca 100644
--- a/drivers/gpu/drm/radeon/radeon_asic.h
+++ b/drivers/gpu/drm/radeon/radeon_asic.h
@@ -865,6 +865,8 @@ void cik_sdma_set_wptr(struct radeon_device *rdev,
865 struct radeon_ring *ring); 865 struct radeon_ring *ring);
866int ci_get_temp(struct radeon_device *rdev); 866int ci_get_temp(struct radeon_device *rdev);
867int kv_get_temp(struct radeon_device *rdev); 867int kv_get_temp(struct radeon_device *rdev);
868int cik_get_allowed_info_register(struct radeon_device *rdev,
869 u32 reg, u32 *val);
868 870
869int ci_dpm_init(struct radeon_device *rdev); 871int ci_dpm_init(struct radeon_device *rdev);
870int ci_dpm_enable(struct radeon_device *rdev); 872int ci_dpm_enable(struct radeon_device *rdev);