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