0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020
0021
0022
0023
0024
0025
0026
0027
0028
0029
0030 #ifndef _VIA_DMABLIT_H
0031 #define _VIA_DMABLIT_H
0032
0033 #include <linux/dma-mapping.h>
0034
0035 #define VIA_NUM_BLIT_ENGINES 2
0036 #define VIA_NUM_BLIT_SLOTS 8
0037
0038 struct _drm_via_descriptor;
0039
0040 typedef struct _drm_via_sg_info {
0041 struct page **pages;
0042 unsigned long num_pages;
0043 struct _drm_via_descriptor **desc_pages;
0044 int num_desc_pages;
0045 int num_desc;
0046 enum dma_data_direction direction;
0047 unsigned char *bounce_buffer;
0048 dma_addr_t chain_start;
0049 uint32_t free_on_sequence;
0050 unsigned int descriptors_per_page;
0051 int aborted;
0052 enum {
0053 dr_via_device_mapped,
0054 dr_via_desc_pages_alloc,
0055 dr_via_pages_locked,
0056 dr_via_pages_alloc,
0057 dr_via_sg_init
0058 } state;
0059 } drm_via_sg_info_t;
0060
0061 typedef struct _drm_via_blitq {
0062 struct drm_device *dev;
0063 uint32_t cur_blit_handle;
0064 uint32_t done_blit_handle;
0065 unsigned serviced;
0066 unsigned head;
0067 unsigned cur;
0068 unsigned num_free;
0069 unsigned num_outstanding;
0070 unsigned long end;
0071 int aborting;
0072 int is_active;
0073 drm_via_sg_info_t *blits[VIA_NUM_BLIT_SLOTS];
0074 spinlock_t blit_lock;
0075 wait_queue_head_t blit_queue[VIA_NUM_BLIT_SLOTS];
0076 wait_queue_head_t busy_queue;
0077 struct work_struct wq;
0078 struct timer_list poll_timer;
0079 } drm_via_blitq_t;
0080
0081
0082
0083
0084
0085
0086
0087 #define VIA_PCI_DMA_MAR0 0xE40
0088 #define VIA_PCI_DMA_DAR0 0xE44
0089 #define VIA_PCI_DMA_BCR0 0xE48
0090 #define VIA_PCI_DMA_DPR0 0xE4C
0091
0092 #define VIA_PCI_DMA_MAR1 0xE50
0093 #define VIA_PCI_DMA_DAR1 0xE54
0094 #define VIA_PCI_DMA_BCR1 0xE58
0095 #define VIA_PCI_DMA_DPR1 0xE5C
0096
0097 #define VIA_PCI_DMA_MAR2 0xE60
0098 #define VIA_PCI_DMA_DAR2 0xE64
0099 #define VIA_PCI_DMA_BCR2 0xE68
0100 #define VIA_PCI_DMA_DPR2 0xE6C
0101
0102 #define VIA_PCI_DMA_MAR3 0xE70
0103 #define VIA_PCI_DMA_DAR3 0xE74
0104 #define VIA_PCI_DMA_BCR3 0xE78
0105 #define VIA_PCI_DMA_DPR3 0xE7C
0106
0107 #define VIA_PCI_DMA_MR0 0xE80
0108 #define VIA_PCI_DMA_MR1 0xE84
0109 #define VIA_PCI_DMA_MR2 0xE88
0110 #define VIA_PCI_DMA_MR3 0xE8C
0111
0112 #define VIA_PCI_DMA_CSR0 0xE90
0113 #define VIA_PCI_DMA_CSR1 0xE94
0114 #define VIA_PCI_DMA_CSR2 0xE98
0115 #define VIA_PCI_DMA_CSR3 0xE9C
0116
0117 #define VIA_PCI_DMA_PTR 0xEA0
0118
0119
0120
0121 #define VIA_DMA_DPR_EC (1<<1)
0122 #define VIA_DMA_DPR_DDIE (1<<2)
0123 #define VIA_DMA_DPR_DT (1<<3)
0124
0125
0126 #define VIA_DMA_MR_CM (1<<0)
0127 #define VIA_DMA_MR_TDIE (1<<1)
0128 #define VIA_DMA_MR_HENDMACMD (1<<7)
0129
0130
0131 #define VIA_DMA_CSR_DE (1<<0)
0132 #define VIA_DMA_CSR_TS (1<<1)
0133 #define VIA_DMA_CSR_TA (1<<2)
0134 #define VIA_DMA_CSR_TD (1<<3)
0135 #define VIA_DMA_CSR_DD (1<<4)
0136 #define VIA_DMA_DPR_EC (1<<1)
0137
0138
0139
0140 #endif