40 #ifndef __DRIVERLIB_EPI_H__
41 #define __DRIVERLIB_EPI_H__
59 #define EPI_MODE_GENERAL 0x00000010
60 #define EPI_MODE_SDRAM 0x00000011
61 #define EPI_MODE_HB8 0x00000012
62 #define EPI_MODE_HB16 0x00000013
63 #define EPI_MODE_DISABLE 0x00000000
70 #define EPI_SDRAM_CORE_FREQ_0_15 \
72 #define EPI_SDRAM_CORE_FREQ_15_30 \
74 #define EPI_SDRAM_CORE_FREQ_30_50 \
76 #define EPI_SDRAM_CORE_FREQ_50_100 \
78 #define EPI_SDRAM_LOW_POWER 0x00000200
79 #define EPI_SDRAM_FULL_POWER 0x00000000
80 #define EPI_SDRAM_SIZE_64MBIT 0x00000000
81 #define EPI_SDRAM_SIZE_128MBIT 0x00000001
82 #define EPI_SDRAM_SIZE_256MBIT 0x00000002
83 #define EPI_SDRAM_SIZE_512MBIT 0x00000003
90 #define EPI_GPMODE_CLKPIN 0x80000000
91 #define EPI_GPMODE_CLKGATE 0x40000000
92 #define EPI_GPMODE_FRAME50 0x04000000
93 #define EPI_GPMODE_WRITE2CYCLE 0x00080000
94 #define EPI_GPMODE_ASIZE_NONE 0x00000000
95 #define EPI_GPMODE_ASIZE_4 0x00000010
96 #define EPI_GPMODE_ASIZE_12 0x00000020
97 #define EPI_GPMODE_ASIZE_20 0x00000030
98 #define EPI_GPMODE_DSIZE_8 0x00000000
99 #define EPI_GPMODE_DSIZE_16 0x00000001
100 #define EPI_GPMODE_DSIZE_24 0x00000002
101 #define EPI_GPMODE_DSIZE_32 0x00000003
108 #define EPI_HB8_USE_TXEMPTY 0x00800000
109 #define EPI_HB8_USE_RXFULL 0x00400000
110 #define EPI_HB8_WRHIGH 0x00200000
111 #define EPI_HB8_RDHIGH 0x00100000
112 #define EPI_HB8_ALE_HIGH 0x00080000
113 #define EPI_HB8_ALE_LOW 0x00000000
114 #define EPI_HB8_WRWAIT_0 0x00000000
115 #define EPI_HB8_WRWAIT_1 0x00000040
116 #define EPI_HB8_WRWAIT_2 0x00000080
117 #define EPI_HB8_WRWAIT_3 0x000000C0
118 #define EPI_HB8_RDWAIT_0 0x00000000
119 #define EPI_HB8_RDWAIT_1 0x00000010
120 #define EPI_HB8_RDWAIT_2 0x00000020
121 #define EPI_HB8_RDWAIT_3 0x00000030
122 #define EPI_HB8_MODE_ADMUX 0x00000000
123 #define EPI_HB8_MODE_ADDEMUX 0x00000001
124 #define EPI_HB8_MODE_SRAM 0x00000002
125 #define EPI_HB8_MODE_FIFO 0x00000003
126 #define EPI_HB8_WORD_ACCESS 0x00000100
127 #define EPI_HB8_CSCFG_ALE 0x00000000
128 #define EPI_HB8_CSCFG_CS 0x00000200
129 #define EPI_HB8_CSCFG_DUAL_CS 0x00000400
130 #define EPI_HB8_CSCFG_ALE_DUAL_CS \
132 #define EPI_HB8_CSCFG_ALE_SINGLE_CS \
134 #define EPI_HB8_CSCFG_QUAD_CS 0x00001200
135 #define EPI_HB8_CSCFG_ALE_QUAD_CS \
137 #define EPI_HB8_CSBAUD 0x00000800
138 #define EPI_HB8_CLOCK_GATE 0x80000000
139 #define EPI_HB8_CLOCK_GATE_IDLE \
141 #define EPI_HB8_CLOCK_INVERT 0x20000000
142 #define EPI_HB8_IN_READY_EN 0x10000000
143 #define EPI_HB8_IN_READY_EN_INVERT \
145 #define EPI_HB8_CSCFG_MASK 0x00001600
152 #define EPI_HB16_USE_TXEMPTY 0x00800000
153 #define EPI_HB16_USE_RXFULL 0x00400000
154 #define EPI_HB16_WRHIGH 0x00200000
155 #define EPI_HB16_RDHIGH 0x00100000
156 #define EPI_HB16_WRWAIT_0 0x00000000
157 #define EPI_HB16_WRWAIT_1 0x00000040
158 #define EPI_HB16_WRWAIT_2 0x00000080
159 #define EPI_HB16_WRWAIT_3 0x000000C0
160 #define EPI_HB16_RDWAIT_0 0x00000000
161 #define EPI_HB16_RDWAIT_1 0x00000010
162 #define EPI_HB16_RDWAIT_2 0x00000020
163 #define EPI_HB16_RDWAIT_3 0x00000030
164 #define EPI_HB16_MODE_ADMUX 0x00000000
165 #define EPI_HB16_MODE_ADDEMUX 0x00000001
166 #define EPI_HB16_MODE_SRAM 0x00000002
167 #define EPI_HB16_MODE_FIFO 0x00000003
168 #define EPI_HB16_BSEL 0x00000004
169 #define EPI_HB16_WORD_ACCESS 0x00000100
170 #define EPI_HB16_CSCFG_ALE 0x00000000
171 #define EPI_HB16_CSCFG_CS 0x00000200
172 #define EPI_HB16_CSCFG_DUAL_CS 0x00000400
173 #define EPI_HB16_CSCFG_ALE_DUAL_CS \
175 #define EPI_HB16_CSCFG_ALE_SINGLE_CS \
177 #define EPI_HB16_CSCFG_QUAD_CS 0x00001200
178 #define EPI_HB16_CSCFG_ALE_QUAD_CS \
180 #define EPI_HB16_CLOCK_GATE 0x80000000
181 #define EPI_HB16_CLOCK_GATE_IDLE \
183 #define EPI_HB16_CLOCK_INVERT 0x20000000
184 #define EPI_HB16_IN_READY_EN 0x10000000
185 #define EPI_HB16_IN_READY_EN_INVERTED \
187 #define EPI_HB16_ALE_HIGH 0x00080000
188 #define EPI_HB16_ALE_LOW 0x00000000
189 #define EPI_HB16_BURST_TRAFFIC 0x00010000
190 #define EPI_HB16_CSBAUD 0x00000800
191 #define EPI_HB16_CSCFG_MASK 0x00001600
198 #define EPI_HB8_IN_READY_DELAY_1 \
200 #define EPI_HB8_IN_READY_DELAY_2 \
202 #define EPI_HB8_IN_READY_DELAY_3 \
204 #define EPI_HB8_CAP_WIDTH_1 0x00001000
205 #define EPI_HB8_CAP_WIDTH_2 0x00002000
206 #define EPI_HB8_WRWAIT_MINUS_DISABLE \
208 #define EPI_HB8_WRWAIT_MINUS_ENABLE \
210 #define EPI_HB8_RDWAIT_MINUS_DISABLE \
212 #define EPI_HB8_RDWAIT_MINUS_ENABLE \
220 #define EPI_HB16_IN_READY_DELAY_1 \
222 #define EPI_HB16_IN_READY_DELAY_2 \
224 #define EPI_HB16_IN_READY_DELAY_3 \
226 #define EPI_HB16_PSRAM_NO_LIMIT 0x00000000
227 #define EPI_HB16_PSRAM_128 0x00010000
228 #define EPI_HB16_PSRAM_256 0x00020000
229 #define EPI_HB16_PSRAM_512 0x00030000
230 #define EPI_HB16_PSRAM_1024 0x00040000
231 #define EPI_HB16_PSRAM_2048 0x00050000
232 #define EPI_HB16_PSRAM_4096 0x00060000
233 #define EPI_HB16_PSRAM_8192 0x00070000
234 #define EPI_HB16_CAP_WIDTH_1 0x00001000
235 #define EPI_HB16_CAP_WIDTH_2 0x00002000
236 #define EPI_HB16_WRWAIT_MINUS_DISABLE \
238 #define EPI_HB16_WRWAIT_MINUS_ENABLE \
240 #define EPI_HB16_RDWAIT_MINUS_DISABLE \
242 #define EPI_HB16_RDWAIT_MINUS_ENABLE \
250 #define EPI_ADDR_PER_SIZE_256B 0x00000000
251 #define EPI_ADDR_PER_SIZE_64KB 0x00000040
252 #define EPI_ADDR_PER_SIZE_16MB 0x00000080
253 #define EPI_ADDR_PER_SIZE_256MB 0x000000C0
254 #define EPI_ADDR_PER_BASE_NONE 0x00000000
255 #define EPI_ADDR_PER_BASE_A 0x00000010
256 #define EPI_ADDR_PER_BASE_C 0x00000020
257 #define EPI_ADDR_RAM_SIZE_256B 0x00000000
258 #define EPI_ADDR_RAM_SIZE_64KB 0x00000004
259 #define EPI_ADDR_RAM_SIZE_16MB 0x00000008
260 #define EPI_ADDR_RAM_SIZE_256MB 0x0000000C
261 #define EPI_ADDR_RAM_BASE_NONE 0x00000000
262 #define EPI_ADDR_RAM_BASE_6 0x00000001
263 #define EPI_ADDR_RAM_BASE_8 0x00000002
264 #define EPI_ADDR_QUAD_MODE 0x00000033
265 #define EPI_ADDR_CODE_SIZE_256B 0x00000000
266 #define EPI_ADDR_CODE_SIZE_64KB 0x00000400
267 #define EPI_ADDR_CODE_SIZE_16MB 0x00000800
268 #define EPI_ADDR_CODE_SIZE_256MB \
270 #define EPI_ADDR_CODE_BASE_NONE 0x00000000
271 #define EPI_ADDR_CODE_BASE_1 0x00000100
278 #define EPI_NBCONFIG_SIZE_8 1
279 #define EPI_NBCONFIG_SIZE_16 2
280 #define EPI_NBCONFIG_SIZE_32 3
287 #define EPI_FIFO_CONFIG_WTFULLERR \
289 #define EPI_FIFO_CONFIG_RSTALLERR \
291 #define EPI_FIFO_CONFIG_TX_EMPTY \
293 #define EPI_FIFO_CONFIG_TX_1_4 0x00000020
294 #define EPI_FIFO_CONFIG_TX_1_2 0x00000030
295 #define EPI_FIFO_CONFIG_TX_3_4 0x00000040
296 #define EPI_FIFO_CONFIG_RX_1_8 0x00000001
297 #define EPI_FIFO_CONFIG_RX_1_4 0x00000002
298 #define EPI_FIFO_CONFIG_RX_1_2 0x00000003
299 #define EPI_FIFO_CONFIG_RX_3_4 0x00000004
300 #define EPI_FIFO_CONFIG_RX_7_8 0x00000005
301 #define EPI_FIFO_CONFIG_RX_FULL 0x00000006
309 #define EPI_INT_DMA_TX_DONE 0x00000010
310 #define EPI_INT_DMA_RX_DONE 0x00000008
311 #define EPI_INT_TXREQ 0x00000004
312 #define EPI_INT_RXREQ 0x00000002
313 #define EPI_INT_ERR 0x00000001
321 #define EPI_INT_ERR_DMAWRIC 0x00000010
322 #define EPI_INT_ERR_DMARDIC 0x00000008
323 #define EPI_INT_ERR_WTFULL 0x00000004
324 #define EPI_INT_ERR_RSTALL 0x00000002
325 #define EPI_INT_ERR_TIMEOUT 0x00000001
336 uint32_t ui32Scratch;
349 STR ui32Value, [pui32Addr]
355 LDR ui32Scratch, [__current_sp()]
362 uint32_t ui32Value, ui32Scratch;
375 LDR ui32Value, [pui32Addr]
381 LDR ui32Scratch, [__current_sp()]
390 uint32_t ui32Scratch;
403 STRH ui16Value, [pui16Addr]
409 LDR ui32Scratch, [__current_sp()]
416 uint32_t ui32Scratch;
430 LDRH ui16Value, [pui16Addr]
436 LDR ui32Scratch, [__current_sp()]
445 uint32_t ui32Scratch;
458 STRB ui8Value, [pui8Addr]
464 LDR ui32Scratch, [__current_sp()]
471 uint32_t ui32Scratch;
485 LDRB ui8Value, [pui8Addr]
491 LDR ui32Scratch, [__current_sp()]
514 #if (defined gcc) || (defined ewarm) || (defined sourcerygxx) || \
524 volatile register uint32_t ui32Scratch;
532 " STR %[value],[%[addr]]\n"
533 " LDR %[scratch],[sp]\n"
534 : [scratch]
"=r" (ui32Scratch)
535 : [addr]
"r" (pui32Addr), [value]
"r" (ui32Value)
541 ui32Scratch = ui32Scratch;
547 volatile register uint32_t ui32Data, ui32Scratch;
560 " LDR %[ret],[%[addr]]\n"
561 " LDR %[scratch],[sp]\n"
562 : [ret]
"=r" (ui32Data),
563 [scratch]
"=r" (ui32Scratch)
564 : [addr]
"r" (pui32Addr)
571 ui32Scratch = ui32Scratch;
579 volatile register uint32_t ui32Scratch;
587 " STRH %[value],[%[addr]]\n"
588 " LDR %[scratch],[sp]\n"
589 : [scratch]
"=r" (ui32Scratch)
590 : [addr]
"r" (pui16Addr), [value]
"r" (ui16Value)
597 ui32Scratch = ui32Scratch;
603 register uint16_t ui16Data;
604 register uint32_t ui32Scratch;
617 " LDRH %[ret],[%[addr]]\n"
618 " LDR %[scratch],[sp]\n"
619 : [ret]
"=r" (ui16Data),
620 [scratch]
"=r" (ui32Scratch)
621 : [addr]
"r" (pui16Addr)
627 ui32Scratch = ui32Scratch;
635 volatile register uint32_t ui32Scratch;
643 " STRB %[value],[%[addr]]\n"
644 " LDR %[scratch],[sp]\n"
645 : [scratch]
"=r" (ui32Scratch)
646 : [addr]
"r" (pui8Addr), [value]
"r" (ui8Value)
652 ui32Scratch = ui32Scratch;
658 register uint8_t ui8Data;
659 register uint32_t ui32Scratch;
672 " LDRB %[ret],[%[addr]]\n"
673 " LDR %[scratch],[sp]\n"
674 : [ret]
"=r" (ui8Data),
675 [scratch]
"=r" (ui32Scratch)
676 : [addr]
"r" (pui8Addr)
682 ui32Scratch = ui32Scratch;
693 extern void EPIModeSet(uint32_t ui32Base, uint32_t ui32Mode);
694 extern void EPIDividerSet(uint32_t ui32Base, uint32_t ui32Divider);
696 uint32_t ui32Divider);
697 extern void EPIDMATxCount(uint32_t ui32Base, uint32_t ui32Count);
699 uint32_t ui32FrameCount, uint32_t ui32MaxWait);
701 uint32_t ui32MaxWait);
703 uint32_t ui32MaxWait);
705 uint32_t ui32Config);
707 uint32_t ui32Config);
709 uint32_t ui32Config);
711 uint32_t ui32Config);
720 uint32_t ui32Refresh);
723 uint32_t ui32Channel,
724 uint32_t ui32DataSize,
725 uint32_t ui32Address);
727 uint32_t ui32Channel,
730 uint32_t ui32Channel);
732 uint32_t ui32Channel);
743 extern void EPIFIFOConfig(uint32_t ui32Base, uint32_t ui32Config);
745 extern void EPIIntEnable(uint32_t ui32Base, uint32_t ui32IntFlags);
746 extern void EPIIntDisable(uint32_t ui32Base, uint32_t ui32IntFlags);
747 extern uint32_t
EPIIntStatus(uint32_t ui32Base,
bool bMasked);
750 extern void EPIIntRegister(uint32_t ui32Base,
void (*pfnHandler)(
void));
762 #endif // __DRIVERLIB_EPI_H__
uint32_t EPINonBlockingReadGet8(uint32_t ui32Base, uint32_t ui32Count, uint8_t *pui8Buf)
void EPINonBlockingReadStart(uint32_t ui32Base, uint32_t ui32Channel, uint32_t ui32Count)
void EPIDMATxCount(uint32_t ui32Base, uint32_t ui32Count)
void EPIConfigHB8Set(uint32_t ui32Base, uint32_t ui32Config, uint32_t ui32MaxWait)
void EPIWorkaroundByteWrite(uint8_t *pui8Addr, uint8_t ui8Value)
void EPIModeSet(uint32_t ui32Base, uint32_t ui32Mode)
void EPIConfigHB8TimingSet(uint32_t ui32Base, uint32_t ui32CS, uint32_t ui32Config)
void EPINonBlockingReadConfigure(uint32_t ui32Base, uint32_t ui32Channel, uint32_t ui32DataSize, uint32_t ui32Address)
void EPIConfigHB16TimingSet(uint32_t ui32Base, uint32_t ui32CS, uint32_t ui32Config)
uint32_t EPINonBlockingReadGet16(uint32_t ui32Base, uint32_t ui32Count, uint16_t *pui16Buf)
void EPIWorkaroundWordWrite(uint32_t *pui32Addr, uint32_t ui32Value)
uint32_t EPINonBlockingReadCount(uint32_t ui32Base, uint32_t ui32Channel)
void EPIConfigHB16Set(uint32_t ui32Base, uint32_t ui32Config, uint32_t ui32MaxWait)
void EPIPSRAMConfigRegSet(uint32_t ui32Base, uint32_t ui32CS, uint32_t ui32CR)
uint32_t EPIWorkaroundWordRead(uint32_t *pui32Addr)
void EPIWorkaroundHWordWrite(uint16_t *pui16Addr, uint16_t ui16Value)
uint32_t EPIPSRAMConfigRegGet(uint32_t ui32Base, uint32_t ui32CS)
void EPIIntErrorClear(uint32_t ui32Base, uint32_t ui32ErrFlags)
uint32_t EPINonBlockingReadAvail(uint32_t ui32Base)
void EPINonBlockingReadStop(uint32_t ui32Base, uint32_t ui32Channel)
void EPIConfigGPModeSet(uint32_t ui32Base, uint32_t ui32Config, uint32_t ui32FrameCount, uint32_t ui32MaxWait)
void EPIFIFOConfig(uint32_t ui32Base, uint32_t ui32Config)
uint32_t EPIIntErrorStatus(uint32_t ui32Base)
void EPIDividerCSSet(uint32_t ui32Base, uint32_t ui32CS, uint32_t ui32Divider)
bool EPIPSRAMConfigRegGetNonBlocking(uint32_t ui32Base, uint32_t ui32CS, uint32_t *pui32CR)
void EPIIntEnable(uint32_t ui32Base, uint32_t ui32IntFlags)
void EPIConfigSDRAMSet(uint32_t ui32Base, uint32_t ui32Config, uint32_t ui32Refresh)
void EPIConfigHB8CSSet(uint32_t ui32Base, uint32_t ui32CS, uint32_t ui32Config)
uint32_t EPINonBlockingReadGet32(uint32_t ui32Base, uint32_t ui32Count, uint32_t *pui32Buf)
uint16_t EPIWorkaroundHWordRead(uint16_t *pui16Addr)
void EPIAddressMapSet(uint32_t ui32Base, uint32_t ui32Map)
void EPIIntUnregister(uint32_t ui32Base)
void EPIIntDisable(uint32_t ui32Base, uint32_t ui32IntFlags)
uint8_t EPIWorkaroundByteRead(uint8_t *pui8Addr)
void EPIDividerSet(uint32_t ui32Base, uint32_t ui32Divider)
uint32_t EPIWriteFIFOCountGet(uint32_t ui32Base)
void EPIIntRegister(uint32_t ui32Base, void(*pfnHandler)(void))
uint32_t EPIIntStatus(uint32_t ui32Base, bool bMasked)
void EPIConfigHB16CSSet(uint32_t ui32Base, uint32_t ui32CS, uint32_t ui32Config)
void EPIPSRAMConfigRegRead(uint32_t ui32Base, uint32_t ui32CS)