ASoC: Remove duplicate ADC/DAC widgets from wm_hubs.c
[linux/fpc-iii.git] / drivers / gpu / drm / radeon / rv515.c
blobffea37b1b3e23db02a8f2f59b480cf9274e7233f
1 /*
2 * Copyright 2008 Advanced Micro Devices, Inc.
3 * Copyright 2008 Red Hat Inc.
4 * Copyright 2009 Jerome Glisse.
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:
13 * The above copyright notice and this permission notice shall be included in
14 * all copies or substantial portions of the Software.
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.
24 * Authors: Dave Airlie
25 * Alex Deucher
26 * Jerome Glisse
28 #include <linux/seq_file.h>
29 #include "drmP.h"
30 #include "radeon_reg.h"
31 #include "radeon.h"
33 /* rv515 depends on : */
34 void r100_hdp_reset(struct radeon_device *rdev);
35 int r100_cp_reset(struct radeon_device *rdev);
36 int r100_rb2d_reset(struct radeon_device *rdev);
37 int r100_gui_wait_for_idle(struct radeon_device *rdev);
38 int r100_cp_init(struct radeon_device *rdev, unsigned ring_size);
39 int rv370_pcie_gart_enable(struct radeon_device *rdev);
40 void rv370_pcie_gart_disable(struct radeon_device *rdev);
41 void r420_pipes_init(struct radeon_device *rdev);
42 void rs600_mc_disable_clients(struct radeon_device *rdev);
43 void rs600_disable_vga(struct radeon_device *rdev);
45 /* This files gather functions specifics to:
46 * rv515
48 * Some of these functions might be used by newer ASICs.
50 int rv515_debugfs_pipes_info_init(struct radeon_device *rdev);
51 int rv515_debugfs_ga_info_init(struct radeon_device *rdev);
52 void rv515_gpu_init(struct radeon_device *rdev);
53 int rv515_mc_wait_for_idle(struct radeon_device *rdev);
57 * MC
59 int rv515_mc_init(struct radeon_device *rdev)
61 uint32_t tmp;
62 int r;
64 if (r100_debugfs_rbbm_init(rdev)) {
65 DRM_ERROR("Failed to register debugfs file for RBBM !\n");
67 if (rv515_debugfs_pipes_info_init(rdev)) {
68 DRM_ERROR("Failed to register debugfs file for pipes !\n");
70 if (rv515_debugfs_ga_info_init(rdev)) {
71 DRM_ERROR("Failed to register debugfs file for pipes !\n");
74 rv515_gpu_init(rdev);
75 rv370_pcie_gart_disable(rdev);
77 /* Setup GPU memory space */
78 rdev->mc.vram_location = 0xFFFFFFFFUL;
79 rdev->mc.gtt_location = 0xFFFFFFFFUL;
80 if (rdev->flags & RADEON_IS_AGP) {
81 r = radeon_agp_init(rdev);
82 if (r) {
83 printk(KERN_WARNING "[drm] Disabling AGP\n");
84 rdev->flags &= ~RADEON_IS_AGP;
85 rdev->mc.gtt_size = radeon_gart_size * 1024 * 1024;
86 } else {
87 rdev->mc.gtt_location = rdev->mc.agp_base;
90 r = radeon_mc_setup(rdev);
91 if (r) {
92 return r;
95 /* Program GPU memory space */
96 rs600_mc_disable_clients(rdev);
97 if (rv515_mc_wait_for_idle(rdev)) {
98 printk(KERN_WARNING "Failed to wait MC idle while "
99 "programming pipes. Bad things might happen.\n");
101 /* Write VRAM size in case we are limiting it */
102 WREG32(RADEON_CONFIG_MEMSIZE, rdev->mc.vram_size);
103 tmp = REG_SET(RV515_MC_FB_START, rdev->mc.vram_location >> 16);
104 WREG32(0x134, tmp);
105 tmp = rdev->mc.vram_location + rdev->mc.vram_size - 1;
106 tmp = REG_SET(RV515_MC_FB_TOP, tmp >> 16);
107 tmp |= REG_SET(RV515_MC_FB_START, rdev->mc.vram_location >> 16);
108 WREG32_MC(RV515_MC_FB_LOCATION, tmp);
109 WREG32(RS690_HDP_FB_LOCATION, rdev->mc.vram_location >> 16);
110 WREG32(0x310, rdev->mc.vram_location);
111 if (rdev->flags & RADEON_IS_AGP) {
112 tmp = rdev->mc.gtt_location + rdev->mc.gtt_size - 1;
113 tmp = REG_SET(RV515_MC_AGP_TOP, tmp >> 16);
114 tmp |= REG_SET(RV515_MC_AGP_START, rdev->mc.gtt_location >> 16);
115 WREG32_MC(RV515_MC_AGP_LOCATION, tmp);
116 WREG32_MC(RV515_MC_AGP_BASE, rdev->mc.agp_base);
117 WREG32_MC(RV515_MC_AGP_BASE_2, 0);
118 } else {
119 WREG32_MC(RV515_MC_AGP_LOCATION, 0x0FFFFFFF);
120 WREG32_MC(RV515_MC_AGP_BASE, 0);
121 WREG32_MC(RV515_MC_AGP_BASE_2, 0);
123 return 0;
126 void rv515_mc_fini(struct radeon_device *rdev)
128 rv370_pcie_gart_disable(rdev);
129 radeon_gart_table_vram_free(rdev);
130 radeon_gart_fini(rdev);
135 * Global GPU functions
137 void rv515_ring_start(struct radeon_device *rdev)
139 unsigned gb_tile_config;
140 int r;
142 /* Sub pixel 1/12 so we can have 4K rendering according to doc */
143 gb_tile_config = R300_ENABLE_TILING | R300_TILE_SIZE_16;
144 switch (rdev->num_gb_pipes) {
145 case 2:
146 gb_tile_config |= R300_PIPE_COUNT_R300;
147 break;
148 case 3:
149 gb_tile_config |= R300_PIPE_COUNT_R420_3P;
150 break;
151 case 4:
152 gb_tile_config |= R300_PIPE_COUNT_R420;
153 break;
154 case 1:
155 default:
156 gb_tile_config |= R300_PIPE_COUNT_RV350;
157 break;
160 r = radeon_ring_lock(rdev, 64);
161 if (r) {
162 return;
164 radeon_ring_write(rdev, PACKET0(RADEON_ISYNC_CNTL, 0));
165 radeon_ring_write(rdev,
166 RADEON_ISYNC_ANY2D_IDLE3D |
167 RADEON_ISYNC_ANY3D_IDLE2D |
168 RADEON_ISYNC_WAIT_IDLEGUI |
169 RADEON_ISYNC_CPSCRATCH_IDLEGUI);
170 radeon_ring_write(rdev, PACKET0(R300_GB_TILE_CONFIG, 0));
171 radeon_ring_write(rdev, gb_tile_config);
172 radeon_ring_write(rdev, PACKET0(RADEON_WAIT_UNTIL, 0));
173 radeon_ring_write(rdev,
174 RADEON_WAIT_2D_IDLECLEAN |
175 RADEON_WAIT_3D_IDLECLEAN);
176 radeon_ring_write(rdev, PACKET0(0x170C, 0));
177 radeon_ring_write(rdev, 1 << 31);
178 radeon_ring_write(rdev, PACKET0(R300_GB_SELECT, 0));
179 radeon_ring_write(rdev, 0);
180 radeon_ring_write(rdev, PACKET0(R300_GB_ENABLE, 0));
181 radeon_ring_write(rdev, 0);
182 radeon_ring_write(rdev, PACKET0(0x42C8, 0));
183 radeon_ring_write(rdev, (1 << rdev->num_gb_pipes) - 1);
184 radeon_ring_write(rdev, PACKET0(R500_VAP_INDEX_OFFSET, 0));
185 radeon_ring_write(rdev, 0);
186 radeon_ring_write(rdev, PACKET0(R300_RB3D_DSTCACHE_CTLSTAT, 0));
187 radeon_ring_write(rdev, R300_RB3D_DC_FLUSH | R300_RB3D_DC_FREE);
188 radeon_ring_write(rdev, PACKET0(R300_RB3D_ZCACHE_CTLSTAT, 0));
189 radeon_ring_write(rdev, R300_ZC_FLUSH | R300_ZC_FREE);
190 radeon_ring_write(rdev, PACKET0(RADEON_WAIT_UNTIL, 0));
191 radeon_ring_write(rdev,
192 RADEON_WAIT_2D_IDLECLEAN |
193 RADEON_WAIT_3D_IDLECLEAN);
194 radeon_ring_write(rdev, PACKET0(R300_GB_AA_CONFIG, 0));
195 radeon_ring_write(rdev, 0);
196 radeon_ring_write(rdev, PACKET0(R300_RB3D_DSTCACHE_CTLSTAT, 0));
197 radeon_ring_write(rdev, R300_RB3D_DC_FLUSH | R300_RB3D_DC_FREE);
198 radeon_ring_write(rdev, PACKET0(R300_RB3D_ZCACHE_CTLSTAT, 0));
199 radeon_ring_write(rdev, R300_ZC_FLUSH | R300_ZC_FREE);
200 radeon_ring_write(rdev, PACKET0(R300_GB_MSPOS0, 0));
201 radeon_ring_write(rdev,
202 ((6 << R300_MS_X0_SHIFT) |
203 (6 << R300_MS_Y0_SHIFT) |
204 (6 << R300_MS_X1_SHIFT) |
205 (6 << R300_MS_Y1_SHIFT) |
206 (6 << R300_MS_X2_SHIFT) |
207 (6 << R300_MS_Y2_SHIFT) |
208 (6 << R300_MSBD0_Y_SHIFT) |
209 (6 << R300_MSBD0_X_SHIFT)));
210 radeon_ring_write(rdev, PACKET0(R300_GB_MSPOS1, 0));
211 radeon_ring_write(rdev,
212 ((6 << R300_MS_X3_SHIFT) |
213 (6 << R300_MS_Y3_SHIFT) |
214 (6 << R300_MS_X4_SHIFT) |
215 (6 << R300_MS_Y4_SHIFT) |
216 (6 << R300_MS_X5_SHIFT) |
217 (6 << R300_MS_Y5_SHIFT) |
218 (6 << R300_MSBD1_SHIFT)));
219 radeon_ring_write(rdev, PACKET0(R300_GA_ENHANCE, 0));
220 radeon_ring_write(rdev, R300_GA_DEADLOCK_CNTL | R300_GA_FASTSYNC_CNTL);
221 radeon_ring_write(rdev, PACKET0(R300_GA_POLY_MODE, 0));
222 radeon_ring_write(rdev,
223 R300_FRONT_PTYPE_TRIANGE | R300_BACK_PTYPE_TRIANGE);
224 radeon_ring_write(rdev, PACKET0(R300_GA_ROUND_MODE, 0));
225 radeon_ring_write(rdev,
226 R300_GEOMETRY_ROUND_NEAREST |
227 R300_COLOR_ROUND_NEAREST);
228 radeon_ring_write(rdev, PACKET0(0x20C8, 0));
229 radeon_ring_write(rdev, 0);
230 radeon_ring_unlock_commit(rdev);
233 void rv515_errata(struct radeon_device *rdev)
235 rdev->pll_errata = 0;
238 int rv515_mc_wait_for_idle(struct radeon_device *rdev)
240 unsigned i;
241 uint32_t tmp;
243 for (i = 0; i < rdev->usec_timeout; i++) {
244 /* read MC_STATUS */
245 tmp = RREG32_MC(RV515_MC_STATUS);
246 if (tmp & RV515_MC_STATUS_IDLE) {
247 return 0;
249 DRM_UDELAY(1);
251 return -1;
254 void rv515_gpu_init(struct radeon_device *rdev)
256 unsigned pipe_select_current, gb_pipe_select, tmp;
258 r100_hdp_reset(rdev);
259 r100_rb2d_reset(rdev);
261 if (r100_gui_wait_for_idle(rdev)) {
262 printk(KERN_WARNING "Failed to wait GUI idle while "
263 "reseting GPU. Bad things might happen.\n");
266 rs600_disable_vga(rdev);
268 r420_pipes_init(rdev);
269 gb_pipe_select = RREG32(0x402C);
270 tmp = RREG32(0x170C);
271 pipe_select_current = (tmp >> 2) & 3;
272 tmp = (1 << pipe_select_current) |
273 (((gb_pipe_select >> 8) & 0xF) << 4);
274 WREG32_PLL(0x000D, tmp);
275 if (r100_gui_wait_for_idle(rdev)) {
276 printk(KERN_WARNING "Failed to wait GUI idle while "
277 "reseting GPU. Bad things might happen.\n");
279 if (rv515_mc_wait_for_idle(rdev)) {
280 printk(KERN_WARNING "Failed to wait MC idle while "
281 "programming pipes. Bad things might happen.\n");
285 int rv515_ga_reset(struct radeon_device *rdev)
287 uint32_t tmp;
288 bool reinit_cp;
289 int i;
291 reinit_cp = rdev->cp.ready;
292 rdev->cp.ready = false;
293 for (i = 0; i < rdev->usec_timeout; i++) {
294 WREG32(RADEON_CP_CSQ_MODE, 0);
295 WREG32(RADEON_CP_CSQ_CNTL, 0);
296 WREG32(RADEON_RBBM_SOFT_RESET, 0x32005);
297 (void)RREG32(RADEON_RBBM_SOFT_RESET);
298 udelay(200);
299 WREG32(RADEON_RBBM_SOFT_RESET, 0);
300 /* Wait to prevent race in RBBM_STATUS */
301 mdelay(1);
302 tmp = RREG32(RADEON_RBBM_STATUS);
303 if (tmp & ((1 << 20) | (1 << 26))) {
304 DRM_ERROR("VAP & CP still busy (RBBM_STATUS=0x%08X)\n", tmp);
305 /* GA still busy soft reset it */
306 WREG32(0x429C, 0x200);
307 WREG32(R300_VAP_PVS_STATE_FLUSH_REG, 0);
308 WREG32(0x43E0, 0);
309 WREG32(0x43E4, 0);
310 WREG32(0x24AC, 0);
312 /* Wait to prevent race in RBBM_STATUS */
313 mdelay(1);
314 tmp = RREG32(RADEON_RBBM_STATUS);
315 if (!(tmp & ((1 << 20) | (1 << 26)))) {
316 break;
319 for (i = 0; i < rdev->usec_timeout; i++) {
320 tmp = RREG32(RADEON_RBBM_STATUS);
321 if (!(tmp & ((1 << 20) | (1 << 26)))) {
322 DRM_INFO("GA reset succeed (RBBM_STATUS=0x%08X)\n",
323 tmp);
324 DRM_INFO("GA_IDLE=0x%08X\n", RREG32(0x425C));
325 DRM_INFO("RB3D_RESET_STATUS=0x%08X\n", RREG32(0x46f0));
326 DRM_INFO("ISYNC_CNTL=0x%08X\n", RREG32(0x1724));
327 if (reinit_cp) {
328 return r100_cp_init(rdev, rdev->cp.ring_size);
330 return 0;
332 DRM_UDELAY(1);
334 tmp = RREG32(RADEON_RBBM_STATUS);
335 DRM_ERROR("Failed to reset GA ! (RBBM_STATUS=0x%08X)\n", tmp);
336 return -1;
339 int rv515_gpu_reset(struct radeon_device *rdev)
341 uint32_t status;
343 /* reset order likely matter */
344 status = RREG32(RADEON_RBBM_STATUS);
345 /* reset HDP */
346 r100_hdp_reset(rdev);
347 /* reset rb2d */
348 if (status & ((1 << 17) | (1 << 18) | (1 << 27))) {
349 r100_rb2d_reset(rdev);
351 /* reset GA */
352 if (status & ((1 << 20) | (1 << 26))) {
353 rv515_ga_reset(rdev);
355 /* reset CP */
356 status = RREG32(RADEON_RBBM_STATUS);
357 if (status & (1 << 16)) {
358 r100_cp_reset(rdev);
360 /* Check if GPU is idle */
361 status = RREG32(RADEON_RBBM_STATUS);
362 if (status & (1 << 31)) {
363 DRM_ERROR("Failed to reset GPU (RBBM_STATUS=0x%08X)\n", status);
364 return -1;
366 DRM_INFO("GPU reset succeed (RBBM_STATUS=0x%08X)\n", status);
367 return 0;
372 * VRAM info
374 static void rv515_vram_get_type(struct radeon_device *rdev)
376 uint32_t tmp;
378 rdev->mc.vram_width = 128;
379 rdev->mc.vram_is_ddr = true;
380 tmp = RREG32_MC(RV515_MC_CNTL);
381 tmp &= RV515_MEM_NUM_CHANNELS_MASK;
382 switch (tmp) {
383 case 0:
384 rdev->mc.vram_width = 64;
385 break;
386 case 1:
387 rdev->mc.vram_width = 128;
388 break;
389 default:
390 rdev->mc.vram_width = 128;
391 break;
395 void rv515_vram_info(struct radeon_device *rdev)
397 rv515_vram_get_type(rdev);
398 rdev->mc.vram_size = RREG32(RADEON_CONFIG_MEMSIZE);
400 rdev->mc.aper_base = drm_get_resource_start(rdev->ddev, 0);
401 rdev->mc.aper_size = drm_get_resource_len(rdev->ddev, 0);
406 * Indirect registers accessor
408 uint32_t rv515_mc_rreg(struct radeon_device *rdev, uint32_t reg)
410 uint32_t r;
412 WREG32(R520_MC_IND_INDEX, 0x7f0000 | (reg & 0xffff));
413 r = RREG32(R520_MC_IND_DATA);
414 WREG32(R520_MC_IND_INDEX, 0);
415 return r;
418 void rv515_mc_wreg(struct radeon_device *rdev, uint32_t reg, uint32_t v)
420 WREG32(R520_MC_IND_INDEX, 0xff0000 | ((reg) & 0xffff));
421 WREG32(R520_MC_IND_DATA, (v));
422 WREG32(R520_MC_IND_INDEX, 0);
425 uint32_t rv515_pcie_rreg(struct radeon_device *rdev, uint32_t reg)
427 uint32_t r;
429 WREG32(RADEON_PCIE_INDEX, ((reg) & 0x7ff));
430 (void)RREG32(RADEON_PCIE_INDEX);
431 r = RREG32(RADEON_PCIE_DATA);
432 return r;
435 void rv515_pcie_wreg(struct radeon_device *rdev, uint32_t reg, uint32_t v)
437 WREG32(RADEON_PCIE_INDEX, ((reg) & 0x7ff));
438 (void)RREG32(RADEON_PCIE_INDEX);
439 WREG32(RADEON_PCIE_DATA, (v));
440 (void)RREG32(RADEON_PCIE_DATA);
445 * Debugfs info
447 #if defined(CONFIG_DEBUG_FS)
448 static int rv515_debugfs_pipes_info(struct seq_file *m, void *data)
450 struct drm_info_node *node = (struct drm_info_node *) m->private;
451 struct drm_device *dev = node->minor->dev;
452 struct radeon_device *rdev = dev->dev_private;
453 uint32_t tmp;
455 tmp = RREG32(R400_GB_PIPE_SELECT);
456 seq_printf(m, "GB_PIPE_SELECT 0x%08x\n", tmp);
457 tmp = RREG32(R500_SU_REG_DEST);
458 seq_printf(m, "SU_REG_DEST 0x%08x\n", tmp);
459 tmp = RREG32(R300_GB_TILE_CONFIG);
460 seq_printf(m, "GB_TILE_CONFIG 0x%08x\n", tmp);
461 tmp = RREG32(R300_DST_PIPE_CONFIG);
462 seq_printf(m, "DST_PIPE_CONFIG 0x%08x\n", tmp);
463 return 0;
466 static int rv515_debugfs_ga_info(struct seq_file *m, void *data)
468 struct drm_info_node *node = (struct drm_info_node *) m->private;
469 struct drm_device *dev = node->minor->dev;
470 struct radeon_device *rdev = dev->dev_private;
471 uint32_t tmp;
473 tmp = RREG32(0x2140);
474 seq_printf(m, "VAP_CNTL_STATUS 0x%08x\n", tmp);
475 radeon_gpu_reset(rdev);
476 tmp = RREG32(0x425C);
477 seq_printf(m, "GA_IDLE 0x%08x\n", tmp);
478 return 0;
481 static struct drm_info_list rv515_pipes_info_list[] = {
482 {"rv515_pipes_info", rv515_debugfs_pipes_info, 0, NULL},
485 static struct drm_info_list rv515_ga_info_list[] = {
486 {"rv515_ga_info", rv515_debugfs_ga_info, 0, NULL},
488 #endif
490 int rv515_debugfs_pipes_info_init(struct radeon_device *rdev)
492 #if defined(CONFIG_DEBUG_FS)
493 return radeon_debugfs_add_files(rdev, rv515_pipes_info_list, 1);
494 #else
495 return 0;
496 #endif
499 int rv515_debugfs_ga_info_init(struct radeon_device *rdev)
501 #if defined(CONFIG_DEBUG_FS)
502 return radeon_debugfs_add_files(rdev, rv515_ga_info_list, 1);
503 #else
504 return 0;
505 #endif
510 * Asic initialization
512 static const unsigned r500_reg_safe_bm[159] = {
513 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
514 0xFFFFFFBF, 0xFFFFFFFF, 0xFFFFFFBF, 0xFFFFFFFF,
515 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
516 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
517 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
518 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
519 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
520 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
521 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
522 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
523 0x17FF1FFF, 0xFFFFFFFC, 0xFFFFFFFF, 0xFF30FFBF,
524 0xFFFFFFF8, 0xC3E6FFFF, 0xFFFFF6DF, 0xFFFFFFFF,
525 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
526 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
527 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFF03F,
528 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
529 0xFFFFFFFF, 0xFFFFEFCE, 0xF00EBFFF, 0x007C0000,
530 0xF0000038, 0xFF000009, 0xFFFFFFFF, 0xFFFFFFFF,
531 0xFFFFFFFF, 0xFFFFFFFF, 0x00000000, 0xFFFFFFFF,
532 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
533 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
534 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
535 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
536 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
537 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
538 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
539 0xFFFFF7FF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
540 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
541 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
542 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
543 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
544 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
545 0x1FFFFC78, 0xFFFFE000, 0xFFFFFFFE, 0xFFFFFFFF,
546 0x38CF8F50, 0xFFF88082, 0xFF0000FC, 0xFAE009FF,
547 0x0000FFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x00000000,
548 0xFFFF8CFC, 0xFFFFC1FF, 0xFFFFFFFF, 0xFFFFFFFF,
549 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
550 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFF80FFFF,
551 0x00000000, 0x00000000, 0x00000000, 0x00000000,
552 0x0003FC01, 0x3FFFFCF8, 0xFE800B19,
557 int rv515_init(struct radeon_device *rdev)
559 rdev->config.r300.reg_safe_bm = r500_reg_safe_bm;
560 rdev->config.r300.reg_safe_bm_size = ARRAY_SIZE(r500_reg_safe_bm);
561 return 0;