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

source code of linux/drivers/gpu/drm/radeon/radeon_asic.h