35 #include "sys_config.h"
68 #define SPI_CFG_BITMASK ((uint32_t) 0x1BD)
70 #define SPI_CFG_SPI_EN ((uint32_t) (1 << 0))
72 #define SPI_CFG_SLAVE_EN ((uint32_t) 0)
74 #define SPI_CFG_MASTER_EN ((uint32_t) (1 << 2))
76 #define SPI_CFG_MSB_FIRST_EN ((uint32_t) 0)
78 #define SPI_CFG_LSB_FIRST_EN ((uint32_t) (1 << 3))
80 #define SPI_CFG_CPHA_FIRST ((uint32_t) (0))
81 #define SPI_CFG_CPHA_SECOND ((uint32_t) (1 << 4))
83 #define SPI_CFG_CPOL_LO ((uint32_t) (0))
84 #define SPI_CFG_CPOL_HI ((uint32_t) (1 << 5))
86 #define SPI_CFG_LBM_EN ((uint32_t) (1 << 7))
88 #define SPI_CFG_SPOL_LO ((uint32_t) (0))
89 #define SPI_CFG_SPOL_HI ((uint32_t) (1 << 8))
95 #define SPI_DLY_BITMASK ((uint32_t) 0xFFFF)
97 #define SPI_DLY_PRE_DELAY(n) ((uint32_t) ((n) & 0x0F))
99 #define SPI_DLY_POST_DELAY(n) ((uint32_t) (((n) & 0x0F) << 4))
101 #define SPI_DLY_FRAME_DELAY(n) ((uint32_t) (((n) & 0x0F) << 8))
103 #define SPI_DLY_TRANSFER_DELAY(n) ((uint32_t) (((n) & 0x0F) << 12))
109 #define SPI_STAT_BITMASK ((uint32_t) 0x1FF)
111 #define SPI_STAT_RXRDY ((uint32_t) (1 << 0))
113 #define SPI_STAT_TXRDY ((uint32_t) (1 << 1))
115 #define SPI_STAT_RXOV ((uint32_t) (1 << 2))
117 #define SPI_STAT_TXUR ((uint32_t) (1 << 3))
119 #define SPI_STAT_SSA ((uint32_t) (1 << 4))
121 #define SPI_STAT_SSD ((uint32_t) (1 << 5))
123 #define SPI_STAT_STALLED ((uint32_t) (1 << 6))
125 #define SPI_STAT_EOT ((uint32_t) (1 << 7))
127 #define SPI_STAT_LE ((uint32_t) (1 << 8))
130 #define SPI_STAT_CLR_RXOV ((uint32_t) (1 << 2))
132 #define SPI_STAT_CLR_TXUR ((uint32_t) (1 << 3))
134 #define SPI_STAT_CLR_SSA ((uint32_t) (1 << 4))
136 #define SPI_STAT_CLR_SSD ((uint32_t) (1 << 5))
138 #define SPI_STAT_FORCE_EOT ((uint32_t) (1 << 7))
144 #define SPI_INTENSET_BITMASK ((uint32_t) 0x3F)
146 #define SPI_INTENSET_RXDYEN ((uint32_t) (1 << 0))
148 #define SPI_INTENSET_TXDYEN ((uint32_t) (1 << 1))
150 #define SPI_INTENSET_RXOVEN ((uint32_t) (1 << 2))
152 #define SPI_INTENSET_TXUREN ((uint32_t) (1 << 3))
154 #define SPI_INTENSET_SSAEN ((uint32_t) (1 << 2))
156 #define SPI_INTENSET_SSDEN ((uint32_t) (1 << 2))
162 #define SPI_INTENCLR_BITMASK ((uint32_t) 0x3F)
164 #define SPI_INTENCLR_RXDYEN ((uint32_t) (1 << 0))
166 #define SPI_INTENCLR_TXDYEN ((uint32_t) (1 << 1))
168 #define SPI_INTENCLR_RXOVEN ((uint32_t) (1 << 2))
170 #define SPI_INTENCLR_TXUREN ((uint32_t) (1 << 3))
172 #define SPI_INTENCLR_SSAEN ((uint32_t) (1 << 2))
174 #define SPI_INTENCLR_SSDEN ((uint32_t) (1 << 2))
180 #define SPI_RXDAT_BITMASK ((uint32_t) 0x11FFFF)
182 #define SPI_RXDAT_DATA(n) ((uint32_t) ((n) & 0xFFFF))
184 #define SPI_RXDAT_RXSSELN_ACTIVE ((uint32_t) 0)
185 #define SPI_RXDAT_RXSSELN_INACTIVE ((uint32_t) (1 << 16))
187 #define SPI_RXDAT_SOT ((uint32_t) (1 << 20))
193 #define SPI_TXDATCTL_BITMASK ((uint32_t) 0xF71FFFF)
195 #define SPI_TXDATCTL_DATA(n) ((uint32_t) ((n) & 0xFFFF))
197 #define SPI_TXDATCTL_ASSERT_SSEL ((uint32_t) 0)
198 #define SPI_TXDATCTL_DEASSERT_SSEL ((uint32_t) (1 << 16))
200 #define SPI_TXDATCTL_EOT ((uint32_t) (1 << 20))
202 #define SPI_TXDATCTL_EOF ((uint32_t) (1 << 21))
204 #define SPI_TXDATCTL_RXIGNORE ((uint32_t) (1 << 22))
206 #define SPI_TXDATCTL_FLEN(n) ((uint32_t) (((n) & 0x0F) << 24))
212 #define SPI_TXDAT_DATA(n) ((uint32_t) ((n) & 0xFFFF))
218 #define SPI_TXCTL_BITMASK ((uint32_t) 0xF71FF00)
220 #define SPI_TXCTL_ASSERT_SSEL ((uint32_t) 0)
221 #define SPI_TXCTL_DEASSERT_SSEL ((uint32_t) (1 << 16))
223 #define SPI_TXCTL_EOT ((uint32_t) (1 << 20))
225 #define SPI_TXCTL_EOF ((uint32_t) (1 << 21))
227 #define SPI_TXCTL_RXIGNORE ((uint32_t) (1 << 22))
229 #define SPI_TXCTL_FLEN(n) ((uint32_t) (((n) & 0x0F) << 24))
235 #define SPI_DIV_VAL(n) ((uint32_t) ((n) & 0xFFFF))
241 #define SPI_INTSTAT_BITMASK ((uint32_t) 0x3F)
243 #define SPI_INTSTAT_RXRDY ((uint32_t) (1 << 0))
245 #define SPI_INTSTAT_TXRDY ((uint32_t) (1 << 1))
247 #define SPI_INTSTAT_RXOV ((uint32_t) (1 << 2))
249 #define SPI_INTSTAT_TXUR ((uint32_t) (1 << 3))
251 #define SPI_INTSTAT_SSA ((uint32_t) (1 << 4))
253 #define SPI_INTSTAT_SSD ((uint32_t) (1 << 5))
256 typedef enum IP_SPI_MODE {
262 typedef enum IP_SPI_CLOCK_MODE {
274 typedef enum IP_SPI_DATA_ORDER {
280 typedef enum IP_SPI_SSEL_POL {