diff options
Diffstat (limited to 'drivers/usb/renesas_usbhs/fifo.h')
-rw-r--r-- | drivers/usb/renesas_usbhs/fifo.h | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/drivers/usb/renesas_usbhs/fifo.h b/drivers/usb/renesas_usbhs/fifo.h index 94db269f84c2..ed6d8e56c13c 100644 --- a/drivers/usb/renesas_usbhs/fifo.h +++ b/drivers/usb/renesas_usbhs/fifo.h | |||
@@ -17,18 +17,33 @@ | |||
17 | #ifndef RENESAS_USB_FIFO_H | 17 | #ifndef RENESAS_USB_FIFO_H |
18 | #define RENESAS_USB_FIFO_H | 18 | #define RENESAS_USB_FIFO_H |
19 | 19 | ||
20 | #include <linux/interrupt.h> | ||
21 | #include <linux/sh_dma.h> | ||
22 | #include <asm/dma.h> | ||
20 | #include "pipe.h" | 23 | #include "pipe.h" |
21 | 24 | ||
25 | #define DMA_ADDR_INVALID (~(dma_addr_t)0) | ||
26 | |||
22 | struct usbhs_fifo { | 27 | struct usbhs_fifo { |
28 | char *name; | ||
23 | u32 port; /* xFIFO */ | 29 | u32 port; /* xFIFO */ |
24 | u32 sel; /* xFIFOSEL */ | 30 | u32 sel; /* xFIFOSEL */ |
25 | u32 ctr; /* xFIFOCTR */ | 31 | u32 ctr; /* xFIFOCTR */ |
26 | 32 | ||
27 | struct usbhs_pipe *pipe; | 33 | struct usbhs_pipe *pipe; |
34 | struct tasklet_struct tasklet; | ||
35 | |||
36 | struct dma_chan *tx_chan; | ||
37 | struct dma_chan *rx_chan; | ||
38 | |||
39 | struct sh_dmae_slave tx_slave; | ||
40 | struct sh_dmae_slave rx_slave; | ||
28 | }; | 41 | }; |
29 | 42 | ||
30 | struct usbhs_fifo_info { | 43 | struct usbhs_fifo_info { |
31 | struct usbhs_fifo cfifo; | 44 | struct usbhs_fifo cfifo; |
45 | struct usbhs_fifo d0fifo; | ||
46 | struct usbhs_fifo d1fifo; | ||
32 | }; | 47 | }; |
33 | 48 | ||
34 | struct usbhs_pkt_handle; | 49 | struct usbhs_pkt_handle; |
@@ -36,8 +51,10 @@ struct usbhs_pkt { | |||
36 | struct list_head node; | 51 | struct list_head node; |
37 | struct usbhs_pipe *pipe; | 52 | struct usbhs_pipe *pipe; |
38 | struct usbhs_pkt_handle *handler; | 53 | struct usbhs_pkt_handle *handler; |
54 | dma_addr_t dma; | ||
39 | void *buf; | 55 | void *buf; |
40 | int length; | 56 | int length; |
57 | int trans; | ||
41 | int actual; | 58 | int actual; |
42 | int zero; | 59 | int zero; |
43 | }; | 60 | }; |
@@ -45,6 +62,7 @@ struct usbhs_pkt { | |||
45 | struct usbhs_pkt_handle { | 62 | struct usbhs_pkt_handle { |
46 | int (*prepare)(struct usbhs_pkt *pkt, int *is_done); | 63 | int (*prepare)(struct usbhs_pkt *pkt, int *is_done); |
47 | int (*try_run)(struct usbhs_pkt *pkt, int *is_done); | 64 | int (*try_run)(struct usbhs_pkt *pkt, int *is_done); |
65 | int (*dma_done)(struct usbhs_pkt *pkt, int *is_done); | ||
48 | }; | 66 | }; |
49 | 67 | ||
50 | /* | 68 | /* |
@@ -61,12 +79,17 @@ void usbhs_fifo_quit(struct usbhs_priv *priv); | |||
61 | enum { | 79 | enum { |
62 | USBHSF_PKT_PREPARE, | 80 | USBHSF_PKT_PREPARE, |
63 | USBHSF_PKT_TRY_RUN, | 81 | USBHSF_PKT_TRY_RUN, |
82 | USBHSF_PKT_DMA_DONE, | ||
64 | }; | 83 | }; |
65 | 84 | ||
66 | extern struct usbhs_pkt_handle usbhs_fifo_pio_push_handler; | 85 | extern struct usbhs_pkt_handle usbhs_fifo_pio_push_handler; |
67 | extern struct usbhs_pkt_handle usbhs_fifo_pio_pop_handler; | 86 | extern struct usbhs_pkt_handle usbhs_fifo_pio_pop_handler; |
68 | extern struct usbhs_pkt_handle usbhs_ctrl_stage_end_handler; | 87 | extern struct usbhs_pkt_handle usbhs_ctrl_stage_end_handler; |
69 | 88 | ||
89 | extern struct usbhs_pkt_handle usbhs_fifo_dma_push_handler; | ||
90 | extern struct usbhs_pkt_handle usbhs_fifo_dma_pop_handler; | ||
91 | |||
92 | |||
70 | void usbhs_pkt_init(struct usbhs_pkt *pkt); | 93 | void usbhs_pkt_init(struct usbhs_pkt *pkt); |
71 | void usbhs_pkt_push(struct usbhs_pipe *pipe, struct usbhs_pkt *pkt, | 94 | void usbhs_pkt_push(struct usbhs_pipe *pipe, struct usbhs_pkt *pkt, |
72 | struct usbhs_pkt_handle *handler, | 95 | struct usbhs_pkt_handle *handler, |
@@ -76,5 +99,6 @@ int __usbhs_pkt_handler(struct usbhs_pipe *pipe, int type); | |||
76 | 99 | ||
77 | #define usbhs_pkt_start(p) __usbhs_pkt_handler(p, USBHSF_PKT_PREPARE) | 100 | #define usbhs_pkt_start(p) __usbhs_pkt_handler(p, USBHSF_PKT_PREPARE) |
78 | #define usbhs_pkt_run(p) __usbhs_pkt_handler(p, USBHSF_PKT_TRY_RUN) | 101 | #define usbhs_pkt_run(p) __usbhs_pkt_handler(p, USBHSF_PKT_TRY_RUN) |
102 | #define usbhs_pkt_dmadone(p) __usbhs_pkt_handler(p, USBHSF_PKT_DMA_DONE) | ||
79 | 103 | ||
80 | #endif /* RENESAS_USB_FIFO_H */ | 104 | #endif /* RENESAS_USB_FIFO_H */ |