Subversion Repositories Kolibri OS

Rev

Rev 5271 | Rev 6321 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 5271 Rev 6104
Line 28... Line 28...
28
 
28
 
29
//#include 
29
//#include 
30
#include 
30
#include 
31
#include 
31
#include 
32
#include 
32
#include 
33
//#include 
-
 
34
//#include 
33
#include 
35
#include "radeon_reg.h"
34
#include "radeon_reg.h"
36
#include "radeon.h"
35
#include "radeon.h"
37
#include "radeon_asic.h"
36
#include "radeon_asic.h"
Line 134... Line 133...
134
		rdev->pciep_rreg = &r600_pciep_rreg;
133
		rdev->pciep_rreg = &r600_pciep_rreg;
135
		rdev->pciep_wreg = &r600_pciep_wreg;
134
		rdev->pciep_wreg = &r600_pciep_wreg;
136
	}
135
	}
137
}
136
}
Line -... Line 137...
-
 
137
 
-
 
138
static int radeon_invalid_get_allowed_info_register(struct radeon_device *rdev,
-
 
139
						    u32 reg, u32 *val)
-
 
140
{
-
 
141
	return -EINVAL;
Line 138... Line 142...
138
 
142
}
139
 
143
 
140
/* helper to disable agp */
144
/* helper to disable agp */
141
/**
145
/**
Line 157... Line 161...
157
			rdev->family == CHIP_RV410 ||
161
			rdev->family == CHIP_RV410 ||
158
			rdev->family == CHIP_R423) {
162
			rdev->family == CHIP_R423) {
159
		DRM_INFO("Forcing AGP to PCIE mode\n");
163
		DRM_INFO("Forcing AGP to PCIE mode\n");
160
		rdev->flags |= RADEON_IS_PCIE;
164
		rdev->flags |= RADEON_IS_PCIE;
161
		rdev->asic->gart.tlb_flush = &rv370_pcie_gart_tlb_flush;
165
		rdev->asic->gart.tlb_flush = &rv370_pcie_gart_tlb_flush;
-
 
166
		rdev->asic->gart.get_page_entry = &rv370_pcie_gart_get_page_entry;
162
		rdev->asic->gart.set_page = &rv370_pcie_gart_set_page;
167
		rdev->asic->gart.set_page = &rv370_pcie_gart_set_page;
163
	} else {
168
	} else {
164
		DRM_INFO("Forcing AGP to PCI mode\n");
169
		DRM_INFO("Forcing AGP to PCI mode\n");
165
		rdev->flags |= RADEON_IS_PCI;
170
		rdev->flags |= RADEON_IS_PCI;
166
		rdev->asic->gart.tlb_flush = &r100_pci_gart_tlb_flush;
171
		rdev->asic->gart.tlb_flush = &r100_pci_gart_tlb_flush;
-
 
172
		rdev->asic->gart.get_page_entry = &r100_pci_gart_get_page_entry;
167
		rdev->asic->gart.set_page = &r100_pci_gart_set_page;
173
		rdev->asic->gart.set_page = &r100_pci_gart_set_page;
168
	}
174
	}
169
	rdev->mc.gtt_size = radeon_gart_size * 1024 * 1024;
175
	rdev->mc.gtt_size = radeon_gart_size * 1024 * 1024;
170
}
176
}
Line 187... Line 193...
187
	.set_wptr = &r100_gfx_set_wptr,
193
	.set_wptr = &r100_gfx_set_wptr,
188
};
194
};
Line 189... Line 195...
189
 
195
 
190
static struct radeon_asic r100_asic = {
196
static struct radeon_asic r100_asic = {
191
	.init = &r100_init,
197
	.init = &r100_init,
192
//	.fini = &r100_fini,
198
	.fini = &r100_fini,
193
//	.suspend = &r100_suspend,
199
//	.suspend = &r100_suspend,
194
//	.resume = &r100_resume,
200
//	.resume = &r100_resume,
195
//	.vga_set_state = &r100_vga_set_state,
201
//	.vga_set_state = &r100_vga_set_state,
196
	.asic_reset = &r100_asic_reset,
202
	.asic_reset = &r100_asic_reset,
197
	.mmio_hdp_flush = NULL,
203
	.mmio_hdp_flush = NULL,
198
	.gui_idle = &r100_gui_idle,
204
	.gui_idle = &r100_gui_idle,
-
 
205
	.mc_wait_for_idle = &r100_mc_wait_for_idle,
199
	.mc_wait_for_idle = &r100_mc_wait_for_idle,
206
	.get_allowed_info_register = radeon_invalid_get_allowed_info_register,
200
	.gart = {
207
	.gart = {
-
 
208
		.tlb_flush = &r100_pci_gart_tlb_flush,
201
		.tlb_flush = &r100_pci_gart_tlb_flush,
209
		.get_page_entry = &r100_pci_gart_get_page_entry,
202
		.set_page = &r100_pci_gart_set_page,
210
		.set_page = &r100_pci_gart_set_page,
203
	},
211
	},
204
	.ring = {
212
	.ring = {
205
		[RADEON_RING_TYPE_GFX_INDEX] = &r100_gfx_ring
213
		[RADEON_RING_TYPE_GFX_INDEX] = &r100_gfx_ring
Line 253... Line 261...
253
	},
261
	},
254
};
262
};
Line 255... Line 263...
255
 
263
 
256
static struct radeon_asic r200_asic = {
264
static struct radeon_asic r200_asic = {
257
	.init = &r100_init,
265
	.init = &r100_init,
258
//	.fini = &r100_fini,
266
	.fini = &r100_fini,
259
//	.suspend = &r100_suspend,
267
//	.suspend = &r100_suspend,
260
//	.resume = &r100_resume,
268
//	.resume = &r100_resume,
261
//	.vga_set_state = &r100_vga_set_state,
269
//	.vga_set_state = &r100_vga_set_state,
262
	.asic_reset = &r100_asic_reset,
270
	.asic_reset = &r100_asic_reset,
263
	.mmio_hdp_flush = NULL,
271
	.mmio_hdp_flush = NULL,
264
	.gui_idle = &r100_gui_idle,
272
	.gui_idle = &r100_gui_idle,
-
 
273
	.mc_wait_for_idle = &r100_mc_wait_for_idle,
265
	.mc_wait_for_idle = &r100_mc_wait_for_idle,
274
	.get_allowed_info_register = radeon_invalid_get_allowed_info_register,
266
	.gart = {
275
	.gart = {
-
 
276
		.tlb_flush = &r100_pci_gart_tlb_flush,
267
		.tlb_flush = &r100_pci_gart_tlb_flush,
277
		.get_page_entry = &r100_pci_gart_get_page_entry,
268
		.set_page = &r100_pci_gart_set_page,
278
		.set_page = &r100_pci_gart_set_page,
269
	},
279
	},
270
	.ring = {
280
	.ring = {
271
		[RADEON_RING_TYPE_GFX_INDEX] = &r100_gfx_ring
281
		[RADEON_RING_TYPE_GFX_INDEX] = &r100_gfx_ring
Line 331... Line 341...
331
	.get_rptr = &r100_gfx_get_rptr,
341
	.get_rptr = &r100_gfx_get_rptr,
332
	.get_wptr = &r100_gfx_get_wptr,
342
	.get_wptr = &r100_gfx_get_wptr,
333
	.set_wptr = &r100_gfx_set_wptr,
343
	.set_wptr = &r100_gfx_set_wptr,
334
};
344
};
Line -... Line 345...
-
 
345
 
-
 
346
static struct radeon_asic_ring rv515_gfx_ring = {
-
 
347
	.ib_execute = &r100_ring_ib_execute,
-
 
348
	.emit_fence = &r300_fence_ring_emit,
-
 
349
	.emit_semaphore = &r100_semaphore_ring_emit,
-
 
350
	.cs_parse = &r300_cs_parse,
-
 
351
	.ring_start = &rv515_ring_start,
-
 
352
	.ring_test = &r100_ring_test,
-
 
353
	.ib_test = &r100_ib_test,
-
 
354
	.is_lockup = &r100_gpu_is_lockup,
-
 
355
	.get_rptr = &r100_gfx_get_rptr,
-
 
356
	.get_wptr = &r100_gfx_get_wptr,
-
 
357
	.set_wptr = &r100_gfx_set_wptr,
-
 
358
};
335
 
359
 
336
static struct radeon_asic r300_asic = {
360
static struct radeon_asic r300_asic = {
337
	.init = &r300_init,
361
	.init = &r300_init,
338
//	.fini = &r300_fini,
362
	.fini = &r300_fini,
339
//	.suspend = &r300_suspend,
363
//	.suspend = &r300_suspend,
340
//	.resume = &r300_resume,
364
//	.resume = &r300_resume,
341
//	.vga_set_state = &r100_vga_set_state,
365
//	.vga_set_state = &r100_vga_set_state,
342
	.asic_reset = &r300_asic_reset,
366
	.asic_reset = &r300_asic_reset,
343
	.mmio_hdp_flush = NULL,
367
	.mmio_hdp_flush = NULL,
344
	.gui_idle = &r100_gui_idle,
368
	.gui_idle = &r100_gui_idle,
-
 
369
	.mc_wait_for_idle = &r300_mc_wait_for_idle,
345
	.mc_wait_for_idle = &r300_mc_wait_for_idle,
370
	.get_allowed_info_register = radeon_invalid_get_allowed_info_register,
346
	.gart = {
371
	.gart = {
-
 
372
		.tlb_flush = &r100_pci_gart_tlb_flush,
347
		.tlb_flush = &r100_pci_gart_tlb_flush,
373
		.get_page_entry = &r100_pci_gart_get_page_entry,
348
		.set_page = &r100_pci_gart_set_page,
374
		.set_page = &r100_pci_gart_set_page,
349
	},
375
	},
350
	.ring = {
376
	.ring = {
351
		[RADEON_RING_TYPE_GFX_INDEX] = &r300_gfx_ring
377
		[RADEON_RING_TYPE_GFX_INDEX] = &r300_gfx_ring
Line 399... Line 425...
399
	},
425
	},
400
};
426
};
Line 401... Line 427...
401
 
427
 
402
static struct radeon_asic r300_asic_pcie = {
428
static struct radeon_asic r300_asic_pcie = {
403
	.init = &r300_init,
429
	.init = &r300_init,
404
//	.fini = &r300_fini,
430
	.fini = &r300_fini,
405
//	.suspend = &r300_suspend,
431
//	.suspend = &r300_suspend,
406
//	.resume = &r300_resume,
432
//	.resume = &r300_resume,
407
//	.vga_set_state = &r100_vga_set_state,
433
//	.vga_set_state = &r100_vga_set_state,
408
	.asic_reset = &r300_asic_reset,
434
	.asic_reset = &r300_asic_reset,
409
	.mmio_hdp_flush = NULL,
435
	.mmio_hdp_flush = NULL,
410
	.gui_idle = &r100_gui_idle,
436
	.gui_idle = &r100_gui_idle,
-
 
437
	.mc_wait_for_idle = &r300_mc_wait_for_idle,
411
	.mc_wait_for_idle = &r300_mc_wait_for_idle,
438
	.get_allowed_info_register = radeon_invalid_get_allowed_info_register,
412
	.gart = {
439
	.gart = {
-
 
440
		.tlb_flush = &rv370_pcie_gart_tlb_flush,
413
		.tlb_flush = &rv370_pcie_gart_tlb_flush,
441
		.get_page_entry = &rv370_pcie_gart_get_page_entry,
414
		.set_page = &rv370_pcie_gart_set_page,
442
		.set_page = &rv370_pcie_gart_set_page,
415
	},
443
	},
416
	.ring = {
444
	.ring = {
417
		[RADEON_RING_TYPE_GFX_INDEX] = &r300_gfx_ring
445
		[RADEON_RING_TYPE_GFX_INDEX] = &r300_gfx_ring
Line 465... Line 493...
465
	},
493
	},
466
};
494
};
Line 467... Line 495...
467
 
495
 
468
static struct radeon_asic r420_asic = {
496
static struct radeon_asic r420_asic = {
469
	.init = &r420_init,
497
	.init = &r420_init,
470
//	.fini = &r420_fini,
498
	.fini = &r420_fini,
471
//	.suspend = &r420_suspend,
499
//	.suspend = &r420_suspend,
472
//	.resume = &r420_resume,
500
//	.resume = &r420_resume,
473
//	.vga_set_state = &r100_vga_set_state,
501
//	.vga_set_state = &r100_vga_set_state,
474
	.asic_reset = &r300_asic_reset,
502
	.asic_reset = &r300_asic_reset,
475
	.mmio_hdp_flush = NULL,
503
	.mmio_hdp_flush = NULL,
476
	.gui_idle = &r100_gui_idle,
504
	.gui_idle = &r100_gui_idle,
-
 
505
	.mc_wait_for_idle = &r300_mc_wait_for_idle,
477
	.mc_wait_for_idle = &r300_mc_wait_for_idle,
506
	.get_allowed_info_register = radeon_invalid_get_allowed_info_register,
478
	.gart = {
507
	.gart = {
-
 
508
		.tlb_flush = &rv370_pcie_gart_tlb_flush,
479
		.tlb_flush = &rv370_pcie_gart_tlb_flush,
509
		.get_page_entry = &rv370_pcie_gart_get_page_entry,
480
		.set_page = &rv370_pcie_gart_set_page,
510
		.set_page = &rv370_pcie_gart_set_page,
481
	},
511
	},
482
	.ring = {
512
	.ring = {
483
		[RADEON_RING_TYPE_GFX_INDEX] = &r300_gfx_ring
513
		[RADEON_RING_TYPE_GFX_INDEX] = &r300_gfx_ring
Line 531... Line 561...
531
	},
561
	},
532
};
562
};
Line 533... Line 563...
533
 
563
 
534
static struct radeon_asic rs400_asic = {
564
static struct radeon_asic rs400_asic = {
535
	.init = &rs400_init,
565
	.init = &rs400_init,
536
//	.fini = &rs400_fini,
566
	.fini = &rs400_fini,
537
//	.suspend = &rs400_suspend,
567
//	.suspend = &rs400_suspend,
538
//	.resume = &rs400_resume,
568
//	.resume = &rs400_resume,
539
//	.vga_set_state = &r100_vga_set_state,
569
//	.vga_set_state = &r100_vga_set_state,
540
	.asic_reset = &r300_asic_reset,
570
	.asic_reset = &r300_asic_reset,
541
	.mmio_hdp_flush = NULL,
571
	.mmio_hdp_flush = NULL,
542
	.gui_idle = &r100_gui_idle,
572
	.gui_idle = &r100_gui_idle,
-
 
573
	.mc_wait_for_idle = &rs400_mc_wait_for_idle,
543
	.mc_wait_for_idle = &rs400_mc_wait_for_idle,
574
	.get_allowed_info_register = radeon_invalid_get_allowed_info_register,
544
	.gart = {
575
	.gart = {
-
 
576
		.tlb_flush = &rs400_gart_tlb_flush,
545
		.tlb_flush = &rs400_gart_tlb_flush,
577
		.get_page_entry = &rs400_gart_get_page_entry,
546
		.set_page = &rs400_gart_set_page,
578
		.set_page = &rs400_gart_set_page,
547
	},
579
	},
548
	.ring = {
580
	.ring = {
549
		[RADEON_RING_TYPE_GFX_INDEX] = &r300_gfx_ring
581
		[RADEON_RING_TYPE_GFX_INDEX] = &r300_gfx_ring
Line 597... Line 629...
597
	},
629
	},
598
};
630
};
Line 599... Line 631...
599
 
631
 
600
static struct radeon_asic rs600_asic = {
632
static struct radeon_asic rs600_asic = {
601
	.init = &rs600_init,
633
	.init = &rs600_init,
602
//	.fini = &rs600_fini,
634
	.fini = &rs600_fini,
603
//	.suspend = &rs600_suspend,
635
//	.suspend = &rs600_suspend,
604
//	.resume = &rs600_resume,
636
//	.resume = &rs600_resume,
605
//	.vga_set_state = &r100_vga_set_state,
637
//	.vga_set_state = &r100_vga_set_state,
606
	.asic_reset = &rs600_asic_reset,
638
	.asic_reset = &rs600_asic_reset,
607
	.mmio_hdp_flush = NULL,
639
	.mmio_hdp_flush = NULL,
608
	.gui_idle = &r100_gui_idle,
640
	.gui_idle = &r100_gui_idle,
-
 
641
	.mc_wait_for_idle = &rs600_mc_wait_for_idle,
609
	.mc_wait_for_idle = &rs600_mc_wait_for_idle,
642
	.get_allowed_info_register = radeon_invalid_get_allowed_info_register,
610
	.gart = {
643
	.gart = {
-
 
644
		.tlb_flush = &rs600_gart_tlb_flush,
611
		.tlb_flush = &rs600_gart_tlb_flush,
645
		.get_page_entry = &rs600_gart_get_page_entry,
612
		.set_page = &rs600_gart_set_page,
646
		.set_page = &rs600_gart_set_page,
613
	},
647
	},
614
	.ring = {
648
	.ring = {
615
		[RADEON_RING_TYPE_GFX_INDEX] = &r300_gfx_ring
649
		[RADEON_RING_TYPE_GFX_INDEX] = &r300_gfx_ring
Line 622... Line 656...
622
		.bandwidth_update = &rs600_bandwidth_update,
656
		.bandwidth_update = &rs600_bandwidth_update,
623
		.get_vblank_counter = &rs600_get_vblank_counter,
657
		.get_vblank_counter = &rs600_get_vblank_counter,
624
		.wait_for_vblank = &avivo_wait_for_vblank,
658
		.wait_for_vblank = &avivo_wait_for_vblank,
625
		.set_backlight_level = &atombios_set_backlight_level,
659
		.set_backlight_level = &atombios_set_backlight_level,
626
		.get_backlight_level = &atombios_get_backlight_level,
660
		.get_backlight_level = &atombios_get_backlight_level,
627
		.hdmi_enable = &r600_hdmi_enable,
-
 
628
		.hdmi_setmode = &r600_hdmi_setmode,
-
 
629
	},
661
	},
630
	.copy = {
662
	.copy = {
631
		.blit = &r100_copy_blit,
663
		.blit = &r100_copy_blit,
632
		.blit_ring_index = RADEON_RING_TYPE_GFX_INDEX,
664
		.blit_ring_index = RADEON_RING_TYPE_GFX_INDEX,
633
		.dma = &r200_copy_dma,
665
		.dma = &r200_copy_dma,
Line 665... Line 697...
665
	},
697
	},
666
};
698
};
Line 667... Line 699...
667
 
699
 
668
static struct radeon_asic rs690_asic = {
700
static struct radeon_asic rs690_asic = {
669
	.init = &rs690_init,
701
	.init = &rs690_init,
670
//	.fini = &rs690_fini,
702
	.fini = &rs690_fini,
671
//	.suspend = &rs690_suspend,
703
//	.suspend = &rs690_suspend,
672
//	.resume = &rs690_resume,
704
//	.resume = &rs690_resume,
673
//	.vga_set_state = &r100_vga_set_state,
705
//	.vga_set_state = &r100_vga_set_state,
674
	.asic_reset = &rs600_asic_reset,
706
	.asic_reset = &rs600_asic_reset,
675
	.mmio_hdp_flush = NULL,
707
	.mmio_hdp_flush = NULL,
676
	.gui_idle = &r100_gui_idle,
708
	.gui_idle = &r100_gui_idle,
-
 
709
	.mc_wait_for_idle = &rs690_mc_wait_for_idle,
677
	.mc_wait_for_idle = &rs690_mc_wait_for_idle,
710
	.get_allowed_info_register = radeon_invalid_get_allowed_info_register,
678
	.gart = {
711
	.gart = {
-
 
712
		.tlb_flush = &rs400_gart_tlb_flush,
679
		.tlb_flush = &rs400_gart_tlb_flush,
713
		.get_page_entry = &rs400_gart_get_page_entry,
680
		.set_page = &rs400_gart_set_page,
714
		.set_page = &rs400_gart_set_page,
681
	},
715
	},
682
	.ring = {
716
	.ring = {
683
		[RADEON_RING_TYPE_GFX_INDEX] = &r300_gfx_ring
717
		[RADEON_RING_TYPE_GFX_INDEX] = &r300_gfx_ring
Line 690... Line 724...
690
		.get_vblank_counter = &rs600_get_vblank_counter,
724
		.get_vblank_counter = &rs600_get_vblank_counter,
691
		.bandwidth_update = &rs690_bandwidth_update,
725
		.bandwidth_update = &rs690_bandwidth_update,
692
		.wait_for_vblank = &avivo_wait_for_vblank,
726
		.wait_for_vblank = &avivo_wait_for_vblank,
693
		.set_backlight_level = &atombios_set_backlight_level,
727
		.set_backlight_level = &atombios_set_backlight_level,
694
		.get_backlight_level = &atombios_get_backlight_level,
728
		.get_backlight_level = &atombios_get_backlight_level,
695
		.hdmi_enable = &r600_hdmi_enable,
-
 
696
		.hdmi_setmode = &r600_hdmi_setmode,
-
 
697
	},
729
	},
698
	.copy = {
730
	.copy = {
699
		.blit = &r100_copy_blit,
731
		.blit = &r100_copy_blit,
700
		.blit_ring_index = RADEON_RING_TYPE_GFX_INDEX,
732
		.blit_ring_index = RADEON_RING_TYPE_GFX_INDEX,
701
		.dma = &r200_copy_dma,
733
		.dma = &r200_copy_dma,
Line 733... Line 765...
733
	},
765
	},
734
};
766
};
Line 735... Line 767...
735
 
767
 
736
static struct radeon_asic rv515_asic = {
768
static struct radeon_asic rv515_asic = {
737
	.init = &rv515_init,
769
	.init = &rv515_init,
738
//	.fini = &rv515_fini,
770
	.fini = &rv515_fini,
739
//	.suspend = &rv515_suspend,
771
//	.suspend = &rv515_suspend,
740
//	.resume = &rv515_resume,
772
//	.resume = &rv515_resume,
741
//	.vga_set_state = &r100_vga_set_state,
773
//	.vga_set_state = &r100_vga_set_state,
742
	.asic_reset = &rs600_asic_reset,
774
	.asic_reset = &rs600_asic_reset,
743
	.mmio_hdp_flush = NULL,
775
	.mmio_hdp_flush = NULL,
744
	.gui_idle = &r100_gui_idle,
776
	.gui_idle = &r100_gui_idle,
-
 
777
	.mc_wait_for_idle = &rv515_mc_wait_for_idle,
745
	.mc_wait_for_idle = &rv515_mc_wait_for_idle,
778
	.get_allowed_info_register = radeon_invalid_get_allowed_info_register,
746
	.gart = {
779
	.gart = {
-
 
780
		.tlb_flush = &rv370_pcie_gart_tlb_flush,
747
		.tlb_flush = &rv370_pcie_gart_tlb_flush,
781
		.get_page_entry = &rv370_pcie_gart_get_page_entry,
748
		.set_page = &rv370_pcie_gart_set_page,
782
		.set_page = &rv370_pcie_gart_set_page,
749
	},
783
	},
750
	.ring = {
784
	.ring = {
751
		[RADEON_RING_TYPE_GFX_INDEX] = &r300_gfx_ring
785
		[RADEON_RING_TYPE_GFX_INDEX] = &rv515_gfx_ring
752
	},
786
	},
753
	.irq = {
787
	.irq = {
754
		.set = &rs600_irq_set,
788
		.set = &rs600_irq_set,
755
		.process = &rs600_irq_process,
789
		.process = &rs600_irq_process,
Line 799... Line 833...
799
	},
833
	},
800
};
834
};
Line 801... Line 835...
801
 
835
 
802
static struct radeon_asic r520_asic = {
836
static struct radeon_asic r520_asic = {
803
	.init = &r520_init,
837
	.init = &r520_init,
804
//	.fini = &rv515_fini,
838
	.fini = &rv515_fini,
805
//	.suspend = &rv515_suspend,
839
//	.suspend = &rv515_suspend,
806
//	.resume = &r520_resume,
840
//	.resume = &r520_resume,
807
//	.vga_set_state = &r100_vga_set_state,
841
//	.vga_set_state = &r100_vga_set_state,
808
	.asic_reset = &rs600_asic_reset,
842
	.asic_reset = &rs600_asic_reset,
809
	.mmio_hdp_flush = NULL,
843
	.mmio_hdp_flush = NULL,
810
	.gui_idle = &r100_gui_idle,
844
	.gui_idle = &r100_gui_idle,
-
 
845
	.mc_wait_for_idle = &r520_mc_wait_for_idle,
811
	.mc_wait_for_idle = &r520_mc_wait_for_idle,
846
	.get_allowed_info_register = radeon_invalid_get_allowed_info_register,
812
	.gart = {
847
	.gart = {
-
 
848
		.tlb_flush = &rv370_pcie_gart_tlb_flush,
813
		.tlb_flush = &rv370_pcie_gart_tlb_flush,
849
		.get_page_entry = &rv370_pcie_gart_get_page_entry,
814
		.set_page = &rv370_pcie_gart_set_page,
850
		.set_page = &rv370_pcie_gart_set_page,
815
	},
851
	},
816
	.ring = {
852
	.ring = {
817
		[RADEON_RING_TYPE_GFX_INDEX] = &r300_gfx_ring
853
		[RADEON_RING_TYPE_GFX_INDEX] = &rv515_gfx_ring
818
	},
854
	},
819
	.irq = {
855
	.irq = {
820
		.set = &rs600_irq_set,
856
		.set = &rs600_irq_set,
821
		.process = &rs600_irq_process,
857
		.process = &rs600_irq_process,
Line 891... Line 927...
891
	.set_wptr = &r600_dma_set_wptr,
927
	.set_wptr = &r600_dma_set_wptr,
892
};
928
};
Line 893... Line 929...
893
 
929
 
894
static struct radeon_asic r600_asic = {
930
static struct radeon_asic r600_asic = {
895
	.init = &r600_init,
931
	.init = &r600_init,
896
//	.fini = &r600_fini,
932
	.fini = &r600_fini,
897
//	.suspend = &r600_suspend,
933
//	.suspend = &r600_suspend,
898
//	.resume = &r600_resume,
934
//	.resume = &r600_resume,
899
//	.vga_set_state = &r600_vga_set_state,
935
//	.vga_set_state = &r600_vga_set_state,
900
	.asic_reset = &r600_asic_reset,
936
	.asic_reset = &r600_asic_reset,
901
	.mmio_hdp_flush = r600_mmio_hdp_flush,
937
	.mmio_hdp_flush = r600_mmio_hdp_flush,
902
	.gui_idle = &r600_gui_idle,
938
	.gui_idle = &r600_gui_idle,
903
	.mc_wait_for_idle = &r600_mc_wait_for_idle,
939
	.mc_wait_for_idle = &r600_mc_wait_for_idle,
904
	.get_xclk = &r600_get_xclk,
940
	.get_xclk = &r600_get_xclk,
-
 
941
	.get_gpu_clock_counter = &r600_get_gpu_clock_counter,
905
	.get_gpu_clock_counter = &r600_get_gpu_clock_counter,
942
	.get_allowed_info_register = r600_get_allowed_info_register,
906
	.gart = {
943
	.gart = {
-
 
944
		.tlb_flush = &r600_pcie_gart_tlb_flush,
907
		.tlb_flush = &r600_pcie_gart_tlb_flush,
945
		.get_page_entry = &rs600_gart_get_page_entry,
908
		.set_page = &rs600_gart_set_page,
946
		.set_page = &rs600_gart_set_page,
909
	},
947
	},
910
	.ring = {
948
	.ring = {
911
		[RADEON_RING_TYPE_GFX_INDEX] = &r600_gfx_ring,
949
		[RADEON_RING_TYPE_GFX_INDEX] = &r600_gfx_ring,
Line 919... Line 957...
919
		.bandwidth_update = &rv515_bandwidth_update,
957
		.bandwidth_update = &rv515_bandwidth_update,
920
		.get_vblank_counter = &rs600_get_vblank_counter,
958
		.get_vblank_counter = &rs600_get_vblank_counter,
921
		.wait_for_vblank = &avivo_wait_for_vblank,
959
		.wait_for_vblank = &avivo_wait_for_vblank,
922
		.set_backlight_level = &atombios_set_backlight_level,
960
		.set_backlight_level = &atombios_set_backlight_level,
923
		.get_backlight_level = &atombios_get_backlight_level,
961
		.get_backlight_level = &atombios_get_backlight_level,
924
		.hdmi_enable = &r600_hdmi_enable,
-
 
925
		.hdmi_setmode = &r600_hdmi_setmode,
-
 
926
	},
962
	},
927
	.copy = {
963
	.copy = {
928
		.blit = &r600_copy_cpdma,
964
		.blit = &r600_copy_cpdma,
929
		.blit_ring_index = RADEON_RING_TYPE_GFX_INDEX,
965
		.blit_ring_index = RADEON_RING_TYPE_GFX_INDEX,
930
		.dma = &r600_copy_dma,
966
		.dma = &r600_copy_dma,
Line 961... Line 997...
961
//		.pre_page_flip = &rs600_pre_page_flip,
997
//		.pre_page_flip = &rs600_pre_page_flip,
962
//		.page_flip = &rs600_page_flip,
998
//		.page_flip = &rs600_page_flip,
963
	},
999
	},
964
};
1000
};
Line -... Line 1001...
-
 
1001
 
-
 
1002
static struct radeon_asic_ring rv6xx_uvd_ring = {
-
 
1003
	.ib_execute = &uvd_v1_0_ib_execute,
-
 
1004
	.emit_fence = &uvd_v1_0_fence_emit,
-
 
1005
	.emit_semaphore = &uvd_v1_0_semaphore_emit,
-
 
1006
	.cs_parse = &radeon_uvd_cs_parse,
-
 
1007
	.ring_test = &uvd_v1_0_ring_test,
-
 
1008
	.ib_test = &uvd_v1_0_ib_test,
-
 
1009
	.is_lockup = &radeon_ring_test_lockup,
-
 
1010
	.get_rptr = &uvd_v1_0_get_rptr,
-
 
1011
	.get_wptr = &uvd_v1_0_get_wptr,
-
 
1012
	.set_wptr = &uvd_v1_0_set_wptr,
-
 
1013
};
965
 
1014
 
966
static struct radeon_asic rv6xx_asic = {
1015
static struct radeon_asic rv6xx_asic = {
967
	.init = &r600_init,
1016
	.init = &r600_init,
968
//	.fini = &r600_fini,
1017
	.fini = &r600_fini,
969
//	.suspend = &r600_suspend,
1018
//	.suspend = &r600_suspend,
970
//	.resume = &r600_resume,
1019
//	.resume = &r600_resume,
971
//	.vga_set_state = &r600_vga_set_state,
1020
//	.vga_set_state = &r600_vga_set_state,
972
	.asic_reset = &r600_asic_reset,
1021
	.asic_reset = &r600_asic_reset,
973
	.mmio_hdp_flush = r600_mmio_hdp_flush,
1022
	.mmio_hdp_flush = r600_mmio_hdp_flush,
974
	.gui_idle = &r600_gui_idle,
1023
	.gui_idle = &r600_gui_idle,
975
	.mc_wait_for_idle = &r600_mc_wait_for_idle,
1024
	.mc_wait_for_idle = &r600_mc_wait_for_idle,
976
	.get_xclk = &r600_get_xclk,
1025
	.get_xclk = &r600_get_xclk,
-
 
1026
	.get_gpu_clock_counter = &r600_get_gpu_clock_counter,
977
	.get_gpu_clock_counter = &r600_get_gpu_clock_counter,
1027
	.get_allowed_info_register = r600_get_allowed_info_register,
978
	.gart = {
1028
	.gart = {
-
 
1029
		.tlb_flush = &r600_pcie_gart_tlb_flush,
979
		.tlb_flush = &r600_pcie_gart_tlb_flush,
1030
		.get_page_entry = &rs600_gart_get_page_entry,
980
		.set_page = &rs600_gart_set_page,
1031
		.set_page = &rs600_gart_set_page,
981
	},
1032
	},
982
	.ring = {
1033
	.ring = {
983
		[RADEON_RING_TYPE_GFX_INDEX] = &r600_gfx_ring,
1034
		[RADEON_RING_TYPE_GFX_INDEX] = &r600_gfx_ring,
-
 
1035
		[R600_RING_TYPE_DMA_INDEX] = &r600_dma_ring,
984
		[R600_RING_TYPE_DMA_INDEX] = &r600_dma_ring,
1036
		[R600_RING_TYPE_UVD_INDEX] = &rv6xx_uvd_ring,
985
	},
1037
	},
986
	.irq = {
1038
	.irq = {
987
		.set = &r600_irq_set,
1039
		.set = &r600_irq_set,
988
		.process = &r600_irq_process,
1040
		.process = &r600_irq_process,
Line 991... Line 1043...
991
		.bandwidth_update = &rv515_bandwidth_update,
1043
		.bandwidth_update = &rv515_bandwidth_update,
992
		.get_vblank_counter = &rs600_get_vblank_counter,
1044
		.get_vblank_counter = &rs600_get_vblank_counter,
993
		.wait_for_vblank = &avivo_wait_for_vblank,
1045
		.wait_for_vblank = &avivo_wait_for_vblank,
994
		.set_backlight_level = &atombios_set_backlight_level,
1046
		.set_backlight_level = &atombios_set_backlight_level,
995
		.get_backlight_level = &atombios_get_backlight_level,
1047
		.get_backlight_level = &atombios_get_backlight_level,
996
		.hdmi_enable = &r600_hdmi_enable,
-
 
997
		.hdmi_setmode = &r600_hdmi_setmode,
-
 
998
	},
1048
	},
999
	.copy = {
1049
	.copy = {
1000
		.blit = &r600_copy_cpdma,
1050
		.blit = &r600_copy_cpdma,
1001
		.blit_ring_index = RADEON_RING_TYPE_GFX_INDEX,
1051
		.blit_ring_index = RADEON_RING_TYPE_GFX_INDEX,
1002
		.dma = &r600_copy_dma,
1052
		.dma = &r600_copy_dma,
Line 1044... Line 1094...
1044
		.get_sclk = &rv6xx_dpm_get_sclk,
1094
		.get_sclk = &rv6xx_dpm_get_sclk,
1045
		.get_mclk = &rv6xx_dpm_get_mclk,
1095
		.get_mclk = &rv6xx_dpm_get_mclk,
1046
		.print_power_state = &rv6xx_dpm_print_power_state,
1096
		.print_power_state = &rv6xx_dpm_print_power_state,
1047
		.debugfs_print_current_performance_level = &rv6xx_dpm_debugfs_print_current_performance_level,
1097
		.debugfs_print_current_performance_level = &rv6xx_dpm_debugfs_print_current_performance_level,
1048
		.force_performance_level = &rv6xx_dpm_force_performance_level,
1098
		.force_performance_level = &rv6xx_dpm_force_performance_level,
-
 
1099
		.get_current_sclk = &rv6xx_dpm_get_current_sclk,
-
 
1100
		.get_current_mclk = &rv6xx_dpm_get_current_mclk,
1049
	},
1101
	},
1050
	.pflip = {
1102
	.pflip = {
1051
//		.pre_page_flip = &rs600_pre_page_flip,
1103
//		.pre_page_flip = &rs600_pre_page_flip,
1052
//		.page_flip = &rs600_page_flip,
1104
//		.page_flip = &rs600_page_flip,
1053
	},
1105
	},
1054
};
1106
};
Line 1055... Line 1107...
1055
 
1107
 
1056
static struct radeon_asic rs780_asic = {
1108
static struct radeon_asic rs780_asic = {
1057
	.init = &r600_init,
1109
	.init = &r600_init,
1058
//	.fini = &r600_fini,
1110
	.fini = &r600_fini,
1059
//	.suspend = &r600_suspend,
1111
//	.suspend = &r600_suspend,
1060
//	.resume = &r600_resume,
1112
//	.resume = &r600_resume,
1061
//	.vga_set_state = &r600_vga_set_state,
1113
//	.vga_set_state = &r600_vga_set_state,
1062
	.asic_reset = &r600_asic_reset,
1114
	.asic_reset = &r600_asic_reset,
1063
	.mmio_hdp_flush = r600_mmio_hdp_flush,
1115
	.mmio_hdp_flush = r600_mmio_hdp_flush,
1064
	.gui_idle = &r600_gui_idle,
1116
	.gui_idle = &r600_gui_idle,
1065
	.mc_wait_for_idle = &r600_mc_wait_for_idle,
1117
	.mc_wait_for_idle = &r600_mc_wait_for_idle,
1066
	.get_xclk = &r600_get_xclk,
1118
	.get_xclk = &r600_get_xclk,
-
 
1119
	.get_gpu_clock_counter = &r600_get_gpu_clock_counter,
1067
	.get_gpu_clock_counter = &r600_get_gpu_clock_counter,
1120
	.get_allowed_info_register = r600_get_allowed_info_register,
1068
	.gart = {
1121
	.gart = {
-
 
1122
		.tlb_flush = &r600_pcie_gart_tlb_flush,
1069
		.tlb_flush = &r600_pcie_gart_tlb_flush,
1123
		.get_page_entry = &rs600_gart_get_page_entry,
1070
		.set_page = &rs600_gart_set_page,
1124
		.set_page = &rs600_gart_set_page,
1071
	},
1125
	},
1072
	.ring = {
1126
	.ring = {
1073
		[RADEON_RING_TYPE_GFX_INDEX] = &r600_gfx_ring,
1127
		[RADEON_RING_TYPE_GFX_INDEX] = &r600_gfx_ring,
-
 
1128
		[R600_RING_TYPE_DMA_INDEX] = &r600_dma_ring,
1074
		[R600_RING_TYPE_DMA_INDEX] = &r600_dma_ring,
1129
		[R600_RING_TYPE_UVD_INDEX] = &rv6xx_uvd_ring,
1075
	},
1130
	},
1076
	.irq = {
1131
	.irq = {
1077
		.set = &r600_irq_set,
1132
		.set = &r600_irq_set,
1078
		.process = &r600_irq_process,
1133
		.process = &r600_irq_process,
Line 1081... Line 1136...
1081
		.bandwidth_update = &rs690_bandwidth_update,
1136
		.bandwidth_update = &rs690_bandwidth_update,
1082
		.get_vblank_counter = &rs600_get_vblank_counter,
1137
		.get_vblank_counter = &rs600_get_vblank_counter,
1083
		.wait_for_vblank = &avivo_wait_for_vblank,
1138
		.wait_for_vblank = &avivo_wait_for_vblank,
1084
		.set_backlight_level = &atombios_set_backlight_level,
1139
		.set_backlight_level = &atombios_set_backlight_level,
1085
		.get_backlight_level = &atombios_get_backlight_level,
1140
		.get_backlight_level = &atombios_get_backlight_level,
1086
		.hdmi_enable = &r600_hdmi_enable,
-
 
1087
		.hdmi_setmode = &r600_hdmi_setmode,
-
 
1088
	},
1141
	},
1089
	.copy = {
1142
	.copy = {
1090
		.blit = &r600_copy_cpdma,
1143
		.blit = &r600_copy_cpdma,
1091
		.blit_ring_index = RADEON_RING_TYPE_GFX_INDEX,
1144
		.blit_ring_index = RADEON_RING_TYPE_GFX_INDEX,
1092
		.dma = &r600_copy_dma,
1145
		.dma = &r600_copy_dma,
Line 1134... Line 1187...
1134
		.get_sclk = &rs780_dpm_get_sclk,
1187
		.get_sclk = &rs780_dpm_get_sclk,
1135
		.get_mclk = &rs780_dpm_get_mclk,
1188
		.get_mclk = &rs780_dpm_get_mclk,
1136
		.print_power_state = &rs780_dpm_print_power_state,
1189
		.print_power_state = &rs780_dpm_print_power_state,
1137
		.debugfs_print_current_performance_level = &rs780_dpm_debugfs_print_current_performance_level,
1190
		.debugfs_print_current_performance_level = &rs780_dpm_debugfs_print_current_performance_level,
1138
		.force_performance_level = &rs780_dpm_force_performance_level,
1191
		.force_performance_level = &rs780_dpm_force_performance_level,
-
 
1192
		.get_current_sclk = &rs780_dpm_get_current_sclk,
-
 
1193
		.get_current_mclk = &rs780_dpm_get_current_mclk,
1139
	},
1194
	},
1140
	.pflip = {
1195
	.pflip = {
1141
//		.pre_page_flip = &rs600_pre_page_flip,
1196
//		.pre_page_flip = &rs600_pre_page_flip,
1142
//		.page_flip = &rs600_page_flip,
1197
//		.page_flip = &rs600_page_flip,
1143
	},
1198
	},
1144
};
1199
};
Line 1145... Line 1200...
1145
 
1200
 
1146
static struct radeon_asic_ring rv770_uvd_ring = {
1201
static struct radeon_asic_ring rv770_uvd_ring = {
1147
	.ib_execute = &uvd_v1_0_ib_execute,
1202
	.ib_execute = &uvd_v1_0_ib_execute,
1148
	.emit_fence = &uvd_v2_2_fence_emit,
1203
	.emit_fence = &uvd_v2_2_fence_emit,
1149
	.emit_semaphore = &uvd_v1_0_semaphore_emit,
1204
	.emit_semaphore = &uvd_v2_2_semaphore_emit,
1150
	.cs_parse = &radeon_uvd_cs_parse,
1205
	.cs_parse = &radeon_uvd_cs_parse,
1151
	.ring_test = &uvd_v1_0_ring_test,
1206
	.ring_test = &uvd_v1_0_ring_test,
1152
	.ib_test = &uvd_v1_0_ib_test,
1207
	.ib_test = &uvd_v1_0_ib_test,
1153
	.is_lockup = &radeon_ring_test_lockup,
1208
	.is_lockup = &radeon_ring_test_lockup,
Line 1156... Line 1211...
1156
	.set_wptr = &uvd_v1_0_set_wptr,
1211
	.set_wptr = &uvd_v1_0_set_wptr,
1157
};
1212
};
Line 1158... Line 1213...
1158
 
1213
 
1159
static struct radeon_asic rv770_asic = {
1214
static struct radeon_asic rv770_asic = {
1160
	.init = &rv770_init,
1215
	.init = &rv770_init,
1161
//	.fini = &rv770_fini,
1216
	.fini = &rv770_fini,
1162
//	.suspend = &rv770_suspend,
1217
//	.suspend = &rv770_suspend,
1163
//	.resume = &rv770_resume,
1218
//	.resume = &rv770_resume,
1164
	.asic_reset = &r600_asic_reset,
1219
	.asic_reset = &r600_asic_reset,
1165
//	.vga_set_state = &r600_vga_set_state,
1220
//	.vga_set_state = &r600_vga_set_state,
1166
	.mmio_hdp_flush = r600_mmio_hdp_flush,
1221
	.mmio_hdp_flush = r600_mmio_hdp_flush,
1167
	.gui_idle = &r600_gui_idle,
1222
	.gui_idle = &r600_gui_idle,
1168
	.mc_wait_for_idle = &r600_mc_wait_for_idle,
1223
	.mc_wait_for_idle = &r600_mc_wait_for_idle,
1169
	.get_xclk = &rv770_get_xclk,
1224
	.get_xclk = &rv770_get_xclk,
-
 
1225
	.get_gpu_clock_counter = &r600_get_gpu_clock_counter,
1170
	.get_gpu_clock_counter = &r600_get_gpu_clock_counter,
1226
	.get_allowed_info_register = r600_get_allowed_info_register,
1171
	.gart = {
1227
	.gart = {
-
 
1228
		.tlb_flush = &r600_pcie_gart_tlb_flush,
1172
		.tlb_flush = &r600_pcie_gart_tlb_flush,
1229
		.get_page_entry = &rs600_gart_get_page_entry,
1173
		.set_page = &rs600_gart_set_page,
1230
		.set_page = &rs600_gart_set_page,
1174
	},
1231
	},
1175
	.ring = {
1232
	.ring = {
1176
		[RADEON_RING_TYPE_GFX_INDEX] = &r600_gfx_ring,
1233
		[RADEON_RING_TYPE_GFX_INDEX] = &r600_gfx_ring,
Line 1185... Line 1242...
1185
		.bandwidth_update = &rv515_bandwidth_update,
1242
		.bandwidth_update = &rv515_bandwidth_update,
1186
		.get_vblank_counter = &rs600_get_vblank_counter,
1243
		.get_vblank_counter = &rs600_get_vblank_counter,
1187
		.wait_for_vblank = &avivo_wait_for_vblank,
1244
		.wait_for_vblank = &avivo_wait_for_vblank,
1188
		.set_backlight_level = &atombios_set_backlight_level,
1245
		.set_backlight_level = &atombios_set_backlight_level,
1189
		.get_backlight_level = &atombios_get_backlight_level,
1246
		.get_backlight_level = &atombios_get_backlight_level,
1190
		.hdmi_enable = &r600_hdmi_enable,
-
 
1191
		.hdmi_setmode = &dce3_1_hdmi_setmode,
-
 
1192
	},
1247
	},
1193
	.copy = {
1248
	.copy = {
1194
		.blit = &r600_copy_cpdma,
1249
		.blit = &r600_copy_cpdma,
1195
		.blit_ring_index = RADEON_RING_TYPE_GFX_INDEX,
1250
		.blit_ring_index = RADEON_RING_TYPE_GFX_INDEX,
1196
		.dma = &rv770_copy_dma,
1251
		.dma = &rv770_copy_dma,
Line 1239... Line 1294...
1239
		.get_mclk = &rv770_dpm_get_mclk,
1294
		.get_mclk = &rv770_dpm_get_mclk,
1240
		.print_power_state = &rv770_dpm_print_power_state,
1295
		.print_power_state = &rv770_dpm_print_power_state,
1241
		.debugfs_print_current_performance_level = &rv770_dpm_debugfs_print_current_performance_level,
1296
		.debugfs_print_current_performance_level = &rv770_dpm_debugfs_print_current_performance_level,
1242
		.force_performance_level = &rv770_dpm_force_performance_level,
1297
		.force_performance_level = &rv770_dpm_force_performance_level,
1243
		.vblank_too_short = &rv770_dpm_vblank_too_short,
1298
		.vblank_too_short = &rv770_dpm_vblank_too_short,
-
 
1299
		.get_current_sclk = &rv770_dpm_get_current_sclk,
-
 
1300
		.get_current_mclk = &rv770_dpm_get_current_mclk,
1244
	},
1301
	},
1245
	.pflip = {
1302
	.pflip = {
1246
//		.pre_page_flip = &rs600_pre_page_flip,
1303
//		.pre_page_flip = &rs600_pre_page_flip,
1247
//		.page_flip = &rv770_page_flip,
1304
//		.page_flip = &rv770_page_flip,
1248
	},
1305
	},
Line 1274... Line 1331...
1274
	.set_wptr = &r600_dma_set_wptr,
1331
	.set_wptr = &r600_dma_set_wptr,
1275
};
1332
};
Line 1276... Line 1333...
1276
 
1333
 
1277
static struct radeon_asic evergreen_asic = {
1334
static struct radeon_asic evergreen_asic = {
1278
	.init = &evergreen_init,
1335
	.init = &evergreen_init,
1279
//	.fini = &evergreen_fini,
1336
	.fini = &evergreen_fini,
1280
//	.suspend = &evergreen_suspend,
1337
//	.suspend = &evergreen_suspend,
1281
//	.resume = &evergreen_resume,
1338
//	.resume = &evergreen_resume,
1282
	.asic_reset = &evergreen_asic_reset,
1339
	.asic_reset = &evergreen_asic_reset,
1283
//	.vga_set_state = &r600_vga_set_state,
1340
//	.vga_set_state = &r600_vga_set_state,
1284
	.mmio_hdp_flush = r600_mmio_hdp_flush,
1341
	.mmio_hdp_flush = r600_mmio_hdp_flush,
1285
	.gui_idle = &r600_gui_idle,
1342
	.gui_idle = &r600_gui_idle,
1286
	.mc_wait_for_idle = &evergreen_mc_wait_for_idle,
1343
	.mc_wait_for_idle = &evergreen_mc_wait_for_idle,
1287
	.get_xclk = &rv770_get_xclk,
1344
	.get_xclk = &rv770_get_xclk,
-
 
1345
	.get_gpu_clock_counter = &r600_get_gpu_clock_counter,
1288
	.get_gpu_clock_counter = &r600_get_gpu_clock_counter,
1346
	.get_allowed_info_register = evergreen_get_allowed_info_register,
1289
	.gart = {
1347
	.gart = {
-
 
1348
		.tlb_flush = &evergreen_pcie_gart_tlb_flush,
1290
		.tlb_flush = &evergreen_pcie_gart_tlb_flush,
1349
		.get_page_entry = &rs600_gart_get_page_entry,
1291
		.set_page = &rs600_gart_set_page,
1350
		.set_page = &rs600_gart_set_page,
1292
	},
1351
	},
1293
	.ring = {
1352
	.ring = {
1294
		[RADEON_RING_TYPE_GFX_INDEX] = &evergreen_gfx_ring,
1353
		[RADEON_RING_TYPE_GFX_INDEX] = &evergreen_gfx_ring,
Line 1303... Line 1362...
1303
		.bandwidth_update = &evergreen_bandwidth_update,
1362
		.bandwidth_update = &evergreen_bandwidth_update,
1304
		.get_vblank_counter = &evergreen_get_vblank_counter,
1363
		.get_vblank_counter = &evergreen_get_vblank_counter,
1305
		.wait_for_vblank = &dce4_wait_for_vblank,
1364
		.wait_for_vblank = &dce4_wait_for_vblank,
1306
		.set_backlight_level = &atombios_set_backlight_level,
1365
		.set_backlight_level = &atombios_set_backlight_level,
1307
		.get_backlight_level = &atombios_get_backlight_level,
1366
		.get_backlight_level = &atombios_get_backlight_level,
1308
		.hdmi_enable = &evergreen_hdmi_enable,
-
 
1309
		.hdmi_setmode = &evergreen_hdmi_setmode,
-
 
1310
	},
1367
	},
1311
	.copy = {
1368
	.copy = {
1312
		.blit = &r600_copy_cpdma,
1369
		.blit = &r600_copy_cpdma,
1313
		.blit_ring_index = RADEON_RING_TYPE_GFX_INDEX,
1370
		.blit_ring_index = RADEON_RING_TYPE_GFX_INDEX,
1314
		.dma = &evergreen_copy_dma,
1371
		.dma = &evergreen_copy_dma,
Line 1357... Line 1414...
1357
		.get_mclk = &rv770_dpm_get_mclk,
1414
		.get_mclk = &rv770_dpm_get_mclk,
1358
		.print_power_state = &rv770_dpm_print_power_state,
1415
		.print_power_state = &rv770_dpm_print_power_state,
1359
		.debugfs_print_current_performance_level = &rv770_dpm_debugfs_print_current_performance_level,
1416
		.debugfs_print_current_performance_level = &rv770_dpm_debugfs_print_current_performance_level,
1360
		.force_performance_level = &rv770_dpm_force_performance_level,
1417
		.force_performance_level = &rv770_dpm_force_performance_level,
1361
		.vblank_too_short = &cypress_dpm_vblank_too_short,
1418
		.vblank_too_short = &cypress_dpm_vblank_too_short,
-
 
1419
		.get_current_sclk = &rv770_dpm_get_current_sclk,
-
 
1420
		.get_current_mclk = &rv770_dpm_get_current_mclk,
1362
	},
1421
	},
1363
	.pflip = {
1422
	.pflip = {
1364
	},
1423
	},
1365
};
1424
};
Line 1366... Line 1425...
1366
 
1425
 
1367
static struct radeon_asic sumo_asic = {
1426
static struct radeon_asic sumo_asic = {
1368
	.init = &evergreen_init,
1427
	.init = &evergreen_init,
1369
//	.fini = &evergreen_fini,
1428
	.fini = &evergreen_fini,
1370
//	.suspend = &evergreen_suspend,
1429
//	.suspend = &evergreen_suspend,
1371
//	.resume = &evergreen_resume,
1430
//	.resume = &evergreen_resume,
1372
	.asic_reset = &evergreen_asic_reset,
1431
	.asic_reset = &evergreen_asic_reset,
1373
//	.vga_set_state = &r600_vga_set_state,
1432
//	.vga_set_state = &r600_vga_set_state,
1374
	.mmio_hdp_flush = r600_mmio_hdp_flush,
1433
	.mmio_hdp_flush = r600_mmio_hdp_flush,
1375
	.gui_idle = &r600_gui_idle,
1434
	.gui_idle = &r600_gui_idle,
1376
	.mc_wait_for_idle = &evergreen_mc_wait_for_idle,
1435
	.mc_wait_for_idle = &evergreen_mc_wait_for_idle,
1377
	.get_xclk = &r600_get_xclk,
1436
	.get_xclk = &r600_get_xclk,
-
 
1437
	.get_gpu_clock_counter = &r600_get_gpu_clock_counter,
1378
	.get_gpu_clock_counter = &r600_get_gpu_clock_counter,
1438
	.get_allowed_info_register = evergreen_get_allowed_info_register,
1379
	.gart = {
1439
	.gart = {
-
 
1440
		.tlb_flush = &evergreen_pcie_gart_tlb_flush,
1380
		.tlb_flush = &evergreen_pcie_gart_tlb_flush,
1441
		.get_page_entry = &rs600_gart_get_page_entry,
1381
		.set_page = &rs600_gart_set_page,
1442
		.set_page = &rs600_gart_set_page,
1382
	},
1443
	},
1383
	.ring = {
1444
	.ring = {
1384
		[RADEON_RING_TYPE_GFX_INDEX] = &evergreen_gfx_ring,
1445
		[RADEON_RING_TYPE_GFX_INDEX] = &evergreen_gfx_ring,
Line 1393... Line 1454...
1393
		.bandwidth_update = &evergreen_bandwidth_update,
1454
		.bandwidth_update = &evergreen_bandwidth_update,
1394
		.get_vblank_counter = &evergreen_get_vblank_counter,
1455
		.get_vblank_counter = &evergreen_get_vblank_counter,
1395
		.wait_for_vblank = &dce4_wait_for_vblank,
1456
		.wait_for_vblank = &dce4_wait_for_vblank,
1396
		.set_backlight_level = &atombios_set_backlight_level,
1457
		.set_backlight_level = &atombios_set_backlight_level,
1397
		.get_backlight_level = &atombios_get_backlight_level,
1458
		.get_backlight_level = &atombios_get_backlight_level,
1398
		.hdmi_enable = &evergreen_hdmi_enable,
-
 
1399
		.hdmi_setmode = &evergreen_hdmi_setmode,
-
 
1400
	},
1459
	},
1401
	.copy = {
1460
	.copy = {
1402
		.blit = &r600_copy_cpdma,
1461
		.blit = &r600_copy_cpdma,
1403
		.blit_ring_index = RADEON_RING_TYPE_GFX_INDEX,
1462
		.blit_ring_index = RADEON_RING_TYPE_GFX_INDEX,
1404
		.dma = &evergreen_copy_dma,
1463
		.dma = &evergreen_copy_dma,
Line 1446... Line 1505...
1446
		.get_sclk = &sumo_dpm_get_sclk,
1505
		.get_sclk = &sumo_dpm_get_sclk,
1447
		.get_mclk = &sumo_dpm_get_mclk,
1506
		.get_mclk = &sumo_dpm_get_mclk,
1448
		.print_power_state = &sumo_dpm_print_power_state,
1507
		.print_power_state = &sumo_dpm_print_power_state,
1449
		.debugfs_print_current_performance_level = &sumo_dpm_debugfs_print_current_performance_level,
1508
		.debugfs_print_current_performance_level = &sumo_dpm_debugfs_print_current_performance_level,
1450
		.force_performance_level = &sumo_dpm_force_performance_level,
1509
		.force_performance_level = &sumo_dpm_force_performance_level,
-
 
1510
		.get_current_sclk = &sumo_dpm_get_current_sclk,
-
 
1511
		.get_current_mclk = &sumo_dpm_get_current_mclk,
1451
	},
1512
	},
1452
	.pflip = {
1513
	.pflip = {
1453
//		.pre_page_flip = &evergreen_pre_page_flip,
1514
//		.pre_page_flip = &evergreen_pre_page_flip,
1454
//		.page_flip = &evergreen_page_flip,
1515
//		.page_flip = &evergreen_page_flip,
1455
	},
1516
	},
1456
};
1517
};
Line 1457... Line 1518...
1457
 
1518
 
1458
static struct radeon_asic btc_asic = {
1519
static struct radeon_asic btc_asic = {
1459
	.init = &evergreen_init,
1520
	.init = &evergreen_init,
1460
//	.fini = &evergreen_fini,
1521
	.fini = &evergreen_fini,
1461
//	.suspend = &evergreen_suspend,
1522
//	.suspend = &evergreen_suspend,
1462
//	.resume = &evergreen_resume,
1523
//	.resume = &evergreen_resume,
1463
	.asic_reset = &evergreen_asic_reset,
1524
	.asic_reset = &evergreen_asic_reset,
1464
//	.vga_set_state = &r600_vga_set_state,
1525
//	.vga_set_state = &r600_vga_set_state,
1465
	.mmio_hdp_flush = r600_mmio_hdp_flush,
1526
	.mmio_hdp_flush = r600_mmio_hdp_flush,
1466
	.gui_idle = &r600_gui_idle,
1527
	.gui_idle = &r600_gui_idle,
1467
	.mc_wait_for_idle = &evergreen_mc_wait_for_idle,
1528
	.mc_wait_for_idle = &evergreen_mc_wait_for_idle,
1468
	.get_xclk = &rv770_get_xclk,
1529
	.get_xclk = &rv770_get_xclk,
-
 
1530
	.get_gpu_clock_counter = &r600_get_gpu_clock_counter,
1469
	.get_gpu_clock_counter = &r600_get_gpu_clock_counter,
1531
	.get_allowed_info_register = evergreen_get_allowed_info_register,
1470
	.gart = {
1532
	.gart = {
-
 
1533
		.tlb_flush = &evergreen_pcie_gart_tlb_flush,
1471
		.tlb_flush = &evergreen_pcie_gart_tlb_flush,
1534
		.get_page_entry = &rs600_gart_get_page_entry,
1472
		.set_page = &rs600_gart_set_page,
1535
		.set_page = &rs600_gart_set_page,
1473
	},
1536
	},
1474
	.ring = {
1537
	.ring = {
1475
		[RADEON_RING_TYPE_GFX_INDEX] = &evergreen_gfx_ring,
1538
		[RADEON_RING_TYPE_GFX_INDEX] = &evergreen_gfx_ring,
Line 1484... Line 1547...
1484
		.bandwidth_update = &evergreen_bandwidth_update,
1547
		.bandwidth_update = &evergreen_bandwidth_update,
1485
		.get_vblank_counter = &evergreen_get_vblank_counter,
1548
		.get_vblank_counter = &evergreen_get_vblank_counter,
1486
		.wait_for_vblank = &dce4_wait_for_vblank,
1549
		.wait_for_vblank = &dce4_wait_for_vblank,
1487
		.set_backlight_level = &atombios_set_backlight_level,
1550
		.set_backlight_level = &atombios_set_backlight_level,
1488
		.get_backlight_level = &atombios_get_backlight_level,
1551
		.get_backlight_level = &atombios_get_backlight_level,
1489
		.hdmi_enable = &evergreen_hdmi_enable,
-
 
1490
		.hdmi_setmode = &evergreen_hdmi_setmode,
-
 
1491
	},
1552
	},
1492
	.copy = {
1553
	.copy = {
1493
		.blit = &r600_copy_cpdma,
1554
		.blit = &r600_copy_cpdma,
1494
		.blit_ring_index = RADEON_RING_TYPE_GFX_INDEX,
1555
		.blit_ring_index = RADEON_RING_TYPE_GFX_INDEX,
1495
		.dma = &evergreen_copy_dma,
1556
		.dma = &evergreen_copy_dma,
Line 1538... Line 1599...
1538
		.get_mclk = &btc_dpm_get_mclk,
1599
		.get_mclk = &btc_dpm_get_mclk,
1539
		.print_power_state = &rv770_dpm_print_power_state,
1600
		.print_power_state = &rv770_dpm_print_power_state,
1540
		.debugfs_print_current_performance_level = &btc_dpm_debugfs_print_current_performance_level,
1601
		.debugfs_print_current_performance_level = &btc_dpm_debugfs_print_current_performance_level,
1541
		.force_performance_level = &rv770_dpm_force_performance_level,
1602
		.force_performance_level = &rv770_dpm_force_performance_level,
1542
		.vblank_too_short = &btc_dpm_vblank_too_short,
1603
		.vblank_too_short = &btc_dpm_vblank_too_short,
-
 
1604
		.get_current_sclk = &btc_dpm_get_current_sclk,
-
 
1605
		.get_current_mclk = &btc_dpm_get_current_mclk,
1543
	},
1606
	},
1544
	.pflip = {
1607
	.pflip = {
1545
//		.pre_page_flip = &evergreen_pre_page_flip,
1608
//		.pre_page_flip = &evergreen_pre_page_flip,
1546
//		.page_flip = &evergreen_page_flip,
1609
//		.page_flip = &evergreen_page_flip,
1547
	},
1610
	},
Line 1590... Line 1653...
1590
	.set_wptr = &uvd_v1_0_set_wptr,
1653
	.set_wptr = &uvd_v1_0_set_wptr,
1591
};
1654
};
Line 1592... Line 1655...
1592
 
1655
 
1593
static struct radeon_asic cayman_asic = {
1656
static struct radeon_asic cayman_asic = {
1594
	.init = &cayman_init,
1657
	.init = &cayman_init,
1595
//	.fini = &cayman_fini,
1658
	.fini = &cayman_fini,
1596
//	.suspend = &cayman_suspend,
1659
//	.suspend = &cayman_suspend,
1597
//	.resume = &cayman_resume,
1660
//	.resume = &cayman_resume,
1598
	.asic_reset = &cayman_asic_reset,
1661
	.asic_reset = &cayman_asic_reset,
1599
//	.vga_set_state = &r600_vga_set_state,
1662
//	.vga_set_state = &r600_vga_set_state,
1600
	.mmio_hdp_flush = r600_mmio_hdp_flush,
1663
	.mmio_hdp_flush = r600_mmio_hdp_flush,
1601
	.gui_idle = &r600_gui_idle,
1664
	.gui_idle = &r600_gui_idle,
1602
	.mc_wait_for_idle = &evergreen_mc_wait_for_idle,
1665
	.mc_wait_for_idle = &evergreen_mc_wait_for_idle,
1603
	.get_xclk = &rv770_get_xclk,
1666
	.get_xclk = &rv770_get_xclk,
-
 
1667
	.get_gpu_clock_counter = &r600_get_gpu_clock_counter,
1604
	.get_gpu_clock_counter = &r600_get_gpu_clock_counter,
1668
	.get_allowed_info_register = cayman_get_allowed_info_register,
1605
	.gart = {
1669
	.gart = {
-
 
1670
		.tlb_flush = &cayman_pcie_gart_tlb_flush,
1606
		.tlb_flush = &cayman_pcie_gart_tlb_flush,
1671
		.get_page_entry = &rs600_gart_get_page_entry,
1607
		.set_page = &rs600_gart_set_page,
1672
		.set_page = &rs600_gart_set_page,
1608
	},
1673
	},
1609
	.vm = {
1674
	.vm = {
1610
		.init = &cayman_vm_init,
1675
		.init = &cayman_vm_init,
Line 1630... Line 1695...
1630
		.bandwidth_update = &evergreen_bandwidth_update,
1695
		.bandwidth_update = &evergreen_bandwidth_update,
1631
		.get_vblank_counter = &evergreen_get_vblank_counter,
1696
		.get_vblank_counter = &evergreen_get_vblank_counter,
1632
		.wait_for_vblank = &dce4_wait_for_vblank,
1697
		.wait_for_vblank = &dce4_wait_for_vblank,
1633
		.set_backlight_level = &atombios_set_backlight_level,
1698
		.set_backlight_level = &atombios_set_backlight_level,
1634
		.get_backlight_level = &atombios_get_backlight_level,
1699
		.get_backlight_level = &atombios_get_backlight_level,
1635
		.hdmi_enable = &evergreen_hdmi_enable,
-
 
1636
		.hdmi_setmode = &evergreen_hdmi_setmode,
-
 
1637
	},
1700
	},
1638
	.copy = {
1701
	.copy = {
1639
		.blit = &r600_copy_cpdma,
1702
		.blit = &r600_copy_cpdma,
1640
		.blit_ring_index = RADEON_RING_TYPE_GFX_INDEX,
1703
		.blit_ring_index = RADEON_RING_TYPE_GFX_INDEX,
1641
		.dma = &evergreen_copy_dma,
1704
		.dma = &evergreen_copy_dma,
Line 1684... Line 1747...
1684
		.get_mclk = &ni_dpm_get_mclk,
1747
		.get_mclk = &ni_dpm_get_mclk,
1685
		.print_power_state = &ni_dpm_print_power_state,
1748
		.print_power_state = &ni_dpm_print_power_state,
1686
		.debugfs_print_current_performance_level = &ni_dpm_debugfs_print_current_performance_level,
1749
		.debugfs_print_current_performance_level = &ni_dpm_debugfs_print_current_performance_level,
1687
		.force_performance_level = &ni_dpm_force_performance_level,
1750
		.force_performance_level = &ni_dpm_force_performance_level,
1688
		.vblank_too_short = &ni_dpm_vblank_too_short,
1751
		.vblank_too_short = &ni_dpm_vblank_too_short,
-
 
1752
		.get_current_sclk = &ni_dpm_get_current_sclk,
-
 
1753
		.get_current_mclk = &ni_dpm_get_current_mclk,
1689
	},
1754
	},
1690
	.pflip = {
1755
	.pflip = {
1691
//		.pre_page_flip = &evergreen_pre_page_flip,
1756
//		.pre_page_flip = &evergreen_pre_page_flip,
1692
//		.page_flip = &evergreen_page_flip,
1757
//		.page_flip = &evergreen_page_flip,
1693
	},
1758
	},
1694
};
1759
};
Line -... Line 1760...
-
 
1760
 
-
 
1761
static struct radeon_asic_ring trinity_vce_ring = {
-
 
1762
	.ib_execute = &radeon_vce_ib_execute,
-
 
1763
	.emit_fence = &radeon_vce_fence_emit,
-
 
1764
	.emit_semaphore = &radeon_vce_semaphore_emit,
-
 
1765
	.cs_parse = &radeon_vce_cs_parse,
-
 
1766
	.ring_test = &radeon_vce_ring_test,
-
 
1767
	.ib_test = &radeon_vce_ib_test,
-
 
1768
	.is_lockup = &radeon_ring_test_lockup,
-
 
1769
	.get_rptr = &vce_v1_0_get_rptr,
-
 
1770
	.get_wptr = &vce_v1_0_get_wptr,
-
 
1771
	.set_wptr = &vce_v1_0_set_wptr,
-
 
1772
};
1695
 
1773
 
1696
static struct radeon_asic trinity_asic = {
1774
static struct radeon_asic trinity_asic = {
1697
	.init = &cayman_init,
1775
	.init = &cayman_init,
1698
//	.fini = &cayman_fini,
1776
	.fini = &cayman_fini,
1699
//	.suspend = &cayman_suspend,
1777
//	.suspend = &cayman_suspend,
1700
//	.resume = &cayman_resume,
1778
//	.resume = &cayman_resume,
1701
	.asic_reset = &cayman_asic_reset,
1779
	.asic_reset = &cayman_asic_reset,
1702
//	.vga_set_state = &r600_vga_set_state,
1780
//	.vga_set_state = &r600_vga_set_state,
1703
	.mmio_hdp_flush = r600_mmio_hdp_flush,
1781
	.mmio_hdp_flush = r600_mmio_hdp_flush,
1704
	.gui_idle = &r600_gui_idle,
1782
	.gui_idle = &r600_gui_idle,
1705
	.mc_wait_for_idle = &evergreen_mc_wait_for_idle,
1783
	.mc_wait_for_idle = &evergreen_mc_wait_for_idle,
1706
	.get_xclk = &r600_get_xclk,
1784
	.get_xclk = &r600_get_xclk,
-
 
1785
	.get_gpu_clock_counter = &r600_get_gpu_clock_counter,
1707
	.get_gpu_clock_counter = &r600_get_gpu_clock_counter,
1786
	.get_allowed_info_register = cayman_get_allowed_info_register,
1708
	.gart = {
1787
	.gart = {
-
 
1788
		.tlb_flush = &cayman_pcie_gart_tlb_flush,
1709
		.tlb_flush = &cayman_pcie_gart_tlb_flush,
1789
		.get_page_entry = &rs600_gart_get_page_entry,
1710
		.set_page = &rs600_gart_set_page,
1790
		.set_page = &rs600_gart_set_page,
1711
	},
1791
	},
1712
	.vm = {
1792
	.vm = {
1713
		.init = &cayman_vm_init,
1793
		.init = &cayman_vm_init,
Line 1722... Line 1802...
1722
		[CAYMAN_RING_TYPE_CP1_INDEX] = &cayman_gfx_ring,
1802
		[CAYMAN_RING_TYPE_CP1_INDEX] = &cayman_gfx_ring,
1723
		[CAYMAN_RING_TYPE_CP2_INDEX] = &cayman_gfx_ring,
1803
		[CAYMAN_RING_TYPE_CP2_INDEX] = &cayman_gfx_ring,
1724
		[R600_RING_TYPE_DMA_INDEX] = &cayman_dma_ring,
1804
		[R600_RING_TYPE_DMA_INDEX] = &cayman_dma_ring,
1725
		[CAYMAN_RING_TYPE_DMA1_INDEX] = &cayman_dma_ring,
1805
		[CAYMAN_RING_TYPE_DMA1_INDEX] = &cayman_dma_ring,
1726
		[R600_RING_TYPE_UVD_INDEX] = &cayman_uvd_ring,
1806
		[R600_RING_TYPE_UVD_INDEX] = &cayman_uvd_ring,
-
 
1807
		[TN_RING_TYPE_VCE1_INDEX] = &trinity_vce_ring,
-
 
1808
		[TN_RING_TYPE_VCE2_INDEX] = &trinity_vce_ring,
1727
	},
1809
	},
1728
	.irq = {
1810
	.irq = {
1729
		.set = &evergreen_irq_set,
1811
		.set = &evergreen_irq_set,
1730
		.process = &evergreen_irq_process,
1812
		.process = &evergreen_irq_process,
1731
	},
1813
	},
Line 1733... Line 1815...
1733
		.bandwidth_update = &dce6_bandwidth_update,
1815
		.bandwidth_update = &dce6_bandwidth_update,
1734
		.get_vblank_counter = &evergreen_get_vblank_counter,
1816
		.get_vblank_counter = &evergreen_get_vblank_counter,
1735
		.wait_for_vblank = &dce4_wait_for_vblank,
1817
		.wait_for_vblank = &dce4_wait_for_vblank,
1736
		.set_backlight_level = &atombios_set_backlight_level,
1818
		.set_backlight_level = &atombios_set_backlight_level,
1737
		.get_backlight_level = &atombios_get_backlight_level,
1819
		.get_backlight_level = &atombios_get_backlight_level,
1738
		.hdmi_enable = &evergreen_hdmi_enable,
-
 
1739
		.hdmi_setmode = &evergreen_hdmi_setmode,
-
 
1740
	},
1820
	},
1741
	.copy = {
1821
	.copy = {
1742
		.blit = &r600_copy_cpdma,
1822
		.blit = &r600_copy_cpdma,
1743
		.blit_ring_index = RADEON_RING_TYPE_GFX_INDEX,
1823
		.blit_ring_index = RADEON_RING_TYPE_GFX_INDEX,
1744
		.dma = &evergreen_copy_dma,
1824
		.dma = &evergreen_copy_dma,
Line 1768... Line 1848...
1768
		.set_memory_clock = NULL,
1848
		.set_memory_clock = NULL,
1769
		.get_pcie_lanes = NULL,
1849
		.get_pcie_lanes = NULL,
1770
		.set_pcie_lanes = NULL,
1850
		.set_pcie_lanes = NULL,
1771
		.set_clock_gating = NULL,
1851
		.set_clock_gating = NULL,
1772
		.set_uvd_clocks = &sumo_set_uvd_clocks,
1852
		.set_uvd_clocks = &sumo_set_uvd_clocks,
-
 
1853
		.set_vce_clocks = &tn_set_vce_clocks,
1773
		.get_temperature = &tn_get_temp,
1854
		.get_temperature = &tn_get_temp,
1774
	},
1855
	},
1775
	.dpm = {
1856
	.dpm = {
1776
		.init = &trinity_dpm_init,
1857
		.init = &trinity_dpm_init,
1777
		.setup_asic = &trinity_dpm_setup_asic,
1858
		.setup_asic = &trinity_dpm_setup_asic,
Line 1787... Line 1868...
1787
		.get_mclk = &trinity_dpm_get_mclk,
1868
		.get_mclk = &trinity_dpm_get_mclk,
1788
		.print_power_state = &trinity_dpm_print_power_state,
1869
		.print_power_state = &trinity_dpm_print_power_state,
1789
		.debugfs_print_current_performance_level = &trinity_dpm_debugfs_print_current_performance_level,
1870
		.debugfs_print_current_performance_level = &trinity_dpm_debugfs_print_current_performance_level,
1790
		.force_performance_level = &trinity_dpm_force_performance_level,
1871
		.force_performance_level = &trinity_dpm_force_performance_level,
1791
		.enable_bapm = &trinity_dpm_enable_bapm,
1872
		.enable_bapm = &trinity_dpm_enable_bapm,
-
 
1873
		.get_current_sclk = &trinity_dpm_get_current_sclk,
-
 
1874
		.get_current_mclk = &trinity_dpm_get_current_mclk,
1792
	},
1875
	},
1793
	.pflip = {
1876
	.pflip = {
1794
//		.pre_page_flip = &evergreen_pre_page_flip,
1877
//		.pre_page_flip = &evergreen_pre_page_flip,
1795
//		.page_flip = &evergreen_page_flip,
1878
//		.page_flip = &evergreen_page_flip,
1796
	},
1879
	},
Line 1826... Line 1909...
1826
	.set_wptr = &cayman_dma_set_wptr,
1909
	.set_wptr = &cayman_dma_set_wptr,
1827
};
1910
};
Line 1828... Line 1911...
1828
 
1911
 
1829
static struct radeon_asic si_asic = {
1912
static struct radeon_asic si_asic = {
1830
	.init = &si_init,
1913
	.init = &si_init,
1831
//	.fini = &si_fini,
1914
	.fini = &si_fini,
1832
//	.suspend = &si_suspend,
1915
//	.suspend = &si_suspend,
1833
//	.resume = &si_resume,
1916
	.resume = &si_resume,
1834
	.asic_reset = &si_asic_reset,
1917
	.asic_reset = &si_asic_reset,
1835
//	.vga_set_state = &r600_vga_set_state,
1918
//	.vga_set_state = &r600_vga_set_state,
1836
	.mmio_hdp_flush = r600_mmio_hdp_flush,
1919
	.mmio_hdp_flush = r600_mmio_hdp_flush,
1837
	.gui_idle = &r600_gui_idle,
1920
	.gui_idle = &r600_gui_idle,
1838
	.mc_wait_for_idle = &evergreen_mc_wait_for_idle,
1921
	.mc_wait_for_idle = &evergreen_mc_wait_for_idle,
1839
	.get_xclk = &si_get_xclk,
1922
	.get_xclk = &si_get_xclk,
-
 
1923
	.get_gpu_clock_counter = &si_get_gpu_clock_counter,
1840
	.get_gpu_clock_counter = &si_get_gpu_clock_counter,
1924
	.get_allowed_info_register = si_get_allowed_info_register,
1841
	.gart = {
1925
	.gart = {
-
 
1926
		.tlb_flush = &si_pcie_gart_tlb_flush,
1842
		.tlb_flush = &si_pcie_gart_tlb_flush,
1927
		.get_page_entry = &rs600_gart_get_page_entry,
1843
		.set_page = &rs600_gart_set_page,
1928
		.set_page = &rs600_gart_set_page,
1844
	},
1929
	},
1845
	.vm = {
1930
	.vm = {
1846
		.init = &si_vm_init,
1931
		.init = &si_vm_init,
Line 1855... Line 1940...
1855
		[CAYMAN_RING_TYPE_CP1_INDEX] = &si_gfx_ring,
1940
		[CAYMAN_RING_TYPE_CP1_INDEX] = &si_gfx_ring,
1856
		[CAYMAN_RING_TYPE_CP2_INDEX] = &si_gfx_ring,
1941
		[CAYMAN_RING_TYPE_CP2_INDEX] = &si_gfx_ring,
1857
		[R600_RING_TYPE_DMA_INDEX] = &si_dma_ring,
1942
		[R600_RING_TYPE_DMA_INDEX] = &si_dma_ring,
1858
		[CAYMAN_RING_TYPE_DMA1_INDEX] = &si_dma_ring,
1943
		[CAYMAN_RING_TYPE_DMA1_INDEX] = &si_dma_ring,
1859
		[R600_RING_TYPE_UVD_INDEX] = &cayman_uvd_ring,
1944
		[R600_RING_TYPE_UVD_INDEX] = &cayman_uvd_ring,
-
 
1945
		[TN_RING_TYPE_VCE1_INDEX] = &trinity_vce_ring,
-
 
1946
		[TN_RING_TYPE_VCE2_INDEX] = &trinity_vce_ring,
1860
	},
1947
	},
1861
	.irq = {
1948
	.irq = {
1862
		.set = &si_irq_set,
1949
		.set = &si_irq_set,
1863
		.process = &si_irq_process,
1950
		.process = &si_irq_process,
1864
	},
1951
	},
Line 1866... Line 1953...
1866
		.bandwidth_update = &dce6_bandwidth_update,
1953
		.bandwidth_update = &dce6_bandwidth_update,
1867
		.get_vblank_counter = &evergreen_get_vblank_counter,
1954
		.get_vblank_counter = &evergreen_get_vblank_counter,
1868
		.wait_for_vblank = &dce4_wait_for_vblank,
1955
		.wait_for_vblank = &dce4_wait_for_vblank,
1869
		.set_backlight_level = &atombios_set_backlight_level,
1956
		.set_backlight_level = &atombios_set_backlight_level,
1870
		.get_backlight_level = &atombios_get_backlight_level,
1957
		.get_backlight_level = &atombios_get_backlight_level,
1871
		.hdmi_enable = &evergreen_hdmi_enable,
-
 
1872
		.hdmi_setmode = &evergreen_hdmi_setmode,
-
 
1873
	},
1958
	},
1874
	.copy = {
1959
	.copy = {
1875
		.blit = &r600_copy_cpdma,
1960
		.blit = &r600_copy_cpdma,
1876
		.blit_ring_index = RADEON_RING_TYPE_GFX_INDEX,
1961
		.blit_ring_index = RADEON_RING_TYPE_GFX_INDEX,
1877
		.dma = &si_copy_dma,
1962
		.dma = &si_copy_dma,
Line 1901... Line 1986...
1901
		.set_memory_clock = &radeon_atom_set_memory_clock,
1986
		.set_memory_clock = &radeon_atom_set_memory_clock,
1902
		.get_pcie_lanes = &r600_get_pcie_lanes,
1987
		.get_pcie_lanes = &r600_get_pcie_lanes,
1903
		.set_pcie_lanes = &r600_set_pcie_lanes,
1988
		.set_pcie_lanes = &r600_set_pcie_lanes,
1904
		.set_clock_gating = NULL,
1989
		.set_clock_gating = NULL,
1905
		.set_uvd_clocks = &si_set_uvd_clocks,
1990
		.set_uvd_clocks = &si_set_uvd_clocks,
-
 
1991
		.set_vce_clocks = &si_set_vce_clocks,
1906
		.get_temperature = &si_get_temp,
1992
		.get_temperature = &si_get_temp,
1907
	},
1993
	},
1908
	.dpm = {
1994
	.dpm = {
1909
		.init = &si_dpm_init,
1995
		.init = &si_dpm_init,
1910
		.setup_asic = &si_dpm_setup_asic,
1996
		.setup_asic = &si_dpm_setup_asic,
Line 1920... Line 2006...
1920
		.get_mclk = &ni_dpm_get_mclk,
2006
		.get_mclk = &ni_dpm_get_mclk,
1921
		.print_power_state = &ni_dpm_print_power_state,
2007
		.print_power_state = &ni_dpm_print_power_state,
1922
		.debugfs_print_current_performance_level = &si_dpm_debugfs_print_current_performance_level,
2008
		.debugfs_print_current_performance_level = &si_dpm_debugfs_print_current_performance_level,
1923
		.force_performance_level = &si_dpm_force_performance_level,
2009
		.force_performance_level = &si_dpm_force_performance_level,
1924
		.vblank_too_short = &ni_dpm_vblank_too_short,
2010
		.vblank_too_short = &ni_dpm_vblank_too_short,
-
 
2011
		.fan_ctrl_set_mode = &si_fan_ctrl_set_mode,
-
 
2012
		.fan_ctrl_get_mode = &si_fan_ctrl_get_mode,
-
 
2013
		.get_fan_speed_percent = &si_fan_ctrl_get_fan_speed_percent,
-
 
2014
		.set_fan_speed_percent = &si_fan_ctrl_set_fan_speed_percent,
-
 
2015
		.get_current_sclk = &si_dpm_get_current_sclk,
-
 
2016
		.get_current_mclk = &si_dpm_get_current_mclk,
1925
	},
2017
	},
1926
	.pflip = {
2018
	.pflip = {
1927
//		.pre_page_flip = &evergreen_pre_page_flip,
2019
//		.pre_page_flip = &evergreen_pre_page_flip,
1928
//		.page_flip = &evergreen_page_flip,
2020
//		.page_flip = &evergreen_page_flip,
1929
	},
2021
	},
Line 1987... Line 2079...
1987
	.set_wptr = &vce_v1_0_set_wptr,
2079
	.set_wptr = &vce_v1_0_set_wptr,
1988
};
2080
};
Line 1989... Line 2081...
1989
 
2081
 
1990
static struct radeon_asic ci_asic = {
2082
static struct radeon_asic ci_asic = {
1991
	.init = &cik_init,
2083
	.init = &cik_init,
1992
//	.fini = &si_fini,
2084
	.fini = &cik_fini,
1993
//	.suspend = &si_suspend,
2085
//	.suspend = &cik_suspend,
1994
//	.resume = &si_resume,
2086
//	.resume = &cik_resume,
1995
	.asic_reset = &cik_asic_reset,
2087
	.asic_reset = &cik_asic_reset,
1996
//	.vga_set_state = &r600_vga_set_state,
2088
//	.vga_set_state = &r600_vga_set_state,
1997
	.mmio_hdp_flush = &r600_mmio_hdp_flush,
2089
	.mmio_hdp_flush = &r600_mmio_hdp_flush,
1998
	.gui_idle = &r600_gui_idle,
2090
	.gui_idle = &r600_gui_idle,
1999
	.mc_wait_for_idle = &evergreen_mc_wait_for_idle,
2091
	.mc_wait_for_idle = &evergreen_mc_wait_for_idle,
2000
	.get_xclk = &cik_get_xclk,
2092
	.get_xclk = &cik_get_xclk,
-
 
2093
	.get_gpu_clock_counter = &cik_get_gpu_clock_counter,
2001
	.get_gpu_clock_counter = &cik_get_gpu_clock_counter,
2094
	.get_allowed_info_register = cik_get_allowed_info_register,
2002
	.gart = {
2095
	.gart = {
-
 
2096
		.tlb_flush = &cik_pcie_gart_tlb_flush,
2003
		.tlb_flush = &cik_pcie_gart_tlb_flush,
2097
		.get_page_entry = &rs600_gart_get_page_entry,
2004
		.set_page = &rs600_gart_set_page,
2098
		.set_page = &rs600_gart_set_page,
2005
	},
2099
	},
2006
	.vm = {
2100
	.vm = {
2007
		.init = &cik_vm_init,
2101
		.init = &cik_vm_init,
Line 2029... Line 2123...
2029
		.bandwidth_update = &dce8_bandwidth_update,
2123
		.bandwidth_update = &dce8_bandwidth_update,
2030
		.get_vblank_counter = &evergreen_get_vblank_counter,
2124
		.get_vblank_counter = &evergreen_get_vblank_counter,
2031
		.wait_for_vblank = &dce4_wait_for_vblank,
2125
		.wait_for_vblank = &dce4_wait_for_vblank,
2032
		.set_backlight_level = &atombios_set_backlight_level,
2126
		.set_backlight_level = &atombios_set_backlight_level,
2033
		.get_backlight_level = &atombios_get_backlight_level,
2127
		.get_backlight_level = &atombios_get_backlight_level,
2034
		.hdmi_enable = &evergreen_hdmi_enable,
-
 
2035
		.hdmi_setmode = &evergreen_hdmi_setmode,
-
 
2036
	},
2128
	},
2037
	.copy = {
2129
	.copy = {
2038
		.blit = &cik_copy_cpdma,
2130
		.blit = &cik_copy_cpdma,
2039
		.blit_ring_index = RADEON_RING_TYPE_GFX_INDEX,
2131
		.blit_ring_index = RADEON_RING_TYPE_GFX_INDEX,
2040
		.dma = &cik_copy_dma,
2132
		.dma = &cik_copy_dma,
Line 2085... Line 2177...
2085
		.print_power_state = &ci_dpm_print_power_state,
2177
		.print_power_state = &ci_dpm_print_power_state,
2086
		.debugfs_print_current_performance_level = &ci_dpm_debugfs_print_current_performance_level,
2178
		.debugfs_print_current_performance_level = &ci_dpm_debugfs_print_current_performance_level,
2087
		.force_performance_level = &ci_dpm_force_performance_level,
2179
		.force_performance_level = &ci_dpm_force_performance_level,
2088
		.vblank_too_short = &ci_dpm_vblank_too_short,
2180
		.vblank_too_short = &ci_dpm_vblank_too_short,
2089
		.powergate_uvd = &ci_dpm_powergate_uvd,
2181
		.powergate_uvd = &ci_dpm_powergate_uvd,
-
 
2182
		.fan_ctrl_set_mode = &ci_fan_ctrl_set_mode,
-
 
2183
		.fan_ctrl_get_mode = &ci_fan_ctrl_get_mode,
-
 
2184
		.get_fan_speed_percent = &ci_fan_ctrl_get_fan_speed_percent,
-
 
2185
		.set_fan_speed_percent = &ci_fan_ctrl_set_fan_speed_percent,
-
 
2186
		.get_current_sclk = &ci_dpm_get_current_sclk,
-
 
2187
		.get_current_mclk = &ci_dpm_get_current_mclk,
2090
	},
2188
	},
2091
	.pflip = {
2189
	.pflip = {
2092
//		.pre_page_flip = &evergreen_pre_page_flip,
2190
//		.pre_page_flip = &evergreen_pre_page_flip,
2093
//		.page_flip = &evergreen_page_flip,
2191
//		.page_flip = &evergreen_page_flip,
2094
	},
2192
	},
2095
};
2193
};
Line 2096... Line 2194...
2096
 
2194
 
2097
static struct radeon_asic kv_asic = {
2195
static struct radeon_asic kv_asic = {
2098
	.init = &cik_init,
2196
	.init = &cik_init,
2099
//	.fini = &si_fini,
2197
	.fini = &cik_fini,
2100
//	.suspend = &si_suspend,
2198
//	.suspend = &cik_suspend,
2101
//	.resume = &si_resume,
2199
//	.resume = &cik_resume,
2102
	.asic_reset = &cik_asic_reset,
2200
	.asic_reset = &cik_asic_reset,
2103
//	.vga_set_state = &r600_vga_set_state,
2201
//	.vga_set_state = &r600_vga_set_state,
2104
	.mmio_hdp_flush = &r600_mmio_hdp_flush,
2202
	.mmio_hdp_flush = &r600_mmio_hdp_flush,
2105
	.gui_idle = &r600_gui_idle,
2203
	.gui_idle = &r600_gui_idle,
2106
	.mc_wait_for_idle = &evergreen_mc_wait_for_idle,
2204
	.mc_wait_for_idle = &evergreen_mc_wait_for_idle,
2107
	.get_xclk = &cik_get_xclk,
2205
	.get_xclk = &cik_get_xclk,
-
 
2206
	.get_gpu_clock_counter = &cik_get_gpu_clock_counter,
2108
	.get_gpu_clock_counter = &cik_get_gpu_clock_counter,
2207
	.get_allowed_info_register = cik_get_allowed_info_register,
2109
	.gart = {
2208
	.gart = {
-
 
2209
		.tlb_flush = &cik_pcie_gart_tlb_flush,
2110
		.tlb_flush = &cik_pcie_gart_tlb_flush,
2210
		.get_page_entry = &rs600_gart_get_page_entry,
2111
		.set_page = &rs600_gart_set_page,
2211
		.set_page = &rs600_gart_set_page,
2112
	},
2212
	},
2113
	.vm = {
2213
	.vm = {
2114
		.init = &cik_vm_init,
2214
		.init = &cik_vm_init,
Line 2136... Line 2236...
2136
		.bandwidth_update = &dce8_bandwidth_update,
2236
		.bandwidth_update = &dce8_bandwidth_update,
2137
		.get_vblank_counter = &evergreen_get_vblank_counter,
2237
		.get_vblank_counter = &evergreen_get_vblank_counter,
2138
		.wait_for_vblank = &dce4_wait_for_vblank,
2238
		.wait_for_vblank = &dce4_wait_for_vblank,
2139
		.set_backlight_level = &atombios_set_backlight_level,
2239
		.set_backlight_level = &atombios_set_backlight_level,
2140
		.get_backlight_level = &atombios_get_backlight_level,
2240
		.get_backlight_level = &atombios_get_backlight_level,
2141
		.hdmi_enable = &evergreen_hdmi_enable,
-
 
2142
		.hdmi_setmode = &evergreen_hdmi_setmode,
-
 
2143
	},
2241
	},
2144
	.copy = {
2242
	.copy = {
2145
		.blit = &cik_copy_cpdma,
2243
		.blit = &cik_copy_cpdma,
2146
		.blit_ring_index = RADEON_RING_TYPE_GFX_INDEX,
2244
		.blit_ring_index = RADEON_RING_TYPE_GFX_INDEX,
2147
		.dma = &cik_copy_dma,
2245
		.dma = &cik_copy_dma,
Line 2192... Line 2290...
2192
		.print_power_state = &kv_dpm_print_power_state,
2290
		.print_power_state = &kv_dpm_print_power_state,
2193
		.debugfs_print_current_performance_level = &kv_dpm_debugfs_print_current_performance_level,
2291
		.debugfs_print_current_performance_level = &kv_dpm_debugfs_print_current_performance_level,
2194
		.force_performance_level = &kv_dpm_force_performance_level,
2292
		.force_performance_level = &kv_dpm_force_performance_level,
2195
		.powergate_uvd = &kv_dpm_powergate_uvd,
2293
		.powergate_uvd = &kv_dpm_powergate_uvd,
2196
		.enable_bapm = &kv_dpm_enable_bapm,
2294
		.enable_bapm = &kv_dpm_enable_bapm,
-
 
2295
		.get_current_sclk = &kv_dpm_get_current_sclk,
-
 
2296
		.get_current_mclk = &kv_dpm_get_current_mclk,
2197
	},
2297
	},
2198
	.pflip = {
2298
	.pflip = {
2199
//		.pre_page_flip = &evergreen_pre_page_flip,
2299
//		.pre_page_flip = &evergreen_pre_page_flip,
2200
//		.page_flip = &evergreen_page_flip,
2300
//		.page_flip = &evergreen_page_flip,
2201
	},
2301
	},
Line 2350... Line 2450...
2350
	case CHIP_ARUBA:
2450
	case CHIP_ARUBA:
2351
		rdev->asic = &trinity_asic;
2451
		rdev->asic = &trinity_asic;
2352
		/* set num crtcs */
2452
		/* set num crtcs */
2353
		rdev->num_crtc = 4;
2453
		rdev->num_crtc = 4;
2354
		rdev->has_uvd = true;
2454
		rdev->has_uvd = true;
-
 
2455
		rdev->cg_flags =
-
 
2456
			RADEON_CG_SUPPORT_VCE_MGCG;
2355
		break;
2457
		break;
2356
	case CHIP_TAHITI:
2458
	case CHIP_TAHITI:
2357
	case CHIP_PITCAIRN:
2459
	case CHIP_PITCAIRN:
2358
	case CHIP_VERDE:
2460
	case CHIP_VERDE:
2359
	case CHIP_OLAND:
2461
	case CHIP_OLAND: