13 #ifndef __R8A66597_H__
14 #define __R8A66597_H__
19 #define R8A66597_MAX_SAMPLING 10
21 #define R8A66597_MAX_NUM_PIPE 8
22 #define R8A66597_MAX_NUM_BULK 3
23 #define R8A66597_MAX_NUM_ISOC 2
24 #define R8A66597_MAX_NUM_INT 2
26 #define R8A66597_BASE_PIPENUM_BULK 3
27 #define R8A66597_BASE_PIPENUM_ISOC 1
28 #define R8A66597_BASE_PIPENUM_INT 6
30 #define R8A66597_BASE_BUFNUM 6
31 #define R8A66597_MAX_BUFNUM 0x4F
33 #define is_bulk_pipe(pipenum) \
34 ((pipenum >= R8A66597_BASE_PIPENUM_BULK) && \
35 (pipenum < (R8A66597_BASE_PIPENUM_BULK + R8A66597_MAX_NUM_BULK)))
36 #define is_interrupt_pipe(pipenum) \
37 ((pipenum >= R8A66597_BASE_PIPENUM_INT) && \
38 (pipenum < (R8A66597_BASE_PIPENUM_INT + R8A66597_MAX_NUM_INT)))
39 #define is_isoc_pipe(pipenum) \
40 ((pipenum >= R8A66597_BASE_PIPENUM_ISOC) && \
41 (pipenum < (R8A66597_BASE_PIPENUM_ISOC + R8A66597_MAX_NUM_ISOC)))
43 #define r8a66597_is_sudmac(r8a66597) (r8a66597->pdata->sudmac)
120 #define gadget_to_r8a66597(_gadget) \
121 container_of(_gadget, struct r8a66597, gadget)
122 #define r8a66597_to_gadget(r8a66597) (&r8a66597->gadget)
123 #define r8a66597_to_dev(r8a66597) (r8a66597->gadget.dev.parent)
136 unsigned int data = 0;
139 if (r8a66597->
pdata->on_chip) {
143 if (len >= 4 && !((
unsigned long)buf & 0x03)) {
150 for (i = 0; i < len; i++) {
154 buf[
i] = (data >> ((i & 0x03) * 8)) & 0xff;
160 if (len >= 2 && !((
unsigned long)buf & 0x01)) {
167 for (i = 0; i < len; i++) {
171 buf[
i] = (data >> ((i & 0x01) * 8)) & 0xff;
176 static inline void r8a66597_write(
struct r8a66597 *r8a66597,
u16 val,
177 unsigned long offset)
182 static inline void r8a66597_mdfy(
struct r8a66597 *r8a66597,
186 tmp = r8a66597_read(r8a66597, offset);
189 r8a66597_write(r8a66597, tmp, offset);
192 #define r8a66597_bclr(r8a66597, val, offset) \
193 r8a66597_mdfy(r8a66597, 0, val, offset)
194 #define r8a66597_bset(r8a66597, val, offset) \
195 r8a66597_mdfy(r8a66597, val, 0, offset)
197 static inline void r8a66597_write_fifo(
struct r8a66597 *r8a66597,
206 if (r8a66597->
pdata->on_chip) {
208 if (len >= 4 && !((
unsigned long)buf & 0x03)) {
215 if (len >= 2 && !((
unsigned long)buf & 0x01)) {
224 if (r8a66597->
pdata->on_chip)
230 if (r8a66597->
pdata->wr0_shorted_to_wr1)
232 for (i = 0; i < len; i++)
233 iowrite8(buf[i], fifoaddr + adj - (i & adj));
234 if (r8a66597->
pdata->wr0_shorted_to_wr1)
242 switch (pdata->
xtal) {
260 static inline u32 r8a66597_sudmac_read(
struct r8a66597 *r8a66597,
261 unsigned long offset)
266 static inline void r8a66597_sudmac_write(
struct r8a66597 *r8a66597,
u32 val,
267 unsigned long offset)
272 #define get_pipectr_addr(pipenum) (PIPE1CTR + (pipenum - 1) * 2)
273 #define get_pipetre_addr(pipenum) (PIPE1TRE + (pipenum - 1) * 4)
274 #define get_pipetrn_addr(pipenum) (PIPE1TRN + (pipenum - 1) * 4)
276 #define enable_irq_ready(r8a66597, pipenum) \
277 enable_pipe_irq(r8a66597, pipenum, BRDYENB)
278 #define disable_irq_ready(r8a66597, pipenum) \
279 disable_pipe_irq(r8a66597, pipenum, BRDYENB)
280 #define enable_irq_empty(r8a66597, pipenum) \
281 enable_pipe_irq(r8a66597, pipenum, BEMPENB)
282 #define disable_irq_empty(r8a66597, pipenum) \
283 disable_pipe_irq(r8a66597, pipenum, BEMPENB)
284 #define enable_irq_nrdy(r8a66597, pipenum) \
285 enable_pipe_irq(r8a66597, pipenum, NRDYENB)
286 #define disable_irq_nrdy(r8a66597, pipenum) \
287 disable_pipe_irq(r8a66597, pipenum, NRDYENB)