Subversion Repositories Kolibri OS

Rev

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