aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/radeon/radeon.h
diff options
context:
space:
mode:
authorJerome Glisse <jglisse@redhat.com>2009-09-14 12:29:49 -0400
committerDave Airlie <airlied@redhat.com>2009-09-14 18:53:14 -0400
commit4aac047323e3082d0866b8ad3784236632105af4 (patch)
treeaf4c118e42b9ea55c961c4f5bbb02998dc2cc4fe /drivers/gpu/drm/radeon/radeon.h
parent21f9a437222e92adb3abc68584a5f04801b92739 (diff)
drm/radeon/kms: clear confusion in GART init/deinit path
GART static one time initialization was mixed up with GART enabling/disabling which could happen several time for instance during suspend/resume cycles. This patch splits all GART handling into 4 differents function. gart_init is for one time initialization, gart_deinit is called upon module unload to free resources allocated by gart_init, gart_enable enable the GART and is intented to be call after first initialization and at each resume cycle or reset cycle. Finaly gart_disable stop the GART and is intended to be call at suspend time or when unloading the module. Signed-off-by: Jerome Glisse <jglisse@redhat.com> Signed-off-by: Dave Airlie <airlied@redhat.com>
Diffstat (limited to 'drivers/gpu/drm/radeon/radeon.h')
-rw-r--r--drivers/gpu/drm/radeon/radeon.h11
1 files changed, 11 insertions, 0 deletions
diff --git a/drivers/gpu/drm/radeon/radeon.h b/drivers/gpu/drm/radeon/radeon.h
index 8cec5bf2922b..99292be8bc99 100644
--- a/drivers/gpu/drm/radeon/radeon.h
+++ b/drivers/gpu/drm/radeon/radeon.h
@@ -596,6 +596,8 @@ struct radeon_asic {
596 void (*mc_fini)(struct radeon_device *rdev); 596 void (*mc_fini)(struct radeon_device *rdev);
597 int (*wb_init)(struct radeon_device *rdev); 597 int (*wb_init)(struct radeon_device *rdev);
598 void (*wb_fini)(struct radeon_device *rdev); 598 void (*wb_fini)(struct radeon_device *rdev);
599 int (*gart_init)(struct radeon_device *rdev);
600 void (*gart_fini)(struct radeon_device *rdev);
599 int (*gart_enable)(struct radeon_device *rdev); 601 int (*gart_enable)(struct radeon_device *rdev);
600 void (*gart_disable)(struct radeon_device *rdev); 602 void (*gart_disable)(struct radeon_device *rdev);
601 void (*gart_tlb_flush)(struct radeon_device *rdev); 603 void (*gart_tlb_flush)(struct radeon_device *rdev);
@@ -950,6 +952,8 @@ static inline void radeon_ring_write(struct radeon_device *rdev, uint32_t v)
950#define radeon_mc_fini(rdev) (rdev)->asic->mc_fini((rdev)) 952#define radeon_mc_fini(rdev) (rdev)->asic->mc_fini((rdev))
951#define radeon_wb_init(rdev) (rdev)->asic->wb_init((rdev)) 953#define radeon_wb_init(rdev) (rdev)->asic->wb_init((rdev))
952#define radeon_wb_fini(rdev) (rdev)->asic->wb_fini((rdev)) 954#define radeon_wb_fini(rdev) (rdev)->asic->wb_fini((rdev))
955#define radeon_gpu_gart_init(rdev) (rdev)->asic->gart_init((rdev))
956#define radeon_gpu_gart_fini(rdev) (rdev)->asic->gart_fini((rdev))
953#define radeon_gart_enable(rdev) (rdev)->asic->gart_enable((rdev)) 957#define radeon_gart_enable(rdev) (rdev)->asic->gart_enable((rdev))
954#define radeon_gart_disable(rdev) (rdev)->asic->gart_disable((rdev)) 958#define radeon_gart_disable(rdev) (rdev)->asic->gart_disable((rdev))
955#define radeon_gart_tlb_flush(rdev) (rdev)->asic->gart_tlb_flush((rdev)) 959#define radeon_gart_tlb_flush(rdev) (rdev)->asic->gart_tlb_flush((rdev))
@@ -978,6 +982,7 @@ static inline void radeon_ring_write(struct radeon_device *rdev, uint32_t v)
978#define radeon_bandwidth_update(rdev) (rdev)->asic->bandwidth_update((rdev)) 982#define radeon_bandwidth_update(rdev) (rdev)->asic->bandwidth_update((rdev))
979 983
980/* Common functions */ 984/* Common functions */
985extern int radeon_gart_table_vram_pin(struct radeon_device *rdev);
981extern int radeon_modeset_init(struct radeon_device *rdev); 986extern int radeon_modeset_init(struct radeon_device *rdev);
982extern void radeon_modeset_fini(struct radeon_device *rdev); 987extern void radeon_modeset_fini(struct radeon_device *rdev);
983extern bool radeon_card_posted(struct radeon_device *rdev); 988extern bool radeon_card_posted(struct radeon_device *rdev);
@@ -1000,6 +1005,8 @@ extern void r100_cp_disable(struct radeon_device *rdev);
1000extern int r100_cp_init(struct radeon_device *rdev, unsigned ring_size); 1005extern int r100_cp_init(struct radeon_device *rdev, unsigned ring_size);
1001extern void r100_cp_fini(struct radeon_device *rdev); 1006extern void r100_cp_fini(struct radeon_device *rdev);
1002extern void r100_pci_gart_tlb_flush(struct radeon_device *rdev); 1007extern void r100_pci_gart_tlb_flush(struct radeon_device *rdev);
1008extern int r100_pci_gart_init(struct radeon_device *rdev);
1009extern void r100_pci_gart_fini(struct radeon_device *rdev);
1003extern int r100_pci_gart_enable(struct radeon_device *rdev); 1010extern int r100_pci_gart_enable(struct radeon_device *rdev);
1004extern void r100_pci_gart_disable(struct radeon_device *rdev); 1011extern void r100_pci_gart_disable(struct radeon_device *rdev);
1005extern int r100_pci_gart_set_page(struct radeon_device *rdev, int i, uint64_t addr); 1012extern int r100_pci_gart_set_page(struct radeon_device *rdev, int i, uint64_t addr);
@@ -1020,6 +1027,9 @@ extern int r100_wb_init(struct radeon_device *rdev);
1020extern void r300_set_reg_safe(struct radeon_device *rdev); 1027extern void r300_set_reg_safe(struct radeon_device *rdev);
1021extern void r300_mc_program(struct radeon_device *rdev); 1028extern void r300_mc_program(struct radeon_device *rdev);
1022extern void r300_vram_info(struct radeon_device *rdev); 1029extern void r300_vram_info(struct radeon_device *rdev);
1030extern int rv370_pcie_gart_init(struct radeon_device *rdev);
1031extern void rv370_pcie_gart_fini(struct radeon_device *rdev);
1032extern int rv370_pcie_gart_enable(struct radeon_device *rdev);
1023extern void rv370_pcie_gart_disable(struct radeon_device *rdev); 1033extern void rv370_pcie_gart_disable(struct radeon_device *rdev);
1024 1034
1025/* r420,r423,rv410 */ 1035/* r420,r423,rv410 */
@@ -1043,6 +1053,7 @@ extern int r600_cp_resume(struct radeon_device *rdev);
1043extern int r600_count_pipe_bits(uint32_t val); 1053extern int r600_count_pipe_bits(uint32_t val);
1044extern int r600_gart_clear_page(struct radeon_device *rdev, int i); 1054extern int r600_gart_clear_page(struct radeon_device *rdev, int i);
1045extern int r600_mc_wait_for_idle(struct radeon_device *rdev); 1055extern int r600_mc_wait_for_idle(struct radeon_device *rdev);
1056extern int r600_pcie_gart_init(struct radeon_device *rdev);
1046extern void r600_pcie_gart_tlb_flush(struct radeon_device *rdev); 1057extern void r600_pcie_gart_tlb_flush(struct radeon_device *rdev);
1047extern int r600_ib_test(struct radeon_device *rdev); 1058extern int r600_ib_test(struct radeon_device *rdev);
1048extern int r600_ring_test(struct radeon_device *rdev); 1059extern int r600_ring_test(struct radeon_device *rdev);