diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2012-01-10 14:04:36 -0500 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2012-01-10 14:04:36 -0500 |
commit | 1a464cbb3d483f2f195b614cffa4aa1b910a0440 (patch) | |
tree | af57dee6436532dbb546b8670e9e1f6910d489b5 /drivers/gpu/drm/radeon/radeon_asic.c | |
parent | dbe950f201a8edd353b0bd9079e8d536ee4ce37c (diff) | |
parent | 095f979a539245a46b9e5d600ec9c720b4d928e5 (diff) |
Merge branch 'drm-core-next' of git://people.freedesktop.org/~airlied/linux
* 'drm-core-next' of git://people.freedesktop.org/~airlied/linux: (307 commits)
drm/nouveau/pm: fix build with HWMON off
gma500: silence gcc warnings in mid_get_vbt_data()
drm/ttm: fix condition (and vs or)
drm/radeon: double lock typo in radeon_vm_bo_rmv()
drm/radeon: use after free in radeon_vm_bo_add()
drm/sis|via: don't return stack garbage from free_mem ioctl
drm/radeon/kms: remove pointless CS flags priority struct
drm/radeon/kms: check if vm is supported in VA ioctl
drm: introduce drm_can_sleep and use in intel/radeon drivers. (v2)
radeon: Fix disabling PCI bus mastering on big endian hosts.
ttm: fix agp since ttm tt rework
agp: Fix multi-line warning message whitespace
drm/ttm/dma: Fix accounting error when calling ttm_mem_global_free_page and don't try to free freed pages.
drm/ttm/dma: Only call set_pages_array_wb when the page is not in WB pool.
drm/radeon/kms: sync across multiple rings when doing bo moves v3
drm/radeon/kms: Add support for multi-ring sync in CS ioctl (v2)
drm/radeon: GPU virtual memory support v22
drm: make DRM_UNLOCKED ioctls with their own mutex
drm: no need to hold global mutex for static data
drm/radeon/benchmark: common modes sweep ignores 640x480@32
...
Fix up trivial conflicts in radeon/evergreen.c and vmwgfx/vmwgfx_kms.c
Diffstat (limited to 'drivers/gpu/drm/radeon/radeon_asic.c')
-rw-r--r-- | drivers/gpu/drm/radeon/radeon_asic.c | 197 |
1 files changed, 146 insertions, 51 deletions
diff --git a/drivers/gpu/drm/radeon/radeon_asic.c b/drivers/gpu/drm/radeon/radeon_asic.c index a2e1eae114ef..36a6192ce862 100644 --- a/drivers/gpu/drm/radeon/radeon_asic.c +++ b/drivers/gpu/drm/radeon/radeon_asic.c | |||
@@ -138,14 +138,18 @@ static struct radeon_asic r100_asic = { | |||
138 | .asic_reset = &r100_asic_reset, | 138 | .asic_reset = &r100_asic_reset, |
139 | .gart_tlb_flush = &r100_pci_gart_tlb_flush, | 139 | .gart_tlb_flush = &r100_pci_gart_tlb_flush, |
140 | .gart_set_page = &r100_pci_gart_set_page, | 140 | .gart_set_page = &r100_pci_gart_set_page, |
141 | .cp_commit = &r100_cp_commit, | ||
142 | .ring_start = &r100_ring_start, | 141 | .ring_start = &r100_ring_start, |
143 | .ring_test = &r100_ring_test, | 142 | .ring_test = &r100_ring_test, |
144 | .ring_ib_execute = &r100_ring_ib_execute, | 143 | .ring = { |
144 | [RADEON_RING_TYPE_GFX_INDEX] = { | ||
145 | .ib_execute = &r100_ring_ib_execute, | ||
146 | .emit_fence = &r100_fence_ring_emit, | ||
147 | .emit_semaphore = &r100_semaphore_ring_emit, | ||
148 | } | ||
149 | }, | ||
145 | .irq_set = &r100_irq_set, | 150 | .irq_set = &r100_irq_set, |
146 | .irq_process = &r100_irq_process, | 151 | .irq_process = &r100_irq_process, |
147 | .get_vblank_counter = &r100_get_vblank_counter, | 152 | .get_vblank_counter = &r100_get_vblank_counter, |
148 | .fence_ring_emit = &r100_fence_ring_emit, | ||
149 | .cs_parse = &r100_cs_parse, | 153 | .cs_parse = &r100_cs_parse, |
150 | .copy_blit = &r100_copy_blit, | 154 | .copy_blit = &r100_copy_blit, |
151 | .copy_dma = NULL, | 155 | .copy_dma = NULL, |
@@ -186,14 +190,18 @@ static struct radeon_asic r200_asic = { | |||
186 | .asic_reset = &r100_asic_reset, | 190 | .asic_reset = &r100_asic_reset, |
187 | .gart_tlb_flush = &r100_pci_gart_tlb_flush, | 191 | .gart_tlb_flush = &r100_pci_gart_tlb_flush, |
188 | .gart_set_page = &r100_pci_gart_set_page, | 192 | .gart_set_page = &r100_pci_gart_set_page, |
189 | .cp_commit = &r100_cp_commit, | ||
190 | .ring_start = &r100_ring_start, | 193 | .ring_start = &r100_ring_start, |
191 | .ring_test = &r100_ring_test, | 194 | .ring_test = &r100_ring_test, |
192 | .ring_ib_execute = &r100_ring_ib_execute, | 195 | .ring = { |
196 | [RADEON_RING_TYPE_GFX_INDEX] = { | ||
197 | .ib_execute = &r100_ring_ib_execute, | ||
198 | .emit_fence = &r100_fence_ring_emit, | ||
199 | .emit_semaphore = &r100_semaphore_ring_emit, | ||
200 | } | ||
201 | }, | ||
193 | .irq_set = &r100_irq_set, | 202 | .irq_set = &r100_irq_set, |
194 | .irq_process = &r100_irq_process, | 203 | .irq_process = &r100_irq_process, |
195 | .get_vblank_counter = &r100_get_vblank_counter, | 204 | .get_vblank_counter = &r100_get_vblank_counter, |
196 | .fence_ring_emit = &r100_fence_ring_emit, | ||
197 | .cs_parse = &r100_cs_parse, | 205 | .cs_parse = &r100_cs_parse, |
198 | .copy_blit = &r100_copy_blit, | 206 | .copy_blit = &r100_copy_blit, |
199 | .copy_dma = &r200_copy_dma, | 207 | .copy_dma = &r200_copy_dma, |
@@ -233,14 +241,18 @@ static struct radeon_asic r300_asic = { | |||
233 | .asic_reset = &r300_asic_reset, | 241 | .asic_reset = &r300_asic_reset, |
234 | .gart_tlb_flush = &r100_pci_gart_tlb_flush, | 242 | .gart_tlb_flush = &r100_pci_gart_tlb_flush, |
235 | .gart_set_page = &r100_pci_gart_set_page, | 243 | .gart_set_page = &r100_pci_gart_set_page, |
236 | .cp_commit = &r100_cp_commit, | ||
237 | .ring_start = &r300_ring_start, | 244 | .ring_start = &r300_ring_start, |
238 | .ring_test = &r100_ring_test, | 245 | .ring_test = &r100_ring_test, |
239 | .ring_ib_execute = &r100_ring_ib_execute, | 246 | .ring = { |
247 | [RADEON_RING_TYPE_GFX_INDEX] = { | ||
248 | .ib_execute = &r100_ring_ib_execute, | ||
249 | .emit_fence = &r300_fence_ring_emit, | ||
250 | .emit_semaphore = &r100_semaphore_ring_emit, | ||
251 | } | ||
252 | }, | ||
240 | .irq_set = &r100_irq_set, | 253 | .irq_set = &r100_irq_set, |
241 | .irq_process = &r100_irq_process, | 254 | .irq_process = &r100_irq_process, |
242 | .get_vblank_counter = &r100_get_vblank_counter, | 255 | .get_vblank_counter = &r100_get_vblank_counter, |
243 | .fence_ring_emit = &r300_fence_ring_emit, | ||
244 | .cs_parse = &r300_cs_parse, | 256 | .cs_parse = &r300_cs_parse, |
245 | .copy_blit = &r100_copy_blit, | 257 | .copy_blit = &r100_copy_blit, |
246 | .copy_dma = &r200_copy_dma, | 258 | .copy_dma = &r200_copy_dma, |
@@ -281,14 +293,18 @@ static struct radeon_asic r300_asic_pcie = { | |||
281 | .asic_reset = &r300_asic_reset, | 293 | .asic_reset = &r300_asic_reset, |
282 | .gart_tlb_flush = &rv370_pcie_gart_tlb_flush, | 294 | .gart_tlb_flush = &rv370_pcie_gart_tlb_flush, |
283 | .gart_set_page = &rv370_pcie_gart_set_page, | 295 | .gart_set_page = &rv370_pcie_gart_set_page, |
284 | .cp_commit = &r100_cp_commit, | ||
285 | .ring_start = &r300_ring_start, | 296 | .ring_start = &r300_ring_start, |
286 | .ring_test = &r100_ring_test, | 297 | .ring_test = &r100_ring_test, |
287 | .ring_ib_execute = &r100_ring_ib_execute, | 298 | .ring = { |
299 | [RADEON_RING_TYPE_GFX_INDEX] = { | ||
300 | .ib_execute = &r100_ring_ib_execute, | ||
301 | .emit_fence = &r300_fence_ring_emit, | ||
302 | .emit_semaphore = &r100_semaphore_ring_emit, | ||
303 | } | ||
304 | }, | ||
288 | .irq_set = &r100_irq_set, | 305 | .irq_set = &r100_irq_set, |
289 | .irq_process = &r100_irq_process, | 306 | .irq_process = &r100_irq_process, |
290 | .get_vblank_counter = &r100_get_vblank_counter, | 307 | .get_vblank_counter = &r100_get_vblank_counter, |
291 | .fence_ring_emit = &r300_fence_ring_emit, | ||
292 | .cs_parse = &r300_cs_parse, | 308 | .cs_parse = &r300_cs_parse, |
293 | .copy_blit = &r100_copy_blit, | 309 | .copy_blit = &r100_copy_blit, |
294 | .copy_dma = &r200_copy_dma, | 310 | .copy_dma = &r200_copy_dma, |
@@ -328,14 +344,18 @@ static struct radeon_asic r420_asic = { | |||
328 | .asic_reset = &r300_asic_reset, | 344 | .asic_reset = &r300_asic_reset, |
329 | .gart_tlb_flush = &rv370_pcie_gart_tlb_flush, | 345 | .gart_tlb_flush = &rv370_pcie_gart_tlb_flush, |
330 | .gart_set_page = &rv370_pcie_gart_set_page, | 346 | .gart_set_page = &rv370_pcie_gart_set_page, |
331 | .cp_commit = &r100_cp_commit, | ||
332 | .ring_start = &r300_ring_start, | 347 | .ring_start = &r300_ring_start, |
333 | .ring_test = &r100_ring_test, | 348 | .ring_test = &r100_ring_test, |
334 | .ring_ib_execute = &r100_ring_ib_execute, | 349 | .ring = { |
350 | [RADEON_RING_TYPE_GFX_INDEX] = { | ||
351 | .ib_execute = &r100_ring_ib_execute, | ||
352 | .emit_fence = &r300_fence_ring_emit, | ||
353 | .emit_semaphore = &r100_semaphore_ring_emit, | ||
354 | } | ||
355 | }, | ||
335 | .irq_set = &r100_irq_set, | 356 | .irq_set = &r100_irq_set, |
336 | .irq_process = &r100_irq_process, | 357 | .irq_process = &r100_irq_process, |
337 | .get_vblank_counter = &r100_get_vblank_counter, | 358 | .get_vblank_counter = &r100_get_vblank_counter, |
338 | .fence_ring_emit = &r300_fence_ring_emit, | ||
339 | .cs_parse = &r300_cs_parse, | 359 | .cs_parse = &r300_cs_parse, |
340 | .copy_blit = &r100_copy_blit, | 360 | .copy_blit = &r100_copy_blit, |
341 | .copy_dma = &r200_copy_dma, | 361 | .copy_dma = &r200_copy_dma, |
@@ -376,14 +396,18 @@ static struct radeon_asic rs400_asic = { | |||
376 | .asic_reset = &r300_asic_reset, | 396 | .asic_reset = &r300_asic_reset, |
377 | .gart_tlb_flush = &rs400_gart_tlb_flush, | 397 | .gart_tlb_flush = &rs400_gart_tlb_flush, |
378 | .gart_set_page = &rs400_gart_set_page, | 398 | .gart_set_page = &rs400_gart_set_page, |
379 | .cp_commit = &r100_cp_commit, | ||
380 | .ring_start = &r300_ring_start, | 399 | .ring_start = &r300_ring_start, |
381 | .ring_test = &r100_ring_test, | 400 | .ring_test = &r100_ring_test, |
382 | .ring_ib_execute = &r100_ring_ib_execute, | 401 | .ring = { |
402 | [RADEON_RING_TYPE_GFX_INDEX] = { | ||
403 | .ib_execute = &r100_ring_ib_execute, | ||
404 | .emit_fence = &r300_fence_ring_emit, | ||
405 | .emit_semaphore = &r100_semaphore_ring_emit, | ||
406 | } | ||
407 | }, | ||
383 | .irq_set = &r100_irq_set, | 408 | .irq_set = &r100_irq_set, |
384 | .irq_process = &r100_irq_process, | 409 | .irq_process = &r100_irq_process, |
385 | .get_vblank_counter = &r100_get_vblank_counter, | 410 | .get_vblank_counter = &r100_get_vblank_counter, |
386 | .fence_ring_emit = &r300_fence_ring_emit, | ||
387 | .cs_parse = &r300_cs_parse, | 411 | .cs_parse = &r300_cs_parse, |
388 | .copy_blit = &r100_copy_blit, | 412 | .copy_blit = &r100_copy_blit, |
389 | .copy_dma = &r200_copy_dma, | 413 | .copy_dma = &r200_copy_dma, |
@@ -424,14 +448,18 @@ static struct radeon_asic rs600_asic = { | |||
424 | .asic_reset = &rs600_asic_reset, | 448 | .asic_reset = &rs600_asic_reset, |
425 | .gart_tlb_flush = &rs600_gart_tlb_flush, | 449 | .gart_tlb_flush = &rs600_gart_tlb_flush, |
426 | .gart_set_page = &rs600_gart_set_page, | 450 | .gart_set_page = &rs600_gart_set_page, |
427 | .cp_commit = &r100_cp_commit, | ||
428 | .ring_start = &r300_ring_start, | 451 | .ring_start = &r300_ring_start, |
429 | .ring_test = &r100_ring_test, | 452 | .ring_test = &r100_ring_test, |
430 | .ring_ib_execute = &r100_ring_ib_execute, | 453 | .ring = { |
454 | [RADEON_RING_TYPE_GFX_INDEX] = { | ||
455 | .ib_execute = &r100_ring_ib_execute, | ||
456 | .emit_fence = &r300_fence_ring_emit, | ||
457 | .emit_semaphore = &r100_semaphore_ring_emit, | ||
458 | } | ||
459 | }, | ||
431 | .irq_set = &rs600_irq_set, | 460 | .irq_set = &rs600_irq_set, |
432 | .irq_process = &rs600_irq_process, | 461 | .irq_process = &rs600_irq_process, |
433 | .get_vblank_counter = &rs600_get_vblank_counter, | 462 | .get_vblank_counter = &rs600_get_vblank_counter, |
434 | .fence_ring_emit = &r300_fence_ring_emit, | ||
435 | .cs_parse = &r300_cs_parse, | 463 | .cs_parse = &r300_cs_parse, |
436 | .copy_blit = &r100_copy_blit, | 464 | .copy_blit = &r100_copy_blit, |
437 | .copy_dma = &r200_copy_dma, | 465 | .copy_dma = &r200_copy_dma, |
@@ -472,14 +500,18 @@ static struct radeon_asic rs690_asic = { | |||
472 | .asic_reset = &rs600_asic_reset, | 500 | .asic_reset = &rs600_asic_reset, |
473 | .gart_tlb_flush = &rs400_gart_tlb_flush, | 501 | .gart_tlb_flush = &rs400_gart_tlb_flush, |
474 | .gart_set_page = &rs400_gart_set_page, | 502 | .gart_set_page = &rs400_gart_set_page, |
475 | .cp_commit = &r100_cp_commit, | ||
476 | .ring_start = &r300_ring_start, | 503 | .ring_start = &r300_ring_start, |
477 | .ring_test = &r100_ring_test, | 504 | .ring_test = &r100_ring_test, |
478 | .ring_ib_execute = &r100_ring_ib_execute, | 505 | .ring = { |
506 | [RADEON_RING_TYPE_GFX_INDEX] = { | ||
507 | .ib_execute = &r100_ring_ib_execute, | ||
508 | .emit_fence = &r300_fence_ring_emit, | ||
509 | .emit_semaphore = &r100_semaphore_ring_emit, | ||
510 | } | ||
511 | }, | ||
479 | .irq_set = &rs600_irq_set, | 512 | .irq_set = &rs600_irq_set, |
480 | .irq_process = &rs600_irq_process, | 513 | .irq_process = &rs600_irq_process, |
481 | .get_vblank_counter = &rs600_get_vblank_counter, | 514 | .get_vblank_counter = &rs600_get_vblank_counter, |
482 | .fence_ring_emit = &r300_fence_ring_emit, | ||
483 | .cs_parse = &r300_cs_parse, | 515 | .cs_parse = &r300_cs_parse, |
484 | .copy_blit = &r100_copy_blit, | 516 | .copy_blit = &r100_copy_blit, |
485 | .copy_dma = &r200_copy_dma, | 517 | .copy_dma = &r200_copy_dma, |
@@ -520,14 +552,18 @@ static struct radeon_asic rv515_asic = { | |||
520 | .asic_reset = &rs600_asic_reset, | 552 | .asic_reset = &rs600_asic_reset, |
521 | .gart_tlb_flush = &rv370_pcie_gart_tlb_flush, | 553 | .gart_tlb_flush = &rv370_pcie_gart_tlb_flush, |
522 | .gart_set_page = &rv370_pcie_gart_set_page, | 554 | .gart_set_page = &rv370_pcie_gart_set_page, |
523 | .cp_commit = &r100_cp_commit, | ||
524 | .ring_start = &rv515_ring_start, | 555 | .ring_start = &rv515_ring_start, |
525 | .ring_test = &r100_ring_test, | 556 | .ring_test = &r100_ring_test, |
526 | .ring_ib_execute = &r100_ring_ib_execute, | 557 | .ring = { |
558 | [RADEON_RING_TYPE_GFX_INDEX] = { | ||
559 | .ib_execute = &r100_ring_ib_execute, | ||
560 | .emit_fence = &r300_fence_ring_emit, | ||
561 | .emit_semaphore = &r100_semaphore_ring_emit, | ||
562 | } | ||
563 | }, | ||
527 | .irq_set = &rs600_irq_set, | 564 | .irq_set = &rs600_irq_set, |
528 | .irq_process = &rs600_irq_process, | 565 | .irq_process = &rs600_irq_process, |
529 | .get_vblank_counter = &rs600_get_vblank_counter, | 566 | .get_vblank_counter = &rs600_get_vblank_counter, |
530 | .fence_ring_emit = &r300_fence_ring_emit, | ||
531 | .cs_parse = &r300_cs_parse, | 567 | .cs_parse = &r300_cs_parse, |
532 | .copy_blit = &r100_copy_blit, | 568 | .copy_blit = &r100_copy_blit, |
533 | .copy_dma = &r200_copy_dma, | 569 | .copy_dma = &r200_copy_dma, |
@@ -568,14 +604,18 @@ static struct radeon_asic r520_asic = { | |||
568 | .asic_reset = &rs600_asic_reset, | 604 | .asic_reset = &rs600_asic_reset, |
569 | .gart_tlb_flush = &rv370_pcie_gart_tlb_flush, | 605 | .gart_tlb_flush = &rv370_pcie_gart_tlb_flush, |
570 | .gart_set_page = &rv370_pcie_gart_set_page, | 606 | .gart_set_page = &rv370_pcie_gart_set_page, |
571 | .cp_commit = &r100_cp_commit, | ||
572 | .ring_start = &rv515_ring_start, | 607 | .ring_start = &rv515_ring_start, |
573 | .ring_test = &r100_ring_test, | 608 | .ring_test = &r100_ring_test, |
574 | .ring_ib_execute = &r100_ring_ib_execute, | 609 | .ring = { |
610 | [RADEON_RING_TYPE_GFX_INDEX] = { | ||
611 | .ib_execute = &r100_ring_ib_execute, | ||
612 | .emit_fence = &r300_fence_ring_emit, | ||
613 | .emit_semaphore = &r100_semaphore_ring_emit, | ||
614 | } | ||
615 | }, | ||
575 | .irq_set = &rs600_irq_set, | 616 | .irq_set = &rs600_irq_set, |
576 | .irq_process = &rs600_irq_process, | 617 | .irq_process = &rs600_irq_process, |
577 | .get_vblank_counter = &rs600_get_vblank_counter, | 618 | .get_vblank_counter = &rs600_get_vblank_counter, |
578 | .fence_ring_emit = &r300_fence_ring_emit, | ||
579 | .cs_parse = &r300_cs_parse, | 619 | .cs_parse = &r300_cs_parse, |
580 | .copy_blit = &r100_copy_blit, | 620 | .copy_blit = &r100_copy_blit, |
581 | .copy_dma = &r200_copy_dma, | 621 | .copy_dma = &r200_copy_dma, |
@@ -611,18 +651,22 @@ static struct radeon_asic r600_asic = { | |||
611 | .fini = &r600_fini, | 651 | .fini = &r600_fini, |
612 | .suspend = &r600_suspend, | 652 | .suspend = &r600_suspend, |
613 | .resume = &r600_resume, | 653 | .resume = &r600_resume, |
614 | .cp_commit = &r600_cp_commit, | ||
615 | .vga_set_state = &r600_vga_set_state, | 654 | .vga_set_state = &r600_vga_set_state, |
616 | .gpu_is_lockup = &r600_gpu_is_lockup, | 655 | .gpu_is_lockup = &r600_gpu_is_lockup, |
617 | .asic_reset = &r600_asic_reset, | 656 | .asic_reset = &r600_asic_reset, |
618 | .gart_tlb_flush = &r600_pcie_gart_tlb_flush, | 657 | .gart_tlb_flush = &r600_pcie_gart_tlb_flush, |
619 | .gart_set_page = &rs600_gart_set_page, | 658 | .gart_set_page = &rs600_gart_set_page, |
620 | .ring_test = &r600_ring_test, | 659 | .ring_test = &r600_ring_test, |
621 | .ring_ib_execute = &r600_ring_ib_execute, | 660 | .ring = { |
661 | [RADEON_RING_TYPE_GFX_INDEX] = { | ||
662 | .ib_execute = &r600_ring_ib_execute, | ||
663 | .emit_fence = &r600_fence_ring_emit, | ||
664 | .emit_semaphore = &r600_semaphore_ring_emit, | ||
665 | } | ||
666 | }, | ||
622 | .irq_set = &r600_irq_set, | 667 | .irq_set = &r600_irq_set, |
623 | .irq_process = &r600_irq_process, | 668 | .irq_process = &r600_irq_process, |
624 | .get_vblank_counter = &rs600_get_vblank_counter, | 669 | .get_vblank_counter = &rs600_get_vblank_counter, |
625 | .fence_ring_emit = &r600_fence_ring_emit, | ||
626 | .cs_parse = &r600_cs_parse, | 670 | .cs_parse = &r600_cs_parse, |
627 | .copy_blit = &r600_copy_blit, | 671 | .copy_blit = &r600_copy_blit, |
628 | .copy_dma = NULL, | 672 | .copy_dma = NULL, |
@@ -658,18 +702,22 @@ static struct radeon_asic rs780_asic = { | |||
658 | .fini = &r600_fini, | 702 | .fini = &r600_fini, |
659 | .suspend = &r600_suspend, | 703 | .suspend = &r600_suspend, |
660 | .resume = &r600_resume, | 704 | .resume = &r600_resume, |
661 | .cp_commit = &r600_cp_commit, | ||
662 | .gpu_is_lockup = &r600_gpu_is_lockup, | 705 | .gpu_is_lockup = &r600_gpu_is_lockup, |
663 | .vga_set_state = &r600_vga_set_state, | 706 | .vga_set_state = &r600_vga_set_state, |
664 | .asic_reset = &r600_asic_reset, | 707 | .asic_reset = &r600_asic_reset, |
665 | .gart_tlb_flush = &r600_pcie_gart_tlb_flush, | 708 | .gart_tlb_flush = &r600_pcie_gart_tlb_flush, |
666 | .gart_set_page = &rs600_gart_set_page, | 709 | .gart_set_page = &rs600_gart_set_page, |
667 | .ring_test = &r600_ring_test, | 710 | .ring_test = &r600_ring_test, |
668 | .ring_ib_execute = &r600_ring_ib_execute, | 711 | .ring = { |
712 | [RADEON_RING_TYPE_GFX_INDEX] = { | ||
713 | .ib_execute = &r600_ring_ib_execute, | ||
714 | .emit_fence = &r600_fence_ring_emit, | ||
715 | .emit_semaphore = &r600_semaphore_ring_emit, | ||
716 | } | ||
717 | }, | ||
669 | .irq_set = &r600_irq_set, | 718 | .irq_set = &r600_irq_set, |
670 | .irq_process = &r600_irq_process, | 719 | .irq_process = &r600_irq_process, |
671 | .get_vblank_counter = &rs600_get_vblank_counter, | 720 | .get_vblank_counter = &rs600_get_vblank_counter, |
672 | .fence_ring_emit = &r600_fence_ring_emit, | ||
673 | .cs_parse = &r600_cs_parse, | 721 | .cs_parse = &r600_cs_parse, |
674 | .copy_blit = &r600_copy_blit, | 722 | .copy_blit = &r600_copy_blit, |
675 | .copy_dma = NULL, | 723 | .copy_dma = NULL, |
@@ -705,18 +753,22 @@ static struct radeon_asic rv770_asic = { | |||
705 | .fini = &rv770_fini, | 753 | .fini = &rv770_fini, |
706 | .suspend = &rv770_suspend, | 754 | .suspend = &rv770_suspend, |
707 | .resume = &rv770_resume, | 755 | .resume = &rv770_resume, |
708 | .cp_commit = &r600_cp_commit, | ||
709 | .asic_reset = &r600_asic_reset, | 756 | .asic_reset = &r600_asic_reset, |
710 | .gpu_is_lockup = &r600_gpu_is_lockup, | 757 | .gpu_is_lockup = &r600_gpu_is_lockup, |
711 | .vga_set_state = &r600_vga_set_state, | 758 | .vga_set_state = &r600_vga_set_state, |
712 | .gart_tlb_flush = &r600_pcie_gart_tlb_flush, | 759 | .gart_tlb_flush = &r600_pcie_gart_tlb_flush, |
713 | .gart_set_page = &rs600_gart_set_page, | 760 | .gart_set_page = &rs600_gart_set_page, |
714 | .ring_test = &r600_ring_test, | 761 | .ring_test = &r600_ring_test, |
715 | .ring_ib_execute = &r600_ring_ib_execute, | 762 | .ring = { |
763 | [RADEON_RING_TYPE_GFX_INDEX] = { | ||
764 | .ib_execute = &r600_ring_ib_execute, | ||
765 | .emit_fence = &r600_fence_ring_emit, | ||
766 | .emit_semaphore = &r600_semaphore_ring_emit, | ||
767 | } | ||
768 | }, | ||
716 | .irq_set = &r600_irq_set, | 769 | .irq_set = &r600_irq_set, |
717 | .irq_process = &r600_irq_process, | 770 | .irq_process = &r600_irq_process, |
718 | .get_vblank_counter = &rs600_get_vblank_counter, | 771 | .get_vblank_counter = &rs600_get_vblank_counter, |
719 | .fence_ring_emit = &r600_fence_ring_emit, | ||
720 | .cs_parse = &r600_cs_parse, | 772 | .cs_parse = &r600_cs_parse, |
721 | .copy_blit = &r600_copy_blit, | 773 | .copy_blit = &r600_copy_blit, |
722 | .copy_dma = NULL, | 774 | .copy_dma = NULL, |
@@ -752,18 +804,22 @@ static struct radeon_asic evergreen_asic = { | |||
752 | .fini = &evergreen_fini, | 804 | .fini = &evergreen_fini, |
753 | .suspend = &evergreen_suspend, | 805 | .suspend = &evergreen_suspend, |
754 | .resume = &evergreen_resume, | 806 | .resume = &evergreen_resume, |
755 | .cp_commit = &r600_cp_commit, | ||
756 | .gpu_is_lockup = &evergreen_gpu_is_lockup, | 807 | .gpu_is_lockup = &evergreen_gpu_is_lockup, |
757 | .asic_reset = &evergreen_asic_reset, | 808 | .asic_reset = &evergreen_asic_reset, |
758 | .vga_set_state = &r600_vga_set_state, | 809 | .vga_set_state = &r600_vga_set_state, |
759 | .gart_tlb_flush = &evergreen_pcie_gart_tlb_flush, | 810 | .gart_tlb_flush = &evergreen_pcie_gart_tlb_flush, |
760 | .gart_set_page = &rs600_gart_set_page, | 811 | .gart_set_page = &rs600_gart_set_page, |
761 | .ring_test = &r600_ring_test, | 812 | .ring_test = &r600_ring_test, |
762 | .ring_ib_execute = &evergreen_ring_ib_execute, | 813 | .ring = { |
814 | [RADEON_RING_TYPE_GFX_INDEX] = { | ||
815 | .ib_execute = &evergreen_ring_ib_execute, | ||
816 | .emit_fence = &r600_fence_ring_emit, | ||
817 | .emit_semaphore = &r600_semaphore_ring_emit, | ||
818 | } | ||
819 | }, | ||
763 | .irq_set = &evergreen_irq_set, | 820 | .irq_set = &evergreen_irq_set, |
764 | .irq_process = &evergreen_irq_process, | 821 | .irq_process = &evergreen_irq_process, |
765 | .get_vblank_counter = &evergreen_get_vblank_counter, | 822 | .get_vblank_counter = &evergreen_get_vblank_counter, |
766 | .fence_ring_emit = &r600_fence_ring_emit, | ||
767 | .cs_parse = &evergreen_cs_parse, | 823 | .cs_parse = &evergreen_cs_parse, |
768 | .copy_blit = &r600_copy_blit, | 824 | .copy_blit = &r600_copy_blit, |
769 | .copy_dma = NULL, | 825 | .copy_dma = NULL, |
@@ -799,18 +855,22 @@ static struct radeon_asic sumo_asic = { | |||
799 | .fini = &evergreen_fini, | 855 | .fini = &evergreen_fini, |
800 | .suspend = &evergreen_suspend, | 856 | .suspend = &evergreen_suspend, |
801 | .resume = &evergreen_resume, | 857 | .resume = &evergreen_resume, |
802 | .cp_commit = &r600_cp_commit, | ||
803 | .gpu_is_lockup = &evergreen_gpu_is_lockup, | 858 | .gpu_is_lockup = &evergreen_gpu_is_lockup, |
804 | .asic_reset = &evergreen_asic_reset, | 859 | .asic_reset = &evergreen_asic_reset, |
805 | .vga_set_state = &r600_vga_set_state, | 860 | .vga_set_state = &r600_vga_set_state, |
806 | .gart_tlb_flush = &evergreen_pcie_gart_tlb_flush, | 861 | .gart_tlb_flush = &evergreen_pcie_gart_tlb_flush, |
807 | .gart_set_page = &rs600_gart_set_page, | 862 | .gart_set_page = &rs600_gart_set_page, |
808 | .ring_test = &r600_ring_test, | 863 | .ring_test = &r600_ring_test, |
809 | .ring_ib_execute = &evergreen_ring_ib_execute, | 864 | .ring = { |
865 | [RADEON_RING_TYPE_GFX_INDEX] = { | ||
866 | .ib_execute = &evergreen_ring_ib_execute, | ||
867 | .emit_fence = &r600_fence_ring_emit, | ||
868 | .emit_semaphore = &r600_semaphore_ring_emit, | ||
869 | } | ||
870 | }, | ||
810 | .irq_set = &evergreen_irq_set, | 871 | .irq_set = &evergreen_irq_set, |
811 | .irq_process = &evergreen_irq_process, | 872 | .irq_process = &evergreen_irq_process, |
812 | .get_vblank_counter = &evergreen_get_vblank_counter, | 873 | .get_vblank_counter = &evergreen_get_vblank_counter, |
813 | .fence_ring_emit = &r600_fence_ring_emit, | ||
814 | .cs_parse = &evergreen_cs_parse, | 874 | .cs_parse = &evergreen_cs_parse, |
815 | .copy_blit = &r600_copy_blit, | 875 | .copy_blit = &r600_copy_blit, |
816 | .copy_dma = NULL, | 876 | .copy_dma = NULL, |
@@ -846,18 +906,22 @@ static struct radeon_asic btc_asic = { | |||
846 | .fini = &evergreen_fini, | 906 | .fini = &evergreen_fini, |
847 | .suspend = &evergreen_suspend, | 907 | .suspend = &evergreen_suspend, |
848 | .resume = &evergreen_resume, | 908 | .resume = &evergreen_resume, |
849 | .cp_commit = &r600_cp_commit, | ||
850 | .gpu_is_lockup = &evergreen_gpu_is_lockup, | 909 | .gpu_is_lockup = &evergreen_gpu_is_lockup, |
851 | .asic_reset = &evergreen_asic_reset, | 910 | .asic_reset = &evergreen_asic_reset, |
852 | .vga_set_state = &r600_vga_set_state, | 911 | .vga_set_state = &r600_vga_set_state, |
853 | .gart_tlb_flush = &evergreen_pcie_gart_tlb_flush, | 912 | .gart_tlb_flush = &evergreen_pcie_gart_tlb_flush, |
854 | .gart_set_page = &rs600_gart_set_page, | 913 | .gart_set_page = &rs600_gart_set_page, |
855 | .ring_test = &r600_ring_test, | 914 | .ring_test = &r600_ring_test, |
856 | .ring_ib_execute = &evergreen_ring_ib_execute, | 915 | .ring = { |
916 | [RADEON_RING_TYPE_GFX_INDEX] = { | ||
917 | .ib_execute = &evergreen_ring_ib_execute, | ||
918 | .emit_fence = &r600_fence_ring_emit, | ||
919 | .emit_semaphore = &r600_semaphore_ring_emit, | ||
920 | } | ||
921 | }, | ||
857 | .irq_set = &evergreen_irq_set, | 922 | .irq_set = &evergreen_irq_set, |
858 | .irq_process = &evergreen_irq_process, | 923 | .irq_process = &evergreen_irq_process, |
859 | .get_vblank_counter = &evergreen_get_vblank_counter, | 924 | .get_vblank_counter = &evergreen_get_vblank_counter, |
860 | .fence_ring_emit = &r600_fence_ring_emit, | ||
861 | .cs_parse = &evergreen_cs_parse, | 925 | .cs_parse = &evergreen_cs_parse, |
862 | .copy_blit = &r600_copy_blit, | 926 | .copy_blit = &r600_copy_blit, |
863 | .copy_dma = NULL, | 927 | .copy_dma = NULL, |
@@ -888,23 +952,50 @@ static struct radeon_asic btc_asic = { | |||
888 | .post_page_flip = &evergreen_post_page_flip, | 952 | .post_page_flip = &evergreen_post_page_flip, |
889 | }; | 953 | }; |
890 | 954 | ||
955 | static const struct radeon_vm_funcs cayman_vm_funcs = { | ||
956 | .init = &cayman_vm_init, | ||
957 | .fini = &cayman_vm_fini, | ||
958 | .bind = &cayman_vm_bind, | ||
959 | .unbind = &cayman_vm_unbind, | ||
960 | .tlb_flush = &cayman_vm_tlb_flush, | ||
961 | .page_flags = &cayman_vm_page_flags, | ||
962 | .set_page = &cayman_vm_set_page, | ||
963 | }; | ||
964 | |||
891 | static struct radeon_asic cayman_asic = { | 965 | static struct radeon_asic cayman_asic = { |
892 | .init = &cayman_init, | 966 | .init = &cayman_init, |
893 | .fini = &cayman_fini, | 967 | .fini = &cayman_fini, |
894 | .suspend = &cayman_suspend, | 968 | .suspend = &cayman_suspend, |
895 | .resume = &cayman_resume, | 969 | .resume = &cayman_resume, |
896 | .cp_commit = &r600_cp_commit, | ||
897 | .gpu_is_lockup = &cayman_gpu_is_lockup, | 970 | .gpu_is_lockup = &cayman_gpu_is_lockup, |
898 | .asic_reset = &cayman_asic_reset, | 971 | .asic_reset = &cayman_asic_reset, |
899 | .vga_set_state = &r600_vga_set_state, | 972 | .vga_set_state = &r600_vga_set_state, |
900 | .gart_tlb_flush = &cayman_pcie_gart_tlb_flush, | 973 | .gart_tlb_flush = &cayman_pcie_gart_tlb_flush, |
901 | .gart_set_page = &rs600_gart_set_page, | 974 | .gart_set_page = &rs600_gart_set_page, |
902 | .ring_test = &r600_ring_test, | 975 | .ring_test = &r600_ring_test, |
903 | .ring_ib_execute = &evergreen_ring_ib_execute, | 976 | .ring = { |
977 | [RADEON_RING_TYPE_GFX_INDEX] = { | ||
978 | .ib_execute = &cayman_ring_ib_execute, | ||
979 | .ib_parse = &evergreen_ib_parse, | ||
980 | .emit_fence = &cayman_fence_ring_emit, | ||
981 | .emit_semaphore = &r600_semaphore_ring_emit, | ||
982 | }, | ||
983 | [CAYMAN_RING_TYPE_CP1_INDEX] = { | ||
984 | .ib_execute = &cayman_ring_ib_execute, | ||
985 | .ib_parse = &evergreen_ib_parse, | ||
986 | .emit_fence = &cayman_fence_ring_emit, | ||
987 | .emit_semaphore = &r600_semaphore_ring_emit, | ||
988 | }, | ||
989 | [CAYMAN_RING_TYPE_CP2_INDEX] = { | ||
990 | .ib_execute = &cayman_ring_ib_execute, | ||
991 | .ib_parse = &evergreen_ib_parse, | ||
992 | .emit_fence = &cayman_fence_ring_emit, | ||
993 | .emit_semaphore = &r600_semaphore_ring_emit, | ||
994 | } | ||
995 | }, | ||
904 | .irq_set = &evergreen_irq_set, | 996 | .irq_set = &evergreen_irq_set, |
905 | .irq_process = &evergreen_irq_process, | 997 | .irq_process = &evergreen_irq_process, |
906 | .get_vblank_counter = &evergreen_get_vblank_counter, | 998 | .get_vblank_counter = &evergreen_get_vblank_counter, |
907 | .fence_ring_emit = &r600_fence_ring_emit, | ||
908 | .cs_parse = &evergreen_cs_parse, | 999 | .cs_parse = &evergreen_cs_parse, |
909 | .copy_blit = &r600_copy_blit, | 1000 | .copy_blit = &r600_copy_blit, |
910 | .copy_dma = NULL, | 1001 | .copy_dma = NULL, |
@@ -945,6 +1036,9 @@ int radeon_asic_init(struct radeon_device *rdev) | |||
945 | else | 1036 | else |
946 | rdev->num_crtc = 2; | 1037 | rdev->num_crtc = 2; |
947 | 1038 | ||
1039 | /* set the ring used for bo copies */ | ||
1040 | rdev->copy_ring = RADEON_RING_TYPE_GFX_INDEX; | ||
1041 | |||
948 | switch (rdev->family) { | 1042 | switch (rdev->family) { |
949 | case CHIP_R100: | 1043 | case CHIP_R100: |
950 | case CHIP_RV100: | 1044 | case CHIP_RV100: |
@@ -1050,6 +1144,7 @@ int radeon_asic_init(struct radeon_device *rdev) | |||
1050 | rdev->asic = &cayman_asic; | 1144 | rdev->asic = &cayman_asic; |
1051 | /* set num crtcs */ | 1145 | /* set num crtcs */ |
1052 | rdev->num_crtc = 6; | 1146 | rdev->num_crtc = 6; |
1147 | rdev->vm_manager.funcs = &cayman_vm_funcs; | ||
1053 | break; | 1148 | break; |
1054 | default: | 1149 | default: |
1055 | /* FIXME: not supported yet */ | 1150 | /* FIXME: not supported yet */ |