162306a36Sopenharmony_ci/* 262306a36Sopenharmony_ci * Copyright 2008 Advanced Micro Devices, Inc. 362306a36Sopenharmony_ci * Copyright 2008 Red Hat Inc. 462306a36Sopenharmony_ci * Copyright 2009 Jerome Glisse. 562306a36Sopenharmony_ci * 662306a36Sopenharmony_ci * Permission is hereby granted, free of charge, to any person obtaining a 762306a36Sopenharmony_ci * copy of this software and associated documentation files (the "Software"), 862306a36Sopenharmony_ci * to deal in the Software without restriction, including without limitation 962306a36Sopenharmony_ci * the rights to use, copy, modify, merge, publish, distribute, sublicense, 1062306a36Sopenharmony_ci * and/or sell copies of the Software, and to permit persons to whom the 1162306a36Sopenharmony_ci * Software is furnished to do so, subject to the following conditions: 1262306a36Sopenharmony_ci * 1362306a36Sopenharmony_ci * The above copyright notice and this permission notice shall be included in 1462306a36Sopenharmony_ci * all copies or substantial portions of the Software. 1562306a36Sopenharmony_ci * 1662306a36Sopenharmony_ci * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 1762306a36Sopenharmony_ci * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 1862306a36Sopenharmony_ci * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL 1962306a36Sopenharmony_ci * THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR 2062306a36Sopenharmony_ci * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, 2162306a36Sopenharmony_ci * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR 2262306a36Sopenharmony_ci * OTHER DEALINGS IN THE SOFTWARE. 2362306a36Sopenharmony_ci * 2462306a36Sopenharmony_ci * Authors: Dave Airlie 2562306a36Sopenharmony_ci * Alex Deucher 2662306a36Sopenharmony_ci * Jerome Glisse 2762306a36Sopenharmony_ci */ 2862306a36Sopenharmony_ci#ifndef __RADEON_ASIC_H__ 2962306a36Sopenharmony_ci#define __RADEON_ASIC_H__ 3062306a36Sopenharmony_ci 3162306a36Sopenharmony_ci/* 3262306a36Sopenharmony_ci * common functions 3362306a36Sopenharmony_ci */ 3462306a36Sopenharmony_ciuint32_t radeon_legacy_get_engine_clock(struct radeon_device *rdev); 3562306a36Sopenharmony_civoid radeon_legacy_set_engine_clock(struct radeon_device *rdev, uint32_t eng_clock); 3662306a36Sopenharmony_ciuint32_t radeon_legacy_get_memory_clock(struct radeon_device *rdev); 3762306a36Sopenharmony_civoid radeon_legacy_set_clock_gating(struct radeon_device *rdev, int enable); 3862306a36Sopenharmony_ci 3962306a36Sopenharmony_ciuint32_t radeon_atom_get_engine_clock(struct radeon_device *rdev); 4062306a36Sopenharmony_civoid radeon_atom_set_engine_clock(struct radeon_device *rdev, uint32_t eng_clock); 4162306a36Sopenharmony_ciuint32_t radeon_atom_get_memory_clock(struct radeon_device *rdev); 4262306a36Sopenharmony_civoid radeon_atom_set_memory_clock(struct radeon_device *rdev, uint32_t mem_clock); 4362306a36Sopenharmony_civoid radeon_atom_set_clock_gating(struct radeon_device *rdev, int enable); 4462306a36Sopenharmony_ci 4562306a36Sopenharmony_civoid atombios_set_backlight_level(struct radeon_encoder *radeon_encoder, u8 level); 4662306a36Sopenharmony_ciu8 atombios_get_backlight_level(struct radeon_encoder *radeon_encoder); 4762306a36Sopenharmony_civoid radeon_legacy_set_backlight_level(struct radeon_encoder *radeon_encoder, u8 level); 4862306a36Sopenharmony_ciu8 radeon_legacy_get_backlight_level(struct radeon_encoder *radeon_encoder); 4962306a36Sopenharmony_ci 5062306a36Sopenharmony_ci/* 5162306a36Sopenharmony_ci * r100,rv100,rs100,rv200,rs200 5262306a36Sopenharmony_ci */ 5362306a36Sopenharmony_cistruct r100_mc_save { 5462306a36Sopenharmony_ci u32 GENMO_WT; 5562306a36Sopenharmony_ci u32 CRTC_EXT_CNTL; 5662306a36Sopenharmony_ci u32 CRTC_GEN_CNTL; 5762306a36Sopenharmony_ci u32 CRTC2_GEN_CNTL; 5862306a36Sopenharmony_ci u32 CUR_OFFSET; 5962306a36Sopenharmony_ci u32 CUR2_OFFSET; 6062306a36Sopenharmony_ci}; 6162306a36Sopenharmony_ciint r100_init(struct radeon_device *rdev); 6262306a36Sopenharmony_civoid r100_fini(struct radeon_device *rdev); 6362306a36Sopenharmony_ciint r100_suspend(struct radeon_device *rdev); 6462306a36Sopenharmony_ciint r100_resume(struct radeon_device *rdev); 6562306a36Sopenharmony_civoid r100_vga_set_state(struct radeon_device *rdev, bool state); 6662306a36Sopenharmony_cibool r100_gpu_is_lockup(struct radeon_device *rdev, struct radeon_ring *cp); 6762306a36Sopenharmony_ciint r100_asic_reset(struct radeon_device *rdev, bool hard); 6862306a36Sopenharmony_ciu32 r100_get_vblank_counter(struct radeon_device *rdev, int crtc); 6962306a36Sopenharmony_civoid r100_pci_gart_tlb_flush(struct radeon_device *rdev); 7062306a36Sopenharmony_ciuint64_t r100_pci_gart_get_page_entry(uint64_t addr, uint32_t flags); 7162306a36Sopenharmony_civoid r100_pci_gart_set_page(struct radeon_device *rdev, unsigned i, 7262306a36Sopenharmony_ci uint64_t entry); 7362306a36Sopenharmony_civoid r100_ring_start(struct radeon_device *rdev, struct radeon_ring *ring); 7462306a36Sopenharmony_ciint r100_irq_set(struct radeon_device *rdev); 7562306a36Sopenharmony_ciint r100_irq_process(struct radeon_device *rdev); 7662306a36Sopenharmony_civoid r100_fence_ring_emit(struct radeon_device *rdev, 7762306a36Sopenharmony_ci struct radeon_fence *fence); 7862306a36Sopenharmony_cibool r100_semaphore_ring_emit(struct radeon_device *rdev, 7962306a36Sopenharmony_ci struct radeon_ring *cp, 8062306a36Sopenharmony_ci struct radeon_semaphore *semaphore, 8162306a36Sopenharmony_ci bool emit_wait); 8262306a36Sopenharmony_ciint r100_cs_parse(struct radeon_cs_parser *p); 8362306a36Sopenharmony_civoid r100_pll_wreg(struct radeon_device *rdev, uint32_t reg, uint32_t v); 8462306a36Sopenharmony_ciuint32_t r100_pll_rreg(struct radeon_device *rdev, uint32_t reg); 8562306a36Sopenharmony_cistruct radeon_fence *r100_copy_blit(struct radeon_device *rdev, 8662306a36Sopenharmony_ci uint64_t src_offset, 8762306a36Sopenharmony_ci uint64_t dst_offset, 8862306a36Sopenharmony_ci unsigned num_gpu_pages, 8962306a36Sopenharmony_ci struct dma_resv *resv); 9062306a36Sopenharmony_ciint r100_set_surface_reg(struct radeon_device *rdev, int reg, 9162306a36Sopenharmony_ci uint32_t tiling_flags, uint32_t pitch, 9262306a36Sopenharmony_ci uint32_t offset, uint32_t obj_size); 9362306a36Sopenharmony_civoid r100_clear_surface_reg(struct radeon_device *rdev, int reg); 9462306a36Sopenharmony_civoid r100_bandwidth_update(struct radeon_device *rdev); 9562306a36Sopenharmony_civoid r100_ring_ib_execute(struct radeon_device *rdev, struct radeon_ib *ib); 9662306a36Sopenharmony_ciint r100_ring_test(struct radeon_device *rdev, struct radeon_ring *cp); 9762306a36Sopenharmony_civoid r100_hpd_init(struct radeon_device *rdev); 9862306a36Sopenharmony_civoid r100_hpd_fini(struct radeon_device *rdev); 9962306a36Sopenharmony_cibool r100_hpd_sense(struct radeon_device *rdev, enum radeon_hpd_id hpd); 10062306a36Sopenharmony_civoid r100_hpd_set_polarity(struct radeon_device *rdev, 10162306a36Sopenharmony_ci enum radeon_hpd_id hpd); 10262306a36Sopenharmony_civoid r100_debugfs_rbbm_init(struct radeon_device *rdev); 10362306a36Sopenharmony_civoid r100_debugfs_cp_init(struct radeon_device *rdev); 10462306a36Sopenharmony_civoid r100_cp_disable(struct radeon_device *rdev); 10562306a36Sopenharmony_ciint r100_cp_init(struct radeon_device *rdev, unsigned ring_size); 10662306a36Sopenharmony_civoid r100_cp_fini(struct radeon_device *rdev); 10762306a36Sopenharmony_ciint r100_pci_gart_init(struct radeon_device *rdev); 10862306a36Sopenharmony_civoid r100_pci_gart_fini(struct radeon_device *rdev); 10962306a36Sopenharmony_ciint r100_pci_gart_enable(struct radeon_device *rdev); 11062306a36Sopenharmony_civoid r100_pci_gart_disable(struct radeon_device *rdev); 11162306a36Sopenharmony_civoid r100_debugfs_mc_info_init(struct radeon_device *rdev); 11262306a36Sopenharmony_ciint r100_gui_wait_for_idle(struct radeon_device *rdev); 11362306a36Sopenharmony_ciint r100_ib_test(struct radeon_device *rdev, struct radeon_ring *ring); 11462306a36Sopenharmony_civoid r100_irq_disable(struct radeon_device *rdev); 11562306a36Sopenharmony_civoid r100_mc_stop(struct radeon_device *rdev, struct r100_mc_save *save); 11662306a36Sopenharmony_civoid r100_mc_resume(struct radeon_device *rdev, struct r100_mc_save *save); 11762306a36Sopenharmony_civoid r100_vram_init_sizes(struct radeon_device *rdev); 11862306a36Sopenharmony_ciint r100_cp_reset(struct radeon_device *rdev); 11962306a36Sopenharmony_civoid r100_vga_render_disable(struct radeon_device *rdev); 12062306a36Sopenharmony_civoid r100_restore_sanity(struct radeon_device *rdev); 12162306a36Sopenharmony_ciint r100_cs_track_check_pkt3_indx_buffer(struct radeon_cs_parser *p, 12262306a36Sopenharmony_ci struct radeon_cs_packet *pkt, 12362306a36Sopenharmony_ci struct radeon_bo *robj); 12462306a36Sopenharmony_ciint r100_cs_parse_packet0(struct radeon_cs_parser *p, 12562306a36Sopenharmony_ci struct radeon_cs_packet *pkt, 12662306a36Sopenharmony_ci const unsigned *auth, unsigned n, 12762306a36Sopenharmony_ci radeon_packet0_check_t check); 12862306a36Sopenharmony_ciint r100_cs_packet_parse(struct radeon_cs_parser *p, 12962306a36Sopenharmony_ci struct radeon_cs_packet *pkt, 13062306a36Sopenharmony_ci unsigned idx); 13162306a36Sopenharmony_civoid r100_enable_bm(struct radeon_device *rdev); 13262306a36Sopenharmony_civoid r100_set_common_regs(struct radeon_device *rdev); 13362306a36Sopenharmony_civoid r100_bm_disable(struct radeon_device *rdev); 13462306a36Sopenharmony_ciextern bool r100_gui_idle(struct radeon_device *rdev); 13562306a36Sopenharmony_ciextern void r100_pm_misc(struct radeon_device *rdev); 13662306a36Sopenharmony_ciextern void r100_pm_prepare(struct radeon_device *rdev); 13762306a36Sopenharmony_ciextern void r100_pm_finish(struct radeon_device *rdev); 13862306a36Sopenharmony_ciextern void r100_pm_init_profile(struct radeon_device *rdev); 13962306a36Sopenharmony_ciextern void r100_pm_get_dynpm_state(struct radeon_device *rdev); 14062306a36Sopenharmony_ciextern void r100_page_flip(struct radeon_device *rdev, int crtc, 14162306a36Sopenharmony_ci u64 crtc_base, bool async); 14262306a36Sopenharmony_ciextern bool r100_page_flip_pending(struct radeon_device *rdev, int crtc); 14362306a36Sopenharmony_ciextern void r100_wait_for_vblank(struct radeon_device *rdev, int crtc); 14462306a36Sopenharmony_ciextern int r100_mc_wait_for_idle(struct radeon_device *rdev); 14562306a36Sopenharmony_ci 14662306a36Sopenharmony_ciu32 r100_gfx_get_rptr(struct radeon_device *rdev, 14762306a36Sopenharmony_ci struct radeon_ring *ring); 14862306a36Sopenharmony_ciu32 r100_gfx_get_wptr(struct radeon_device *rdev, 14962306a36Sopenharmony_ci struct radeon_ring *ring); 15062306a36Sopenharmony_civoid r100_gfx_set_wptr(struct radeon_device *rdev, 15162306a36Sopenharmony_ci struct radeon_ring *ring); 15262306a36Sopenharmony_ci 15362306a36Sopenharmony_ci/* 15462306a36Sopenharmony_ci * r200,rv250,rs300,rv280 15562306a36Sopenharmony_ci */ 15662306a36Sopenharmony_cistruct radeon_fence *r200_copy_dma(struct radeon_device *rdev, 15762306a36Sopenharmony_ci uint64_t src_offset, 15862306a36Sopenharmony_ci uint64_t dst_offset, 15962306a36Sopenharmony_ci unsigned num_gpu_pages, 16062306a36Sopenharmony_ci struct dma_resv *resv); 16162306a36Sopenharmony_civoid r200_set_safe_registers(struct radeon_device *rdev); 16262306a36Sopenharmony_ci 16362306a36Sopenharmony_ci/* 16462306a36Sopenharmony_ci * r300,r350,rv350,rv380 16562306a36Sopenharmony_ci */ 16662306a36Sopenharmony_ciextern int r300_init(struct radeon_device *rdev); 16762306a36Sopenharmony_ciextern void r300_fini(struct radeon_device *rdev); 16862306a36Sopenharmony_ciextern int r300_suspend(struct radeon_device *rdev); 16962306a36Sopenharmony_ciextern int r300_resume(struct radeon_device *rdev); 17062306a36Sopenharmony_ciextern int r300_asic_reset(struct radeon_device *rdev, bool hard); 17162306a36Sopenharmony_ciextern void r300_ring_start(struct radeon_device *rdev, struct radeon_ring *ring); 17262306a36Sopenharmony_ciextern void r300_fence_ring_emit(struct radeon_device *rdev, 17362306a36Sopenharmony_ci struct radeon_fence *fence); 17462306a36Sopenharmony_ciextern int r300_cs_parse(struct radeon_cs_parser *p); 17562306a36Sopenharmony_ciextern void rv370_pcie_gart_tlb_flush(struct radeon_device *rdev); 17662306a36Sopenharmony_ciextern uint64_t rv370_pcie_gart_get_page_entry(uint64_t addr, uint32_t flags); 17762306a36Sopenharmony_ciextern void rv370_pcie_gart_set_page(struct radeon_device *rdev, unsigned i, 17862306a36Sopenharmony_ci uint64_t entry); 17962306a36Sopenharmony_ciextern void rv370_set_pcie_lanes(struct radeon_device *rdev, int lanes); 18062306a36Sopenharmony_ciextern int rv370_get_pcie_lanes(struct radeon_device *rdev); 18162306a36Sopenharmony_ciextern void r300_set_reg_safe(struct radeon_device *rdev); 18262306a36Sopenharmony_ciextern void r300_mc_program(struct radeon_device *rdev); 18362306a36Sopenharmony_ciextern void r300_mc_init(struct radeon_device *rdev); 18462306a36Sopenharmony_ciextern void r300_clock_startup(struct radeon_device *rdev); 18562306a36Sopenharmony_ciextern int r300_mc_wait_for_idle(struct radeon_device *rdev); 18662306a36Sopenharmony_ciextern int rv370_pcie_gart_init(struct radeon_device *rdev); 18762306a36Sopenharmony_ciextern void rv370_pcie_gart_fini(struct radeon_device *rdev); 18862306a36Sopenharmony_ciextern int rv370_pcie_gart_enable(struct radeon_device *rdev); 18962306a36Sopenharmony_ciextern void rv370_pcie_gart_disable(struct radeon_device *rdev); 19062306a36Sopenharmony_ci 19162306a36Sopenharmony_ci/* 19262306a36Sopenharmony_ci * r420,r423,rv410 19362306a36Sopenharmony_ci */ 19462306a36Sopenharmony_ciextern int r420_init(struct radeon_device *rdev); 19562306a36Sopenharmony_ciextern void r420_fini(struct radeon_device *rdev); 19662306a36Sopenharmony_ciextern int r420_suspend(struct radeon_device *rdev); 19762306a36Sopenharmony_ciextern int r420_resume(struct radeon_device *rdev); 19862306a36Sopenharmony_ciextern void r420_pm_init_profile(struct radeon_device *rdev); 19962306a36Sopenharmony_ciextern u32 r420_mc_rreg(struct radeon_device *rdev, u32 reg); 20062306a36Sopenharmony_ciextern void r420_mc_wreg(struct radeon_device *rdev, u32 reg, u32 v); 20162306a36Sopenharmony_ciextern void r420_debugfs_pipes_info_init(struct radeon_device *rdev); 20262306a36Sopenharmony_ciextern void r420_pipes_init(struct radeon_device *rdev); 20362306a36Sopenharmony_ci 20462306a36Sopenharmony_ci/* 20562306a36Sopenharmony_ci * rs400,rs480 20662306a36Sopenharmony_ci */ 20762306a36Sopenharmony_ciextern int rs400_init(struct radeon_device *rdev); 20862306a36Sopenharmony_ciextern void rs400_fini(struct radeon_device *rdev); 20962306a36Sopenharmony_ciextern int rs400_suspend(struct radeon_device *rdev); 21062306a36Sopenharmony_ciextern int rs400_resume(struct radeon_device *rdev); 21162306a36Sopenharmony_civoid rs400_gart_tlb_flush(struct radeon_device *rdev); 21262306a36Sopenharmony_ciuint64_t rs400_gart_get_page_entry(uint64_t addr, uint32_t flags); 21362306a36Sopenharmony_civoid rs400_gart_set_page(struct radeon_device *rdev, unsigned i, 21462306a36Sopenharmony_ci uint64_t entry); 21562306a36Sopenharmony_ciuint32_t rs400_mc_rreg(struct radeon_device *rdev, uint32_t reg); 21662306a36Sopenharmony_civoid rs400_mc_wreg(struct radeon_device *rdev, uint32_t reg, uint32_t v); 21762306a36Sopenharmony_ciint rs400_gart_init(struct radeon_device *rdev); 21862306a36Sopenharmony_ciint rs400_gart_enable(struct radeon_device *rdev); 21962306a36Sopenharmony_civoid rs400_gart_adjust_size(struct radeon_device *rdev); 22062306a36Sopenharmony_civoid rs400_gart_disable(struct radeon_device *rdev); 22162306a36Sopenharmony_civoid rs400_gart_fini(struct radeon_device *rdev); 22262306a36Sopenharmony_ciextern int rs400_mc_wait_for_idle(struct radeon_device *rdev); 22362306a36Sopenharmony_ci 22462306a36Sopenharmony_ci/* 22562306a36Sopenharmony_ci * rs600. 22662306a36Sopenharmony_ci */ 22762306a36Sopenharmony_ciextern int rs600_asic_reset(struct radeon_device *rdev, bool hard); 22862306a36Sopenharmony_ciextern int rs600_init(struct radeon_device *rdev); 22962306a36Sopenharmony_ciextern void rs600_fini(struct radeon_device *rdev); 23062306a36Sopenharmony_ciextern int rs600_suspend(struct radeon_device *rdev); 23162306a36Sopenharmony_ciextern int rs600_resume(struct radeon_device *rdev); 23262306a36Sopenharmony_ciint rs600_irq_set(struct radeon_device *rdev); 23362306a36Sopenharmony_ciint rs600_irq_process(struct radeon_device *rdev); 23462306a36Sopenharmony_civoid rs600_irq_disable(struct radeon_device *rdev); 23562306a36Sopenharmony_ciu32 rs600_get_vblank_counter(struct radeon_device *rdev, int crtc); 23662306a36Sopenharmony_civoid rs600_gart_tlb_flush(struct radeon_device *rdev); 23762306a36Sopenharmony_ciuint64_t rs600_gart_get_page_entry(uint64_t addr, uint32_t flags); 23862306a36Sopenharmony_civoid rs600_gart_set_page(struct radeon_device *rdev, unsigned i, 23962306a36Sopenharmony_ci uint64_t entry); 24062306a36Sopenharmony_ciuint32_t rs600_mc_rreg(struct radeon_device *rdev, uint32_t reg); 24162306a36Sopenharmony_civoid rs600_mc_wreg(struct radeon_device *rdev, uint32_t reg, uint32_t v); 24262306a36Sopenharmony_civoid rs600_bandwidth_update(struct radeon_device *rdev); 24362306a36Sopenharmony_civoid rs600_hpd_init(struct radeon_device *rdev); 24462306a36Sopenharmony_civoid rs600_hpd_fini(struct radeon_device *rdev); 24562306a36Sopenharmony_cibool rs600_hpd_sense(struct radeon_device *rdev, enum radeon_hpd_id hpd); 24662306a36Sopenharmony_civoid rs600_hpd_set_polarity(struct radeon_device *rdev, 24762306a36Sopenharmony_ci enum radeon_hpd_id hpd); 24862306a36Sopenharmony_ciextern void rs600_pm_misc(struct radeon_device *rdev); 24962306a36Sopenharmony_ciextern void rs600_pm_prepare(struct radeon_device *rdev); 25062306a36Sopenharmony_ciextern void rs600_pm_finish(struct radeon_device *rdev); 25162306a36Sopenharmony_ciextern void rs600_page_flip(struct radeon_device *rdev, int crtc, 25262306a36Sopenharmony_ci u64 crtc_base, bool async); 25362306a36Sopenharmony_ciextern bool rs600_page_flip_pending(struct radeon_device *rdev, int crtc); 25462306a36Sopenharmony_civoid rs600_set_safe_registers(struct radeon_device *rdev); 25562306a36Sopenharmony_ciextern void avivo_wait_for_vblank(struct radeon_device *rdev, int crtc); 25662306a36Sopenharmony_ciextern int rs600_mc_wait_for_idle(struct radeon_device *rdev); 25762306a36Sopenharmony_ci 25862306a36Sopenharmony_ci/* 25962306a36Sopenharmony_ci * rs690,rs740 26062306a36Sopenharmony_ci */ 26162306a36Sopenharmony_ciint rs690_init(struct radeon_device *rdev); 26262306a36Sopenharmony_civoid rs690_fini(struct radeon_device *rdev); 26362306a36Sopenharmony_ciint rs690_resume(struct radeon_device *rdev); 26462306a36Sopenharmony_ciint rs690_suspend(struct radeon_device *rdev); 26562306a36Sopenharmony_ciuint32_t rs690_mc_rreg(struct radeon_device *rdev, uint32_t reg); 26662306a36Sopenharmony_civoid rs690_mc_wreg(struct radeon_device *rdev, uint32_t reg, uint32_t v); 26762306a36Sopenharmony_civoid rs690_bandwidth_update(struct radeon_device *rdev); 26862306a36Sopenharmony_civoid rs690_line_buffer_adjust(struct radeon_device *rdev, 26962306a36Sopenharmony_ci struct drm_display_mode *mode1, 27062306a36Sopenharmony_ci struct drm_display_mode *mode2); 27162306a36Sopenharmony_ciextern int rs690_mc_wait_for_idle(struct radeon_device *rdev); 27262306a36Sopenharmony_ci 27362306a36Sopenharmony_ci/* 27462306a36Sopenharmony_ci * rv515 27562306a36Sopenharmony_ci */ 27662306a36Sopenharmony_cistruct rv515_mc_save { 27762306a36Sopenharmony_ci u32 vga_render_control; 27862306a36Sopenharmony_ci u32 vga_hdp_control; 27962306a36Sopenharmony_ci bool crtc_enabled[2]; 28062306a36Sopenharmony_ci}; 28162306a36Sopenharmony_ci 28262306a36Sopenharmony_ciint rv515_init(struct radeon_device *rdev); 28362306a36Sopenharmony_civoid rv515_fini(struct radeon_device *rdev); 28462306a36Sopenharmony_ciuint32_t rv515_mc_rreg(struct radeon_device *rdev, uint32_t reg); 28562306a36Sopenharmony_civoid rv515_mc_wreg(struct radeon_device *rdev, uint32_t reg, uint32_t v); 28662306a36Sopenharmony_civoid rv515_ring_start(struct radeon_device *rdev, struct radeon_ring *ring); 28762306a36Sopenharmony_civoid rv515_bandwidth_update(struct radeon_device *rdev); 28862306a36Sopenharmony_ciint rv515_resume(struct radeon_device *rdev); 28962306a36Sopenharmony_ciint rv515_suspend(struct radeon_device *rdev); 29062306a36Sopenharmony_civoid rv515_bandwidth_avivo_update(struct radeon_device *rdev); 29162306a36Sopenharmony_civoid rv515_vga_render_disable(struct radeon_device *rdev); 29262306a36Sopenharmony_civoid rv515_set_safe_registers(struct radeon_device *rdev); 29362306a36Sopenharmony_civoid rv515_mc_stop(struct radeon_device *rdev, struct rv515_mc_save *save); 29462306a36Sopenharmony_civoid rv515_mc_resume(struct radeon_device *rdev, struct rv515_mc_save *save); 29562306a36Sopenharmony_civoid rv515_clock_startup(struct radeon_device *rdev); 29662306a36Sopenharmony_civoid rv515_debugfs(struct radeon_device *rdev); 29762306a36Sopenharmony_ciint rv515_mc_wait_for_idle(struct radeon_device *rdev); 29862306a36Sopenharmony_ci 29962306a36Sopenharmony_ci/* 30062306a36Sopenharmony_ci * r520,rv530,rv560,rv570,r580 30162306a36Sopenharmony_ci */ 30262306a36Sopenharmony_ciint r520_init(struct radeon_device *rdev); 30362306a36Sopenharmony_ciint r520_resume(struct radeon_device *rdev); 30462306a36Sopenharmony_ciint r520_mc_wait_for_idle(struct radeon_device *rdev); 30562306a36Sopenharmony_ci 30662306a36Sopenharmony_ci/* 30762306a36Sopenharmony_ci * r600,rv610,rv630,rv620,rv635,rv670,rs780,rs880 30862306a36Sopenharmony_ci */ 30962306a36Sopenharmony_ciint r600_init(struct radeon_device *rdev); 31062306a36Sopenharmony_civoid r600_fini(struct radeon_device *rdev); 31162306a36Sopenharmony_ciint r600_suspend(struct radeon_device *rdev); 31262306a36Sopenharmony_ciint r600_resume(struct radeon_device *rdev); 31362306a36Sopenharmony_civoid r600_vga_set_state(struct radeon_device *rdev, bool state); 31462306a36Sopenharmony_ciint r600_wb_init(struct radeon_device *rdev); 31562306a36Sopenharmony_civoid r600_wb_fini(struct radeon_device *rdev); 31662306a36Sopenharmony_civoid r600_pcie_gart_tlb_flush(struct radeon_device *rdev); 31762306a36Sopenharmony_ciuint32_t r600_pciep_rreg(struct radeon_device *rdev, uint32_t reg); 31862306a36Sopenharmony_civoid r600_pciep_wreg(struct radeon_device *rdev, uint32_t reg, uint32_t v); 31962306a36Sopenharmony_ciint r600_cs_parse(struct radeon_cs_parser *p); 32062306a36Sopenharmony_ciint r600_dma_cs_parse(struct radeon_cs_parser *p); 32162306a36Sopenharmony_civoid r600_fence_ring_emit(struct radeon_device *rdev, 32262306a36Sopenharmony_ci struct radeon_fence *fence); 32362306a36Sopenharmony_cibool r600_semaphore_ring_emit(struct radeon_device *rdev, 32462306a36Sopenharmony_ci struct radeon_ring *cp, 32562306a36Sopenharmony_ci struct radeon_semaphore *semaphore, 32662306a36Sopenharmony_ci bool emit_wait); 32762306a36Sopenharmony_civoid r600_dma_fence_ring_emit(struct radeon_device *rdev, 32862306a36Sopenharmony_ci struct radeon_fence *fence); 32962306a36Sopenharmony_cibool r600_dma_semaphore_ring_emit(struct radeon_device *rdev, 33062306a36Sopenharmony_ci struct radeon_ring *ring, 33162306a36Sopenharmony_ci struct radeon_semaphore *semaphore, 33262306a36Sopenharmony_ci bool emit_wait); 33362306a36Sopenharmony_civoid r600_dma_ring_ib_execute(struct radeon_device *rdev, struct radeon_ib *ib); 33462306a36Sopenharmony_cibool r600_dma_is_lockup(struct radeon_device *rdev, struct radeon_ring *ring); 33562306a36Sopenharmony_cibool r600_gfx_is_lockup(struct radeon_device *rdev, struct radeon_ring *cp); 33662306a36Sopenharmony_ciint r600_asic_reset(struct radeon_device *rdev, bool hard); 33762306a36Sopenharmony_ciint r600_set_surface_reg(struct radeon_device *rdev, int reg, 33862306a36Sopenharmony_ci uint32_t tiling_flags, uint32_t pitch, 33962306a36Sopenharmony_ci uint32_t offset, uint32_t obj_size); 34062306a36Sopenharmony_civoid r600_clear_surface_reg(struct radeon_device *rdev, int reg); 34162306a36Sopenharmony_ciint r600_ib_test(struct radeon_device *rdev, struct radeon_ring *ring); 34262306a36Sopenharmony_ciint r600_dma_ib_test(struct radeon_device *rdev, struct radeon_ring *ring); 34362306a36Sopenharmony_civoid r600_ring_ib_execute(struct radeon_device *rdev, struct radeon_ib *ib); 34462306a36Sopenharmony_ciint r600_ring_test(struct radeon_device *rdev, struct radeon_ring *cp); 34562306a36Sopenharmony_ciint r600_dma_ring_test(struct radeon_device *rdev, struct radeon_ring *cp); 34662306a36Sopenharmony_cistruct radeon_fence *r600_copy_cpdma(struct radeon_device *rdev, 34762306a36Sopenharmony_ci uint64_t src_offset, uint64_t dst_offset, 34862306a36Sopenharmony_ci unsigned num_gpu_pages, 34962306a36Sopenharmony_ci struct dma_resv *resv); 35062306a36Sopenharmony_cistruct radeon_fence *r600_copy_dma(struct radeon_device *rdev, 35162306a36Sopenharmony_ci uint64_t src_offset, uint64_t dst_offset, 35262306a36Sopenharmony_ci unsigned num_gpu_pages, 35362306a36Sopenharmony_ci struct dma_resv *resv); 35462306a36Sopenharmony_civoid r600_hpd_init(struct radeon_device *rdev); 35562306a36Sopenharmony_civoid r600_hpd_fini(struct radeon_device *rdev); 35662306a36Sopenharmony_cibool r600_hpd_sense(struct radeon_device *rdev, enum radeon_hpd_id hpd); 35762306a36Sopenharmony_civoid r600_hpd_set_polarity(struct radeon_device *rdev, 35862306a36Sopenharmony_ci enum radeon_hpd_id hpd); 35962306a36Sopenharmony_ciextern void r600_mmio_hdp_flush(struct radeon_device *rdev); 36062306a36Sopenharmony_ciextern bool r600_gui_idle(struct radeon_device *rdev); 36162306a36Sopenharmony_ciextern void r600_pm_misc(struct radeon_device *rdev); 36262306a36Sopenharmony_ciextern void r600_pm_init_profile(struct radeon_device *rdev); 36362306a36Sopenharmony_ciextern void rs780_pm_init_profile(struct radeon_device *rdev); 36462306a36Sopenharmony_ciextern uint32_t rs780_mc_rreg(struct radeon_device *rdev, uint32_t reg); 36562306a36Sopenharmony_ciextern void rs780_mc_wreg(struct radeon_device *rdev, uint32_t reg, uint32_t v); 36662306a36Sopenharmony_ciextern void r600_pm_get_dynpm_state(struct radeon_device *rdev); 36762306a36Sopenharmony_ciextern void r600_set_pcie_lanes(struct radeon_device *rdev, int lanes); 36862306a36Sopenharmony_ciextern int r600_get_pcie_lanes(struct radeon_device *rdev); 36962306a36Sopenharmony_cibool r600_card_posted(struct radeon_device *rdev); 37062306a36Sopenharmony_civoid r600_cp_stop(struct radeon_device *rdev); 37162306a36Sopenharmony_ciint r600_cp_start(struct radeon_device *rdev); 37262306a36Sopenharmony_civoid r600_ring_init(struct radeon_device *rdev, struct radeon_ring *cp, unsigned ring_size); 37362306a36Sopenharmony_ciint r600_cp_resume(struct radeon_device *rdev); 37462306a36Sopenharmony_civoid r600_cp_fini(struct radeon_device *rdev); 37562306a36Sopenharmony_ciint r600_count_pipe_bits(uint32_t val); 37662306a36Sopenharmony_ciint r600_mc_wait_for_idle(struct radeon_device *rdev); 37762306a36Sopenharmony_ciint r600_pcie_gart_init(struct radeon_device *rdev); 37862306a36Sopenharmony_civoid r600_scratch_init(struct radeon_device *rdev); 37962306a36Sopenharmony_ciint r600_init_microcode(struct radeon_device *rdev); 38062306a36Sopenharmony_ciu32 r600_gfx_get_rptr(struct radeon_device *rdev, 38162306a36Sopenharmony_ci struct radeon_ring *ring); 38262306a36Sopenharmony_ciu32 r600_gfx_get_wptr(struct radeon_device *rdev, 38362306a36Sopenharmony_ci struct radeon_ring *ring); 38462306a36Sopenharmony_civoid r600_gfx_set_wptr(struct radeon_device *rdev, 38562306a36Sopenharmony_ci struct radeon_ring *ring); 38662306a36Sopenharmony_ciint r600_get_allowed_info_register(struct radeon_device *rdev, 38762306a36Sopenharmony_ci u32 reg, u32 *val); 38862306a36Sopenharmony_ci/* r600 irq */ 38962306a36Sopenharmony_ciint r600_irq_process(struct radeon_device *rdev); 39062306a36Sopenharmony_ciint r600_irq_init(struct radeon_device *rdev); 39162306a36Sopenharmony_civoid r600_irq_fini(struct radeon_device *rdev); 39262306a36Sopenharmony_civoid r600_ih_ring_init(struct radeon_device *rdev, unsigned ring_size); 39362306a36Sopenharmony_ciint r600_irq_set(struct radeon_device *rdev); 39462306a36Sopenharmony_civoid r600_irq_suspend(struct radeon_device *rdev); 39562306a36Sopenharmony_civoid r600_disable_interrupts(struct radeon_device *rdev); 39662306a36Sopenharmony_civoid r600_rlc_stop(struct radeon_device *rdev); 39762306a36Sopenharmony_ci/* r600 audio */ 39862306a36Sopenharmony_civoid r600_audio_fini(struct radeon_device *rdev); 39962306a36Sopenharmony_civoid r600_audio_set_dto(struct drm_encoder *encoder, u32 clock); 40062306a36Sopenharmony_civoid r600_hdmi_update_avi_infoframe(struct drm_encoder *encoder, void *buffer, 40162306a36Sopenharmony_ci size_t size); 40262306a36Sopenharmony_civoid r600_hdmi_update_ACR(struct drm_encoder *encoder, uint32_t clock); 40362306a36Sopenharmony_civoid r600_hdmi_audio_workaround(struct drm_encoder *encoder); 40462306a36Sopenharmony_ciint r600_hdmi_buffer_status_changed(struct drm_encoder *encoder); 40562306a36Sopenharmony_civoid r600_hdmi_update_audio_settings(struct drm_encoder *encoder); 40662306a36Sopenharmony_ciu32 r600_get_xclk(struct radeon_device *rdev); 40762306a36Sopenharmony_ciuint64_t r600_get_gpu_clock_counter(struct radeon_device *rdev); 40862306a36Sopenharmony_ciint rv6xx_get_temp(struct radeon_device *rdev); 40962306a36Sopenharmony_ciint r600_set_uvd_clocks(struct radeon_device *rdev, u32 vclk, u32 dclk); 41062306a36Sopenharmony_ciint r600_dpm_pre_set_power_state(struct radeon_device *rdev); 41162306a36Sopenharmony_civoid r600_dpm_post_set_power_state(struct radeon_device *rdev); 41262306a36Sopenharmony_ciint r600_dpm_late_enable(struct radeon_device *rdev); 41362306a36Sopenharmony_ci/* r600 dma */ 41462306a36Sopenharmony_ciuint32_t r600_dma_get_rptr(struct radeon_device *rdev, 41562306a36Sopenharmony_ci struct radeon_ring *ring); 41662306a36Sopenharmony_ciuint32_t r600_dma_get_wptr(struct radeon_device *rdev, 41762306a36Sopenharmony_ci struct radeon_ring *ring); 41862306a36Sopenharmony_civoid r600_dma_set_wptr(struct radeon_device *rdev, 41962306a36Sopenharmony_ci struct radeon_ring *ring); 42062306a36Sopenharmony_ci/* rv6xx dpm */ 42162306a36Sopenharmony_ciint rv6xx_dpm_init(struct radeon_device *rdev); 42262306a36Sopenharmony_ciint rv6xx_dpm_enable(struct radeon_device *rdev); 42362306a36Sopenharmony_civoid rv6xx_dpm_disable(struct radeon_device *rdev); 42462306a36Sopenharmony_ciint rv6xx_dpm_set_power_state(struct radeon_device *rdev); 42562306a36Sopenharmony_civoid rv6xx_setup_asic(struct radeon_device *rdev); 42662306a36Sopenharmony_civoid rv6xx_dpm_display_configuration_changed(struct radeon_device *rdev); 42762306a36Sopenharmony_civoid rv6xx_dpm_fini(struct radeon_device *rdev); 42862306a36Sopenharmony_ciu32 rv6xx_dpm_get_sclk(struct radeon_device *rdev, bool low); 42962306a36Sopenharmony_ciu32 rv6xx_dpm_get_mclk(struct radeon_device *rdev, bool low); 43062306a36Sopenharmony_civoid rv6xx_dpm_print_power_state(struct radeon_device *rdev, 43162306a36Sopenharmony_ci struct radeon_ps *ps); 43262306a36Sopenharmony_civoid rv6xx_dpm_debugfs_print_current_performance_level(struct radeon_device *rdev, 43362306a36Sopenharmony_ci struct seq_file *m); 43462306a36Sopenharmony_ciint rv6xx_dpm_force_performance_level(struct radeon_device *rdev, 43562306a36Sopenharmony_ci enum radeon_dpm_forced_level level); 43662306a36Sopenharmony_ciu32 rv6xx_dpm_get_current_sclk(struct radeon_device *rdev); 43762306a36Sopenharmony_ciu32 rv6xx_dpm_get_current_mclk(struct radeon_device *rdev); 43862306a36Sopenharmony_ci/* rs780 dpm */ 43962306a36Sopenharmony_ciint rs780_dpm_init(struct radeon_device *rdev); 44062306a36Sopenharmony_ciint rs780_dpm_enable(struct radeon_device *rdev); 44162306a36Sopenharmony_civoid rs780_dpm_disable(struct radeon_device *rdev); 44262306a36Sopenharmony_ciint rs780_dpm_set_power_state(struct radeon_device *rdev); 44362306a36Sopenharmony_civoid rs780_dpm_setup_asic(struct radeon_device *rdev); 44462306a36Sopenharmony_civoid rs780_dpm_display_configuration_changed(struct radeon_device *rdev); 44562306a36Sopenharmony_civoid rs780_dpm_fini(struct radeon_device *rdev); 44662306a36Sopenharmony_ciu32 rs780_dpm_get_sclk(struct radeon_device *rdev, bool low); 44762306a36Sopenharmony_ciu32 rs780_dpm_get_mclk(struct radeon_device *rdev, bool low); 44862306a36Sopenharmony_civoid rs780_dpm_print_power_state(struct radeon_device *rdev, 44962306a36Sopenharmony_ci struct radeon_ps *ps); 45062306a36Sopenharmony_civoid rs780_dpm_debugfs_print_current_performance_level(struct radeon_device *rdev, 45162306a36Sopenharmony_ci struct seq_file *m); 45262306a36Sopenharmony_ciint rs780_dpm_force_performance_level(struct radeon_device *rdev, 45362306a36Sopenharmony_ci enum radeon_dpm_forced_level level); 45462306a36Sopenharmony_ciu32 rs780_dpm_get_current_sclk(struct radeon_device *rdev); 45562306a36Sopenharmony_ciu32 rs780_dpm_get_current_mclk(struct radeon_device *rdev); 45662306a36Sopenharmony_ci 45762306a36Sopenharmony_ci/* 45862306a36Sopenharmony_ci * rv770,rv730,rv710,rv740 45962306a36Sopenharmony_ci */ 46062306a36Sopenharmony_ciint rv770_init(struct radeon_device *rdev); 46162306a36Sopenharmony_civoid rv770_fini(struct radeon_device *rdev); 46262306a36Sopenharmony_ciint rv770_suspend(struct radeon_device *rdev); 46362306a36Sopenharmony_ciint rv770_resume(struct radeon_device *rdev); 46462306a36Sopenharmony_civoid rv770_pm_misc(struct radeon_device *rdev); 46562306a36Sopenharmony_civoid rv770_page_flip(struct radeon_device *rdev, int crtc, u64 crtc_base, 46662306a36Sopenharmony_ci bool async); 46762306a36Sopenharmony_cibool rv770_page_flip_pending(struct radeon_device *rdev, int crtc); 46862306a36Sopenharmony_civoid r700_vram_gtt_location(struct radeon_device *rdev, struct radeon_mc *mc); 46962306a36Sopenharmony_civoid r700_cp_stop(struct radeon_device *rdev); 47062306a36Sopenharmony_civoid r700_cp_fini(struct radeon_device *rdev); 47162306a36Sopenharmony_cistruct radeon_fence *rv770_copy_dma(struct radeon_device *rdev, 47262306a36Sopenharmony_ci uint64_t src_offset, uint64_t dst_offset, 47362306a36Sopenharmony_ci unsigned num_gpu_pages, 47462306a36Sopenharmony_ci struct dma_resv *resv); 47562306a36Sopenharmony_ciu32 rv770_get_xclk(struct radeon_device *rdev); 47662306a36Sopenharmony_ciint rv770_set_uvd_clocks(struct radeon_device *rdev, u32 vclk, u32 dclk); 47762306a36Sopenharmony_ciint rv770_get_temp(struct radeon_device *rdev); 47862306a36Sopenharmony_ci/* rv7xx pm */ 47962306a36Sopenharmony_ciint rv770_dpm_init(struct radeon_device *rdev); 48062306a36Sopenharmony_ciint rv770_dpm_enable(struct radeon_device *rdev); 48162306a36Sopenharmony_ciint rv770_dpm_late_enable(struct radeon_device *rdev); 48262306a36Sopenharmony_civoid rv770_dpm_disable(struct radeon_device *rdev); 48362306a36Sopenharmony_ciint rv770_dpm_set_power_state(struct radeon_device *rdev); 48462306a36Sopenharmony_civoid rv770_dpm_setup_asic(struct radeon_device *rdev); 48562306a36Sopenharmony_civoid rv770_dpm_display_configuration_changed(struct radeon_device *rdev); 48662306a36Sopenharmony_civoid rv770_dpm_fini(struct radeon_device *rdev); 48762306a36Sopenharmony_ciu32 rv770_dpm_get_sclk(struct radeon_device *rdev, bool low); 48862306a36Sopenharmony_ciu32 rv770_dpm_get_mclk(struct radeon_device *rdev, bool low); 48962306a36Sopenharmony_civoid rv770_dpm_print_power_state(struct radeon_device *rdev, 49062306a36Sopenharmony_ci struct radeon_ps *ps); 49162306a36Sopenharmony_civoid rv770_dpm_debugfs_print_current_performance_level(struct radeon_device *rdev, 49262306a36Sopenharmony_ci struct seq_file *m); 49362306a36Sopenharmony_ciint rv770_dpm_force_performance_level(struct radeon_device *rdev, 49462306a36Sopenharmony_ci enum radeon_dpm_forced_level level); 49562306a36Sopenharmony_cibool rv770_dpm_vblank_too_short(struct radeon_device *rdev); 49662306a36Sopenharmony_ciu32 rv770_dpm_get_current_sclk(struct radeon_device *rdev); 49762306a36Sopenharmony_ciu32 rv770_dpm_get_current_mclk(struct radeon_device *rdev); 49862306a36Sopenharmony_ci 49962306a36Sopenharmony_ci/* 50062306a36Sopenharmony_ci * evergreen 50162306a36Sopenharmony_ci */ 50262306a36Sopenharmony_cistruct evergreen_mc_save { 50362306a36Sopenharmony_ci u32 vga_render_control; 50462306a36Sopenharmony_ci u32 vga_hdp_control; 50562306a36Sopenharmony_ci bool crtc_enabled[RADEON_MAX_CRTCS]; 50662306a36Sopenharmony_ci}; 50762306a36Sopenharmony_ci 50862306a36Sopenharmony_civoid evergreen_pcie_gart_tlb_flush(struct radeon_device *rdev); 50962306a36Sopenharmony_ciint evergreen_init(struct radeon_device *rdev); 51062306a36Sopenharmony_civoid evergreen_fini(struct radeon_device *rdev); 51162306a36Sopenharmony_ciint evergreen_suspend(struct radeon_device *rdev); 51262306a36Sopenharmony_ciint evergreen_resume(struct radeon_device *rdev); 51362306a36Sopenharmony_cibool evergreen_gfx_is_lockup(struct radeon_device *rdev, struct radeon_ring *cp); 51462306a36Sopenharmony_cibool evergreen_dma_is_lockup(struct radeon_device *rdev, struct radeon_ring *cp); 51562306a36Sopenharmony_ciint evergreen_asic_reset(struct radeon_device *rdev, bool hard); 51662306a36Sopenharmony_civoid evergreen_bandwidth_update(struct radeon_device *rdev); 51762306a36Sopenharmony_civoid evergreen_ring_ib_execute(struct radeon_device *rdev, struct radeon_ib *ib); 51862306a36Sopenharmony_civoid evergreen_hpd_init(struct radeon_device *rdev); 51962306a36Sopenharmony_civoid evergreen_hpd_fini(struct radeon_device *rdev); 52062306a36Sopenharmony_cibool evergreen_hpd_sense(struct radeon_device *rdev, enum radeon_hpd_id hpd); 52162306a36Sopenharmony_civoid evergreen_hpd_set_polarity(struct radeon_device *rdev, 52262306a36Sopenharmony_ci enum radeon_hpd_id hpd); 52362306a36Sopenharmony_ciu32 evergreen_get_vblank_counter(struct radeon_device *rdev, int crtc); 52462306a36Sopenharmony_ciint evergreen_irq_set(struct radeon_device *rdev); 52562306a36Sopenharmony_ciint evergreen_irq_process(struct radeon_device *rdev); 52662306a36Sopenharmony_ciextern int evergreen_cs_parse(struct radeon_cs_parser *p); 52762306a36Sopenharmony_ciextern int evergreen_dma_cs_parse(struct radeon_cs_parser *p); 52862306a36Sopenharmony_ciextern void evergreen_pm_misc(struct radeon_device *rdev); 52962306a36Sopenharmony_ciextern void evergreen_pm_prepare(struct radeon_device *rdev); 53062306a36Sopenharmony_ciextern void evergreen_pm_finish(struct radeon_device *rdev); 53162306a36Sopenharmony_ciextern void sumo_pm_init_profile(struct radeon_device *rdev); 53262306a36Sopenharmony_ciextern void btc_pm_init_profile(struct radeon_device *rdev); 53362306a36Sopenharmony_ciint sumo_set_uvd_clocks(struct radeon_device *rdev, u32 vclk, u32 dclk); 53462306a36Sopenharmony_ciint evergreen_set_uvd_clocks(struct radeon_device *rdev, u32 vclk, u32 dclk); 53562306a36Sopenharmony_ciextern void evergreen_page_flip(struct radeon_device *rdev, int crtc, 53662306a36Sopenharmony_ci u64 crtc_base, bool async); 53762306a36Sopenharmony_ciextern bool evergreen_page_flip_pending(struct radeon_device *rdev, int crtc); 53862306a36Sopenharmony_ciextern void dce4_wait_for_vblank(struct radeon_device *rdev, int crtc); 53962306a36Sopenharmony_civoid evergreen_disable_interrupt_state(struct radeon_device *rdev); 54062306a36Sopenharmony_ciint evergreen_mc_wait_for_idle(struct radeon_device *rdev); 54162306a36Sopenharmony_civoid evergreen_dma_fence_ring_emit(struct radeon_device *rdev, 54262306a36Sopenharmony_ci struct radeon_fence *fence); 54362306a36Sopenharmony_civoid evergreen_dma_ring_ib_execute(struct radeon_device *rdev, 54462306a36Sopenharmony_ci struct radeon_ib *ib); 54562306a36Sopenharmony_cistruct radeon_fence *evergreen_copy_dma(struct radeon_device *rdev, 54662306a36Sopenharmony_ci uint64_t src_offset, uint64_t dst_offset, 54762306a36Sopenharmony_ci unsigned num_gpu_pages, 54862306a36Sopenharmony_ci struct dma_resv *resv); 54962306a36Sopenharmony_ciint evergreen_get_temp(struct radeon_device *rdev); 55062306a36Sopenharmony_ciint evergreen_get_allowed_info_register(struct radeon_device *rdev, 55162306a36Sopenharmony_ci u32 reg, u32 *val); 55262306a36Sopenharmony_ciint sumo_get_temp(struct radeon_device *rdev); 55362306a36Sopenharmony_ciint tn_get_temp(struct radeon_device *rdev); 55462306a36Sopenharmony_ciint cypress_dpm_init(struct radeon_device *rdev); 55562306a36Sopenharmony_civoid cypress_dpm_setup_asic(struct radeon_device *rdev); 55662306a36Sopenharmony_ciint cypress_dpm_enable(struct radeon_device *rdev); 55762306a36Sopenharmony_civoid cypress_dpm_disable(struct radeon_device *rdev); 55862306a36Sopenharmony_ciint cypress_dpm_set_power_state(struct radeon_device *rdev); 55962306a36Sopenharmony_civoid cypress_dpm_display_configuration_changed(struct radeon_device *rdev); 56062306a36Sopenharmony_civoid cypress_dpm_fini(struct radeon_device *rdev); 56162306a36Sopenharmony_cibool cypress_dpm_vblank_too_short(struct radeon_device *rdev); 56262306a36Sopenharmony_ciint btc_dpm_init(struct radeon_device *rdev); 56362306a36Sopenharmony_civoid btc_dpm_setup_asic(struct radeon_device *rdev); 56462306a36Sopenharmony_ciint btc_dpm_enable(struct radeon_device *rdev); 56562306a36Sopenharmony_civoid btc_dpm_disable(struct radeon_device *rdev); 56662306a36Sopenharmony_ciint btc_dpm_pre_set_power_state(struct radeon_device *rdev); 56762306a36Sopenharmony_ciint btc_dpm_set_power_state(struct radeon_device *rdev); 56862306a36Sopenharmony_civoid btc_dpm_post_set_power_state(struct radeon_device *rdev); 56962306a36Sopenharmony_civoid btc_dpm_fini(struct radeon_device *rdev); 57062306a36Sopenharmony_ciu32 btc_dpm_get_sclk(struct radeon_device *rdev, bool low); 57162306a36Sopenharmony_ciu32 btc_dpm_get_mclk(struct radeon_device *rdev, bool low); 57262306a36Sopenharmony_cibool btc_dpm_vblank_too_short(struct radeon_device *rdev); 57362306a36Sopenharmony_civoid btc_dpm_debugfs_print_current_performance_level(struct radeon_device *rdev, 57462306a36Sopenharmony_ci struct seq_file *m); 57562306a36Sopenharmony_ciu32 btc_dpm_get_current_sclk(struct radeon_device *rdev); 57662306a36Sopenharmony_ciu32 btc_dpm_get_current_mclk(struct radeon_device *rdev); 57762306a36Sopenharmony_ciint sumo_dpm_init(struct radeon_device *rdev); 57862306a36Sopenharmony_ciint sumo_dpm_enable(struct radeon_device *rdev); 57962306a36Sopenharmony_ciint sumo_dpm_late_enable(struct radeon_device *rdev); 58062306a36Sopenharmony_civoid sumo_dpm_disable(struct radeon_device *rdev); 58162306a36Sopenharmony_ciint sumo_dpm_pre_set_power_state(struct radeon_device *rdev); 58262306a36Sopenharmony_ciint sumo_dpm_set_power_state(struct radeon_device *rdev); 58362306a36Sopenharmony_civoid sumo_dpm_post_set_power_state(struct radeon_device *rdev); 58462306a36Sopenharmony_civoid sumo_dpm_setup_asic(struct radeon_device *rdev); 58562306a36Sopenharmony_civoid sumo_dpm_display_configuration_changed(struct radeon_device *rdev); 58662306a36Sopenharmony_civoid sumo_dpm_fini(struct radeon_device *rdev); 58762306a36Sopenharmony_ciu32 sumo_dpm_get_sclk(struct radeon_device *rdev, bool low); 58862306a36Sopenharmony_ciu32 sumo_dpm_get_mclk(struct radeon_device *rdev, bool low); 58962306a36Sopenharmony_civoid sumo_dpm_print_power_state(struct radeon_device *rdev, 59062306a36Sopenharmony_ci struct radeon_ps *ps); 59162306a36Sopenharmony_civoid sumo_dpm_debugfs_print_current_performance_level(struct radeon_device *rdev, 59262306a36Sopenharmony_ci struct seq_file *m); 59362306a36Sopenharmony_ciint sumo_dpm_force_performance_level(struct radeon_device *rdev, 59462306a36Sopenharmony_ci enum radeon_dpm_forced_level level); 59562306a36Sopenharmony_ciu32 sumo_dpm_get_current_sclk(struct radeon_device *rdev); 59662306a36Sopenharmony_ciu32 sumo_dpm_get_current_mclk(struct radeon_device *rdev); 59762306a36Sopenharmony_ciu16 sumo_dpm_get_current_vddc(struct radeon_device *rdev); 59862306a36Sopenharmony_ci 59962306a36Sopenharmony_ci/* 60062306a36Sopenharmony_ci * cayman 60162306a36Sopenharmony_ci */ 60262306a36Sopenharmony_civoid cayman_fence_ring_emit(struct radeon_device *rdev, 60362306a36Sopenharmony_ci struct radeon_fence *fence); 60462306a36Sopenharmony_civoid cayman_pcie_gart_tlb_flush(struct radeon_device *rdev); 60562306a36Sopenharmony_ciint cayman_init(struct radeon_device *rdev); 60662306a36Sopenharmony_civoid cayman_fini(struct radeon_device *rdev); 60762306a36Sopenharmony_ciint cayman_suspend(struct radeon_device *rdev); 60862306a36Sopenharmony_ciint cayman_resume(struct radeon_device *rdev); 60962306a36Sopenharmony_ciint cayman_asic_reset(struct radeon_device *rdev, bool hard); 61062306a36Sopenharmony_civoid cayman_ring_ib_execute(struct radeon_device *rdev, struct radeon_ib *ib); 61162306a36Sopenharmony_ciint cayman_vm_init(struct radeon_device *rdev); 61262306a36Sopenharmony_civoid cayman_vm_fini(struct radeon_device *rdev); 61362306a36Sopenharmony_civoid cayman_vm_flush(struct radeon_device *rdev, struct radeon_ring *ring, 61462306a36Sopenharmony_ci unsigned vm_id, uint64_t pd_addr); 61562306a36Sopenharmony_ciuint32_t cayman_vm_page_flags(struct radeon_device *rdev, uint32_t flags); 61662306a36Sopenharmony_ciint evergreen_ib_parse(struct radeon_device *rdev, struct radeon_ib *ib); 61762306a36Sopenharmony_ciint evergreen_dma_ib_parse(struct radeon_device *rdev, struct radeon_ib *ib); 61862306a36Sopenharmony_civoid cayman_dma_ring_ib_execute(struct radeon_device *rdev, 61962306a36Sopenharmony_ci struct radeon_ib *ib); 62062306a36Sopenharmony_cibool cayman_gfx_is_lockup(struct radeon_device *rdev, struct radeon_ring *ring); 62162306a36Sopenharmony_cibool cayman_dma_is_lockup(struct radeon_device *rdev, struct radeon_ring *ring); 62262306a36Sopenharmony_ci 62362306a36Sopenharmony_civoid cayman_dma_vm_copy_pages(struct radeon_device *rdev, 62462306a36Sopenharmony_ci struct radeon_ib *ib, 62562306a36Sopenharmony_ci uint64_t pe, uint64_t src, 62662306a36Sopenharmony_ci unsigned count); 62762306a36Sopenharmony_civoid cayman_dma_vm_write_pages(struct radeon_device *rdev, 62862306a36Sopenharmony_ci struct radeon_ib *ib, 62962306a36Sopenharmony_ci uint64_t pe, 63062306a36Sopenharmony_ci uint64_t addr, unsigned count, 63162306a36Sopenharmony_ci uint32_t incr, uint32_t flags); 63262306a36Sopenharmony_civoid cayman_dma_vm_set_pages(struct radeon_device *rdev, 63362306a36Sopenharmony_ci struct radeon_ib *ib, 63462306a36Sopenharmony_ci uint64_t pe, 63562306a36Sopenharmony_ci uint64_t addr, unsigned count, 63662306a36Sopenharmony_ci uint32_t incr, uint32_t flags); 63762306a36Sopenharmony_civoid cayman_dma_vm_pad_ib(struct radeon_ib *ib); 63862306a36Sopenharmony_ci 63962306a36Sopenharmony_civoid cayman_dma_vm_flush(struct radeon_device *rdev, struct radeon_ring *ring, 64062306a36Sopenharmony_ci unsigned vm_id, uint64_t pd_addr); 64162306a36Sopenharmony_ci 64262306a36Sopenharmony_ciu32 cayman_gfx_get_rptr(struct radeon_device *rdev, 64362306a36Sopenharmony_ci struct radeon_ring *ring); 64462306a36Sopenharmony_ciu32 cayman_gfx_get_wptr(struct radeon_device *rdev, 64562306a36Sopenharmony_ci struct radeon_ring *ring); 64662306a36Sopenharmony_civoid cayman_gfx_set_wptr(struct radeon_device *rdev, 64762306a36Sopenharmony_ci struct radeon_ring *ring); 64862306a36Sopenharmony_ciuint32_t cayman_dma_get_rptr(struct radeon_device *rdev, 64962306a36Sopenharmony_ci struct radeon_ring *ring); 65062306a36Sopenharmony_ciuint32_t cayman_dma_get_wptr(struct radeon_device *rdev, 65162306a36Sopenharmony_ci struct radeon_ring *ring); 65262306a36Sopenharmony_civoid cayman_dma_set_wptr(struct radeon_device *rdev, 65362306a36Sopenharmony_ci struct radeon_ring *ring); 65462306a36Sopenharmony_ciint cayman_get_allowed_info_register(struct radeon_device *rdev, 65562306a36Sopenharmony_ci u32 reg, u32 *val); 65662306a36Sopenharmony_ci 65762306a36Sopenharmony_ciint ni_dpm_init(struct radeon_device *rdev); 65862306a36Sopenharmony_civoid ni_dpm_setup_asic(struct radeon_device *rdev); 65962306a36Sopenharmony_ciint ni_dpm_enable(struct radeon_device *rdev); 66062306a36Sopenharmony_civoid ni_dpm_disable(struct radeon_device *rdev); 66162306a36Sopenharmony_ciint ni_dpm_pre_set_power_state(struct radeon_device *rdev); 66262306a36Sopenharmony_ciint ni_dpm_set_power_state(struct radeon_device *rdev); 66362306a36Sopenharmony_civoid ni_dpm_post_set_power_state(struct radeon_device *rdev); 66462306a36Sopenharmony_civoid ni_dpm_fini(struct radeon_device *rdev); 66562306a36Sopenharmony_ciu32 ni_dpm_get_sclk(struct radeon_device *rdev, bool low); 66662306a36Sopenharmony_ciu32 ni_dpm_get_mclk(struct radeon_device *rdev, bool low); 66762306a36Sopenharmony_civoid ni_dpm_print_power_state(struct radeon_device *rdev, 66862306a36Sopenharmony_ci struct radeon_ps *ps); 66962306a36Sopenharmony_civoid ni_dpm_debugfs_print_current_performance_level(struct radeon_device *rdev, 67062306a36Sopenharmony_ci struct seq_file *m); 67162306a36Sopenharmony_ciint ni_dpm_force_performance_level(struct radeon_device *rdev, 67262306a36Sopenharmony_ci enum radeon_dpm_forced_level level); 67362306a36Sopenharmony_cibool ni_dpm_vblank_too_short(struct radeon_device *rdev); 67462306a36Sopenharmony_ciu32 ni_dpm_get_current_sclk(struct radeon_device *rdev); 67562306a36Sopenharmony_ciu32 ni_dpm_get_current_mclk(struct radeon_device *rdev); 67662306a36Sopenharmony_ciint trinity_dpm_init(struct radeon_device *rdev); 67762306a36Sopenharmony_ciint trinity_dpm_enable(struct radeon_device *rdev); 67862306a36Sopenharmony_ciint trinity_dpm_late_enable(struct radeon_device *rdev); 67962306a36Sopenharmony_civoid trinity_dpm_disable(struct radeon_device *rdev); 68062306a36Sopenharmony_ciint trinity_dpm_pre_set_power_state(struct radeon_device *rdev); 68162306a36Sopenharmony_ciint trinity_dpm_set_power_state(struct radeon_device *rdev); 68262306a36Sopenharmony_civoid trinity_dpm_post_set_power_state(struct radeon_device *rdev); 68362306a36Sopenharmony_civoid trinity_dpm_setup_asic(struct radeon_device *rdev); 68462306a36Sopenharmony_civoid trinity_dpm_display_configuration_changed(struct radeon_device *rdev); 68562306a36Sopenharmony_civoid trinity_dpm_fini(struct radeon_device *rdev); 68662306a36Sopenharmony_ciu32 trinity_dpm_get_sclk(struct radeon_device *rdev, bool low); 68762306a36Sopenharmony_ciu32 trinity_dpm_get_mclk(struct radeon_device *rdev, bool low); 68862306a36Sopenharmony_civoid trinity_dpm_print_power_state(struct radeon_device *rdev, 68962306a36Sopenharmony_ci struct radeon_ps *ps); 69062306a36Sopenharmony_civoid trinity_dpm_debugfs_print_current_performance_level(struct radeon_device *rdev, 69162306a36Sopenharmony_ci struct seq_file *m); 69262306a36Sopenharmony_ciint trinity_dpm_force_performance_level(struct radeon_device *rdev, 69362306a36Sopenharmony_ci enum radeon_dpm_forced_level level); 69462306a36Sopenharmony_civoid trinity_dpm_enable_bapm(struct radeon_device *rdev, bool enable); 69562306a36Sopenharmony_ciu32 trinity_dpm_get_current_sclk(struct radeon_device *rdev); 69662306a36Sopenharmony_ciu32 trinity_dpm_get_current_mclk(struct radeon_device *rdev); 69762306a36Sopenharmony_ciint tn_set_vce_clocks(struct radeon_device *rdev, u32 evclk, u32 ecclk); 69862306a36Sopenharmony_ci 69962306a36Sopenharmony_ci/* DCE6 - SI */ 70062306a36Sopenharmony_civoid dce6_bandwidth_update(struct radeon_device *rdev); 70162306a36Sopenharmony_civoid dce6_audio_fini(struct radeon_device *rdev); 70262306a36Sopenharmony_ci 70362306a36Sopenharmony_ci/* 70462306a36Sopenharmony_ci * si 70562306a36Sopenharmony_ci */ 70662306a36Sopenharmony_civoid si_fence_ring_emit(struct radeon_device *rdev, 70762306a36Sopenharmony_ci struct radeon_fence *fence); 70862306a36Sopenharmony_civoid si_pcie_gart_tlb_flush(struct radeon_device *rdev); 70962306a36Sopenharmony_ciint si_init(struct radeon_device *rdev); 71062306a36Sopenharmony_civoid si_fini(struct radeon_device *rdev); 71162306a36Sopenharmony_ciint si_suspend(struct radeon_device *rdev); 71262306a36Sopenharmony_ciint si_resume(struct radeon_device *rdev); 71362306a36Sopenharmony_cibool si_gfx_is_lockup(struct radeon_device *rdev, struct radeon_ring *cp); 71462306a36Sopenharmony_cibool si_dma_is_lockup(struct radeon_device *rdev, struct radeon_ring *cp); 71562306a36Sopenharmony_ciint si_asic_reset(struct radeon_device *rdev, bool hard); 71662306a36Sopenharmony_civoid si_ring_ib_execute(struct radeon_device *rdev, struct radeon_ib *ib); 71762306a36Sopenharmony_ciint si_irq_set(struct radeon_device *rdev); 71862306a36Sopenharmony_ciint si_irq_process(struct radeon_device *rdev); 71962306a36Sopenharmony_ciint si_vm_init(struct radeon_device *rdev); 72062306a36Sopenharmony_civoid si_vm_fini(struct radeon_device *rdev); 72162306a36Sopenharmony_civoid si_vm_flush(struct radeon_device *rdev, struct radeon_ring *ring, 72262306a36Sopenharmony_ci unsigned vm_id, uint64_t pd_addr); 72362306a36Sopenharmony_ciint si_ib_parse(struct radeon_device *rdev, struct radeon_ib *ib); 72462306a36Sopenharmony_cistruct radeon_fence *si_copy_dma(struct radeon_device *rdev, 72562306a36Sopenharmony_ci uint64_t src_offset, uint64_t dst_offset, 72662306a36Sopenharmony_ci unsigned num_gpu_pages, 72762306a36Sopenharmony_ci struct dma_resv *resv); 72862306a36Sopenharmony_ci 72962306a36Sopenharmony_civoid si_dma_vm_copy_pages(struct radeon_device *rdev, 73062306a36Sopenharmony_ci struct radeon_ib *ib, 73162306a36Sopenharmony_ci uint64_t pe, uint64_t src, 73262306a36Sopenharmony_ci unsigned count); 73362306a36Sopenharmony_civoid si_dma_vm_write_pages(struct radeon_device *rdev, 73462306a36Sopenharmony_ci struct radeon_ib *ib, 73562306a36Sopenharmony_ci uint64_t pe, 73662306a36Sopenharmony_ci uint64_t addr, unsigned count, 73762306a36Sopenharmony_ci uint32_t incr, uint32_t flags); 73862306a36Sopenharmony_civoid si_dma_vm_set_pages(struct radeon_device *rdev, 73962306a36Sopenharmony_ci struct radeon_ib *ib, 74062306a36Sopenharmony_ci uint64_t pe, 74162306a36Sopenharmony_ci uint64_t addr, unsigned count, 74262306a36Sopenharmony_ci uint32_t incr, uint32_t flags); 74362306a36Sopenharmony_ci 74462306a36Sopenharmony_civoid si_dma_vm_flush(struct radeon_device *rdev, struct radeon_ring *ring, 74562306a36Sopenharmony_ci unsigned vm_id, uint64_t pd_addr); 74662306a36Sopenharmony_ciu32 si_get_xclk(struct radeon_device *rdev); 74762306a36Sopenharmony_ciuint64_t si_get_gpu_clock_counter(struct radeon_device *rdev); 74862306a36Sopenharmony_ciint si_set_uvd_clocks(struct radeon_device *rdev, u32 vclk, u32 dclk); 74962306a36Sopenharmony_ciint si_set_vce_clocks(struct radeon_device *rdev, u32 evclk, u32 ecclk); 75062306a36Sopenharmony_ciint si_get_temp(struct radeon_device *rdev); 75162306a36Sopenharmony_ciint si_get_allowed_info_register(struct radeon_device *rdev, 75262306a36Sopenharmony_ci u32 reg, u32 *val); 75362306a36Sopenharmony_ciint si_dpm_init(struct radeon_device *rdev); 75462306a36Sopenharmony_civoid si_dpm_setup_asic(struct radeon_device *rdev); 75562306a36Sopenharmony_ciint si_dpm_enable(struct radeon_device *rdev); 75662306a36Sopenharmony_ciint si_dpm_late_enable(struct radeon_device *rdev); 75762306a36Sopenharmony_civoid si_dpm_disable(struct radeon_device *rdev); 75862306a36Sopenharmony_ciint si_dpm_pre_set_power_state(struct radeon_device *rdev); 75962306a36Sopenharmony_ciint si_dpm_set_power_state(struct radeon_device *rdev); 76062306a36Sopenharmony_civoid si_dpm_post_set_power_state(struct radeon_device *rdev); 76162306a36Sopenharmony_civoid si_dpm_fini(struct radeon_device *rdev); 76262306a36Sopenharmony_civoid si_dpm_display_configuration_changed(struct radeon_device *rdev); 76362306a36Sopenharmony_civoid si_dpm_debugfs_print_current_performance_level(struct radeon_device *rdev, 76462306a36Sopenharmony_ci struct seq_file *m); 76562306a36Sopenharmony_ciint si_dpm_force_performance_level(struct radeon_device *rdev, 76662306a36Sopenharmony_ci enum radeon_dpm_forced_level level); 76762306a36Sopenharmony_ciint si_fan_ctrl_get_fan_speed_percent(struct radeon_device *rdev, 76862306a36Sopenharmony_ci u32 *speed); 76962306a36Sopenharmony_ciint si_fan_ctrl_set_fan_speed_percent(struct radeon_device *rdev, 77062306a36Sopenharmony_ci u32 speed); 77162306a36Sopenharmony_ciu32 si_fan_ctrl_get_mode(struct radeon_device *rdev); 77262306a36Sopenharmony_civoid si_fan_ctrl_set_mode(struct radeon_device *rdev, u32 mode); 77362306a36Sopenharmony_ciu32 si_dpm_get_current_sclk(struct radeon_device *rdev); 77462306a36Sopenharmony_ciu32 si_dpm_get_current_mclk(struct radeon_device *rdev); 77562306a36Sopenharmony_ci 77662306a36Sopenharmony_ci/* DCE8 - CIK */ 77762306a36Sopenharmony_civoid dce8_bandwidth_update(struct radeon_device *rdev); 77862306a36Sopenharmony_ci 77962306a36Sopenharmony_ci/* 78062306a36Sopenharmony_ci * cik 78162306a36Sopenharmony_ci */ 78262306a36Sopenharmony_ciuint64_t cik_get_gpu_clock_counter(struct radeon_device *rdev); 78362306a36Sopenharmony_ciu32 cik_get_xclk(struct radeon_device *rdev); 78462306a36Sopenharmony_ciuint32_t cik_pciep_rreg(struct radeon_device *rdev, uint32_t reg); 78562306a36Sopenharmony_civoid cik_pciep_wreg(struct radeon_device *rdev, uint32_t reg, uint32_t v); 78662306a36Sopenharmony_ciint cik_set_uvd_clocks(struct radeon_device *rdev, u32 vclk, u32 dclk); 78762306a36Sopenharmony_ciint cik_set_vce_clocks(struct radeon_device *rdev, u32 evclk, u32 ecclk); 78862306a36Sopenharmony_civoid cik_sdma_fence_ring_emit(struct radeon_device *rdev, 78962306a36Sopenharmony_ci struct radeon_fence *fence); 79062306a36Sopenharmony_cibool cik_sdma_semaphore_ring_emit(struct radeon_device *rdev, 79162306a36Sopenharmony_ci struct radeon_ring *ring, 79262306a36Sopenharmony_ci struct radeon_semaphore *semaphore, 79362306a36Sopenharmony_ci bool emit_wait); 79462306a36Sopenharmony_civoid cik_sdma_ring_ib_execute(struct radeon_device *rdev, struct radeon_ib *ib); 79562306a36Sopenharmony_cistruct radeon_fence *cik_copy_dma(struct radeon_device *rdev, 79662306a36Sopenharmony_ci uint64_t src_offset, uint64_t dst_offset, 79762306a36Sopenharmony_ci unsigned num_gpu_pages, 79862306a36Sopenharmony_ci struct dma_resv *resv); 79962306a36Sopenharmony_cistruct radeon_fence *cik_copy_cpdma(struct radeon_device *rdev, 80062306a36Sopenharmony_ci uint64_t src_offset, uint64_t dst_offset, 80162306a36Sopenharmony_ci unsigned num_gpu_pages, 80262306a36Sopenharmony_ci struct dma_resv *resv); 80362306a36Sopenharmony_ciint cik_sdma_ring_test(struct radeon_device *rdev, struct radeon_ring *ring); 80462306a36Sopenharmony_ciint cik_sdma_ib_test(struct radeon_device *rdev, struct radeon_ring *ring); 80562306a36Sopenharmony_cibool cik_sdma_is_lockup(struct radeon_device *rdev, struct radeon_ring *ring); 80662306a36Sopenharmony_civoid cik_fence_gfx_ring_emit(struct radeon_device *rdev, 80762306a36Sopenharmony_ci struct radeon_fence *fence); 80862306a36Sopenharmony_civoid cik_fence_compute_ring_emit(struct radeon_device *rdev, 80962306a36Sopenharmony_ci struct radeon_fence *fence); 81062306a36Sopenharmony_cibool cik_semaphore_ring_emit(struct radeon_device *rdev, 81162306a36Sopenharmony_ci struct radeon_ring *cp, 81262306a36Sopenharmony_ci struct radeon_semaphore *semaphore, 81362306a36Sopenharmony_ci bool emit_wait); 81462306a36Sopenharmony_civoid cik_pcie_gart_tlb_flush(struct radeon_device *rdev); 81562306a36Sopenharmony_ciint cik_init(struct radeon_device *rdev); 81662306a36Sopenharmony_civoid cik_fini(struct radeon_device *rdev); 81762306a36Sopenharmony_ciint cik_suspend(struct radeon_device *rdev); 81862306a36Sopenharmony_ciint cik_resume(struct radeon_device *rdev); 81962306a36Sopenharmony_cibool cik_gfx_is_lockup(struct radeon_device *rdev, struct radeon_ring *cp); 82062306a36Sopenharmony_ciint cik_asic_reset(struct radeon_device *rdev, bool hard); 82162306a36Sopenharmony_civoid cik_ring_ib_execute(struct radeon_device *rdev, struct radeon_ib *ib); 82262306a36Sopenharmony_ciint cik_ring_test(struct radeon_device *rdev, struct radeon_ring *ring); 82362306a36Sopenharmony_ciint cik_ib_test(struct radeon_device *rdev, struct radeon_ring *ring); 82462306a36Sopenharmony_ciint cik_irq_set(struct radeon_device *rdev); 82562306a36Sopenharmony_ciint cik_irq_process(struct radeon_device *rdev); 82662306a36Sopenharmony_ciint cik_vm_init(struct radeon_device *rdev); 82762306a36Sopenharmony_civoid cik_vm_fini(struct radeon_device *rdev); 82862306a36Sopenharmony_civoid cik_vm_flush(struct radeon_device *rdev, struct radeon_ring *ring, 82962306a36Sopenharmony_ci unsigned vm_id, uint64_t pd_addr); 83062306a36Sopenharmony_ci 83162306a36Sopenharmony_civoid cik_sdma_vm_copy_pages(struct radeon_device *rdev, 83262306a36Sopenharmony_ci struct radeon_ib *ib, 83362306a36Sopenharmony_ci uint64_t pe, uint64_t src, 83462306a36Sopenharmony_ci unsigned count); 83562306a36Sopenharmony_civoid cik_sdma_vm_write_pages(struct radeon_device *rdev, 83662306a36Sopenharmony_ci struct radeon_ib *ib, 83762306a36Sopenharmony_ci uint64_t pe, 83862306a36Sopenharmony_ci uint64_t addr, unsigned count, 83962306a36Sopenharmony_ci uint32_t incr, uint32_t flags); 84062306a36Sopenharmony_civoid cik_sdma_vm_set_pages(struct radeon_device *rdev, 84162306a36Sopenharmony_ci struct radeon_ib *ib, 84262306a36Sopenharmony_ci uint64_t pe, 84362306a36Sopenharmony_ci uint64_t addr, unsigned count, 84462306a36Sopenharmony_ci uint32_t incr, uint32_t flags); 84562306a36Sopenharmony_civoid cik_sdma_vm_pad_ib(struct radeon_ib *ib); 84662306a36Sopenharmony_ci 84762306a36Sopenharmony_civoid cik_dma_vm_flush(struct radeon_device *rdev, struct radeon_ring *ring, 84862306a36Sopenharmony_ci unsigned vm_id, uint64_t pd_addr); 84962306a36Sopenharmony_ciint cik_ib_parse(struct radeon_device *rdev, struct radeon_ib *ib); 85062306a36Sopenharmony_ciu32 cik_gfx_get_rptr(struct radeon_device *rdev, 85162306a36Sopenharmony_ci struct radeon_ring *ring); 85262306a36Sopenharmony_ciu32 cik_gfx_get_wptr(struct radeon_device *rdev, 85362306a36Sopenharmony_ci struct radeon_ring *ring); 85462306a36Sopenharmony_civoid cik_gfx_set_wptr(struct radeon_device *rdev, 85562306a36Sopenharmony_ci struct radeon_ring *ring); 85662306a36Sopenharmony_ciu32 cik_compute_get_rptr(struct radeon_device *rdev, 85762306a36Sopenharmony_ci struct radeon_ring *ring); 85862306a36Sopenharmony_ciu32 cik_compute_get_wptr(struct radeon_device *rdev, 85962306a36Sopenharmony_ci struct radeon_ring *ring); 86062306a36Sopenharmony_civoid cik_compute_set_wptr(struct radeon_device *rdev, 86162306a36Sopenharmony_ci struct radeon_ring *ring); 86262306a36Sopenharmony_ciu32 cik_sdma_get_rptr(struct radeon_device *rdev, 86362306a36Sopenharmony_ci struct radeon_ring *ring); 86462306a36Sopenharmony_ciu32 cik_sdma_get_wptr(struct radeon_device *rdev, 86562306a36Sopenharmony_ci struct radeon_ring *ring); 86662306a36Sopenharmony_civoid cik_sdma_set_wptr(struct radeon_device *rdev, 86762306a36Sopenharmony_ci struct radeon_ring *ring); 86862306a36Sopenharmony_ciint ci_get_temp(struct radeon_device *rdev); 86962306a36Sopenharmony_ciint kv_get_temp(struct radeon_device *rdev); 87062306a36Sopenharmony_ciint cik_get_allowed_info_register(struct radeon_device *rdev, 87162306a36Sopenharmony_ci u32 reg, u32 *val); 87262306a36Sopenharmony_ci 87362306a36Sopenharmony_ciint ci_dpm_init(struct radeon_device *rdev); 87462306a36Sopenharmony_ciint ci_dpm_enable(struct radeon_device *rdev); 87562306a36Sopenharmony_ciint ci_dpm_late_enable(struct radeon_device *rdev); 87662306a36Sopenharmony_civoid ci_dpm_disable(struct radeon_device *rdev); 87762306a36Sopenharmony_ciint ci_dpm_pre_set_power_state(struct radeon_device *rdev); 87862306a36Sopenharmony_ciint ci_dpm_set_power_state(struct radeon_device *rdev); 87962306a36Sopenharmony_civoid ci_dpm_post_set_power_state(struct radeon_device *rdev); 88062306a36Sopenharmony_civoid ci_dpm_setup_asic(struct radeon_device *rdev); 88162306a36Sopenharmony_civoid ci_dpm_display_configuration_changed(struct radeon_device *rdev); 88262306a36Sopenharmony_civoid ci_dpm_fini(struct radeon_device *rdev); 88362306a36Sopenharmony_ciu32 ci_dpm_get_sclk(struct radeon_device *rdev, bool low); 88462306a36Sopenharmony_ciu32 ci_dpm_get_mclk(struct radeon_device *rdev, bool low); 88562306a36Sopenharmony_civoid ci_dpm_print_power_state(struct radeon_device *rdev, 88662306a36Sopenharmony_ci struct radeon_ps *ps); 88762306a36Sopenharmony_civoid ci_dpm_debugfs_print_current_performance_level(struct radeon_device *rdev, 88862306a36Sopenharmony_ci struct seq_file *m); 88962306a36Sopenharmony_ciint ci_dpm_force_performance_level(struct radeon_device *rdev, 89062306a36Sopenharmony_ci enum radeon_dpm_forced_level level); 89162306a36Sopenharmony_cibool ci_dpm_vblank_too_short(struct radeon_device *rdev); 89262306a36Sopenharmony_civoid ci_dpm_powergate_uvd(struct radeon_device *rdev, bool gate); 89362306a36Sopenharmony_ciu32 ci_dpm_get_current_sclk(struct radeon_device *rdev); 89462306a36Sopenharmony_ciu32 ci_dpm_get_current_mclk(struct radeon_device *rdev); 89562306a36Sopenharmony_ci 89662306a36Sopenharmony_ciint ci_fan_ctrl_get_fan_speed_percent(struct radeon_device *rdev, 89762306a36Sopenharmony_ci u32 *speed); 89862306a36Sopenharmony_ciint ci_fan_ctrl_set_fan_speed_percent(struct radeon_device *rdev, 89962306a36Sopenharmony_ci u32 speed); 90062306a36Sopenharmony_ciu32 ci_fan_ctrl_get_mode(struct radeon_device *rdev); 90162306a36Sopenharmony_civoid ci_fan_ctrl_set_mode(struct radeon_device *rdev, u32 mode); 90262306a36Sopenharmony_ci 90362306a36Sopenharmony_ciint kv_dpm_init(struct radeon_device *rdev); 90462306a36Sopenharmony_ciint kv_dpm_enable(struct radeon_device *rdev); 90562306a36Sopenharmony_ciint kv_dpm_late_enable(struct radeon_device *rdev); 90662306a36Sopenharmony_civoid kv_dpm_disable(struct radeon_device *rdev); 90762306a36Sopenharmony_ciint kv_dpm_pre_set_power_state(struct radeon_device *rdev); 90862306a36Sopenharmony_ciint kv_dpm_set_power_state(struct radeon_device *rdev); 90962306a36Sopenharmony_civoid kv_dpm_post_set_power_state(struct radeon_device *rdev); 91062306a36Sopenharmony_civoid kv_dpm_setup_asic(struct radeon_device *rdev); 91162306a36Sopenharmony_civoid kv_dpm_display_configuration_changed(struct radeon_device *rdev); 91262306a36Sopenharmony_civoid kv_dpm_fini(struct radeon_device *rdev); 91362306a36Sopenharmony_ciu32 kv_dpm_get_sclk(struct radeon_device *rdev, bool low); 91462306a36Sopenharmony_ciu32 kv_dpm_get_mclk(struct radeon_device *rdev, bool low); 91562306a36Sopenharmony_civoid kv_dpm_print_power_state(struct radeon_device *rdev, 91662306a36Sopenharmony_ci struct radeon_ps *ps); 91762306a36Sopenharmony_civoid kv_dpm_debugfs_print_current_performance_level(struct radeon_device *rdev, 91862306a36Sopenharmony_ci struct seq_file *m); 91962306a36Sopenharmony_ciint kv_dpm_force_performance_level(struct radeon_device *rdev, 92062306a36Sopenharmony_ci enum radeon_dpm_forced_level level); 92162306a36Sopenharmony_civoid kv_dpm_powergate_uvd(struct radeon_device *rdev, bool gate); 92262306a36Sopenharmony_civoid kv_dpm_enable_bapm(struct radeon_device *rdev, bool enable); 92362306a36Sopenharmony_ciu32 kv_dpm_get_current_sclk(struct radeon_device *rdev); 92462306a36Sopenharmony_ciu32 kv_dpm_get_current_mclk(struct radeon_device *rdev); 92562306a36Sopenharmony_ci 92662306a36Sopenharmony_ci/* uvd v1.0 */ 92762306a36Sopenharmony_ciuint32_t uvd_v1_0_get_rptr(struct radeon_device *rdev, 92862306a36Sopenharmony_ci struct radeon_ring *ring); 92962306a36Sopenharmony_ciuint32_t uvd_v1_0_get_wptr(struct radeon_device *rdev, 93062306a36Sopenharmony_ci struct radeon_ring *ring); 93162306a36Sopenharmony_civoid uvd_v1_0_set_wptr(struct radeon_device *rdev, 93262306a36Sopenharmony_ci struct radeon_ring *ring); 93362306a36Sopenharmony_ciint uvd_v1_0_resume(struct radeon_device *rdev); 93462306a36Sopenharmony_ci 93562306a36Sopenharmony_ciint uvd_v1_0_init(struct radeon_device *rdev); 93662306a36Sopenharmony_civoid uvd_v1_0_fini(struct radeon_device *rdev); 93762306a36Sopenharmony_ciint uvd_v1_0_start(struct radeon_device *rdev); 93862306a36Sopenharmony_civoid uvd_v1_0_stop(struct radeon_device *rdev); 93962306a36Sopenharmony_ci 94062306a36Sopenharmony_ciint uvd_v1_0_ring_test(struct radeon_device *rdev, struct radeon_ring *ring); 94162306a36Sopenharmony_civoid uvd_v1_0_fence_emit(struct radeon_device *rdev, 94262306a36Sopenharmony_ci struct radeon_fence *fence); 94362306a36Sopenharmony_ciint uvd_v1_0_ib_test(struct radeon_device *rdev, struct radeon_ring *ring); 94462306a36Sopenharmony_cibool uvd_v1_0_semaphore_emit(struct radeon_device *rdev, 94562306a36Sopenharmony_ci struct radeon_ring *ring, 94662306a36Sopenharmony_ci struct radeon_semaphore *semaphore, 94762306a36Sopenharmony_ci bool emit_wait); 94862306a36Sopenharmony_civoid uvd_v1_0_ib_execute(struct radeon_device *rdev, struct radeon_ib *ib); 94962306a36Sopenharmony_ci 95062306a36Sopenharmony_ci/* uvd v2.2 */ 95162306a36Sopenharmony_ciint uvd_v2_2_resume(struct radeon_device *rdev); 95262306a36Sopenharmony_civoid uvd_v2_2_fence_emit(struct radeon_device *rdev, 95362306a36Sopenharmony_ci struct radeon_fence *fence); 95462306a36Sopenharmony_cibool uvd_v2_2_semaphore_emit(struct radeon_device *rdev, 95562306a36Sopenharmony_ci struct radeon_ring *ring, 95662306a36Sopenharmony_ci struct radeon_semaphore *semaphore, 95762306a36Sopenharmony_ci bool emit_wait); 95862306a36Sopenharmony_ci 95962306a36Sopenharmony_ci/* uvd v3.1 */ 96062306a36Sopenharmony_cibool uvd_v3_1_semaphore_emit(struct radeon_device *rdev, 96162306a36Sopenharmony_ci struct radeon_ring *ring, 96262306a36Sopenharmony_ci struct radeon_semaphore *semaphore, 96362306a36Sopenharmony_ci bool emit_wait); 96462306a36Sopenharmony_ci 96562306a36Sopenharmony_ci/* uvd v4.2 */ 96662306a36Sopenharmony_ciint uvd_v4_2_resume(struct radeon_device *rdev); 96762306a36Sopenharmony_ci 96862306a36Sopenharmony_ci/* vce v1.0 */ 96962306a36Sopenharmony_ciuint32_t vce_v1_0_get_rptr(struct radeon_device *rdev, 97062306a36Sopenharmony_ci struct radeon_ring *ring); 97162306a36Sopenharmony_ciuint32_t vce_v1_0_get_wptr(struct radeon_device *rdev, 97262306a36Sopenharmony_ci struct radeon_ring *ring); 97362306a36Sopenharmony_civoid vce_v1_0_set_wptr(struct radeon_device *rdev, 97462306a36Sopenharmony_ci struct radeon_ring *ring); 97562306a36Sopenharmony_ciint vce_v1_0_load_fw(struct radeon_device *rdev, uint32_t *data); 97662306a36Sopenharmony_ciunsigned vce_v1_0_bo_size(struct radeon_device *rdev); 97762306a36Sopenharmony_ciint vce_v1_0_resume(struct radeon_device *rdev); 97862306a36Sopenharmony_ciint vce_v1_0_init(struct radeon_device *rdev); 97962306a36Sopenharmony_ciint vce_v1_0_start(struct radeon_device *rdev); 98062306a36Sopenharmony_ci 98162306a36Sopenharmony_ci/* vce v2.0 */ 98262306a36Sopenharmony_ciunsigned vce_v2_0_bo_size(struct radeon_device *rdev); 98362306a36Sopenharmony_ciint vce_v2_0_resume(struct radeon_device *rdev); 98462306a36Sopenharmony_ci 98562306a36Sopenharmony_ci#endif 986