aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/radeon/radeon.h
diff options
context:
space:
mode:
authorChristian König <deathsimple@vodafone.de>2012-08-06 14:21:10 -0400
committerAlex Deucher <alexander.deucher@amd.com>2012-09-20 13:10:38 -0400
commit05b0714768557c036fb9d74c197081fd2cba12bc (patch)
treee2411d20943ca9bcc3e38bd3c96e9eb38d3039b4 /drivers/gpu/drm/radeon/radeon.h
parent4bf3dd9264cfb71f18714fcf2f810e276a44170b (diff)
drm/radeon: move VM funcs into asic structure
So it looks more like the rest of the driver. Signed-off-by: Christian König <deathsimple@vodafone.de> Reviewed-by: Jerome Glisse <jglisse@redhat.com>
Diffstat (limited to 'drivers/gpu/drm/radeon/radeon.h')
-rw-r--r--drivers/gpu/drm/radeon/radeon.h35
1 files changed, 19 insertions, 16 deletions
diff --git a/drivers/gpu/drm/radeon/radeon.h b/drivers/gpu/drm/radeon/radeon.h
index a5470e793043..5f54b87b181a 100644
--- a/drivers/gpu/drm/radeon/radeon.h
+++ b/drivers/gpu/drm/radeon/radeon.h
@@ -641,28 +641,12 @@ struct radeon_vm {
641 struct radeon_fence *fence; 641 struct radeon_fence *fence;
642}; 642};
643 643
644struct radeon_vm_funcs {
645 int (*init)(struct radeon_device *rdev);
646 void (*fini)(struct radeon_device *rdev);
647 /* cs mutex must be lock for schedule_ib */
648 int (*bind)(struct radeon_device *rdev, struct radeon_vm *vm, int id);
649 void (*unbind)(struct radeon_device *rdev, struct radeon_vm *vm);
650 void (*tlb_flush)(struct radeon_device *rdev, struct radeon_vm *vm);
651 uint32_t (*page_flags)(struct radeon_device *rdev,
652 struct radeon_vm *vm,
653 uint32_t flags);
654 void (*set_page)(struct radeon_device *rdev, struct radeon_vm *vm,
655 unsigned pfn, uint64_t addr, uint32_t flags);
656};
657
658struct radeon_vm_manager { 644struct radeon_vm_manager {
659 struct mutex lock; 645 struct mutex lock;
660 struct list_head lru_vm; 646 struct list_head lru_vm;
661 uint32_t use_bitmap; 647 uint32_t use_bitmap;
662 struct radeon_sa_manager sa_manager; 648 struct radeon_sa_manager sa_manager;
663 uint32_t max_pfn; 649 uint32_t max_pfn;
664 /* fields constant after init */
665 const struct radeon_vm_funcs *funcs;
666 /* number of VMIDs */ 650 /* number of VMIDs */
667 unsigned nvm; 651 unsigned nvm;
668 /* vram base address for page table entry */ 652 /* vram base address for page table entry */
@@ -1128,6 +1112,18 @@ struct radeon_asic {
1128 void (*tlb_flush)(struct radeon_device *rdev); 1112 void (*tlb_flush)(struct radeon_device *rdev);
1129 int (*set_page)(struct radeon_device *rdev, int i, uint64_t addr); 1113 int (*set_page)(struct radeon_device *rdev, int i, uint64_t addr);
1130 } gart; 1114 } gart;
1115 struct {
1116 int (*init)(struct radeon_device *rdev);
1117 void (*fini)(struct radeon_device *rdev);
1118 int (*bind)(struct radeon_device *rdev, struct radeon_vm *vm, int id);
1119 void (*unbind)(struct radeon_device *rdev, struct radeon_vm *vm);
1120 void (*tlb_flush)(struct radeon_device *rdev, struct radeon_vm *vm);
1121 uint32_t (*page_flags)(struct radeon_device *rdev,
1122 struct radeon_vm *vm,
1123 uint32_t flags);
1124 void (*set_page)(struct radeon_device *rdev, struct radeon_vm *vm,
1125 unsigned pfn, uint64_t addr, uint32_t flags);
1126 } vm;
1131 /* ring specific callbacks */ 1127 /* ring specific callbacks */
1132 struct { 1128 struct {
1133 void (*ib_execute)(struct radeon_device *rdev, struct radeon_ib *ib); 1129 void (*ib_execute)(struct radeon_device *rdev, struct radeon_ib *ib);
@@ -1735,6 +1731,13 @@ void radeon_ring_write(struct radeon_ring *ring, uint32_t v);
1735#define radeon_asic_reset(rdev) (rdev)->asic->asic_reset((rdev)) 1731#define radeon_asic_reset(rdev) (rdev)->asic->asic_reset((rdev))
1736#define radeon_gart_tlb_flush(rdev) (rdev)->asic->gart.tlb_flush((rdev)) 1732#define radeon_gart_tlb_flush(rdev) (rdev)->asic->gart.tlb_flush((rdev))
1737#define radeon_gart_set_page(rdev, i, p) (rdev)->asic->gart.set_page((rdev), (i), (p)) 1733#define radeon_gart_set_page(rdev, i, p) (rdev)->asic->gart.set_page((rdev), (i), (p))
1734#define radeon_asic_vm_init(rdev) (rdev)->asic->vm.init((rdev))
1735#define radeon_asic_vm_fini(rdev) (rdev)->asic->vm.fini((rdev))
1736#define radeon_asic_vm_bind(rdev, v, id) (rdev)->asic->vm.bind((rdev), (v), (id))
1737#define radeon_asic_vm_unbind(rdev, v) (rdev)->asic->vm.unbind((rdev), (v))
1738#define radeon_asic_vm_tlb_flush(rdev, v) (rdev)->asic->vm.tlb_flush((rdev), (v))
1739#define radeon_asic_vm_page_flags(rdev, v, flags) (rdev)->asic->vm.page_flags((rdev), (v), (flags))
1740#define radeon_asic_vm_set_page(rdev, v, pfn, addr, flags) (rdev)->asic->vm.set_page((rdev), (v), (pfn), (addr), (flags))
1738#define radeon_ring_start(rdev, r, cp) (rdev)->asic->ring[(r)].ring_start((rdev), (cp)) 1741#define radeon_ring_start(rdev, r, cp) (rdev)->asic->ring[(r)].ring_start((rdev), (cp))
1739#define radeon_ring_test(rdev, r, cp) (rdev)->asic->ring[(r)].ring_test((rdev), (cp)) 1742#define radeon_ring_test(rdev, r, cp) (rdev)->asic->ring[(r)].ring_test((rdev), (cp))
1740#define radeon_ib_test(rdev, r, cp) (rdev)->asic->ring[(r)].ib_test((rdev), (cp)) 1743#define radeon_ib_test(rdev, r, cp) (rdev)->asic->ring[(r)].ib_test((rdev), (cp))