diff options
author | Christian König <deathsimple@vodafone.de> | 2012-08-06 14:21:10 -0400 |
---|---|---|
committer | Alex Deucher <alexander.deucher@amd.com> | 2012-09-20 13:10:38 -0400 |
commit | 05b0714768557c036fb9d74c197081fd2cba12bc (patch) | |
tree | e2411d20943ca9bcc3e38bd3c96e9eb38d3039b4 /drivers/gpu/drm/radeon/radeon.h | |
parent | 4bf3dd9264cfb71f18714fcf2f810e276a44170b (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.h | 35 |
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 | ||
644 | struct 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 | |||
658 | struct radeon_vm_manager { | 644 | struct 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)) |