aboutsummaryrefslogtreecommitdiffstats
path: root/target/linux/amazon/files/arch/mips/amazon/dma-core.h
blob: cb3d456c95d3c3522f3cf35c5129ee3a2c0d72bf (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
#ifndef DMA_CORE_H 
#define DMA_CORE_H 

#define AMAZON_DMA_REG32(reg_num)  *((volatile u32*)(reg_num))
#define AMAZON_DMA_CH_STEP            4

#define COMB_ISR_RX_MASK 0xfe000000
#define COMB_ISR_TX_MASK 0x01f00000


#define DMA_OWN   1
#define CPU_OWN   0   
#define DMA_MAJOR 250

//Descriptors
#define DMA_DESC_OWN_CPU		0x0
#define DMA_DESC_OWN_DMA		0x80000000
#define DMA_DESC_CPT_SET		0x40000000
#define DMA_DESC_SOP_SET		0x20000000
#define DMA_DESC_EOP_SET		0x10000000

#define switch_rx_chan_base 0
#define switch_tx_chan_base 7
#define switch2_rx_chan_base 2
#define switch2_tx_chan_base 8
#define TPE_rx_chan_base    4
#define TPE_tx_chan_base    9
#define DPLus2FPI_rx_chan_base  6
#define DPLus2FPI_tx_chan_base  11 

#define RX_CHAN_NUM 7
#define TX_CHAN_NUM 5
#define CHAN_TOTAL_NUM       (RX_CHAN_NUM+TX_CHAN_NUM)
#define DEFAULT_OFFSET 20
#define DESCRIPTOR_SIZE 8

typedef struct dev_list{
   struct dma_device_info* dev;
   int weight;
   struct dev_list* prev;
   struct dev_list* next;
}dev_list; 

typedef struct channel_info{
   char device_name[16];
   int occupied;
   enum attr_t attr;  
   int current_desc;
   int weight;
   int default_weight;
   int desc_num;
   int burst_len;
   int desc_len;
   int desc_ofst;
   int packet_size;
   int offset_from_base;
   int control;
   void* opt[DEFAULT_OFFSET];
   u8* (*buffer_alloc)(int len,int* offset, void** opt);
   int (*buffer_free)(u8* dataptr,void* opt);
   int (*intr_handler)(struct dma_device_info* info,int status);

   struct dma_device_info* dma_dev;
}channel_info;



#endif