diff options
author | Jerome Glisse <jglisse@redhat.com> | 2009-09-14 12:29:49 -0400 |
---|---|---|
committer | Dave Airlie <airlied@redhat.com> | 2009-09-14 18:53:14 -0400 |
commit | 4aac047323e3082d0866b8ad3784236632105af4 (patch) | |
tree | af4c118e42b9ea55c961c4f5bbb02998dc2cc4fe /drivers/gpu/drm/radeon/radeon.h | |
parent | 21f9a437222e92adb3abc68584a5f04801b92739 (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.h | 11 |
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 */ |
985 | extern int radeon_gart_table_vram_pin(struct radeon_device *rdev); | ||
981 | extern int radeon_modeset_init(struct radeon_device *rdev); | 986 | extern int radeon_modeset_init(struct radeon_device *rdev); |
982 | extern void radeon_modeset_fini(struct radeon_device *rdev); | 987 | extern void radeon_modeset_fini(struct radeon_device *rdev); |
983 | extern bool radeon_card_posted(struct radeon_device *rdev); | 988 | extern bool radeon_card_posted(struct radeon_device *rdev); |
@@ -1000,6 +1005,8 @@ extern void r100_cp_disable(struct radeon_device *rdev); | |||
1000 | extern int r100_cp_init(struct radeon_device *rdev, unsigned ring_size); | 1005 | extern int r100_cp_init(struct radeon_device *rdev, unsigned ring_size); |
1001 | extern void r100_cp_fini(struct radeon_device *rdev); | 1006 | extern void r100_cp_fini(struct radeon_device *rdev); |
1002 | extern void r100_pci_gart_tlb_flush(struct radeon_device *rdev); | 1007 | extern void r100_pci_gart_tlb_flush(struct radeon_device *rdev); |
1008 | extern int r100_pci_gart_init(struct radeon_device *rdev); | ||
1009 | extern void r100_pci_gart_fini(struct radeon_device *rdev); | ||
1003 | extern int r100_pci_gart_enable(struct radeon_device *rdev); | 1010 | extern int r100_pci_gart_enable(struct radeon_device *rdev); |
1004 | extern void r100_pci_gart_disable(struct radeon_device *rdev); | 1011 | extern void r100_pci_gart_disable(struct radeon_device *rdev); |
1005 | extern int r100_pci_gart_set_page(struct radeon_device *rdev, int i, uint64_t addr); | 1012 | extern 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); | |||
1020 | extern void r300_set_reg_safe(struct radeon_device *rdev); | 1027 | extern void r300_set_reg_safe(struct radeon_device *rdev); |
1021 | extern void r300_mc_program(struct radeon_device *rdev); | 1028 | extern void r300_mc_program(struct radeon_device *rdev); |
1022 | extern void r300_vram_info(struct radeon_device *rdev); | 1029 | extern void r300_vram_info(struct radeon_device *rdev); |
1030 | extern int rv370_pcie_gart_init(struct radeon_device *rdev); | ||
1031 | extern void rv370_pcie_gart_fini(struct radeon_device *rdev); | ||
1032 | extern int rv370_pcie_gart_enable(struct radeon_device *rdev); | ||
1023 | extern void rv370_pcie_gart_disable(struct radeon_device *rdev); | 1033 | extern 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); | |||
1043 | extern int r600_count_pipe_bits(uint32_t val); | 1053 | extern int r600_count_pipe_bits(uint32_t val); |
1044 | extern int r600_gart_clear_page(struct radeon_device *rdev, int i); | 1054 | extern int r600_gart_clear_page(struct radeon_device *rdev, int i); |
1045 | extern int r600_mc_wait_for_idle(struct radeon_device *rdev); | 1055 | extern int r600_mc_wait_for_idle(struct radeon_device *rdev); |
1056 | extern int r600_pcie_gart_init(struct radeon_device *rdev); | ||
1046 | extern void r600_pcie_gart_tlb_flush(struct radeon_device *rdev); | 1057 | extern void r600_pcie_gart_tlb_flush(struct radeon_device *rdev); |
1047 | extern int r600_ib_test(struct radeon_device *rdev); | 1058 | extern int r600_ib_test(struct radeon_device *rdev); |
1048 | extern int r600_ring_test(struct radeon_device *rdev); | 1059 | extern int r600_ring_test(struct radeon_device *rdev); |