1 1.2 riastrad /* $NetBSD: radeon_asic.h,v 1.3 2021/12/18 23:45:43 riastradh Exp $ */ 2 1.2 riastrad 3 1.1 riastrad /* 4 1.1 riastrad * Copyright 2008 Advanced Micro Devices, Inc. 5 1.1 riastrad * Copyright 2008 Red Hat Inc. 6 1.1 riastrad * Copyright 2009 Jerome Glisse. 7 1.1 riastrad * 8 1.1 riastrad * Permission is hereby granted, free of charge, to any person obtaining a 9 1.1 riastrad * copy of this software and associated documentation files (the "Software"), 10 1.1 riastrad * to deal in the Software without restriction, including without limitation 11 1.1 riastrad * the rights to use, copy, modify, merge, publish, distribute, sublicense, 12 1.1 riastrad * and/or sell copies of the Software, and to permit persons to whom the 13 1.1 riastrad * Software is furnished to do so, subject to the following conditions: 14 1.1 riastrad * 15 1.1 riastrad * The above copyright notice and this permission notice shall be included in 16 1.1 riastrad * all copies or substantial portions of the Software. 17 1.1 riastrad * 18 1.1 riastrad * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 19 1.1 riastrad * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 20 1.1 riastrad * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL 21 1.1 riastrad * THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR 22 1.1 riastrad * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, 23 1.1 riastrad * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR 24 1.1 riastrad * OTHER DEALINGS IN THE SOFTWARE. 25 1.1 riastrad * 26 1.1 riastrad * Authors: Dave Airlie 27 1.1 riastrad * Alex Deucher 28 1.1 riastrad * Jerome Glisse 29 1.1 riastrad */ 30 1.1 riastrad #ifndef __RADEON_ASIC_H__ 31 1.1 riastrad #define __RADEON_ASIC_H__ 32 1.1 riastrad 33 1.1 riastrad /* 34 1.1 riastrad * common functions 35 1.1 riastrad */ 36 1.1 riastrad uint32_t radeon_legacy_get_engine_clock(struct radeon_device *rdev); 37 1.1 riastrad void radeon_legacy_set_engine_clock(struct radeon_device *rdev, uint32_t eng_clock); 38 1.1 riastrad uint32_t radeon_legacy_get_memory_clock(struct radeon_device *rdev); 39 1.1 riastrad void radeon_legacy_set_clock_gating(struct radeon_device *rdev, int enable); 40 1.1 riastrad 41 1.1 riastrad uint32_t radeon_atom_get_engine_clock(struct radeon_device *rdev); 42 1.1 riastrad void radeon_atom_set_engine_clock(struct radeon_device *rdev, uint32_t eng_clock); 43 1.1 riastrad uint32_t radeon_atom_get_memory_clock(struct radeon_device *rdev); 44 1.1 riastrad void radeon_atom_set_memory_clock(struct radeon_device *rdev, uint32_t mem_clock); 45 1.1 riastrad void radeon_atom_set_clock_gating(struct radeon_device *rdev, int enable); 46 1.1 riastrad 47 1.1 riastrad void atombios_set_backlight_level(struct radeon_encoder *radeon_encoder, u8 level); 48 1.1 riastrad u8 atombios_get_backlight_level(struct radeon_encoder *radeon_encoder); 49 1.1 riastrad void radeon_legacy_set_backlight_level(struct radeon_encoder *radeon_encoder, u8 level); 50 1.1 riastrad u8 radeon_legacy_get_backlight_level(struct radeon_encoder *radeon_encoder); 51 1.1 riastrad 52 1.1 riastrad /* 53 1.1 riastrad * r100,rv100,rs100,rv200,rs200 54 1.1 riastrad */ 55 1.1 riastrad struct r100_mc_save { 56 1.1 riastrad u32 GENMO_WT; 57 1.1 riastrad u32 CRTC_EXT_CNTL; 58 1.1 riastrad u32 CRTC_GEN_CNTL; 59 1.1 riastrad u32 CRTC2_GEN_CNTL; 60 1.1 riastrad u32 CUR_OFFSET; 61 1.1 riastrad u32 CUR2_OFFSET; 62 1.1 riastrad }; 63 1.1 riastrad int r100_init(struct radeon_device *rdev); 64 1.1 riastrad void r100_fini(struct radeon_device *rdev); 65 1.1 riastrad int r100_suspend(struct radeon_device *rdev); 66 1.1 riastrad int r100_resume(struct radeon_device *rdev); 67 1.1 riastrad void r100_vga_set_state(struct radeon_device *rdev, bool state); 68 1.1 riastrad bool r100_gpu_is_lockup(struct radeon_device *rdev, struct radeon_ring *cp); 69 1.3 riastrad int r100_asic_reset(struct radeon_device *rdev, bool hard); 70 1.1 riastrad u32 r100_get_vblank_counter(struct radeon_device *rdev, int crtc); 71 1.1 riastrad void r100_pci_gart_tlb_flush(struct radeon_device *rdev); 72 1.2 riastrad uint64_t r100_pci_gart_get_page_entry(uint64_t addr, uint32_t flags); 73 1.2 riastrad void r100_pci_gart_set_page(struct radeon_device *rdev, unsigned i, 74 1.2 riastrad uint64_t entry); 75 1.1 riastrad void r100_ring_start(struct radeon_device *rdev, struct radeon_ring *ring); 76 1.1 riastrad int r100_irq_set(struct radeon_device *rdev); 77 1.1 riastrad int r100_irq_process(struct radeon_device *rdev); 78 1.1 riastrad void r100_fence_ring_emit(struct radeon_device *rdev, 79 1.1 riastrad struct radeon_fence *fence); 80 1.1 riastrad bool r100_semaphore_ring_emit(struct radeon_device *rdev, 81 1.1 riastrad struct radeon_ring *cp, 82 1.1 riastrad struct radeon_semaphore *semaphore, 83 1.1 riastrad bool emit_wait); 84 1.1 riastrad int r100_cs_parse(struct radeon_cs_parser *p); 85 1.1 riastrad void r100_pll_wreg(struct radeon_device *rdev, uint32_t reg, uint32_t v); 86 1.1 riastrad uint32_t r100_pll_rreg(struct radeon_device *rdev, uint32_t reg); 87 1.2 riastrad struct radeon_fence *r100_copy_blit(struct radeon_device *rdev, 88 1.2 riastrad uint64_t src_offset, 89 1.2 riastrad uint64_t dst_offset, 90 1.2 riastrad unsigned num_gpu_pages, 91 1.3 riastrad struct dma_resv *resv); 92 1.1 riastrad int r100_set_surface_reg(struct radeon_device *rdev, int reg, 93 1.1 riastrad uint32_t tiling_flags, uint32_t pitch, 94 1.1 riastrad uint32_t offset, uint32_t obj_size); 95 1.1 riastrad void r100_clear_surface_reg(struct radeon_device *rdev, int reg); 96 1.1 riastrad void r100_bandwidth_update(struct radeon_device *rdev); 97 1.1 riastrad void r100_ring_ib_execute(struct radeon_device *rdev, struct radeon_ib *ib); 98 1.1 riastrad int r100_ring_test(struct radeon_device *rdev, struct radeon_ring *cp); 99 1.1 riastrad void r100_hpd_init(struct radeon_device *rdev); 100 1.1 riastrad void r100_hpd_fini(struct radeon_device *rdev); 101 1.1 riastrad bool r100_hpd_sense(struct radeon_device *rdev, enum radeon_hpd_id hpd); 102 1.1 riastrad void r100_hpd_set_polarity(struct radeon_device *rdev, 103 1.1 riastrad enum radeon_hpd_id hpd); 104 1.1 riastrad int r100_debugfs_rbbm_init(struct radeon_device *rdev); 105 1.1 riastrad int r100_debugfs_cp_init(struct radeon_device *rdev); 106 1.1 riastrad void r100_cp_disable(struct radeon_device *rdev); 107 1.1 riastrad int r100_cp_init(struct radeon_device *rdev, unsigned ring_size); 108 1.1 riastrad void r100_cp_fini(struct radeon_device *rdev); 109 1.1 riastrad int r100_pci_gart_init(struct radeon_device *rdev); 110 1.1 riastrad void r100_pci_gart_fini(struct radeon_device *rdev); 111 1.1 riastrad int r100_pci_gart_enable(struct radeon_device *rdev); 112 1.1 riastrad void r100_pci_gart_disable(struct radeon_device *rdev); 113 1.1 riastrad int r100_debugfs_mc_info_init(struct radeon_device *rdev); 114 1.1 riastrad int r100_gui_wait_for_idle(struct radeon_device *rdev); 115 1.1 riastrad int r100_ib_test(struct radeon_device *rdev, struct radeon_ring *ring); 116 1.1 riastrad void r100_irq_disable(struct radeon_device *rdev); 117 1.1 riastrad void r100_mc_stop(struct radeon_device *rdev, struct r100_mc_save *save); 118 1.1 riastrad void r100_mc_resume(struct radeon_device *rdev, struct r100_mc_save *save); 119 1.1 riastrad void r100_vram_init_sizes(struct radeon_device *rdev); 120 1.1 riastrad int r100_cp_reset(struct radeon_device *rdev); 121 1.1 riastrad void r100_vga_render_disable(struct radeon_device *rdev); 122 1.1 riastrad void r100_restore_sanity(struct radeon_device *rdev); 123 1.1 riastrad int r100_cs_track_check_pkt3_indx_buffer(struct radeon_cs_parser *p, 124 1.1 riastrad struct radeon_cs_packet *pkt, 125 1.1 riastrad struct radeon_bo *robj); 126 1.1 riastrad int r100_cs_parse_packet0(struct radeon_cs_parser *p, 127 1.1 riastrad struct radeon_cs_packet *pkt, 128 1.1 riastrad const unsigned *auth, unsigned n, 129 1.1 riastrad radeon_packet0_check_t check); 130 1.1 riastrad int r100_cs_packet_parse(struct radeon_cs_parser *p, 131 1.1 riastrad struct radeon_cs_packet *pkt, 132 1.1 riastrad unsigned idx); 133 1.1 riastrad void r100_enable_bm(struct radeon_device *rdev); 134 1.1 riastrad void r100_set_common_regs(struct radeon_device *rdev); 135 1.1 riastrad void r100_bm_disable(struct radeon_device *rdev); 136 1.1 riastrad extern bool r100_gui_idle(struct radeon_device *rdev); 137 1.1 riastrad extern void r100_pm_misc(struct radeon_device *rdev); 138 1.1 riastrad extern void r100_pm_prepare(struct radeon_device *rdev); 139 1.1 riastrad extern void r100_pm_finish(struct radeon_device *rdev); 140 1.1 riastrad extern void r100_pm_init_profile(struct radeon_device *rdev); 141 1.1 riastrad extern void r100_pm_get_dynpm_state(struct radeon_device *rdev); 142 1.2 riastrad extern void r100_page_flip(struct radeon_device *rdev, int crtc, 143 1.3 riastrad u64 crtc_base, bool async); 144 1.2 riastrad extern bool r100_page_flip_pending(struct radeon_device *rdev, int crtc); 145 1.1 riastrad extern void r100_wait_for_vblank(struct radeon_device *rdev, int crtc); 146 1.1 riastrad extern int r100_mc_wait_for_idle(struct radeon_device *rdev); 147 1.1 riastrad 148 1.1 riastrad u32 r100_gfx_get_rptr(struct radeon_device *rdev, 149 1.1 riastrad struct radeon_ring *ring); 150 1.1 riastrad u32 r100_gfx_get_wptr(struct radeon_device *rdev, 151 1.1 riastrad struct radeon_ring *ring); 152 1.1 riastrad void r100_gfx_set_wptr(struct radeon_device *rdev, 153 1.1 riastrad struct radeon_ring *ring); 154 1.1 riastrad 155 1.1 riastrad /* 156 1.1 riastrad * r200,rv250,rs300,rv280 157 1.1 riastrad */ 158 1.2 riastrad struct radeon_fence *r200_copy_dma(struct radeon_device *rdev, 159 1.2 riastrad uint64_t src_offset, 160 1.2 riastrad uint64_t dst_offset, 161 1.2 riastrad unsigned num_gpu_pages, 162 1.3 riastrad struct dma_resv *resv); 163 1.1 riastrad void r200_set_safe_registers(struct radeon_device *rdev); 164 1.1 riastrad 165 1.1 riastrad /* 166 1.1 riastrad * r300,r350,rv350,rv380 167 1.1 riastrad */ 168 1.1 riastrad extern int r300_init(struct radeon_device *rdev); 169 1.1 riastrad extern void r300_fini(struct radeon_device *rdev); 170 1.1 riastrad extern int r300_suspend(struct radeon_device *rdev); 171 1.1 riastrad extern int r300_resume(struct radeon_device *rdev); 172 1.3 riastrad extern int r300_asic_reset(struct radeon_device *rdev, bool hard); 173 1.1 riastrad extern void r300_ring_start(struct radeon_device *rdev, struct radeon_ring *ring); 174 1.1 riastrad extern void r300_fence_ring_emit(struct radeon_device *rdev, 175 1.1 riastrad struct radeon_fence *fence); 176 1.1 riastrad extern int r300_cs_parse(struct radeon_cs_parser *p); 177 1.1 riastrad extern void rv370_pcie_gart_tlb_flush(struct radeon_device *rdev); 178 1.2 riastrad extern uint64_t rv370_pcie_gart_get_page_entry(uint64_t addr, uint32_t flags); 179 1.2 riastrad extern void rv370_pcie_gart_set_page(struct radeon_device *rdev, unsigned i, 180 1.2 riastrad uint64_t entry); 181 1.1 riastrad extern void rv370_set_pcie_lanes(struct radeon_device *rdev, int lanes); 182 1.1 riastrad extern int rv370_get_pcie_lanes(struct radeon_device *rdev); 183 1.1 riastrad extern void r300_set_reg_safe(struct radeon_device *rdev); 184 1.1 riastrad extern void r300_mc_program(struct radeon_device *rdev); 185 1.1 riastrad extern void r300_mc_init(struct radeon_device *rdev); 186 1.1 riastrad extern void r300_clock_startup(struct radeon_device *rdev); 187 1.1 riastrad extern int r300_mc_wait_for_idle(struct radeon_device *rdev); 188 1.1 riastrad extern int rv370_pcie_gart_init(struct radeon_device *rdev); 189 1.1 riastrad extern void rv370_pcie_gart_fini(struct radeon_device *rdev); 190 1.1 riastrad extern int rv370_pcie_gart_enable(struct radeon_device *rdev); 191 1.1 riastrad extern void rv370_pcie_gart_disable(struct radeon_device *rdev); 192 1.1 riastrad extern int r300_mc_wait_for_idle(struct radeon_device *rdev); 193 1.1 riastrad 194 1.1 riastrad /* 195 1.1 riastrad * r420,r423,rv410 196 1.1 riastrad */ 197 1.1 riastrad extern int r420_init(struct radeon_device *rdev); 198 1.1 riastrad extern void r420_fini(struct radeon_device *rdev); 199 1.1 riastrad extern int r420_suspend(struct radeon_device *rdev); 200 1.1 riastrad extern int r420_resume(struct radeon_device *rdev); 201 1.1 riastrad extern void r420_pm_init_profile(struct radeon_device *rdev); 202 1.1 riastrad extern u32 r420_mc_rreg(struct radeon_device *rdev, u32 reg); 203 1.1 riastrad extern void r420_mc_wreg(struct radeon_device *rdev, u32 reg, u32 v); 204 1.1 riastrad extern int r420_debugfs_pipes_info_init(struct radeon_device *rdev); 205 1.1 riastrad extern void r420_pipes_init(struct radeon_device *rdev); 206 1.1 riastrad 207 1.1 riastrad /* 208 1.1 riastrad * rs400,rs480 209 1.1 riastrad */ 210 1.1 riastrad extern int rs400_init(struct radeon_device *rdev); 211 1.1 riastrad extern void rs400_fini(struct radeon_device *rdev); 212 1.1 riastrad extern int rs400_suspend(struct radeon_device *rdev); 213 1.1 riastrad extern int rs400_resume(struct radeon_device *rdev); 214 1.1 riastrad void rs400_gart_tlb_flush(struct radeon_device *rdev); 215 1.2 riastrad uint64_t rs400_gart_get_page_entry(uint64_t addr, uint32_t flags); 216 1.2 riastrad void rs400_gart_set_page(struct radeon_device *rdev, unsigned i, 217 1.2 riastrad uint64_t entry); 218 1.1 riastrad uint32_t rs400_mc_rreg(struct radeon_device *rdev, uint32_t reg); 219 1.1 riastrad void rs400_mc_wreg(struct radeon_device *rdev, uint32_t reg, uint32_t v); 220 1.1 riastrad int rs400_gart_init(struct radeon_device *rdev); 221 1.1 riastrad int rs400_gart_enable(struct radeon_device *rdev); 222 1.1 riastrad void rs400_gart_adjust_size(struct radeon_device *rdev); 223 1.1 riastrad void rs400_gart_disable(struct radeon_device *rdev); 224 1.1 riastrad void rs400_gart_fini(struct radeon_device *rdev); 225 1.1 riastrad extern int rs400_mc_wait_for_idle(struct radeon_device *rdev); 226 1.1 riastrad 227 1.1 riastrad /* 228 1.1 riastrad * rs600. 229 1.1 riastrad */ 230 1.3 riastrad extern int rs600_asic_reset(struct radeon_device *rdev, bool hard); 231 1.1 riastrad extern int rs600_init(struct radeon_device *rdev); 232 1.1 riastrad extern void rs600_fini(struct radeon_device *rdev); 233 1.1 riastrad extern int rs600_suspend(struct radeon_device *rdev); 234 1.1 riastrad extern int rs600_resume(struct radeon_device *rdev); 235 1.1 riastrad int rs600_irq_set(struct radeon_device *rdev); 236 1.1 riastrad int rs600_irq_process(struct radeon_device *rdev); 237 1.1 riastrad void rs600_irq_disable(struct radeon_device *rdev); 238 1.1 riastrad u32 rs600_get_vblank_counter(struct radeon_device *rdev, int crtc); 239 1.1 riastrad void rs600_gart_tlb_flush(struct radeon_device *rdev); 240 1.2 riastrad uint64_t rs600_gart_get_page_entry(uint64_t addr, uint32_t flags); 241 1.2 riastrad void rs600_gart_set_page(struct radeon_device *rdev, unsigned i, 242 1.2 riastrad uint64_t entry); 243 1.1 riastrad uint32_t rs600_mc_rreg(struct radeon_device *rdev, uint32_t reg); 244 1.1 riastrad void rs600_mc_wreg(struct radeon_device *rdev, uint32_t reg, uint32_t v); 245 1.1 riastrad void rs600_bandwidth_update(struct radeon_device *rdev); 246 1.1 riastrad void rs600_hpd_init(struct radeon_device *rdev); 247 1.1 riastrad void rs600_hpd_fini(struct radeon_device *rdev); 248 1.1 riastrad bool rs600_hpd_sense(struct radeon_device *rdev, enum radeon_hpd_id hpd); 249 1.1 riastrad void rs600_hpd_set_polarity(struct radeon_device *rdev, 250 1.1 riastrad enum radeon_hpd_id hpd); 251 1.1 riastrad extern void rs600_pm_misc(struct radeon_device *rdev); 252 1.1 riastrad extern void rs600_pm_prepare(struct radeon_device *rdev); 253 1.1 riastrad extern void rs600_pm_finish(struct radeon_device *rdev); 254 1.2 riastrad extern void rs600_page_flip(struct radeon_device *rdev, int crtc, 255 1.3 riastrad u64 crtc_base, bool async); 256 1.2 riastrad extern bool rs600_page_flip_pending(struct radeon_device *rdev, int crtc); 257 1.1 riastrad void rs600_set_safe_registers(struct radeon_device *rdev); 258 1.1 riastrad extern void avivo_wait_for_vblank(struct radeon_device *rdev, int crtc); 259 1.1 riastrad extern int rs600_mc_wait_for_idle(struct radeon_device *rdev); 260 1.1 riastrad 261 1.1 riastrad /* 262 1.1 riastrad * rs690,rs740 263 1.1 riastrad */ 264 1.1 riastrad int rs690_init(struct radeon_device *rdev); 265 1.1 riastrad void rs690_fini(struct radeon_device *rdev); 266 1.1 riastrad int rs690_resume(struct radeon_device *rdev); 267 1.1 riastrad int rs690_suspend(struct radeon_device *rdev); 268 1.1 riastrad uint32_t rs690_mc_rreg(struct radeon_device *rdev, uint32_t reg); 269 1.1 riastrad void rs690_mc_wreg(struct radeon_device *rdev, uint32_t reg, uint32_t v); 270 1.1 riastrad void rs690_bandwidth_update(struct radeon_device *rdev); 271 1.1 riastrad void rs690_line_buffer_adjust(struct radeon_device *rdev, 272 1.1 riastrad struct drm_display_mode *mode1, 273 1.1 riastrad struct drm_display_mode *mode2); 274 1.1 riastrad extern int rs690_mc_wait_for_idle(struct radeon_device *rdev); 275 1.1 riastrad 276 1.1 riastrad /* 277 1.1 riastrad * rv515 278 1.1 riastrad */ 279 1.1 riastrad struct rv515_mc_save { 280 1.1 riastrad u32 vga_render_control; 281 1.1 riastrad u32 vga_hdp_control; 282 1.1 riastrad bool crtc_enabled[2]; 283 1.1 riastrad }; 284 1.1 riastrad 285 1.1 riastrad int rv515_init(struct radeon_device *rdev); 286 1.1 riastrad void rv515_fini(struct radeon_device *rdev); 287 1.1 riastrad uint32_t rv515_mc_rreg(struct radeon_device *rdev, uint32_t reg); 288 1.1 riastrad void rv515_mc_wreg(struct radeon_device *rdev, uint32_t reg, uint32_t v); 289 1.1 riastrad void rv515_ring_start(struct radeon_device *rdev, struct radeon_ring *ring); 290 1.1 riastrad void rv515_bandwidth_update(struct radeon_device *rdev); 291 1.1 riastrad int rv515_resume(struct radeon_device *rdev); 292 1.1 riastrad int rv515_suspend(struct radeon_device *rdev); 293 1.1 riastrad void rv515_bandwidth_avivo_update(struct radeon_device *rdev); 294 1.1 riastrad void rv515_vga_render_disable(struct radeon_device *rdev); 295 1.1 riastrad void rv515_set_safe_registers(struct radeon_device *rdev); 296 1.1 riastrad void rv515_mc_stop(struct radeon_device *rdev, struct rv515_mc_save *save); 297 1.1 riastrad void rv515_mc_resume(struct radeon_device *rdev, struct rv515_mc_save *save); 298 1.1 riastrad void rv515_clock_startup(struct radeon_device *rdev); 299 1.1 riastrad void rv515_debugfs(struct radeon_device *rdev); 300 1.1 riastrad int rv515_mc_wait_for_idle(struct radeon_device *rdev); 301 1.1 riastrad 302 1.1 riastrad /* 303 1.1 riastrad * r520,rv530,rv560,rv570,r580 304 1.1 riastrad */ 305 1.1 riastrad int r520_init(struct radeon_device *rdev); 306 1.1 riastrad int r520_resume(struct radeon_device *rdev); 307 1.1 riastrad int r520_mc_wait_for_idle(struct radeon_device *rdev); 308 1.1 riastrad 309 1.1 riastrad /* 310 1.1 riastrad * r600,rv610,rv630,rv620,rv635,rv670,rs780,rs880 311 1.1 riastrad */ 312 1.1 riastrad int r600_init(struct radeon_device *rdev); 313 1.1 riastrad void r600_fini(struct radeon_device *rdev); 314 1.1 riastrad int r600_suspend(struct radeon_device *rdev); 315 1.1 riastrad int r600_resume(struct radeon_device *rdev); 316 1.1 riastrad void r600_vga_set_state(struct radeon_device *rdev, bool state); 317 1.1 riastrad int r600_wb_init(struct radeon_device *rdev); 318 1.1 riastrad void r600_wb_fini(struct radeon_device *rdev); 319 1.1 riastrad void r600_pcie_gart_tlb_flush(struct radeon_device *rdev); 320 1.1 riastrad uint32_t r600_pciep_rreg(struct radeon_device *rdev, uint32_t reg); 321 1.1 riastrad void r600_pciep_wreg(struct radeon_device *rdev, uint32_t reg, uint32_t v); 322 1.1 riastrad int r600_cs_parse(struct radeon_cs_parser *p); 323 1.1 riastrad int r600_dma_cs_parse(struct radeon_cs_parser *p); 324 1.1 riastrad void r600_fence_ring_emit(struct radeon_device *rdev, 325 1.1 riastrad struct radeon_fence *fence); 326 1.1 riastrad bool r600_semaphore_ring_emit(struct radeon_device *rdev, 327 1.1 riastrad struct radeon_ring *cp, 328 1.1 riastrad struct radeon_semaphore *semaphore, 329 1.1 riastrad bool emit_wait); 330 1.1 riastrad void r600_dma_fence_ring_emit(struct radeon_device *rdev, 331 1.1 riastrad struct radeon_fence *fence); 332 1.1 riastrad bool r600_dma_semaphore_ring_emit(struct radeon_device *rdev, 333 1.1 riastrad struct radeon_ring *ring, 334 1.1 riastrad struct radeon_semaphore *semaphore, 335 1.1 riastrad bool emit_wait); 336 1.1 riastrad void r600_dma_ring_ib_execute(struct radeon_device *rdev, struct radeon_ib *ib); 337 1.1 riastrad bool r600_dma_is_lockup(struct radeon_device *rdev, struct radeon_ring *ring); 338 1.1 riastrad bool r600_gfx_is_lockup(struct radeon_device *rdev, struct radeon_ring *cp); 339 1.3 riastrad int r600_asic_reset(struct radeon_device *rdev, bool hard); 340 1.1 riastrad int r600_set_surface_reg(struct radeon_device *rdev, int reg, 341 1.1 riastrad uint32_t tiling_flags, uint32_t pitch, 342 1.1 riastrad uint32_t offset, uint32_t obj_size); 343 1.1 riastrad void r600_clear_surface_reg(struct radeon_device *rdev, int reg); 344 1.1 riastrad int r600_ib_test(struct radeon_device *rdev, struct radeon_ring *ring); 345 1.1 riastrad int r600_dma_ib_test(struct radeon_device *rdev, struct radeon_ring *ring); 346 1.1 riastrad void r600_ring_ib_execute(struct radeon_device *rdev, struct radeon_ib *ib); 347 1.1 riastrad int r600_ring_test(struct radeon_device *rdev, struct radeon_ring *cp); 348 1.1 riastrad int r600_dma_ring_test(struct radeon_device *rdev, struct radeon_ring *cp); 349 1.2 riastrad struct radeon_fence *r600_copy_cpdma(struct radeon_device *rdev, 350 1.2 riastrad uint64_t src_offset, uint64_t dst_offset, 351 1.2 riastrad unsigned num_gpu_pages, 352 1.3 riastrad struct dma_resv *resv); 353 1.2 riastrad struct radeon_fence *r600_copy_dma(struct radeon_device *rdev, 354 1.2 riastrad uint64_t src_offset, uint64_t dst_offset, 355 1.2 riastrad unsigned num_gpu_pages, 356 1.3 riastrad struct dma_resv *resv); 357 1.1 riastrad void r600_hpd_init(struct radeon_device *rdev); 358 1.1 riastrad void r600_hpd_fini(struct radeon_device *rdev); 359 1.1 riastrad bool r600_hpd_sense(struct radeon_device *rdev, enum radeon_hpd_id hpd); 360 1.1 riastrad void r600_hpd_set_polarity(struct radeon_device *rdev, 361 1.1 riastrad enum radeon_hpd_id hpd); 362 1.2 riastrad extern void r600_mmio_hdp_flush(struct radeon_device *rdev); 363 1.1 riastrad extern bool r600_gui_idle(struct radeon_device *rdev); 364 1.1 riastrad extern void r600_pm_misc(struct radeon_device *rdev); 365 1.1 riastrad extern void r600_pm_init_profile(struct radeon_device *rdev); 366 1.1 riastrad extern void rs780_pm_init_profile(struct radeon_device *rdev); 367 1.1 riastrad extern uint32_t rs780_mc_rreg(struct radeon_device *rdev, uint32_t reg); 368 1.1 riastrad extern void rs780_mc_wreg(struct radeon_device *rdev, uint32_t reg, uint32_t v); 369 1.1 riastrad extern void r600_pm_get_dynpm_state(struct radeon_device *rdev); 370 1.1 riastrad extern void r600_set_pcie_lanes(struct radeon_device *rdev, int lanes); 371 1.1 riastrad extern int r600_get_pcie_lanes(struct radeon_device *rdev); 372 1.1 riastrad bool r600_card_posted(struct radeon_device *rdev); 373 1.1 riastrad void r600_cp_stop(struct radeon_device *rdev); 374 1.1 riastrad int r600_cp_start(struct radeon_device *rdev); 375 1.1 riastrad void r600_ring_init(struct radeon_device *rdev, struct radeon_ring *cp, unsigned ring_size); 376 1.1 riastrad int r600_cp_resume(struct radeon_device *rdev); 377 1.1 riastrad void r600_cp_fini(struct radeon_device *rdev); 378 1.1 riastrad int r600_count_pipe_bits(uint32_t val); 379 1.1 riastrad int r600_mc_wait_for_idle(struct radeon_device *rdev); 380 1.1 riastrad int r600_pcie_gart_init(struct radeon_device *rdev); 381 1.1 riastrad void r600_scratch_init(struct radeon_device *rdev); 382 1.1 riastrad int r600_init_microcode(struct radeon_device *rdev); 383 1.1 riastrad u32 r600_gfx_get_rptr(struct radeon_device *rdev, 384 1.1 riastrad struct radeon_ring *ring); 385 1.1 riastrad u32 r600_gfx_get_wptr(struct radeon_device *rdev, 386 1.1 riastrad struct radeon_ring *ring); 387 1.1 riastrad void r600_gfx_set_wptr(struct radeon_device *rdev, 388 1.1 riastrad struct radeon_ring *ring); 389 1.2 riastrad int r600_get_allowed_info_register(struct radeon_device *rdev, 390 1.2 riastrad u32 reg, u32 *val); 391 1.1 riastrad /* r600 irq */ 392 1.1 riastrad int r600_irq_process(struct radeon_device *rdev); 393 1.1 riastrad int r600_irq_init(struct radeon_device *rdev); 394 1.1 riastrad void r600_irq_fini(struct radeon_device *rdev); 395 1.1 riastrad void r600_ih_ring_init(struct radeon_device *rdev, unsigned ring_size); 396 1.1 riastrad int r600_irq_set(struct radeon_device *rdev); 397 1.1 riastrad void r600_irq_suspend(struct radeon_device *rdev); 398 1.1 riastrad void r600_disable_interrupts(struct radeon_device *rdev); 399 1.1 riastrad void r600_rlc_stop(struct radeon_device *rdev); 400 1.1 riastrad /* r600 audio */ 401 1.1 riastrad void r600_audio_fini(struct radeon_device *rdev); 402 1.2 riastrad void r600_audio_set_dto(struct drm_encoder *encoder, u32 clock); 403 1.2 riastrad void r600_hdmi_update_avi_infoframe(struct drm_encoder *encoder, void *buffer, 404 1.2 riastrad size_t size); 405 1.2 riastrad void r600_hdmi_update_ACR(struct drm_encoder *encoder, uint32_t clock); 406 1.2 riastrad void r600_hdmi_audio_workaround(struct drm_encoder *encoder); 407 1.1 riastrad int r600_hdmi_buffer_status_changed(struct drm_encoder *encoder); 408 1.1 riastrad void r600_hdmi_update_audio_settings(struct drm_encoder *encoder); 409 1.1 riastrad int r600_mc_wait_for_idle(struct radeon_device *rdev); 410 1.1 riastrad u32 r600_get_xclk(struct radeon_device *rdev); 411 1.1 riastrad uint64_t r600_get_gpu_clock_counter(struct radeon_device *rdev); 412 1.1 riastrad int rv6xx_get_temp(struct radeon_device *rdev); 413 1.1 riastrad int r600_set_uvd_clocks(struct radeon_device *rdev, u32 vclk, u32 dclk); 414 1.1 riastrad int r600_dpm_pre_set_power_state(struct radeon_device *rdev); 415 1.1 riastrad void r600_dpm_post_set_power_state(struct radeon_device *rdev); 416 1.1 riastrad int r600_dpm_late_enable(struct radeon_device *rdev); 417 1.1 riastrad /* r600 dma */ 418 1.1 riastrad uint32_t r600_dma_get_rptr(struct radeon_device *rdev, 419 1.1 riastrad struct radeon_ring *ring); 420 1.1 riastrad uint32_t r600_dma_get_wptr(struct radeon_device *rdev, 421 1.1 riastrad struct radeon_ring *ring); 422 1.1 riastrad void r600_dma_set_wptr(struct radeon_device *rdev, 423 1.1 riastrad struct radeon_ring *ring); 424 1.1 riastrad /* rv6xx dpm */ 425 1.1 riastrad int rv6xx_dpm_init(struct radeon_device *rdev); 426 1.1 riastrad int rv6xx_dpm_enable(struct radeon_device *rdev); 427 1.1 riastrad void rv6xx_dpm_disable(struct radeon_device *rdev); 428 1.1 riastrad int rv6xx_dpm_set_power_state(struct radeon_device *rdev); 429 1.1 riastrad void rv6xx_setup_asic(struct radeon_device *rdev); 430 1.1 riastrad void rv6xx_dpm_display_configuration_changed(struct radeon_device *rdev); 431 1.1 riastrad void rv6xx_dpm_fini(struct radeon_device *rdev); 432 1.1 riastrad u32 rv6xx_dpm_get_sclk(struct radeon_device *rdev, bool low); 433 1.1 riastrad u32 rv6xx_dpm_get_mclk(struct radeon_device *rdev, bool low); 434 1.1 riastrad void rv6xx_dpm_print_power_state(struct radeon_device *rdev, 435 1.1 riastrad struct radeon_ps *ps); 436 1.1 riastrad void rv6xx_dpm_debugfs_print_current_performance_level(struct radeon_device *rdev, 437 1.1 riastrad struct seq_file *m); 438 1.1 riastrad int rv6xx_dpm_force_performance_level(struct radeon_device *rdev, 439 1.1 riastrad enum radeon_dpm_forced_level level); 440 1.2 riastrad u32 rv6xx_dpm_get_current_sclk(struct radeon_device *rdev); 441 1.2 riastrad u32 rv6xx_dpm_get_current_mclk(struct radeon_device *rdev); 442 1.1 riastrad /* rs780 dpm */ 443 1.1 riastrad int rs780_dpm_init(struct radeon_device *rdev); 444 1.1 riastrad int rs780_dpm_enable(struct radeon_device *rdev); 445 1.1 riastrad void rs780_dpm_disable(struct radeon_device *rdev); 446 1.1 riastrad int rs780_dpm_set_power_state(struct radeon_device *rdev); 447 1.1 riastrad void rs780_dpm_setup_asic(struct radeon_device *rdev); 448 1.1 riastrad void rs780_dpm_display_configuration_changed(struct radeon_device *rdev); 449 1.1 riastrad void rs780_dpm_fini(struct radeon_device *rdev); 450 1.1 riastrad u32 rs780_dpm_get_sclk(struct radeon_device *rdev, bool low); 451 1.1 riastrad u32 rs780_dpm_get_mclk(struct radeon_device *rdev, bool low); 452 1.1 riastrad void rs780_dpm_print_power_state(struct radeon_device *rdev, 453 1.1 riastrad struct radeon_ps *ps); 454 1.1 riastrad void rs780_dpm_debugfs_print_current_performance_level(struct radeon_device *rdev, 455 1.1 riastrad struct seq_file *m); 456 1.1 riastrad int rs780_dpm_force_performance_level(struct radeon_device *rdev, 457 1.1 riastrad enum radeon_dpm_forced_level level); 458 1.2 riastrad u32 rs780_dpm_get_current_sclk(struct radeon_device *rdev); 459 1.2 riastrad u32 rs780_dpm_get_current_mclk(struct radeon_device *rdev); 460 1.1 riastrad 461 1.1 riastrad /* 462 1.1 riastrad * rv770,rv730,rv710,rv740 463 1.1 riastrad */ 464 1.1 riastrad int rv770_init(struct radeon_device *rdev); 465 1.1 riastrad void rv770_fini(struct radeon_device *rdev); 466 1.1 riastrad int rv770_suspend(struct radeon_device *rdev); 467 1.1 riastrad int rv770_resume(struct radeon_device *rdev); 468 1.1 riastrad void rv770_pm_misc(struct radeon_device *rdev); 469 1.3 riastrad void rv770_page_flip(struct radeon_device *rdev, int crtc, u64 crtc_base, 470 1.3 riastrad bool async); 471 1.2 riastrad bool rv770_page_flip_pending(struct radeon_device *rdev, int crtc); 472 1.1 riastrad void r700_vram_gtt_location(struct radeon_device *rdev, struct radeon_mc *mc); 473 1.1 riastrad void r700_cp_stop(struct radeon_device *rdev); 474 1.1 riastrad void r700_cp_fini(struct radeon_device *rdev); 475 1.2 riastrad struct radeon_fence *rv770_copy_dma(struct radeon_device *rdev, 476 1.2 riastrad uint64_t src_offset, uint64_t dst_offset, 477 1.2 riastrad unsigned num_gpu_pages, 478 1.3 riastrad struct dma_resv *resv); 479 1.1 riastrad u32 rv770_get_xclk(struct radeon_device *rdev); 480 1.1 riastrad int rv770_set_uvd_clocks(struct radeon_device *rdev, u32 vclk, u32 dclk); 481 1.1 riastrad int rv770_get_temp(struct radeon_device *rdev); 482 1.1 riastrad /* rv7xx pm */ 483 1.1 riastrad int rv770_dpm_init(struct radeon_device *rdev); 484 1.1 riastrad int rv770_dpm_enable(struct radeon_device *rdev); 485 1.1 riastrad int rv770_dpm_late_enable(struct radeon_device *rdev); 486 1.1 riastrad void rv770_dpm_disable(struct radeon_device *rdev); 487 1.1 riastrad int rv770_dpm_set_power_state(struct radeon_device *rdev); 488 1.1 riastrad void rv770_dpm_setup_asic(struct radeon_device *rdev); 489 1.1 riastrad void rv770_dpm_display_configuration_changed(struct radeon_device *rdev); 490 1.1 riastrad void rv770_dpm_fini(struct radeon_device *rdev); 491 1.1 riastrad u32 rv770_dpm_get_sclk(struct radeon_device *rdev, bool low); 492 1.1 riastrad u32 rv770_dpm_get_mclk(struct radeon_device *rdev, bool low); 493 1.1 riastrad void rv770_dpm_print_power_state(struct radeon_device *rdev, 494 1.1 riastrad struct radeon_ps *ps); 495 1.1 riastrad void rv770_dpm_debugfs_print_current_performance_level(struct radeon_device *rdev, 496 1.1 riastrad struct seq_file *m); 497 1.1 riastrad int rv770_dpm_force_performance_level(struct radeon_device *rdev, 498 1.1 riastrad enum radeon_dpm_forced_level level); 499 1.1 riastrad bool rv770_dpm_vblank_too_short(struct radeon_device *rdev); 500 1.2 riastrad u32 rv770_dpm_get_current_sclk(struct radeon_device *rdev); 501 1.2 riastrad u32 rv770_dpm_get_current_mclk(struct radeon_device *rdev); 502 1.1 riastrad 503 1.1 riastrad /* 504 1.1 riastrad * evergreen 505 1.1 riastrad */ 506 1.1 riastrad struct evergreen_mc_save { 507 1.1 riastrad u32 vga_render_control; 508 1.1 riastrad u32 vga_hdp_control; 509 1.1 riastrad bool crtc_enabled[RADEON_MAX_CRTCS]; 510 1.1 riastrad }; 511 1.1 riastrad 512 1.1 riastrad void evergreen_pcie_gart_tlb_flush(struct radeon_device *rdev); 513 1.1 riastrad int evergreen_init(struct radeon_device *rdev); 514 1.1 riastrad void evergreen_fini(struct radeon_device *rdev); 515 1.1 riastrad int evergreen_suspend(struct radeon_device *rdev); 516 1.1 riastrad int evergreen_resume(struct radeon_device *rdev); 517 1.1 riastrad bool evergreen_gfx_is_lockup(struct radeon_device *rdev, struct radeon_ring *cp); 518 1.1 riastrad bool evergreen_dma_is_lockup(struct radeon_device *rdev, struct radeon_ring *cp); 519 1.3 riastrad int evergreen_asic_reset(struct radeon_device *rdev, bool hard); 520 1.1 riastrad void evergreen_bandwidth_update(struct radeon_device *rdev); 521 1.1 riastrad void evergreen_ring_ib_execute(struct radeon_device *rdev, struct radeon_ib *ib); 522 1.1 riastrad void evergreen_hpd_init(struct radeon_device *rdev); 523 1.1 riastrad void evergreen_hpd_fini(struct radeon_device *rdev); 524 1.1 riastrad bool evergreen_hpd_sense(struct radeon_device *rdev, enum radeon_hpd_id hpd); 525 1.1 riastrad void evergreen_hpd_set_polarity(struct radeon_device *rdev, 526 1.1 riastrad enum radeon_hpd_id hpd); 527 1.1 riastrad u32 evergreen_get_vblank_counter(struct radeon_device *rdev, int crtc); 528 1.1 riastrad int evergreen_irq_set(struct radeon_device *rdev); 529 1.1 riastrad int evergreen_irq_process(struct radeon_device *rdev); 530 1.1 riastrad extern int evergreen_cs_parse(struct radeon_cs_parser *p); 531 1.1 riastrad extern int evergreen_dma_cs_parse(struct radeon_cs_parser *p); 532 1.1 riastrad extern void evergreen_pm_misc(struct radeon_device *rdev); 533 1.1 riastrad extern void evergreen_pm_prepare(struct radeon_device *rdev); 534 1.1 riastrad extern void evergreen_pm_finish(struct radeon_device *rdev); 535 1.1 riastrad extern void sumo_pm_init_profile(struct radeon_device *rdev); 536 1.1 riastrad extern void btc_pm_init_profile(struct radeon_device *rdev); 537 1.1 riastrad int sumo_set_uvd_clocks(struct radeon_device *rdev, u32 vclk, u32 dclk); 538 1.1 riastrad int evergreen_set_uvd_clocks(struct radeon_device *rdev, u32 vclk, u32 dclk); 539 1.2 riastrad extern void evergreen_page_flip(struct radeon_device *rdev, int crtc, 540 1.3 riastrad u64 crtc_base, bool async); 541 1.2 riastrad extern bool evergreen_page_flip_pending(struct radeon_device *rdev, int crtc); 542 1.1 riastrad extern void dce4_wait_for_vblank(struct radeon_device *rdev, int crtc); 543 1.1 riastrad void evergreen_disable_interrupt_state(struct radeon_device *rdev); 544 1.1 riastrad int evergreen_mc_wait_for_idle(struct radeon_device *rdev); 545 1.1 riastrad void evergreen_dma_fence_ring_emit(struct radeon_device *rdev, 546 1.1 riastrad struct radeon_fence *fence); 547 1.1 riastrad void evergreen_dma_ring_ib_execute(struct radeon_device *rdev, 548 1.1 riastrad struct radeon_ib *ib); 549 1.2 riastrad struct radeon_fence *evergreen_copy_dma(struct radeon_device *rdev, 550 1.2 riastrad uint64_t src_offset, uint64_t dst_offset, 551 1.2 riastrad unsigned num_gpu_pages, 552 1.3 riastrad struct dma_resv *resv); 553 1.1 riastrad int evergreen_get_temp(struct radeon_device *rdev); 554 1.2 riastrad int evergreen_get_allowed_info_register(struct radeon_device *rdev, 555 1.2 riastrad u32 reg, u32 *val); 556 1.1 riastrad int sumo_get_temp(struct radeon_device *rdev); 557 1.1 riastrad int tn_get_temp(struct radeon_device *rdev); 558 1.1 riastrad int cypress_dpm_init(struct radeon_device *rdev); 559 1.1 riastrad void cypress_dpm_setup_asic(struct radeon_device *rdev); 560 1.1 riastrad int cypress_dpm_enable(struct radeon_device *rdev); 561 1.1 riastrad void cypress_dpm_disable(struct radeon_device *rdev); 562 1.1 riastrad int cypress_dpm_set_power_state(struct radeon_device *rdev); 563 1.1 riastrad void cypress_dpm_display_configuration_changed(struct radeon_device *rdev); 564 1.1 riastrad void cypress_dpm_fini(struct radeon_device *rdev); 565 1.1 riastrad bool cypress_dpm_vblank_too_short(struct radeon_device *rdev); 566 1.1 riastrad int btc_dpm_init(struct radeon_device *rdev); 567 1.1 riastrad void btc_dpm_setup_asic(struct radeon_device *rdev); 568 1.1 riastrad int btc_dpm_enable(struct radeon_device *rdev); 569 1.1 riastrad void btc_dpm_disable(struct radeon_device *rdev); 570 1.1 riastrad int btc_dpm_pre_set_power_state(struct radeon_device *rdev); 571 1.1 riastrad int btc_dpm_set_power_state(struct radeon_device *rdev); 572 1.1 riastrad void btc_dpm_post_set_power_state(struct radeon_device *rdev); 573 1.1 riastrad void btc_dpm_fini(struct radeon_device *rdev); 574 1.1 riastrad u32 btc_dpm_get_sclk(struct radeon_device *rdev, bool low); 575 1.1 riastrad u32 btc_dpm_get_mclk(struct radeon_device *rdev, bool low); 576 1.1 riastrad bool btc_dpm_vblank_too_short(struct radeon_device *rdev); 577 1.1 riastrad void btc_dpm_debugfs_print_current_performance_level(struct radeon_device *rdev, 578 1.1 riastrad struct seq_file *m); 579 1.2 riastrad u32 btc_dpm_get_current_sclk(struct radeon_device *rdev); 580 1.2 riastrad u32 btc_dpm_get_current_mclk(struct radeon_device *rdev); 581 1.1 riastrad int sumo_dpm_init(struct radeon_device *rdev); 582 1.1 riastrad int sumo_dpm_enable(struct radeon_device *rdev); 583 1.1 riastrad int sumo_dpm_late_enable(struct radeon_device *rdev); 584 1.1 riastrad void sumo_dpm_disable(struct radeon_device *rdev); 585 1.1 riastrad int sumo_dpm_pre_set_power_state(struct radeon_device *rdev); 586 1.1 riastrad int sumo_dpm_set_power_state(struct radeon_device *rdev); 587 1.1 riastrad void sumo_dpm_post_set_power_state(struct radeon_device *rdev); 588 1.1 riastrad void sumo_dpm_setup_asic(struct radeon_device *rdev); 589 1.1 riastrad void sumo_dpm_display_configuration_changed(struct radeon_device *rdev); 590 1.1 riastrad void sumo_dpm_fini(struct radeon_device *rdev); 591 1.1 riastrad u32 sumo_dpm_get_sclk(struct radeon_device *rdev, bool low); 592 1.1 riastrad u32 sumo_dpm_get_mclk(struct radeon_device *rdev, bool low); 593 1.1 riastrad void sumo_dpm_print_power_state(struct radeon_device *rdev, 594 1.1 riastrad struct radeon_ps *ps); 595 1.1 riastrad void sumo_dpm_debugfs_print_current_performance_level(struct radeon_device *rdev, 596 1.1 riastrad struct seq_file *m); 597 1.1 riastrad int sumo_dpm_force_performance_level(struct radeon_device *rdev, 598 1.1 riastrad enum radeon_dpm_forced_level level); 599 1.2 riastrad u32 sumo_dpm_get_current_sclk(struct radeon_device *rdev); 600 1.2 riastrad u32 sumo_dpm_get_current_mclk(struct radeon_device *rdev); 601 1.1 riastrad 602 1.1 riastrad /* 603 1.1 riastrad * cayman 604 1.1 riastrad */ 605 1.1 riastrad void cayman_fence_ring_emit(struct radeon_device *rdev, 606 1.1 riastrad struct radeon_fence *fence); 607 1.1 riastrad void cayman_pcie_gart_tlb_flush(struct radeon_device *rdev); 608 1.1 riastrad int cayman_init(struct radeon_device *rdev); 609 1.1 riastrad void cayman_fini(struct radeon_device *rdev); 610 1.1 riastrad int cayman_suspend(struct radeon_device *rdev); 611 1.1 riastrad int cayman_resume(struct radeon_device *rdev); 612 1.3 riastrad int cayman_asic_reset(struct radeon_device *rdev, bool hard); 613 1.1 riastrad void cayman_ring_ib_execute(struct radeon_device *rdev, struct radeon_ib *ib); 614 1.1 riastrad int cayman_vm_init(struct radeon_device *rdev); 615 1.1 riastrad void cayman_vm_fini(struct radeon_device *rdev); 616 1.2 riastrad void cayman_vm_flush(struct radeon_device *rdev, struct radeon_ring *ring, 617 1.2 riastrad unsigned vm_id, uint64_t pd_addr); 618 1.1 riastrad uint32_t cayman_vm_page_flags(struct radeon_device *rdev, uint32_t flags); 619 1.1 riastrad int evergreen_ib_parse(struct radeon_device *rdev, struct radeon_ib *ib); 620 1.1 riastrad int evergreen_dma_ib_parse(struct radeon_device *rdev, struct radeon_ib *ib); 621 1.1 riastrad void cayman_dma_ring_ib_execute(struct radeon_device *rdev, 622 1.1 riastrad struct radeon_ib *ib); 623 1.1 riastrad bool cayman_gfx_is_lockup(struct radeon_device *rdev, struct radeon_ring *ring); 624 1.1 riastrad bool cayman_dma_is_lockup(struct radeon_device *rdev, struct radeon_ring *ring); 625 1.1 riastrad 626 1.2 riastrad void cayman_dma_vm_copy_pages(struct radeon_device *rdev, 627 1.2 riastrad struct radeon_ib *ib, 628 1.2 riastrad uint64_t pe, uint64_t src, 629 1.2 riastrad unsigned count); 630 1.2 riastrad void cayman_dma_vm_write_pages(struct radeon_device *rdev, 631 1.2 riastrad struct radeon_ib *ib, 632 1.2 riastrad uint64_t pe, 633 1.2 riastrad uint64_t addr, unsigned count, 634 1.2 riastrad uint32_t incr, uint32_t flags); 635 1.2 riastrad void cayman_dma_vm_set_pages(struct radeon_device *rdev, 636 1.2 riastrad struct radeon_ib *ib, 637 1.2 riastrad uint64_t pe, 638 1.2 riastrad uint64_t addr, unsigned count, 639 1.2 riastrad uint32_t incr, uint32_t flags); 640 1.2 riastrad void cayman_dma_vm_pad_ib(struct radeon_ib *ib); 641 1.2 riastrad 642 1.2 riastrad void cayman_dma_vm_flush(struct radeon_device *rdev, struct radeon_ring *ring, 643 1.2 riastrad unsigned vm_id, uint64_t pd_addr); 644 1.1 riastrad 645 1.1 riastrad u32 cayman_gfx_get_rptr(struct radeon_device *rdev, 646 1.1 riastrad struct radeon_ring *ring); 647 1.1 riastrad u32 cayman_gfx_get_wptr(struct radeon_device *rdev, 648 1.1 riastrad struct radeon_ring *ring); 649 1.1 riastrad void cayman_gfx_set_wptr(struct radeon_device *rdev, 650 1.1 riastrad struct radeon_ring *ring); 651 1.1 riastrad uint32_t cayman_dma_get_rptr(struct radeon_device *rdev, 652 1.1 riastrad struct radeon_ring *ring); 653 1.1 riastrad uint32_t cayman_dma_get_wptr(struct radeon_device *rdev, 654 1.1 riastrad struct radeon_ring *ring); 655 1.1 riastrad void cayman_dma_set_wptr(struct radeon_device *rdev, 656 1.1 riastrad struct radeon_ring *ring); 657 1.2 riastrad int cayman_get_allowed_info_register(struct radeon_device *rdev, 658 1.2 riastrad u32 reg, u32 *val); 659 1.1 riastrad 660 1.1 riastrad int ni_dpm_init(struct radeon_device *rdev); 661 1.1 riastrad void ni_dpm_setup_asic(struct radeon_device *rdev); 662 1.1 riastrad int ni_dpm_enable(struct radeon_device *rdev); 663 1.1 riastrad void ni_dpm_disable(struct radeon_device *rdev); 664 1.1 riastrad int ni_dpm_pre_set_power_state(struct radeon_device *rdev); 665 1.1 riastrad int ni_dpm_set_power_state(struct radeon_device *rdev); 666 1.1 riastrad void ni_dpm_post_set_power_state(struct radeon_device *rdev); 667 1.1 riastrad void ni_dpm_fini(struct radeon_device *rdev); 668 1.1 riastrad u32 ni_dpm_get_sclk(struct radeon_device *rdev, bool low); 669 1.1 riastrad u32 ni_dpm_get_mclk(struct radeon_device *rdev, bool low); 670 1.1 riastrad void ni_dpm_print_power_state(struct radeon_device *rdev, 671 1.1 riastrad struct radeon_ps *ps); 672 1.1 riastrad void ni_dpm_debugfs_print_current_performance_level(struct radeon_device *rdev, 673 1.1 riastrad struct seq_file *m); 674 1.1 riastrad int ni_dpm_force_performance_level(struct radeon_device *rdev, 675 1.1 riastrad enum radeon_dpm_forced_level level); 676 1.1 riastrad bool ni_dpm_vblank_too_short(struct radeon_device *rdev); 677 1.2 riastrad u32 ni_dpm_get_current_sclk(struct radeon_device *rdev); 678 1.2 riastrad u32 ni_dpm_get_current_mclk(struct radeon_device *rdev); 679 1.1 riastrad int trinity_dpm_init(struct radeon_device *rdev); 680 1.1 riastrad int trinity_dpm_enable(struct radeon_device *rdev); 681 1.1 riastrad int trinity_dpm_late_enable(struct radeon_device *rdev); 682 1.1 riastrad void trinity_dpm_disable(struct radeon_device *rdev); 683 1.1 riastrad int trinity_dpm_pre_set_power_state(struct radeon_device *rdev); 684 1.1 riastrad int trinity_dpm_set_power_state(struct radeon_device *rdev); 685 1.1 riastrad void trinity_dpm_post_set_power_state(struct radeon_device *rdev); 686 1.1 riastrad void trinity_dpm_setup_asic(struct radeon_device *rdev); 687 1.1 riastrad void trinity_dpm_display_configuration_changed(struct radeon_device *rdev); 688 1.1 riastrad void trinity_dpm_fini(struct radeon_device *rdev); 689 1.1 riastrad u32 trinity_dpm_get_sclk(struct radeon_device *rdev, bool low); 690 1.1 riastrad u32 trinity_dpm_get_mclk(struct radeon_device *rdev, bool low); 691 1.1 riastrad void trinity_dpm_print_power_state(struct radeon_device *rdev, 692 1.1 riastrad struct radeon_ps *ps); 693 1.1 riastrad void trinity_dpm_debugfs_print_current_performance_level(struct radeon_device *rdev, 694 1.1 riastrad struct seq_file *m); 695 1.1 riastrad int trinity_dpm_force_performance_level(struct radeon_device *rdev, 696 1.1 riastrad enum radeon_dpm_forced_level level); 697 1.1 riastrad void trinity_dpm_enable_bapm(struct radeon_device *rdev, bool enable); 698 1.2 riastrad u32 trinity_dpm_get_current_sclk(struct radeon_device *rdev); 699 1.2 riastrad u32 trinity_dpm_get_current_mclk(struct radeon_device *rdev); 700 1.2 riastrad int tn_set_vce_clocks(struct radeon_device *rdev, u32 evclk, u32 ecclk); 701 1.1 riastrad 702 1.1 riastrad /* DCE6 - SI */ 703 1.1 riastrad void dce6_bandwidth_update(struct radeon_device *rdev); 704 1.1 riastrad void dce6_audio_fini(struct radeon_device *rdev); 705 1.1 riastrad 706 1.1 riastrad /* 707 1.1 riastrad * si 708 1.1 riastrad */ 709 1.1 riastrad void si_fence_ring_emit(struct radeon_device *rdev, 710 1.1 riastrad struct radeon_fence *fence); 711 1.1 riastrad void si_pcie_gart_tlb_flush(struct radeon_device *rdev); 712 1.1 riastrad int si_init(struct radeon_device *rdev); 713 1.1 riastrad void si_fini(struct radeon_device *rdev); 714 1.1 riastrad int si_suspend(struct radeon_device *rdev); 715 1.1 riastrad int si_resume(struct radeon_device *rdev); 716 1.1 riastrad bool si_gfx_is_lockup(struct radeon_device *rdev, struct radeon_ring *cp); 717 1.1 riastrad bool si_dma_is_lockup(struct radeon_device *rdev, struct radeon_ring *cp); 718 1.3 riastrad int si_asic_reset(struct radeon_device *rdev, bool hard); 719 1.1 riastrad void si_ring_ib_execute(struct radeon_device *rdev, struct radeon_ib *ib); 720 1.1 riastrad int si_irq_set(struct radeon_device *rdev); 721 1.1 riastrad int si_irq_process(struct radeon_device *rdev); 722 1.1 riastrad int si_vm_init(struct radeon_device *rdev); 723 1.1 riastrad void si_vm_fini(struct radeon_device *rdev); 724 1.2 riastrad void si_vm_flush(struct radeon_device *rdev, struct radeon_ring *ring, 725 1.2 riastrad unsigned vm_id, uint64_t pd_addr); 726 1.1 riastrad int si_ib_parse(struct radeon_device *rdev, struct radeon_ib *ib); 727 1.2 riastrad struct radeon_fence *si_copy_dma(struct radeon_device *rdev, 728 1.2 riastrad uint64_t src_offset, uint64_t dst_offset, 729 1.2 riastrad unsigned num_gpu_pages, 730 1.3 riastrad struct dma_resv *resv); 731 1.2 riastrad 732 1.2 riastrad void si_dma_vm_copy_pages(struct radeon_device *rdev, 733 1.2 riastrad struct radeon_ib *ib, 734 1.2 riastrad uint64_t pe, uint64_t src, 735 1.2 riastrad unsigned count); 736 1.2 riastrad void si_dma_vm_write_pages(struct radeon_device *rdev, 737 1.2 riastrad struct radeon_ib *ib, 738 1.2 riastrad uint64_t pe, 739 1.2 riastrad uint64_t addr, unsigned count, 740 1.2 riastrad uint32_t incr, uint32_t flags); 741 1.2 riastrad void si_dma_vm_set_pages(struct radeon_device *rdev, 742 1.2 riastrad struct radeon_ib *ib, 743 1.2 riastrad uint64_t pe, 744 1.2 riastrad uint64_t addr, unsigned count, 745 1.2 riastrad uint32_t incr, uint32_t flags); 746 1.2 riastrad 747 1.2 riastrad void si_dma_vm_flush(struct radeon_device *rdev, struct radeon_ring *ring, 748 1.2 riastrad unsigned vm_id, uint64_t pd_addr); 749 1.1 riastrad u32 si_get_xclk(struct radeon_device *rdev); 750 1.1 riastrad uint64_t si_get_gpu_clock_counter(struct radeon_device *rdev); 751 1.1 riastrad int si_set_uvd_clocks(struct radeon_device *rdev, u32 vclk, u32 dclk); 752 1.2 riastrad int si_set_vce_clocks(struct radeon_device *rdev, u32 evclk, u32 ecclk); 753 1.1 riastrad int si_get_temp(struct radeon_device *rdev); 754 1.2 riastrad int si_get_allowed_info_register(struct radeon_device *rdev, 755 1.2 riastrad u32 reg, u32 *val); 756 1.1 riastrad int si_dpm_init(struct radeon_device *rdev); 757 1.1 riastrad void si_dpm_setup_asic(struct radeon_device *rdev); 758 1.1 riastrad int si_dpm_enable(struct radeon_device *rdev); 759 1.1 riastrad int si_dpm_late_enable(struct radeon_device *rdev); 760 1.1 riastrad void si_dpm_disable(struct radeon_device *rdev); 761 1.1 riastrad int si_dpm_pre_set_power_state(struct radeon_device *rdev); 762 1.1 riastrad int si_dpm_set_power_state(struct radeon_device *rdev); 763 1.1 riastrad void si_dpm_post_set_power_state(struct radeon_device *rdev); 764 1.1 riastrad void si_dpm_fini(struct radeon_device *rdev); 765 1.1 riastrad void si_dpm_display_configuration_changed(struct radeon_device *rdev); 766 1.1 riastrad void si_dpm_debugfs_print_current_performance_level(struct radeon_device *rdev, 767 1.1 riastrad struct seq_file *m); 768 1.1 riastrad int si_dpm_force_performance_level(struct radeon_device *rdev, 769 1.1 riastrad enum radeon_dpm_forced_level level); 770 1.2 riastrad int si_fan_ctrl_get_fan_speed_percent(struct radeon_device *rdev, 771 1.2 riastrad u32 *speed); 772 1.2 riastrad int si_fan_ctrl_set_fan_speed_percent(struct radeon_device *rdev, 773 1.2 riastrad u32 speed); 774 1.2 riastrad u32 si_fan_ctrl_get_mode(struct radeon_device *rdev); 775 1.2 riastrad void si_fan_ctrl_set_mode(struct radeon_device *rdev, u32 mode); 776 1.2 riastrad u32 si_dpm_get_current_sclk(struct radeon_device *rdev); 777 1.2 riastrad u32 si_dpm_get_current_mclk(struct radeon_device *rdev); 778 1.1 riastrad 779 1.1 riastrad /* DCE8 - CIK */ 780 1.1 riastrad void dce8_bandwidth_update(struct radeon_device *rdev); 781 1.1 riastrad 782 1.1 riastrad /* 783 1.1 riastrad * cik 784 1.1 riastrad */ 785 1.1 riastrad uint64_t cik_get_gpu_clock_counter(struct radeon_device *rdev); 786 1.1 riastrad u32 cik_get_xclk(struct radeon_device *rdev); 787 1.1 riastrad uint32_t cik_pciep_rreg(struct radeon_device *rdev, uint32_t reg); 788 1.1 riastrad void cik_pciep_wreg(struct radeon_device *rdev, uint32_t reg, uint32_t v); 789 1.1 riastrad int cik_set_uvd_clocks(struct radeon_device *rdev, u32 vclk, u32 dclk); 790 1.1 riastrad int cik_set_vce_clocks(struct radeon_device *rdev, u32 evclk, u32 ecclk); 791 1.1 riastrad void cik_sdma_fence_ring_emit(struct radeon_device *rdev, 792 1.1 riastrad struct radeon_fence *fence); 793 1.1 riastrad bool cik_sdma_semaphore_ring_emit(struct radeon_device *rdev, 794 1.1 riastrad struct radeon_ring *ring, 795 1.1 riastrad struct radeon_semaphore *semaphore, 796 1.1 riastrad bool emit_wait); 797 1.1 riastrad void cik_sdma_ring_ib_execute(struct radeon_device *rdev, struct radeon_ib *ib); 798 1.2 riastrad struct radeon_fence *cik_copy_dma(struct radeon_device *rdev, 799 1.2 riastrad uint64_t src_offset, uint64_t dst_offset, 800 1.2 riastrad unsigned num_gpu_pages, 801 1.3 riastrad struct dma_resv *resv); 802 1.2 riastrad struct radeon_fence *cik_copy_cpdma(struct radeon_device *rdev, 803 1.2 riastrad uint64_t src_offset, uint64_t dst_offset, 804 1.2 riastrad unsigned num_gpu_pages, 805 1.3 riastrad struct dma_resv *resv); 806 1.1 riastrad int cik_sdma_ring_test(struct radeon_device *rdev, struct radeon_ring *ring); 807 1.1 riastrad int cik_sdma_ib_test(struct radeon_device *rdev, struct radeon_ring *ring); 808 1.1 riastrad bool cik_sdma_is_lockup(struct radeon_device *rdev, struct radeon_ring *ring); 809 1.1 riastrad void cik_fence_gfx_ring_emit(struct radeon_device *rdev, 810 1.1 riastrad struct radeon_fence *fence); 811 1.1 riastrad void cik_fence_compute_ring_emit(struct radeon_device *rdev, 812 1.1 riastrad struct radeon_fence *fence); 813 1.1 riastrad bool cik_semaphore_ring_emit(struct radeon_device *rdev, 814 1.1 riastrad struct radeon_ring *cp, 815 1.1 riastrad struct radeon_semaphore *semaphore, 816 1.1 riastrad bool emit_wait); 817 1.1 riastrad void cik_pcie_gart_tlb_flush(struct radeon_device *rdev); 818 1.1 riastrad int cik_init(struct radeon_device *rdev); 819 1.1 riastrad void cik_fini(struct radeon_device *rdev); 820 1.1 riastrad int cik_suspend(struct radeon_device *rdev); 821 1.1 riastrad int cik_resume(struct radeon_device *rdev); 822 1.1 riastrad bool cik_gfx_is_lockup(struct radeon_device *rdev, struct radeon_ring *cp); 823 1.3 riastrad int cik_asic_reset(struct radeon_device *rdev, bool hard); 824 1.1 riastrad void cik_ring_ib_execute(struct radeon_device *rdev, struct radeon_ib *ib); 825 1.1 riastrad int cik_ring_test(struct radeon_device *rdev, struct radeon_ring *ring); 826 1.1 riastrad int cik_ib_test(struct radeon_device *rdev, struct radeon_ring *ring); 827 1.1 riastrad int cik_irq_set(struct radeon_device *rdev); 828 1.1 riastrad int cik_irq_process(struct radeon_device *rdev); 829 1.1 riastrad int cik_vm_init(struct radeon_device *rdev); 830 1.1 riastrad void cik_vm_fini(struct radeon_device *rdev); 831 1.2 riastrad void cik_vm_flush(struct radeon_device *rdev, struct radeon_ring *ring, 832 1.2 riastrad unsigned vm_id, uint64_t pd_addr); 833 1.2 riastrad 834 1.2 riastrad void cik_sdma_vm_copy_pages(struct radeon_device *rdev, 835 1.2 riastrad struct radeon_ib *ib, 836 1.2 riastrad uint64_t pe, uint64_t src, 837 1.2 riastrad unsigned count); 838 1.2 riastrad void cik_sdma_vm_write_pages(struct radeon_device *rdev, 839 1.2 riastrad struct radeon_ib *ib, 840 1.2 riastrad uint64_t pe, 841 1.2 riastrad uint64_t addr, unsigned count, 842 1.2 riastrad uint32_t incr, uint32_t flags); 843 1.2 riastrad void cik_sdma_vm_set_pages(struct radeon_device *rdev, 844 1.2 riastrad struct radeon_ib *ib, 845 1.2 riastrad uint64_t pe, 846 1.2 riastrad uint64_t addr, unsigned count, 847 1.2 riastrad uint32_t incr, uint32_t flags); 848 1.2 riastrad void cik_sdma_vm_pad_ib(struct radeon_ib *ib); 849 1.2 riastrad 850 1.2 riastrad void cik_dma_vm_flush(struct radeon_device *rdev, struct radeon_ring *ring, 851 1.2 riastrad unsigned vm_id, uint64_t pd_addr); 852 1.1 riastrad int cik_ib_parse(struct radeon_device *rdev, struct radeon_ib *ib); 853 1.1 riastrad u32 cik_gfx_get_rptr(struct radeon_device *rdev, 854 1.1 riastrad struct radeon_ring *ring); 855 1.1 riastrad u32 cik_gfx_get_wptr(struct radeon_device *rdev, 856 1.1 riastrad struct radeon_ring *ring); 857 1.1 riastrad void cik_gfx_set_wptr(struct radeon_device *rdev, 858 1.1 riastrad struct radeon_ring *ring); 859 1.1 riastrad u32 cik_compute_get_rptr(struct radeon_device *rdev, 860 1.1 riastrad struct radeon_ring *ring); 861 1.1 riastrad u32 cik_compute_get_wptr(struct radeon_device *rdev, 862 1.1 riastrad struct radeon_ring *ring); 863 1.1 riastrad void cik_compute_set_wptr(struct radeon_device *rdev, 864 1.1 riastrad struct radeon_ring *ring); 865 1.1 riastrad u32 cik_sdma_get_rptr(struct radeon_device *rdev, 866 1.1 riastrad struct radeon_ring *ring); 867 1.1 riastrad u32 cik_sdma_get_wptr(struct radeon_device *rdev, 868 1.1 riastrad struct radeon_ring *ring); 869 1.1 riastrad void cik_sdma_set_wptr(struct radeon_device *rdev, 870 1.1 riastrad struct radeon_ring *ring); 871 1.1 riastrad int ci_get_temp(struct radeon_device *rdev); 872 1.1 riastrad int kv_get_temp(struct radeon_device *rdev); 873 1.2 riastrad int cik_get_allowed_info_register(struct radeon_device *rdev, 874 1.2 riastrad u32 reg, u32 *val); 875 1.1 riastrad 876 1.1 riastrad int ci_dpm_init(struct radeon_device *rdev); 877 1.1 riastrad int ci_dpm_enable(struct radeon_device *rdev); 878 1.1 riastrad int ci_dpm_late_enable(struct radeon_device *rdev); 879 1.1 riastrad void ci_dpm_disable(struct radeon_device *rdev); 880 1.1 riastrad int ci_dpm_pre_set_power_state(struct radeon_device *rdev); 881 1.1 riastrad int ci_dpm_set_power_state(struct radeon_device *rdev); 882 1.1 riastrad void ci_dpm_post_set_power_state(struct radeon_device *rdev); 883 1.1 riastrad void ci_dpm_setup_asic(struct radeon_device *rdev); 884 1.1 riastrad void ci_dpm_display_configuration_changed(struct radeon_device *rdev); 885 1.1 riastrad void ci_dpm_fini(struct radeon_device *rdev); 886 1.1 riastrad u32 ci_dpm_get_sclk(struct radeon_device *rdev, bool low); 887 1.1 riastrad u32 ci_dpm_get_mclk(struct radeon_device *rdev, bool low); 888 1.1 riastrad void ci_dpm_print_power_state(struct radeon_device *rdev, 889 1.1 riastrad struct radeon_ps *ps); 890 1.1 riastrad void ci_dpm_debugfs_print_current_performance_level(struct radeon_device *rdev, 891 1.1 riastrad struct seq_file *m); 892 1.1 riastrad int ci_dpm_force_performance_level(struct radeon_device *rdev, 893 1.1 riastrad enum radeon_dpm_forced_level level); 894 1.1 riastrad bool ci_dpm_vblank_too_short(struct radeon_device *rdev); 895 1.1 riastrad void ci_dpm_powergate_uvd(struct radeon_device *rdev, bool gate); 896 1.2 riastrad u32 ci_dpm_get_current_sclk(struct radeon_device *rdev); 897 1.2 riastrad u32 ci_dpm_get_current_mclk(struct radeon_device *rdev); 898 1.2 riastrad 899 1.2 riastrad int ci_fan_ctrl_get_fan_speed_percent(struct radeon_device *rdev, 900 1.2 riastrad u32 *speed); 901 1.2 riastrad int ci_fan_ctrl_set_fan_speed_percent(struct radeon_device *rdev, 902 1.2 riastrad u32 speed); 903 1.2 riastrad u32 ci_fan_ctrl_get_mode(struct radeon_device *rdev); 904 1.2 riastrad void ci_fan_ctrl_set_mode(struct radeon_device *rdev, u32 mode); 905 1.1 riastrad 906 1.1 riastrad int kv_dpm_init(struct radeon_device *rdev); 907 1.1 riastrad int kv_dpm_enable(struct radeon_device *rdev); 908 1.1 riastrad int kv_dpm_late_enable(struct radeon_device *rdev); 909 1.1 riastrad void kv_dpm_disable(struct radeon_device *rdev); 910 1.1 riastrad int kv_dpm_pre_set_power_state(struct radeon_device *rdev); 911 1.1 riastrad int kv_dpm_set_power_state(struct radeon_device *rdev); 912 1.1 riastrad void kv_dpm_post_set_power_state(struct radeon_device *rdev); 913 1.1 riastrad void kv_dpm_setup_asic(struct radeon_device *rdev); 914 1.1 riastrad void kv_dpm_display_configuration_changed(struct radeon_device *rdev); 915 1.1 riastrad void kv_dpm_fini(struct radeon_device *rdev); 916 1.1 riastrad u32 kv_dpm_get_sclk(struct radeon_device *rdev, bool low); 917 1.1 riastrad u32 kv_dpm_get_mclk(struct radeon_device *rdev, bool low); 918 1.1 riastrad void kv_dpm_print_power_state(struct radeon_device *rdev, 919 1.1 riastrad struct radeon_ps *ps); 920 1.1 riastrad void kv_dpm_debugfs_print_current_performance_level(struct radeon_device *rdev, 921 1.1 riastrad struct seq_file *m); 922 1.1 riastrad int kv_dpm_force_performance_level(struct radeon_device *rdev, 923 1.1 riastrad enum radeon_dpm_forced_level level); 924 1.1 riastrad void kv_dpm_powergate_uvd(struct radeon_device *rdev, bool gate); 925 1.1 riastrad void kv_dpm_enable_bapm(struct radeon_device *rdev, bool enable); 926 1.2 riastrad u32 kv_dpm_get_current_sclk(struct radeon_device *rdev); 927 1.2 riastrad u32 kv_dpm_get_current_mclk(struct radeon_device *rdev); 928 1.1 riastrad 929 1.1 riastrad /* uvd v1.0 */ 930 1.1 riastrad uint32_t uvd_v1_0_get_rptr(struct radeon_device *rdev, 931 1.1 riastrad struct radeon_ring *ring); 932 1.1 riastrad uint32_t uvd_v1_0_get_wptr(struct radeon_device *rdev, 933 1.1 riastrad struct radeon_ring *ring); 934 1.1 riastrad void uvd_v1_0_set_wptr(struct radeon_device *rdev, 935 1.1 riastrad struct radeon_ring *ring); 936 1.2 riastrad int uvd_v1_0_resume(struct radeon_device *rdev); 937 1.1 riastrad 938 1.1 riastrad int uvd_v1_0_init(struct radeon_device *rdev); 939 1.1 riastrad void uvd_v1_0_fini(struct radeon_device *rdev); 940 1.1 riastrad int uvd_v1_0_start(struct radeon_device *rdev); 941 1.1 riastrad void uvd_v1_0_stop(struct radeon_device *rdev); 942 1.1 riastrad 943 1.1 riastrad int uvd_v1_0_ring_test(struct radeon_device *rdev, struct radeon_ring *ring); 944 1.2 riastrad void uvd_v1_0_fence_emit(struct radeon_device *rdev, 945 1.2 riastrad struct radeon_fence *fence); 946 1.1 riastrad int uvd_v1_0_ib_test(struct radeon_device *rdev, struct radeon_ring *ring); 947 1.1 riastrad bool uvd_v1_0_semaphore_emit(struct radeon_device *rdev, 948 1.1 riastrad struct radeon_ring *ring, 949 1.1 riastrad struct radeon_semaphore *semaphore, 950 1.1 riastrad bool emit_wait); 951 1.1 riastrad void uvd_v1_0_ib_execute(struct radeon_device *rdev, struct radeon_ib *ib); 952 1.1 riastrad 953 1.1 riastrad /* uvd v2.2 */ 954 1.1 riastrad int uvd_v2_2_resume(struct radeon_device *rdev); 955 1.1 riastrad void uvd_v2_2_fence_emit(struct radeon_device *rdev, 956 1.1 riastrad struct radeon_fence *fence); 957 1.2 riastrad bool uvd_v2_2_semaphore_emit(struct radeon_device *rdev, 958 1.2 riastrad struct radeon_ring *ring, 959 1.2 riastrad struct radeon_semaphore *semaphore, 960 1.2 riastrad bool emit_wait); 961 1.1 riastrad 962 1.1 riastrad /* uvd v3.1 */ 963 1.1 riastrad bool uvd_v3_1_semaphore_emit(struct radeon_device *rdev, 964 1.1 riastrad struct radeon_ring *ring, 965 1.1 riastrad struct radeon_semaphore *semaphore, 966 1.1 riastrad bool emit_wait); 967 1.1 riastrad 968 1.1 riastrad /* uvd v4.2 */ 969 1.1 riastrad int uvd_v4_2_resume(struct radeon_device *rdev); 970 1.1 riastrad 971 1.1 riastrad /* vce v1.0 */ 972 1.1 riastrad uint32_t vce_v1_0_get_rptr(struct radeon_device *rdev, 973 1.1 riastrad struct radeon_ring *ring); 974 1.1 riastrad uint32_t vce_v1_0_get_wptr(struct radeon_device *rdev, 975 1.1 riastrad struct radeon_ring *ring); 976 1.1 riastrad void vce_v1_0_set_wptr(struct radeon_device *rdev, 977 1.1 riastrad struct radeon_ring *ring); 978 1.2 riastrad int vce_v1_0_load_fw(struct radeon_device *rdev, uint32_t *data); 979 1.2 riastrad unsigned vce_v1_0_bo_size(struct radeon_device *rdev); 980 1.2 riastrad int vce_v1_0_resume(struct radeon_device *rdev); 981 1.1 riastrad int vce_v1_0_init(struct radeon_device *rdev); 982 1.1 riastrad int vce_v1_0_start(struct radeon_device *rdev); 983 1.1 riastrad 984 1.1 riastrad /* vce v2.0 */ 985 1.2 riastrad unsigned vce_v2_0_bo_size(struct radeon_device *rdev); 986 1.1 riastrad int vce_v2_0_resume(struct radeon_device *rdev); 987 1.1 riastrad 988 1.1 riastrad #endif 989