BEST PCIe driver
 All Data Structures Files Functions Variables Macros Pages
csr_regs.h
1 /*
2  Enhanced features off:
3 
4  Bytes Access Type Description
5  ----- ----------- -----------
6  0-3 R/Clr Status(1)
7  4-7 R/W Control(2)
8  8-12 R Descriptor Fill Level(write fill level[15:0], read fill level[15:0])
9  13-15 R Response Fill Level[15:0]
10  16-31 N/A <Reserved>
11 
12 
13  Enhanced features on:
14 
15  Bytes Access Type Description
16  ----- ----------- -----------
17  0-3 R/Clr Status(1)
18  4-7 R/W Control(2)
19  8-12 R Descriptor Fill Level (write fill level[15:0], read fill level[15:0])
20  13-15 R Response Fill Level[15:0]
21  16-20 R Sequence Number (write sequence number[15:0], read sequence number[15:0])
22  21-31 N/A <Reserved>
23 
24  (1) Writing a '1' to the interrupt bit of the status register clears the interrupt bit (when applicable), all other bits are unaffected by writes
25  (2) Writing to the software reset bit will clear the entire register (as well as all the registers for the entire SGDMA)
26 
27  Status Register:
28 
29  Bits Description
30  ---- -----------
31  0 Busy
32  1 Descriptor Buffer Empty
33  2 Descriptor Buffer Full
34  3 Response Buffer Empty
35  4 Response Buffer Full
36  5 Stop State
37  6 Reset State
38  7 Stopped on Error
39  8 Stopped on Early Termination
40  9 IRQ
41  10-31 <Reserved>
42 
43  Control Register:
44 
45  Bits Description
46  ---- -----------
47  0 Stop (will also be set if a stop on error/early termination condition occurs)
48  1 Software Reset
49  2 Stop on Error
50  3 Stop on Early Termination
51  4 Global Interrupt Enable Mask
52  5 Stop dispatcher (stops the dispatcher from issuing more read/write commands)
53  6-31 <Reserved>
54 */
55 
56 #ifndef CSR_REGS_H_
57 #define CSR_REGS_H_
58 
59 //#include "io.h"
60 
61 #define CSR_STATUS_REG (0x0)
62 #define CSR_CONTROL_REG (0x4)
63 #define CSR_DESCRIPTOR_FILL_LEVEL_REG (0x8)
64 #define CSR_RESPONSE_FILL_LEVEL_REG (0xC)
65 #define CSR_SEQUENCE_NUMBER_REG (0x10) // this register only exists when the enhanced features are enabled
66 
67 
68 // masks for the status register bits
69 #define CSR_BUSY_MASK (1)
70 #define CSR_BUSY_OFFSET (0)
71 #define CSR_DESCRIPTOR_BUFFER_EMPTY_MASK (1<<1)
72 #define CSR_DESCRIPTOR_BUFFER_EMPTY_OFFSET (1)
73 #define CSR_DESCRIPTOR_BUFFER_FULL_MASK (1<<2)
74 #define CSR_DESCRIPTOR_BUFFER_FULL_OFFSET (2)
75 #define CSR_RESPONSE_BUFFER_EMPTY_MASK (1<<3)
76 #define CSR_RESPONSE_BUFFER_EMPTY_OFFSET (3)
77 #define CSR_RESPONSE_BUFFER_FULL_MASK (1<<4)
78 #define CSR_RESPONSE_BUFFER_FULL_OFFSET (4)
79 #define CSR_STOP_STATE_MASK (1<<5)
80 #define CSR_STOP_STATE_OFFSET (5)
81 #define CSR_RESET_STATE_MASK (1<<6)
82 #define CSR_RESET_STATE_OFFSET (6)
83 #define CSR_STOPPED_ON_ERROR_MASK (1<<7)
84 #define CSR_STOPPED_ON_ERROR_OFFSET (7)
85 #define CSR_STOPPED_ON_EARLY_TERMINATION_MASK (1<<8)
86 #define CSR_STOPPED_ON_EARLY_TERMINATION_OFFSET (8)
87 #define CSR_IRQ_SET_MASK (1<<9)
88 #define CSR_IRQ_SET_OFFSET (9)
89 
90 // masks for the control register bits
91 #define CSR_STOP_MASK (1)
92 #define CSR_STOP_OFFSET (0)
93 #define CSR_RESET_MASK (1<<1)
94 #define CSR_RESET_OFFSET (1)
95 #define CSR_STOP_ON_ERROR_MASK (1<<2)
96 #define CSR_STOP_ON_ERROR_OFFSET (2)
97 #define CSR_STOP_ON_EARLY_TERMINATION_MASK (1<<3)
98 #define CSR_STOP_ON_EARLY_TERMINATION_OFFSET (3)
99 #define CSR_GLOBAL_INTERRUPT_MASK (1<<4)
100 #define CSR_GLOBAL_INTERRUPT_OFFSET (4)
101 #define CSR_STOP_DESCRIPTORS_MASK (1<<5)
102 #define CSR_STOP_DESCRIPTORS_OFFSET (5)
103 
104 // masks for the FIFO fill levels and sequence number
105 #define CSR_READ_FILL_LEVEL_MASK (0xFFFF)
106 #define CSR_READ_FILL_LEVEL_OFFSET (0)
107 #define CSR_WRITE_FILL_LEVEL_MASK (0xFFFF0000)
108 #define CSR_WRITE_FILL_LEVEL_OFFSET (16)
109 #define CSR_RESPONSE_FILL_LEVEL_MASK (0xFFFF)
110 #define CSR_RESPONSE_FILL_LEVEL_OFFSET (0)
111 #define CSR_READ_SEQUENCE_NUMBER_MASK (0xFFFF)
112 #define CSR_READ_SEQUENCE_NUMBER_OFFSET (0)
113 #define CSR_WRITE_SEQUENCE_NUMBER_MASK (0xFFFF0000)
114 #define CSR_WRITE_SEQUENCE_NUMBER_OFFSET (16)
115 
116 
117 // read/write macros for each 32 bit register of the CSR port
118 /*#define WR_CSR_STATUS(base, data) IOWR_32DIRECT(base, CSR_STATUS_REG, data)
119 #define WR_CSR_CONTROL(base, data) IOWR_32DIRECT(base, CSR_CONTROL_REG, data)
120 #define RD_CSR_STATUS(base) IORD_32DIRECT(base, CSR_STATUS_REG)
121 #define RD_CSR_CONTROL(base) IORD_32DIRECT(base, CSR_CONTROL_REG)
122 #define RD_CSR_DESCRIPTOR_FILL_LEVEL(base) IORD_32DIRECT(base, CSR_DESCRIPTOR_FILL_LEVEL_REG)
123 #define RD_CSR_RESPONSE_FILL_LEVEL(base) IORD_32DIRECT(base, CSR_RESPONSE_FILL_LEVEL_REG)
124 #define RD_CSR_SEQUENCE_NUMBER(base) IORD_32DIRECT(base, CSR_SEQUENCE_NUMBER_REG)
125 */
126 
127 
128 #endif /*CSR_REGS_H_*/