Rev 3120 | Rev 5078 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 3120 | Rev 3192 | ||
---|---|---|---|
Line 127... | Line 127... | ||
127 | static inline void iowrite32(uint32_t b, volatile void __iomem *addr) |
127 | static inline void iowrite32(uint32_t b, volatile void __iomem *addr) |
128 | { |
128 | { |
129 | out32((u32)addr, b); |
129 | out32((u32)addr, b); |
130 | } |
130 | } |
Line 131... | Line -... | ||
131 | - | ||
132 | //struct __wait_queue_head { |
- | |
133 | // spinlock_t lock; |
- | |
134 | // struct list_head task_list; |
- | |
135 | //}; |
- | |
136 | //typedef struct __wait_queue_head wait_queue_head_t; |
- | |
Line 137... | Line 131... | ||
137 | 131 | ||
138 | 132 | ||
139 | /* |
133 | /* |
140 | * Copy from radeon_drv.h so we don't have to include both and have conflicting |
134 | * Copy from radeon_drv.h so we don't have to include both and have conflicting |
Line 147... | Line 141... | ||
147 | #define RADEON_DEBUGFS_MAX_COMPONENTS 32 |
141 | #define RADEON_DEBUGFS_MAX_COMPONENTS 32 |
148 | #define RADEONFB_CONN_LIMIT 4 |
142 | #define RADEONFB_CONN_LIMIT 4 |
149 | #define RADEON_BIOS_NUM_SCRATCH 8 |
143 | #define RADEON_BIOS_NUM_SCRATCH 8 |
Line 150... | Line 144... | ||
150 | 144 | ||
151 | /* max number of rings */ |
145 | /* max number of rings */ |
Line 152... | Line 146... | ||
152 | #define RADEON_NUM_RINGS 3 |
146 | #define RADEON_NUM_RINGS 5 |
153 | 147 | ||
Line 154... | Line 148... | ||
154 | /* fence seq are set to this number when signaled */ |
148 | /* fence seq are set to this number when signaled */ |
Line 160... | Line 154... | ||
160 | 154 | ||
161 | /* cayman has 2 compute CP rings */ |
155 | /* cayman has 2 compute CP rings */ |
162 | #define CAYMAN_RING_TYPE_CP1_INDEX 1 |
156 | #define CAYMAN_RING_TYPE_CP1_INDEX 1 |
Line -... | Line 157... | ||
- | 157 | #define CAYMAN_RING_TYPE_CP2_INDEX 2 |
|
- | 158 | ||
- | 159 | /* R600+ has an async dma ring */ |
|
- | 160 | #define R600_RING_TYPE_DMA_INDEX 3 |
|
- | 161 | /* cayman add a second async dma ring */ |
|
163 | #define CAYMAN_RING_TYPE_CP2_INDEX 2 |
162 | #define CAYMAN_RING_TYPE_DMA1_INDEX 4 |
164 | 163 | ||
165 | /* hardcode those limit for now */ |
164 | /* hardcode those limit for now */ |
166 | #define RADEON_VA_IB_OFFSET (1 << 20) |
165 | #define RADEON_VA_IB_OFFSET (1 << 20) |
Line -... | Line 166... | ||
- | 166 | #define RADEON_VA_RESERVED_SIZE (8 << 20) |
|
- | 167 | #define RADEON_IB_VM_MAX_SIZE (64 << 10) |
|
- | 168 | ||
- | 169 | /* reset flags */ |
|
- | 170 | #define RADEON_RESET_GFX (1 << 0) |
|
167 | #define RADEON_VA_RESERVED_SIZE (8 << 20) |
171 | #define RADEON_RESET_COMPUTE (1 << 1) |
168 | #define RADEON_IB_VM_MAX_SIZE (64 << 10) |
172 | #define RADEON_RESET_DMA (1 << 2) |
169 | 173 | ||
170 | /* |
174 | /* |
171 | * Errata workarounds. |
175 | * Errata workarounds. |
Line 258... | Line 262... | ||
258 | }; |
262 | }; |
Line 259... | Line 263... | ||
259 | 263 | ||
260 | int radeon_fence_driver_start_ring(struct radeon_device *rdev, int ring); |
264 | int radeon_fence_driver_start_ring(struct radeon_device *rdev, int ring); |
261 | int radeon_fence_driver_init(struct radeon_device *rdev); |
265 | int radeon_fence_driver_init(struct radeon_device *rdev); |
- | 266 | void radeon_fence_driver_fini(struct radeon_device *rdev); |
|
262 | void radeon_fence_driver_fini(struct radeon_device *rdev); |
267 | void radeon_fence_driver_force_completion(struct radeon_device *rdev); |
263 | int radeon_fence_emit(struct radeon_device *rdev, struct radeon_fence **fence, int ring); |
268 | int radeon_fence_emit(struct radeon_device *rdev, struct radeon_fence **fence, int ring); |
264 | void radeon_fence_process(struct radeon_device *rdev, int ring); |
269 | void radeon_fence_process(struct radeon_device *rdev, int ring); |
265 | bool radeon_fence_signaled(struct radeon_fence *fence); |
270 | bool radeon_fence_signaled(struct radeon_fence *fence); |
266 | int radeon_fence_wait(struct radeon_fence *fence, bool interruptible); |
271 | int radeon_fence_wait(struct radeon_fence *fence, bool interruptible); |
267 | int radeon_fence_wait_next_locked(struct radeon_device *rdev, int ring); |
272 | int radeon_fence_wait_next_locked(struct radeon_device *rdev, int ring); |
268 | void radeon_fence_wait_empty_locked(struct radeon_device *rdev, int ring); |
273 | int radeon_fence_wait_empty_locked(struct radeon_device *rdev, int ring); |
269 | int radeon_fence_wait_any(struct radeon_device *rdev, |
274 | int radeon_fence_wait_any(struct radeon_device *rdev, |
270 | struct radeon_fence **fences, |
275 | struct radeon_fence **fences, |
271 | bool intr); |
276 | bool intr); |
272 | struct radeon_fence *radeon_fence_ref(struct radeon_fence *fence); |
277 | struct radeon_fence *radeon_fence_ref(struct radeon_fence *fence); |
Line 351... | Line 356... | ||
351 | struct radeon_bo { |
356 | struct radeon_bo { |
352 | /* Protected by gem.mutex */ |
357 | /* Protected by gem.mutex */ |
353 | struct list_head list; |
358 | struct list_head list; |
354 | /* Protected by tbo.reserved */ |
359 | /* Protected by tbo.reserved */ |
355 | u32 placements[3]; |
360 | u32 placements[3]; |
- | 361 | u32 busy_placements[3]; |
|
356 | struct ttm_placement placement; |
362 | struct ttm_placement placement; |
357 | struct ttm_buffer_object tbo; |
363 | struct ttm_buffer_object tbo; |
358 | struct ttm_bo_kmap_obj kmap; |
364 | struct ttm_bo_kmap_obj kmap; |
359 | unsigned pin_count; |
365 | unsigned pin_count; |
360 | void *kptr; |
366 | void *kptr; |
Line 815... | Line 821... | ||
815 | unsigned rptr_offs, unsigned rptr_reg, unsigned wptr_reg, |
821 | unsigned rptr_offs, unsigned rptr_reg, unsigned wptr_reg, |
816 | u32 ptr_reg_shift, u32 ptr_reg_mask, u32 nop); |
822 | u32 ptr_reg_shift, u32 ptr_reg_mask, u32 nop); |
817 | void radeon_ring_fini(struct radeon_device *rdev, struct radeon_ring *cp); |
823 | void radeon_ring_fini(struct radeon_device *rdev, struct radeon_ring *cp); |
Line -... | Line 824... | ||
- | 824 | ||
- | 825 | ||
- | 826 | /* r600 async dma */ |
|
- | 827 | void r600_dma_stop(struct radeon_device *rdev); |
|
- | 828 | int r600_dma_resume(struct radeon_device *rdev); |
|
- | 829 | void r600_dma_fini(struct radeon_device *rdev); |
|
- | 830 | ||
- | 831 | void cayman_dma_stop(struct radeon_device *rdev); |
|
- | 832 | int cayman_dma_resume(struct radeon_device *rdev); |
|
818 | 833 | void cayman_dma_fini(struct radeon_device *rdev); |
|
819 | 834 | ||
820 | /* |
835 | /* |
821 | * CS. |
836 | * CS. |
822 | */ |
837 | */ |
Line 852... | Line 867... | ||
852 | /* relocations */ |
867 | /* relocations */ |
853 | unsigned nrelocs; |
868 | unsigned nrelocs; |
854 | struct radeon_cs_reloc *relocs; |
869 | struct radeon_cs_reloc *relocs; |
855 | struct radeon_cs_reloc **relocs_ptr; |
870 | struct radeon_cs_reloc **relocs_ptr; |
856 | struct list_head validated; |
871 | struct list_head validated; |
- | 872 | unsigned dma_reloc_idx; |
|
857 | /* indices of various chunks */ |
873 | /* indices of various chunks */ |
858 | int chunk_ib_idx; |
874 | int chunk_ib_idx; |
859 | int chunk_relocs_idx; |
875 | int chunk_relocs_idx; |
860 | int chunk_flags_idx; |
876 | int chunk_flags_idx; |
861 | int chunk_const_ib_idx; |
877 | int chunk_const_ib_idx; |
Line 911... | Line 927... | ||
911 | #define RADEON_WB_SCRATCH_OFFSET 0 |
927 | #define RADEON_WB_SCRATCH_OFFSET 0 |
912 | #define RADEON_WB_RING0_NEXT_RPTR 256 |
928 | #define RADEON_WB_RING0_NEXT_RPTR 256 |
913 | #define RADEON_WB_CP_RPTR_OFFSET 1024 |
929 | #define RADEON_WB_CP_RPTR_OFFSET 1024 |
914 | #define RADEON_WB_CP1_RPTR_OFFSET 1280 |
930 | #define RADEON_WB_CP1_RPTR_OFFSET 1280 |
915 | #define RADEON_WB_CP2_RPTR_OFFSET 1536 |
931 | #define RADEON_WB_CP2_RPTR_OFFSET 1536 |
- | 932 | #define R600_WB_DMA_RPTR_OFFSET 1792 |
|
916 | #define R600_WB_IH_WPTR_OFFSET 2048 |
933 | #define R600_WB_IH_WPTR_OFFSET 2048 |
- | 934 | #define CAYMAN_WB_DMA1_RPTR_OFFSET 2304 |
|
917 | #define R600_WB_EVENT_OFFSET 3072 |
935 | #define R600_WB_EVENT_OFFSET 3072 |
Line 918... | Line 936... | ||
918 | 936 | ||
919 | /** |
937 | /** |
920 | * struct radeon_pm - power management datas |
938 | * struct radeon_pm - power management datas |
Line 1456... | Line 1474... | ||
1456 | uint16_t bios_header_start; |
1474 | uint16_t bios_header_start; |
1457 | struct radeon_bo *stollen_vga_memory; |
1475 | struct radeon_bo *stollen_vga_memory; |
1458 | /* Register mmio */ |
1476 | /* Register mmio */ |
1459 | resource_size_t rmmio_base; |
1477 | resource_size_t rmmio_base; |
1460 | resource_size_t rmmio_size; |
1478 | resource_size_t rmmio_size; |
- | 1479 | /* protects concurrent MM_INDEX/DATA based register access */ |
|
- | 1480 | spinlock_t mmio_idx_lock; |
|
1461 | void __iomem *rmmio; |
1481 | void __iomem *rmmio; |
1462 | radeon_rreg_t mc_rreg; |
1482 | radeon_rreg_t mc_rreg; |
1463 | radeon_wreg_t mc_wreg; |
1483 | radeon_wreg_t mc_wreg; |
1464 | radeon_rreg_t pll_rreg; |
1484 | radeon_rreg_t pll_rreg; |
1465 | radeon_wreg_t pll_wreg; |
1485 | radeon_wreg_t pll_wreg; |
Line 1531... | Line 1551... | ||
1531 | struct pci_dev *pdev, |
1551 | struct pci_dev *pdev, |
1532 | uint32_t flags); |
1552 | uint32_t flags); |
1533 | void radeon_device_fini(struct radeon_device *rdev); |
1553 | void radeon_device_fini(struct radeon_device *rdev); |
1534 | int radeon_gpu_wait_for_idle(struct radeon_device *rdev); |
1554 | int radeon_gpu_wait_for_idle(struct radeon_device *rdev); |
Line 1535... | Line 1555... | ||
1535 | 1555 | ||
- | 1556 | uint32_t r100_mm_rreg(struct radeon_device *rdev, uint32_t reg, |
|
1536 | uint32_t r100_mm_rreg(struct radeon_device *rdev, uint32_t reg); |
1557 | bool always_indirect); |
- | 1558 | void r100_mm_wreg(struct radeon_device *rdev, uint32_t reg, uint32_t v, |
|
1537 | void r100_mm_wreg(struct radeon_device *rdev, uint32_t reg, uint32_t v); |
1559 | bool always_indirect); |
1538 | u32 r100_io_rreg(struct radeon_device *rdev, u32 reg); |
1560 | u32 r100_io_rreg(struct radeon_device *rdev, u32 reg); |
Line 1539... | Line 1561... | ||
1539 | void r100_io_wreg(struct radeon_device *rdev, u32 reg, u32 v); |
1561 | void r100_io_wreg(struct radeon_device *rdev, u32 reg, u32 v); |
1540 | 1562 | ||
Line 1548... | Line 1570... | ||
1548 | */ |
1570 | */ |
1549 | #define RREG8(reg) readb((rdev->rmmio) + (reg)) |
1571 | #define RREG8(reg) readb((rdev->rmmio) + (reg)) |
1550 | #define WREG8(reg, v) writeb(v, (rdev->rmmio) + (reg)) |
1572 | #define WREG8(reg, v) writeb(v, (rdev->rmmio) + (reg)) |
1551 | #define RREG16(reg) readw((rdev->rmmio) + (reg)) |
1573 | #define RREG16(reg) readw((rdev->rmmio) + (reg)) |
1552 | #define WREG16(reg, v) writew(v, (rdev->rmmio) + (reg)) |
1574 | #define WREG16(reg, v) writew(v, (rdev->rmmio) + (reg)) |
1553 | #define RREG32(reg) r100_mm_rreg(rdev, (reg)) |
1575 | #define RREG32(reg) r100_mm_rreg(rdev, (reg), false) |
- | 1576 | #define RREG32_IDX(reg) r100_mm_rreg(rdev, (reg), true) |
|
1554 | #define DREG32(reg) printk(KERN_INFO "REGISTER: " #reg " : 0x%08X\n", r100_mm_rreg(rdev, (reg))) |
1577 | #define DREG32(reg) printk(KERN_INFO "REGISTER: " #reg " : 0x%08X\n", r100_mm_rreg(rdev, (reg), false)) |
1555 | #define WREG32(reg, v) r100_mm_wreg(rdev, (reg), (v)) |
1578 | #define WREG32(reg, v) r100_mm_wreg(rdev, (reg), (v), false) |
- | 1579 | #define WREG32_IDX(reg, v) r100_mm_wreg(rdev, (reg), (v), true) |
|
1556 | #define REG_SET(FIELD, v) (((v) << FIELD##_SHIFT) & FIELD##_MASK) |
1580 | #define REG_SET(FIELD, v) (((v) << FIELD##_SHIFT) & FIELD##_MASK) |
1557 | #define REG_GET(FIELD, v) (((v) << FIELD##_SHIFT) & FIELD##_MASK) |
1581 | #define REG_GET(FIELD, v) (((v) << FIELD##_SHIFT) & FIELD##_MASK) |
1558 | #define RREG32_PLL(reg) rdev->pll_rreg(rdev, (reg)) |
1582 | #define RREG32_PLL(reg) rdev->pll_rreg(rdev, (reg)) |
1559 | #define WREG32_PLL(reg, v) rdev->pll_wreg(rdev, (reg), (v)) |
1583 | #define WREG32_PLL(reg, v) rdev->pll_wreg(rdev, (reg), (v)) |
1560 | #define RREG32_MC(reg) rdev->mc_rreg(rdev, (reg)) |
1584 | #define RREG32_MC(reg) rdev->mc_rreg(rdev, (reg)) |
Line 1871... | Line 1895... | ||
1871 | bool set_mode(struct drm_device *dev, struct drm_connector *connector, |
1895 | bool set_mode(struct drm_device *dev, struct drm_connector *connector, |
1872 | videomode_t *mode, bool strict); |
1896 | videomode_t *mode, bool strict); |
Line -... | Line 1897... | ||
- | 1897 | ||
- | 1898 | ||
1873 | 1899 |