diff options
-rw-r--r-- | drivers/gpu/drm/radeon/cik.c | 33 | ||||
-rw-r--r-- | drivers/gpu/drm/radeon/cikd.h | 2 | ||||
-rw-r--r-- | drivers/gpu/drm/radeon/radeon_asic.c | 2 | ||||
-rw-r--r-- | drivers/gpu/drm/radeon/radeon_asic.h | 2 |
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); | |||
141 | static void cik_enable_gui_idle_interrupt(struct radeon_device *rdev, | 141 | static 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 | */ | ||
154 | int 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 */ |
145 | int ci_get_temp(struct radeon_device *rdev) | 178 | int 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); |
866 | int ci_get_temp(struct radeon_device *rdev); | 866 | int ci_get_temp(struct radeon_device *rdev); |
867 | int kv_get_temp(struct radeon_device *rdev); | 867 | int kv_get_temp(struct radeon_device *rdev); |
868 | int cik_get_allowed_info_register(struct radeon_device *rdev, | ||
869 | u32 reg, u32 *val); | ||
868 | 870 | ||
869 | int ci_dpm_init(struct radeon_device *rdev); | 871 | int ci_dpm_init(struct radeon_device *rdev); |
870 | int ci_dpm_enable(struct radeon_device *rdev); | 872 | int ci_dpm_enable(struct radeon_device *rdev); |