blob: 3f3c7a2169f18a962f1848ccf16f0562a22046fc [file] [log] [blame]
Jerome Glisse771fe6b2009-06-05 14:42:42 +02001/*
2 * Copyright 2008 Advanced Micro Devices, Inc.
3 * Copyright 2008 Red Hat Inc.
4 * Copyright 2009 Jerome Glisse.
5 *
6 * Permission is hereby granted, free of charge, to any person obtaining a
7 * copy of this software and associated documentation files (the "Software"),
8 * to deal in the Software without restriction, including without limitation
9 * the rights to use, copy, modify, merge, publish, distribute, sublicense,
10 * and/or sell copies of the Software, and to permit persons to whom the
11 * Software is furnished to do so, subject to the following conditions:
12 *
13 * The above copyright notice and this permission notice shall be included in
14 * all copies or substantial portions of the Software.
15 *
16 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
19 * THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR
20 * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
21 * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
22 * OTHER DEALINGS IN THE SOFTWARE.
23 *
24 * Authors: Dave Airlie
25 * Alex Deucher
26 * Jerome Glisse
27 */
28#ifndef __RADEON_ASIC_H__
29#define __RADEON_ASIC_H__
30
31/*
32 * common functions
33 */
Rafał Miłecki74338742009-11-03 00:53:02 +010034uint32_t radeon_legacy_get_engine_clock(struct radeon_device *rdev);
Jerome Glisse771fe6b2009-06-05 14:42:42 +020035void radeon_legacy_set_engine_clock(struct radeon_device *rdev, uint32_t eng_clock);
Rafał Miłecki5ea597f2009-12-17 13:50:09 +010036uint32_t radeon_legacy_get_memory_clock(struct radeon_device *rdev);
Jerome Glisse771fe6b2009-06-05 14:42:42 +020037void radeon_legacy_set_clock_gating(struct radeon_device *rdev, int enable);
38
Rafał Miłecki74338742009-11-03 00:53:02 +010039uint32_t radeon_atom_get_engine_clock(struct radeon_device *rdev);
Jerome Glisse771fe6b2009-06-05 14:42:42 +020040void radeon_atom_set_engine_clock(struct radeon_device *rdev, uint32_t eng_clock);
Rafał Miłecki74338742009-11-03 00:53:02 +010041uint32_t radeon_atom_get_memory_clock(struct radeon_device *rdev);
Jerome Glisse771fe6b2009-06-05 14:42:42 +020042void radeon_atom_set_memory_clock(struct radeon_device *rdev, uint32_t mem_clock);
43void radeon_atom_set_clock_gating(struct radeon_device *rdev, int enable);
44
45/*
46 * r100,rv100,rs100,rv200,rs200,r200,rv250,rs300,rv280
47 */
Jerome Glissed4550902009-10-01 10:12:06 +020048extern int r100_init(struct radeon_device *rdev);
49extern void r100_fini(struct radeon_device *rdev);
50extern int r100_suspend(struct radeon_device *rdev);
51extern int r100_resume(struct radeon_device *rdev);
Jerome Glisse771fe6b2009-06-05 14:42:42 +020052uint32_t r100_mm_rreg(struct radeon_device *rdev, uint32_t reg);
53void r100_mm_wreg(struct radeon_device *rdev, uint32_t reg, uint32_t v);
Dave Airlie28d52042009-09-21 14:33:58 +100054void r100_vga_set_state(struct radeon_device *rdev, bool state);
Jerome Glisse771fe6b2009-06-05 14:42:42 +020055int r100_gpu_reset(struct radeon_device *rdev);
Michel Dänzer7ed220d2009-08-13 11:10:51 +020056u32 r100_get_vblank_counter(struct radeon_device *rdev, int crtc);
Jerome Glisse771fe6b2009-06-05 14:42:42 +020057void r100_pci_gart_tlb_flush(struct radeon_device *rdev);
58int r100_pci_gart_set_page(struct radeon_device *rdev, int i, uint64_t addr);
Jerome Glisse3ce0a232009-09-08 10:10:24 +100059void r100_cp_commit(struct radeon_device *rdev);
Jerome Glisse771fe6b2009-06-05 14:42:42 +020060void r100_ring_start(struct radeon_device *rdev);
61int r100_irq_set(struct radeon_device *rdev);
62int r100_irq_process(struct radeon_device *rdev);
63void r100_fence_ring_emit(struct radeon_device *rdev,
64 struct radeon_fence *fence);
65int r100_cs_parse(struct radeon_cs_parser *p);
66void r100_pll_wreg(struct radeon_device *rdev, uint32_t reg, uint32_t v);
67uint32_t r100_pll_rreg(struct radeon_device *rdev, uint32_t reg);
68int r100_copy_blit(struct radeon_device *rdev,
69 uint64_t src_offset,
70 uint64_t dst_offset,
71 unsigned num_pages,
72 struct radeon_fence *fence);
Dave Airliee024e112009-06-24 09:48:08 +100073int r100_set_surface_reg(struct radeon_device *rdev, int reg,
74 uint32_t tiling_flags, uint32_t pitch,
75 uint32_t offset, uint32_t obj_size);
76int r100_clear_surface_reg(struct radeon_device *rdev, int reg);
Jerome Glissec93bb852009-07-13 21:04:08 +020077void r100_bandwidth_update(struct radeon_device *rdev);
Jerome Glisse3ce0a232009-09-08 10:10:24 +100078void r100_ring_ib_execute(struct radeon_device *rdev, struct radeon_ib *ib);
Jerome Glisse3ce0a232009-09-08 10:10:24 +100079int r100_ring_test(struct radeon_device *rdev);
Alex Deucher429770b2009-12-04 15:26:55 -050080void r100_hpd_init(struct radeon_device *rdev);
81void r100_hpd_fini(struct radeon_device *rdev);
82bool r100_hpd_sense(struct radeon_device *rdev, enum radeon_hpd_id hpd);
83void r100_hpd_set_polarity(struct radeon_device *rdev,
84 enum radeon_hpd_id hpd);
Jerome Glisse771fe6b2009-06-05 14:42:42 +020085
86static struct radeon_asic r100_asic = {
Jerome Glisse068a1172009-06-17 13:28:30 +020087 .init = &r100_init,
Jerome Glissed4550902009-10-01 10:12:06 +020088 .fini = &r100_fini,
89 .suspend = &r100_suspend,
90 .resume = &r100_resume,
Dave Airlie28d52042009-09-21 14:33:58 +100091 .vga_set_state = &r100_vga_set_state,
Jerome Glisse771fe6b2009-06-05 14:42:42 +020092 .gpu_reset = &r100_gpu_reset,
Jerome Glisse771fe6b2009-06-05 14:42:42 +020093 .gart_tlb_flush = &r100_pci_gart_tlb_flush,
94 .gart_set_page = &r100_pci_gart_set_page,
Jerome Glisse3ce0a232009-09-08 10:10:24 +100095 .cp_commit = &r100_cp_commit,
Jerome Glisse771fe6b2009-06-05 14:42:42 +020096 .ring_start = &r100_ring_start,
Jerome Glisse3ce0a232009-09-08 10:10:24 +100097 .ring_test = &r100_ring_test,
98 .ring_ib_execute = &r100_ring_ib_execute,
Jerome Glisse771fe6b2009-06-05 14:42:42 +020099 .irq_set = &r100_irq_set,
100 .irq_process = &r100_irq_process,
Michel Dänzer7ed220d2009-08-13 11:10:51 +0200101 .get_vblank_counter = &r100_get_vblank_counter,
Jerome Glisse771fe6b2009-06-05 14:42:42 +0200102 .fence_ring_emit = &r100_fence_ring_emit,
103 .cs_parse = &r100_cs_parse,
104 .copy_blit = &r100_copy_blit,
105 .copy_dma = NULL,
106 .copy = &r100_copy_blit,
Rafał Miłecki74338742009-11-03 00:53:02 +0100107 .get_engine_clock = &radeon_legacy_get_engine_clock,
Jerome Glisse771fe6b2009-06-05 14:42:42 +0200108 .set_engine_clock = &radeon_legacy_set_engine_clock,
Rafał Miłecki5ea597f2009-12-17 13:50:09 +0100109 .get_memory_clock = &radeon_legacy_get_memory_clock,
Jerome Glisse771fe6b2009-06-05 14:42:42 +0200110 .set_memory_clock = NULL,
Alex Deucherc836a412009-12-23 10:07:50 -0500111 .get_pcie_lanes = NULL,
Jerome Glisse771fe6b2009-06-05 14:42:42 +0200112 .set_pcie_lanes = NULL,
113 .set_clock_gating = &radeon_legacy_set_clock_gating,
Dave Airliee024e112009-06-24 09:48:08 +1000114 .set_surface_reg = r100_set_surface_reg,
115 .clear_surface_reg = r100_clear_surface_reg,
Jerome Glissec93bb852009-07-13 21:04:08 +0200116 .bandwidth_update = &r100_bandwidth_update,
Alex Deucher429770b2009-12-04 15:26:55 -0500117 .hpd_init = &r100_hpd_init,
118 .hpd_fini = &r100_hpd_fini,
119 .hpd_sense = &r100_hpd_sense,
120 .hpd_set_polarity = &r100_hpd_set_polarity,
Jerome Glisse062b3892010-02-04 20:36:39 +0100121 .ioctl_wait_idle = NULL,
Jerome Glisse771fe6b2009-06-05 14:42:42 +0200122};
123
124
125/*
126 * r300,r350,rv350,rv380
127 */
Jerome Glisse207bf9e2009-09-30 15:35:32 +0200128extern int r300_init(struct radeon_device *rdev);
129extern void r300_fini(struct radeon_device *rdev);
130extern int r300_suspend(struct radeon_device *rdev);
131extern int r300_resume(struct radeon_device *rdev);
132extern int r300_gpu_reset(struct radeon_device *rdev);
133extern void r300_ring_start(struct radeon_device *rdev);
134extern void r300_fence_ring_emit(struct radeon_device *rdev,
135 struct radeon_fence *fence);
136extern int r300_cs_parse(struct radeon_cs_parser *p);
137extern void rv370_pcie_gart_tlb_flush(struct radeon_device *rdev);
138extern int rv370_pcie_gart_set_page(struct radeon_device *rdev, int i, uint64_t addr);
139extern uint32_t rv370_pcie_rreg(struct radeon_device *rdev, uint32_t reg);
140extern void rv370_pcie_wreg(struct radeon_device *rdev, uint32_t reg, uint32_t v);
141extern void rv370_set_pcie_lanes(struct radeon_device *rdev, int lanes);
Alex Deucherc836a412009-12-23 10:07:50 -0500142extern int rv370_get_pcie_lanes(struct radeon_device *rdev);
Jerome Glisse207bf9e2009-09-30 15:35:32 +0200143extern int r300_copy_dma(struct radeon_device *rdev,
144 uint64_t src_offset,
145 uint64_t dst_offset,
146 unsigned num_pages,
147 struct radeon_fence *fence);
Jerome Glisse771fe6b2009-06-05 14:42:42 +0200148static struct radeon_asic r300_asic = {
Jerome Glisse068a1172009-06-17 13:28:30 +0200149 .init = &r300_init,
Jerome Glisse207bf9e2009-09-30 15:35:32 +0200150 .fini = &r300_fini,
151 .suspend = &r300_suspend,
152 .resume = &r300_resume,
Dave Airlie28d52042009-09-21 14:33:58 +1000153 .vga_set_state = &r100_vga_set_state,
Jerome Glisse771fe6b2009-06-05 14:42:42 +0200154 .gpu_reset = &r300_gpu_reset,
Jerome Glisse771fe6b2009-06-05 14:42:42 +0200155 .gart_tlb_flush = &r100_pci_gart_tlb_flush,
156 .gart_set_page = &r100_pci_gart_set_page,
Jerome Glisse3ce0a232009-09-08 10:10:24 +1000157 .cp_commit = &r100_cp_commit,
Jerome Glisse771fe6b2009-06-05 14:42:42 +0200158 .ring_start = &r300_ring_start,
Jerome Glisse3ce0a232009-09-08 10:10:24 +1000159 .ring_test = &r100_ring_test,
160 .ring_ib_execute = &r100_ring_ib_execute,
Jerome Glisse771fe6b2009-06-05 14:42:42 +0200161 .irq_set = &r100_irq_set,
162 .irq_process = &r100_irq_process,
Michel Dänzer7ed220d2009-08-13 11:10:51 +0200163 .get_vblank_counter = &r100_get_vblank_counter,
Jerome Glisse771fe6b2009-06-05 14:42:42 +0200164 .fence_ring_emit = &r300_fence_ring_emit,
165 .cs_parse = &r300_cs_parse,
166 .copy_blit = &r100_copy_blit,
167 .copy_dma = &r300_copy_dma,
168 .copy = &r100_copy_blit,
Rafał Miłecki74338742009-11-03 00:53:02 +0100169 .get_engine_clock = &radeon_legacy_get_engine_clock,
Jerome Glisse771fe6b2009-06-05 14:42:42 +0200170 .set_engine_clock = &radeon_legacy_set_engine_clock,
Rafał Miłecki5ea597f2009-12-17 13:50:09 +0100171 .get_memory_clock = &radeon_legacy_get_memory_clock,
Jerome Glisse771fe6b2009-06-05 14:42:42 +0200172 .set_memory_clock = NULL,
Alex Deucherc836a412009-12-23 10:07:50 -0500173 .get_pcie_lanes = &rv370_get_pcie_lanes,
Jerome Glisse771fe6b2009-06-05 14:42:42 +0200174 .set_pcie_lanes = &rv370_set_pcie_lanes,
175 .set_clock_gating = &radeon_legacy_set_clock_gating,
Dave Airliee024e112009-06-24 09:48:08 +1000176 .set_surface_reg = r100_set_surface_reg,
177 .clear_surface_reg = r100_clear_surface_reg,
Jerome Glissec93bb852009-07-13 21:04:08 +0200178 .bandwidth_update = &r100_bandwidth_update,
Alex Deucher429770b2009-12-04 15:26:55 -0500179 .hpd_init = &r100_hpd_init,
180 .hpd_fini = &r100_hpd_fini,
181 .hpd_sense = &r100_hpd_sense,
182 .hpd_set_polarity = &r100_hpd_set_polarity,
Jerome Glisse062b3892010-02-04 20:36:39 +0100183 .ioctl_wait_idle = NULL,
Jerome Glisse771fe6b2009-06-05 14:42:42 +0200184};
185
186/*
187 * r420,r423,rv410
188 */
Jerome Glisse9f022dd2009-09-11 15:35:22 +0200189extern int r420_init(struct radeon_device *rdev);
190extern void r420_fini(struct radeon_device *rdev);
191extern int r420_suspend(struct radeon_device *rdev);
192extern int r420_resume(struct radeon_device *rdev);
Jerome Glisse771fe6b2009-06-05 14:42:42 +0200193static struct radeon_asic r420_asic = {
Jerome Glisse9f022dd2009-09-11 15:35:22 +0200194 .init = &r420_init,
195 .fini = &r420_fini,
196 .suspend = &r420_suspend,
197 .resume = &r420_resume,
Dave Airlie28d52042009-09-21 14:33:58 +1000198 .vga_set_state = &r100_vga_set_state,
Jerome Glisse771fe6b2009-06-05 14:42:42 +0200199 .gpu_reset = &r300_gpu_reset,
Jerome Glisse771fe6b2009-06-05 14:42:42 +0200200 .gart_tlb_flush = &rv370_pcie_gart_tlb_flush,
201 .gart_set_page = &rv370_pcie_gart_set_page,
Jerome Glisse3ce0a232009-09-08 10:10:24 +1000202 .cp_commit = &r100_cp_commit,
Jerome Glisse771fe6b2009-06-05 14:42:42 +0200203 .ring_start = &r300_ring_start,
Jerome Glisse3ce0a232009-09-08 10:10:24 +1000204 .ring_test = &r100_ring_test,
205 .ring_ib_execute = &r100_ring_ib_execute,
Jerome Glisse771fe6b2009-06-05 14:42:42 +0200206 .irq_set = &r100_irq_set,
207 .irq_process = &r100_irq_process,
Michel Dänzer7ed220d2009-08-13 11:10:51 +0200208 .get_vblank_counter = &r100_get_vblank_counter,
Jerome Glisse771fe6b2009-06-05 14:42:42 +0200209 .fence_ring_emit = &r300_fence_ring_emit,
210 .cs_parse = &r300_cs_parse,
211 .copy_blit = &r100_copy_blit,
212 .copy_dma = &r300_copy_dma,
213 .copy = &r100_copy_blit,
Rafał Miłecki74338742009-11-03 00:53:02 +0100214 .get_engine_clock = &radeon_atom_get_engine_clock,
Jerome Glisse771fe6b2009-06-05 14:42:42 +0200215 .set_engine_clock = &radeon_atom_set_engine_clock,
Rafał Miłecki74338742009-11-03 00:53:02 +0100216 .get_memory_clock = &radeon_atom_get_memory_clock,
Jerome Glisse771fe6b2009-06-05 14:42:42 +0200217 .set_memory_clock = &radeon_atom_set_memory_clock,
Alex Deucherc836a412009-12-23 10:07:50 -0500218 .get_pcie_lanes = &rv370_get_pcie_lanes,
Jerome Glisse771fe6b2009-06-05 14:42:42 +0200219 .set_pcie_lanes = &rv370_set_pcie_lanes,
220 .set_clock_gating = &radeon_atom_set_clock_gating,
Dave Airliee024e112009-06-24 09:48:08 +1000221 .set_surface_reg = r100_set_surface_reg,
222 .clear_surface_reg = r100_clear_surface_reg,
Jerome Glissec93bb852009-07-13 21:04:08 +0200223 .bandwidth_update = &r100_bandwidth_update,
Alex Deucher429770b2009-12-04 15:26:55 -0500224 .hpd_init = &r100_hpd_init,
225 .hpd_fini = &r100_hpd_fini,
226 .hpd_sense = &r100_hpd_sense,
227 .hpd_set_polarity = &r100_hpd_set_polarity,
Jerome Glisse062b3892010-02-04 20:36:39 +0100228 .ioctl_wait_idle = NULL,
Jerome Glisse771fe6b2009-06-05 14:42:42 +0200229};
230
231
232/*
233 * rs400,rs480
234 */
Jerome Glisseca6ffc62009-10-01 10:20:52 +0200235extern int rs400_init(struct radeon_device *rdev);
236extern void rs400_fini(struct radeon_device *rdev);
237extern int rs400_suspend(struct radeon_device *rdev);
238extern int rs400_resume(struct radeon_device *rdev);
Jerome Glisse771fe6b2009-06-05 14:42:42 +0200239void rs400_gart_tlb_flush(struct radeon_device *rdev);
240int rs400_gart_set_page(struct radeon_device *rdev, int i, uint64_t addr);
241uint32_t rs400_mc_rreg(struct radeon_device *rdev, uint32_t reg);
242void rs400_mc_wreg(struct radeon_device *rdev, uint32_t reg, uint32_t v);
243static struct radeon_asic rs400_asic = {
Jerome Glisseca6ffc62009-10-01 10:20:52 +0200244 .init = &rs400_init,
245 .fini = &rs400_fini,
246 .suspend = &rs400_suspend,
247 .resume = &rs400_resume,
Dave Airlie28d52042009-09-21 14:33:58 +1000248 .vga_set_state = &r100_vga_set_state,
Jerome Glisse771fe6b2009-06-05 14:42:42 +0200249 .gpu_reset = &r300_gpu_reset,
Jerome Glisse771fe6b2009-06-05 14:42:42 +0200250 .gart_tlb_flush = &rs400_gart_tlb_flush,
251 .gart_set_page = &rs400_gart_set_page,
Jerome Glisse3ce0a232009-09-08 10:10:24 +1000252 .cp_commit = &r100_cp_commit,
Jerome Glisse771fe6b2009-06-05 14:42:42 +0200253 .ring_start = &r300_ring_start,
Jerome Glisse3ce0a232009-09-08 10:10:24 +1000254 .ring_test = &r100_ring_test,
255 .ring_ib_execute = &r100_ring_ib_execute,
Jerome Glisse771fe6b2009-06-05 14:42:42 +0200256 .irq_set = &r100_irq_set,
257 .irq_process = &r100_irq_process,
Michel Dänzer7ed220d2009-08-13 11:10:51 +0200258 .get_vblank_counter = &r100_get_vblank_counter,
Jerome Glisse771fe6b2009-06-05 14:42:42 +0200259 .fence_ring_emit = &r300_fence_ring_emit,
260 .cs_parse = &r300_cs_parse,
261 .copy_blit = &r100_copy_blit,
262 .copy_dma = &r300_copy_dma,
263 .copy = &r100_copy_blit,
Rafał Miłecki74338742009-11-03 00:53:02 +0100264 .get_engine_clock = &radeon_legacy_get_engine_clock,
Jerome Glisse771fe6b2009-06-05 14:42:42 +0200265 .set_engine_clock = &radeon_legacy_set_engine_clock,
Rafał Miłecki5ea597f2009-12-17 13:50:09 +0100266 .get_memory_clock = &radeon_legacy_get_memory_clock,
Jerome Glisse771fe6b2009-06-05 14:42:42 +0200267 .set_memory_clock = NULL,
Alex Deucherc836a412009-12-23 10:07:50 -0500268 .get_pcie_lanes = NULL,
Jerome Glisse771fe6b2009-06-05 14:42:42 +0200269 .set_pcie_lanes = NULL,
270 .set_clock_gating = &radeon_legacy_set_clock_gating,
Dave Airliee024e112009-06-24 09:48:08 +1000271 .set_surface_reg = r100_set_surface_reg,
272 .clear_surface_reg = r100_clear_surface_reg,
Jerome Glissec93bb852009-07-13 21:04:08 +0200273 .bandwidth_update = &r100_bandwidth_update,
Alex Deucher429770b2009-12-04 15:26:55 -0500274 .hpd_init = &r100_hpd_init,
275 .hpd_fini = &r100_hpd_fini,
276 .hpd_sense = &r100_hpd_sense,
277 .hpd_set_polarity = &r100_hpd_set_polarity,
Jerome Glisse062b3892010-02-04 20:36:39 +0100278 .ioctl_wait_idle = NULL,
Jerome Glisse771fe6b2009-06-05 14:42:42 +0200279};
280
281
282/*
283 * rs600.
284 */
Jerome Glissec010f802009-09-30 22:09:06 +0200285extern int rs600_init(struct radeon_device *rdev);
286extern void rs600_fini(struct radeon_device *rdev);
287extern int rs600_suspend(struct radeon_device *rdev);
288extern int rs600_resume(struct radeon_device *rdev);
Jerome Glisse771fe6b2009-06-05 14:42:42 +0200289int rs600_irq_set(struct radeon_device *rdev);
Michel Dänzer7ed220d2009-08-13 11:10:51 +0200290int rs600_irq_process(struct radeon_device *rdev);
291u32 rs600_get_vblank_counter(struct radeon_device *rdev, int crtc);
Jerome Glisse771fe6b2009-06-05 14:42:42 +0200292void rs600_gart_tlb_flush(struct radeon_device *rdev);
293int rs600_gart_set_page(struct radeon_device *rdev, int i, uint64_t addr);
294uint32_t rs600_mc_rreg(struct radeon_device *rdev, uint32_t reg);
295void rs600_mc_wreg(struct radeon_device *rdev, uint32_t reg, uint32_t v);
Jerome Glissec93bb852009-07-13 21:04:08 +0200296void rs600_bandwidth_update(struct radeon_device *rdev);
Alex Deucher429770b2009-12-04 15:26:55 -0500297void rs600_hpd_init(struct radeon_device *rdev);
298void rs600_hpd_fini(struct radeon_device *rdev);
299bool rs600_hpd_sense(struct radeon_device *rdev, enum radeon_hpd_id hpd);
300void rs600_hpd_set_polarity(struct radeon_device *rdev,
301 enum radeon_hpd_id hpd);
302
Jerome Glisse771fe6b2009-06-05 14:42:42 +0200303static struct radeon_asic rs600_asic = {
Dave Airlie3f7dc91a2009-08-27 11:10:15 +1000304 .init = &rs600_init,
Jerome Glissec010f802009-09-30 22:09:06 +0200305 .fini = &rs600_fini,
306 .suspend = &rs600_suspend,
307 .resume = &rs600_resume,
Dave Airlie28d52042009-09-21 14:33:58 +1000308 .vga_set_state = &r100_vga_set_state,
Jerome Glisse771fe6b2009-06-05 14:42:42 +0200309 .gpu_reset = &r300_gpu_reset,
Jerome Glisse771fe6b2009-06-05 14:42:42 +0200310 .gart_tlb_flush = &rs600_gart_tlb_flush,
311 .gart_set_page = &rs600_gart_set_page,
Jerome Glisse3ce0a232009-09-08 10:10:24 +1000312 .cp_commit = &r100_cp_commit,
Jerome Glisse771fe6b2009-06-05 14:42:42 +0200313 .ring_start = &r300_ring_start,
Jerome Glisse3ce0a232009-09-08 10:10:24 +1000314 .ring_test = &r100_ring_test,
315 .ring_ib_execute = &r100_ring_ib_execute,
Jerome Glisse771fe6b2009-06-05 14:42:42 +0200316 .irq_set = &rs600_irq_set,
Michel Dänzer7ed220d2009-08-13 11:10:51 +0200317 .irq_process = &rs600_irq_process,
318 .get_vblank_counter = &rs600_get_vblank_counter,
Jerome Glisse771fe6b2009-06-05 14:42:42 +0200319 .fence_ring_emit = &r300_fence_ring_emit,
320 .cs_parse = &r300_cs_parse,
321 .copy_blit = &r100_copy_blit,
322 .copy_dma = &r300_copy_dma,
323 .copy = &r100_copy_blit,
Rafał Miłecki74338742009-11-03 00:53:02 +0100324 .get_engine_clock = &radeon_atom_get_engine_clock,
Jerome Glisse771fe6b2009-06-05 14:42:42 +0200325 .set_engine_clock = &radeon_atom_set_engine_clock,
Rafał Miłecki74338742009-11-03 00:53:02 +0100326 .get_memory_clock = &radeon_atom_get_memory_clock,
Jerome Glisse771fe6b2009-06-05 14:42:42 +0200327 .set_memory_clock = &radeon_atom_set_memory_clock,
Alex Deucherc836a412009-12-23 10:07:50 -0500328 .get_pcie_lanes = NULL,
Jerome Glisse771fe6b2009-06-05 14:42:42 +0200329 .set_pcie_lanes = NULL,
330 .set_clock_gating = &radeon_atom_set_clock_gating,
Jerome Glissec93bb852009-07-13 21:04:08 +0200331 .bandwidth_update = &rs600_bandwidth_update,
Alex Deucher429770b2009-12-04 15:26:55 -0500332 .hpd_init = &rs600_hpd_init,
333 .hpd_fini = &rs600_hpd_fini,
334 .hpd_sense = &rs600_hpd_sense,
335 .hpd_set_polarity = &rs600_hpd_set_polarity,
Jerome Glisse062b3892010-02-04 20:36:39 +0100336 .ioctl_wait_idle = NULL,
Jerome Glisse771fe6b2009-06-05 14:42:42 +0200337};
338
339
340/*
341 * rs690,rs740
342 */
Jerome Glisse3bc68532009-10-01 09:39:24 +0200343int rs690_init(struct radeon_device *rdev);
344void rs690_fini(struct radeon_device *rdev);
345int rs690_resume(struct radeon_device *rdev);
346int rs690_suspend(struct radeon_device *rdev);
Jerome Glisse771fe6b2009-06-05 14:42:42 +0200347uint32_t rs690_mc_rreg(struct radeon_device *rdev, uint32_t reg);
348void rs690_mc_wreg(struct radeon_device *rdev, uint32_t reg, uint32_t v);
Jerome Glissec93bb852009-07-13 21:04:08 +0200349void rs690_bandwidth_update(struct radeon_device *rdev);
Jerome Glisse771fe6b2009-06-05 14:42:42 +0200350static struct radeon_asic rs690_asic = {
Jerome Glisse3bc68532009-10-01 09:39:24 +0200351 .init = &rs690_init,
352 .fini = &rs690_fini,
353 .suspend = &rs690_suspend,
354 .resume = &rs690_resume,
Dave Airlie28d52042009-09-21 14:33:58 +1000355 .vga_set_state = &r100_vga_set_state,
Jerome Glisse771fe6b2009-06-05 14:42:42 +0200356 .gpu_reset = &r300_gpu_reset,
Jerome Glisse771fe6b2009-06-05 14:42:42 +0200357 .gart_tlb_flush = &rs400_gart_tlb_flush,
358 .gart_set_page = &rs400_gart_set_page,
Jerome Glisse3ce0a232009-09-08 10:10:24 +1000359 .cp_commit = &r100_cp_commit,
Jerome Glisse771fe6b2009-06-05 14:42:42 +0200360 .ring_start = &r300_ring_start,
Jerome Glisse3ce0a232009-09-08 10:10:24 +1000361 .ring_test = &r100_ring_test,
362 .ring_ib_execute = &r100_ring_ib_execute,
Jerome Glisse771fe6b2009-06-05 14:42:42 +0200363 .irq_set = &rs600_irq_set,
Michel Dänzer7ed220d2009-08-13 11:10:51 +0200364 .irq_process = &rs600_irq_process,
365 .get_vblank_counter = &rs600_get_vblank_counter,
Jerome Glisse771fe6b2009-06-05 14:42:42 +0200366 .fence_ring_emit = &r300_fence_ring_emit,
367 .cs_parse = &r300_cs_parse,
368 .copy_blit = &r100_copy_blit,
369 .copy_dma = &r300_copy_dma,
370 .copy = &r300_copy_dma,
Rafał Miłecki74338742009-11-03 00:53:02 +0100371 .get_engine_clock = &radeon_atom_get_engine_clock,
Jerome Glisse771fe6b2009-06-05 14:42:42 +0200372 .set_engine_clock = &radeon_atom_set_engine_clock,
Rafał Miłecki74338742009-11-03 00:53:02 +0100373 .get_memory_clock = &radeon_atom_get_memory_clock,
Jerome Glisse771fe6b2009-06-05 14:42:42 +0200374 .set_memory_clock = &radeon_atom_set_memory_clock,
Alex Deucherc836a412009-12-23 10:07:50 -0500375 .get_pcie_lanes = NULL,
Jerome Glisse771fe6b2009-06-05 14:42:42 +0200376 .set_pcie_lanes = NULL,
377 .set_clock_gating = &radeon_atom_set_clock_gating,
Dave Airliee024e112009-06-24 09:48:08 +1000378 .set_surface_reg = r100_set_surface_reg,
379 .clear_surface_reg = r100_clear_surface_reg,
Jerome Glissec93bb852009-07-13 21:04:08 +0200380 .bandwidth_update = &rs690_bandwidth_update,
Alex Deucher429770b2009-12-04 15:26:55 -0500381 .hpd_init = &rs600_hpd_init,
382 .hpd_fini = &rs600_hpd_fini,
383 .hpd_sense = &rs600_hpd_sense,
384 .hpd_set_polarity = &rs600_hpd_set_polarity,
Jerome Glisse062b3892010-02-04 20:36:39 +0100385 .ioctl_wait_idle = NULL,
Jerome Glisse771fe6b2009-06-05 14:42:42 +0200386};
387
388
389/*
390 * rv515
391 */
Jerome Glisse068a1172009-06-17 13:28:30 +0200392int rv515_init(struct radeon_device *rdev);
Jerome Glissed39c3b82009-09-28 18:34:43 +0200393void rv515_fini(struct radeon_device *rdev);
Jerome Glisse771fe6b2009-06-05 14:42:42 +0200394int rv515_gpu_reset(struct radeon_device *rdev);
Jerome Glisse771fe6b2009-06-05 14:42:42 +0200395uint32_t rv515_mc_rreg(struct radeon_device *rdev, uint32_t reg);
396void rv515_mc_wreg(struct radeon_device *rdev, uint32_t reg, uint32_t v);
397void rv515_ring_start(struct radeon_device *rdev);
398uint32_t rv515_pcie_rreg(struct radeon_device *rdev, uint32_t reg);
399void rv515_pcie_wreg(struct radeon_device *rdev, uint32_t reg, uint32_t v);
Jerome Glissec93bb852009-07-13 21:04:08 +0200400void rv515_bandwidth_update(struct radeon_device *rdev);
Jerome Glissed39c3b82009-09-28 18:34:43 +0200401int rv515_resume(struct radeon_device *rdev);
402int rv515_suspend(struct radeon_device *rdev);
Jerome Glisse771fe6b2009-06-05 14:42:42 +0200403static struct radeon_asic rv515_asic = {
Jerome Glisse068a1172009-06-17 13:28:30 +0200404 .init = &rv515_init,
Jerome Glissed39c3b82009-09-28 18:34:43 +0200405 .fini = &rv515_fini,
406 .suspend = &rv515_suspend,
407 .resume = &rv515_resume,
Dave Airlie28d52042009-09-21 14:33:58 +1000408 .vga_set_state = &r100_vga_set_state,
Jerome Glisse771fe6b2009-06-05 14:42:42 +0200409 .gpu_reset = &rv515_gpu_reset,
Jerome Glisse771fe6b2009-06-05 14:42:42 +0200410 .gart_tlb_flush = &rv370_pcie_gart_tlb_flush,
411 .gart_set_page = &rv370_pcie_gart_set_page,
Jerome Glisse3ce0a232009-09-08 10:10:24 +1000412 .cp_commit = &r100_cp_commit,
Jerome Glisse771fe6b2009-06-05 14:42:42 +0200413 .ring_start = &rv515_ring_start,
Jerome Glisse3ce0a232009-09-08 10:10:24 +1000414 .ring_test = &r100_ring_test,
415 .ring_ib_execute = &r100_ring_ib_execute,
Michel Dänzer7ed220d2009-08-13 11:10:51 +0200416 .irq_set = &rs600_irq_set,
417 .irq_process = &rs600_irq_process,
418 .get_vblank_counter = &rs600_get_vblank_counter,
Jerome Glisse771fe6b2009-06-05 14:42:42 +0200419 .fence_ring_emit = &r300_fence_ring_emit,
Jerome Glisse068a1172009-06-17 13:28:30 +0200420 .cs_parse = &r300_cs_parse,
Jerome Glisse771fe6b2009-06-05 14:42:42 +0200421 .copy_blit = &r100_copy_blit,
422 .copy_dma = &r300_copy_dma,
423 .copy = &r100_copy_blit,
Rafał Miłecki74338742009-11-03 00:53:02 +0100424 .get_engine_clock = &radeon_atom_get_engine_clock,
Jerome Glisse771fe6b2009-06-05 14:42:42 +0200425 .set_engine_clock = &radeon_atom_set_engine_clock,
Rafał Miłecki74338742009-11-03 00:53:02 +0100426 .get_memory_clock = &radeon_atom_get_memory_clock,
Jerome Glisse771fe6b2009-06-05 14:42:42 +0200427 .set_memory_clock = &radeon_atom_set_memory_clock,
Alex Deucherc836a412009-12-23 10:07:50 -0500428 .get_pcie_lanes = &rv370_get_pcie_lanes,
Jerome Glisse771fe6b2009-06-05 14:42:42 +0200429 .set_pcie_lanes = &rv370_set_pcie_lanes,
430 .set_clock_gating = &radeon_atom_set_clock_gating,
Dave Airliee024e112009-06-24 09:48:08 +1000431 .set_surface_reg = r100_set_surface_reg,
432 .clear_surface_reg = r100_clear_surface_reg,
Jerome Glissec93bb852009-07-13 21:04:08 +0200433 .bandwidth_update = &rv515_bandwidth_update,
Alex Deucher429770b2009-12-04 15:26:55 -0500434 .hpd_init = &rs600_hpd_init,
435 .hpd_fini = &rs600_hpd_fini,
436 .hpd_sense = &rs600_hpd_sense,
437 .hpd_set_polarity = &rs600_hpd_set_polarity,
Jerome Glisse062b3892010-02-04 20:36:39 +0100438 .ioctl_wait_idle = NULL,
Jerome Glisse771fe6b2009-06-05 14:42:42 +0200439};
440
441
442/*
443 * r520,rv530,rv560,rv570,r580
444 */
Jerome Glissed39c3b82009-09-28 18:34:43 +0200445int r520_init(struct radeon_device *rdev);
Jerome Glissef0ed1f62009-09-28 20:39:19 +0200446int r520_resume(struct radeon_device *rdev);
Jerome Glisse771fe6b2009-06-05 14:42:42 +0200447static struct radeon_asic r520_asic = {
Jerome Glissed39c3b82009-09-28 18:34:43 +0200448 .init = &r520_init,
Jerome Glissef0ed1f62009-09-28 20:39:19 +0200449 .fini = &rv515_fini,
450 .suspend = &rv515_suspend,
451 .resume = &r520_resume,
Dave Airlie28d52042009-09-21 14:33:58 +1000452 .vga_set_state = &r100_vga_set_state,
Jerome Glisse771fe6b2009-06-05 14:42:42 +0200453 .gpu_reset = &rv515_gpu_reset,
Jerome Glisse771fe6b2009-06-05 14:42:42 +0200454 .gart_tlb_flush = &rv370_pcie_gart_tlb_flush,
455 .gart_set_page = &rv370_pcie_gart_set_page,
Jerome Glisse3ce0a232009-09-08 10:10:24 +1000456 .cp_commit = &r100_cp_commit,
Jerome Glisse771fe6b2009-06-05 14:42:42 +0200457 .ring_start = &rv515_ring_start,
Jerome Glisse3ce0a232009-09-08 10:10:24 +1000458 .ring_test = &r100_ring_test,
459 .ring_ib_execute = &r100_ring_ib_execute,
Michel Dänzer7ed220d2009-08-13 11:10:51 +0200460 .irq_set = &rs600_irq_set,
461 .irq_process = &rs600_irq_process,
462 .get_vblank_counter = &rs600_get_vblank_counter,
Jerome Glisse771fe6b2009-06-05 14:42:42 +0200463 .fence_ring_emit = &r300_fence_ring_emit,
Jerome Glisse068a1172009-06-17 13:28:30 +0200464 .cs_parse = &r300_cs_parse,
Jerome Glisse771fe6b2009-06-05 14:42:42 +0200465 .copy_blit = &r100_copy_blit,
466 .copy_dma = &r300_copy_dma,
467 .copy = &r100_copy_blit,
Rafał Miłecki74338742009-11-03 00:53:02 +0100468 .get_engine_clock = &radeon_atom_get_engine_clock,
Jerome Glisse771fe6b2009-06-05 14:42:42 +0200469 .set_engine_clock = &radeon_atom_set_engine_clock,
Rafał Miłecki74338742009-11-03 00:53:02 +0100470 .get_memory_clock = &radeon_atom_get_memory_clock,
Jerome Glisse771fe6b2009-06-05 14:42:42 +0200471 .set_memory_clock = &radeon_atom_set_memory_clock,
Alex Deucherc836a412009-12-23 10:07:50 -0500472 .get_pcie_lanes = &rv370_get_pcie_lanes,
Jerome Glisse771fe6b2009-06-05 14:42:42 +0200473 .set_pcie_lanes = &rv370_set_pcie_lanes,
474 .set_clock_gating = &radeon_atom_set_clock_gating,
Dave Airliee024e112009-06-24 09:48:08 +1000475 .set_surface_reg = r100_set_surface_reg,
476 .clear_surface_reg = r100_clear_surface_reg,
Jerome Glissef0ed1f62009-09-28 20:39:19 +0200477 .bandwidth_update = &rv515_bandwidth_update,
Alex Deucher429770b2009-12-04 15:26:55 -0500478 .hpd_init = &rs600_hpd_init,
479 .hpd_fini = &rs600_hpd_fini,
480 .hpd_sense = &rs600_hpd_sense,
481 .hpd_set_polarity = &rs600_hpd_set_polarity,
Jerome Glisse062b3892010-02-04 20:36:39 +0100482 .ioctl_wait_idle = NULL,
Jerome Glisse771fe6b2009-06-05 14:42:42 +0200483};
484
485/*
Jerome Glisse3ce0a232009-09-08 10:10:24 +1000486 * r600,rv610,rv630,rv620,rv635,rv670,rs780,rs880
Jerome Glisse771fe6b2009-06-05 14:42:42 +0200487 */
Jerome Glisse3ce0a232009-09-08 10:10:24 +1000488int r600_init(struct radeon_device *rdev);
489void r600_fini(struct radeon_device *rdev);
490int r600_suspend(struct radeon_device *rdev);
491int r600_resume(struct radeon_device *rdev);
Dave Airlie28d52042009-09-21 14:33:58 +1000492void r600_vga_set_state(struct radeon_device *rdev, bool state);
Jerome Glisse3ce0a232009-09-08 10:10:24 +1000493int r600_wb_init(struct radeon_device *rdev);
494void r600_wb_fini(struct radeon_device *rdev);
495void r600_cp_commit(struct radeon_device *rdev);
496void r600_pcie_gart_tlb_flush(struct radeon_device *rdev);
Jerome Glisse771fe6b2009-06-05 14:42:42 +0200497uint32_t r600_pciep_rreg(struct radeon_device *rdev, uint32_t reg);
498void r600_pciep_wreg(struct radeon_device *rdev, uint32_t reg, uint32_t v);
Jerome Glisse3ce0a232009-09-08 10:10:24 +1000499int r600_cs_parse(struct radeon_cs_parser *p);
500void r600_fence_ring_emit(struct radeon_device *rdev,
501 struct radeon_fence *fence);
502int r600_copy_dma(struct radeon_device *rdev,
503 uint64_t src_offset,
504 uint64_t dst_offset,
505 unsigned num_pages,
506 struct radeon_fence *fence);
507int r600_irq_process(struct radeon_device *rdev);
508int r600_irq_set(struct radeon_device *rdev);
509int r600_gpu_reset(struct radeon_device *rdev);
510int r600_set_surface_reg(struct radeon_device *rdev, int reg,
511 uint32_t tiling_flags, uint32_t pitch,
512 uint32_t offset, uint32_t obj_size);
513int r600_clear_surface_reg(struct radeon_device *rdev, int reg);
514void r600_ring_ib_execute(struct radeon_device *rdev, struct radeon_ib *ib);
Jerome Glisse3ce0a232009-09-08 10:10:24 +1000515int r600_ring_test(struct radeon_device *rdev);
516int r600_copy_blit(struct radeon_device *rdev,
517 uint64_t src_offset, uint64_t dst_offset,
518 unsigned num_pages, struct radeon_fence *fence);
Alex Deucher429770b2009-12-04 15:26:55 -0500519void r600_hpd_init(struct radeon_device *rdev);
520void r600_hpd_fini(struct radeon_device *rdev);
521bool r600_hpd_sense(struct radeon_device *rdev, enum radeon_hpd_id hpd);
522void r600_hpd_set_polarity(struct radeon_device *rdev,
523 enum radeon_hpd_id hpd);
Jerome Glisse062b3892010-02-04 20:36:39 +0100524extern void r600_ioctl_wait_idle(struct radeon_device *rdev, struct radeon_bo *bo);
Jerome Glisse3ce0a232009-09-08 10:10:24 +1000525
526static struct radeon_asic r600_asic = {
Jerome Glisse3ce0a232009-09-08 10:10:24 +1000527 .init = &r600_init,
528 .fini = &r600_fini,
529 .suspend = &r600_suspend,
530 .resume = &r600_resume,
531 .cp_commit = &r600_cp_commit,
Dave Airlie28d52042009-09-21 14:33:58 +1000532 .vga_set_state = &r600_vga_set_state,
Jerome Glisse3ce0a232009-09-08 10:10:24 +1000533 .gpu_reset = &r600_gpu_reset,
Jerome Glisse3ce0a232009-09-08 10:10:24 +1000534 .gart_tlb_flush = &r600_pcie_gart_tlb_flush,
535 .gart_set_page = &rs600_gart_set_page,
Jerome Glisse3ce0a232009-09-08 10:10:24 +1000536 .ring_test = &r600_ring_test,
537 .ring_ib_execute = &r600_ring_ib_execute,
Jerome Glisse3ce0a232009-09-08 10:10:24 +1000538 .irq_set = &r600_irq_set,
539 .irq_process = &r600_irq_process,
Alex Deucherd8f60cf2009-12-01 13:43:46 -0500540 .get_vblank_counter = &rs600_get_vblank_counter,
Jerome Glisse3ce0a232009-09-08 10:10:24 +1000541 .fence_ring_emit = &r600_fence_ring_emit,
542 .cs_parse = &r600_cs_parse,
543 .copy_blit = &r600_copy_blit,
544 .copy_dma = &r600_copy_blit,
Alex Deuchera3812872009-09-10 15:54:35 -0400545 .copy = &r600_copy_blit,
Rafał Miłecki74338742009-11-03 00:53:02 +0100546 .get_engine_clock = &radeon_atom_get_engine_clock,
Jerome Glisse3ce0a232009-09-08 10:10:24 +1000547 .set_engine_clock = &radeon_atom_set_engine_clock,
Rafał Miłecki74338742009-11-03 00:53:02 +0100548 .get_memory_clock = &radeon_atom_get_memory_clock,
Jerome Glisse3ce0a232009-09-08 10:10:24 +1000549 .set_memory_clock = &radeon_atom_set_memory_clock,
Alex Deucherc836a412009-12-23 10:07:50 -0500550 .get_pcie_lanes = NULL,
Jerome Glisse3ce0a232009-09-08 10:10:24 +1000551 .set_pcie_lanes = NULL,
Alex Deucher6d7f2d82010-02-05 00:55:32 -0500552 .set_clock_gating = NULL,
Jerome Glisse3ce0a232009-09-08 10:10:24 +1000553 .set_surface_reg = r600_set_surface_reg,
554 .clear_surface_reg = r600_clear_surface_reg,
Jerome Glissef0ed1f62009-09-28 20:39:19 +0200555 .bandwidth_update = &rv515_bandwidth_update,
Alex Deucher429770b2009-12-04 15:26:55 -0500556 .hpd_init = &r600_hpd_init,
557 .hpd_fini = &r600_hpd_fini,
558 .hpd_sense = &r600_hpd_sense,
559 .hpd_set_polarity = &r600_hpd_set_polarity,
Jerome Glisse062b3892010-02-04 20:36:39 +0100560 .ioctl_wait_idle = r600_ioctl_wait_idle,
Jerome Glisse3ce0a232009-09-08 10:10:24 +1000561};
562
563/*
564 * rv770,rv730,rv710,rv740
565 */
566int rv770_init(struct radeon_device *rdev);
567void rv770_fini(struct radeon_device *rdev);
568int rv770_suspend(struct radeon_device *rdev);
569int rv770_resume(struct radeon_device *rdev);
570int rv770_gpu_reset(struct radeon_device *rdev);
571
572static struct radeon_asic rv770_asic = {
Jerome Glisse3ce0a232009-09-08 10:10:24 +1000573 .init = &rv770_init,
574 .fini = &rv770_fini,
575 .suspend = &rv770_suspend,
576 .resume = &rv770_resume,
577 .cp_commit = &r600_cp_commit,
Jerome Glisse3ce0a232009-09-08 10:10:24 +1000578 .gpu_reset = &rv770_gpu_reset,
Dave Airlie28d52042009-09-21 14:33:58 +1000579 .vga_set_state = &r600_vga_set_state,
Jerome Glisse3ce0a232009-09-08 10:10:24 +1000580 .gart_tlb_flush = &r600_pcie_gart_tlb_flush,
581 .gart_set_page = &rs600_gart_set_page,
Jerome Glisse3ce0a232009-09-08 10:10:24 +1000582 .ring_test = &r600_ring_test,
583 .ring_ib_execute = &r600_ring_ib_execute,
Jerome Glisse3ce0a232009-09-08 10:10:24 +1000584 .irq_set = &r600_irq_set,
585 .irq_process = &r600_irq_process,
Alex Deucherd8f60cf2009-12-01 13:43:46 -0500586 .get_vblank_counter = &rs600_get_vblank_counter,
Jerome Glisse3ce0a232009-09-08 10:10:24 +1000587 .fence_ring_emit = &r600_fence_ring_emit,
588 .cs_parse = &r600_cs_parse,
589 .copy_blit = &r600_copy_blit,
590 .copy_dma = &r600_copy_blit,
Alex Deuchera3812872009-09-10 15:54:35 -0400591 .copy = &r600_copy_blit,
Rafał Miłecki74338742009-11-03 00:53:02 +0100592 .get_engine_clock = &radeon_atom_get_engine_clock,
Jerome Glisse3ce0a232009-09-08 10:10:24 +1000593 .set_engine_clock = &radeon_atom_set_engine_clock,
Rafał Miłecki74338742009-11-03 00:53:02 +0100594 .get_memory_clock = &radeon_atom_get_memory_clock,
Jerome Glisse3ce0a232009-09-08 10:10:24 +1000595 .set_memory_clock = &radeon_atom_set_memory_clock,
Alex Deucherc836a412009-12-23 10:07:50 -0500596 .get_pcie_lanes = NULL,
Jerome Glisse3ce0a232009-09-08 10:10:24 +1000597 .set_pcie_lanes = NULL,
598 .set_clock_gating = &radeon_atom_set_clock_gating,
599 .set_surface_reg = r600_set_surface_reg,
600 .clear_surface_reg = r600_clear_surface_reg,
Jerome Glissef0ed1f62009-09-28 20:39:19 +0200601 .bandwidth_update = &rv515_bandwidth_update,
Alex Deucher429770b2009-12-04 15:26:55 -0500602 .hpd_init = &r600_hpd_init,
603 .hpd_fini = &r600_hpd_fini,
604 .hpd_sense = &r600_hpd_sense,
605 .hpd_set_polarity = &r600_hpd_set_polarity,
Jerome Glisse062b3892010-02-04 20:36:39 +0100606 .ioctl_wait_idle = r600_ioctl_wait_idle,
Jerome Glisse3ce0a232009-09-08 10:10:24 +1000607};
Jerome Glisse771fe6b2009-06-05 14:42:42 +0200608
609#endif