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