diff options
author | Kuninori Morimoto <kuninori.morimoto.gx@renesas.com> | 2011-06-06 01:18:28 -0400 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@suse.de> | 2011-06-07 12:10:08 -0400 |
commit | dad67397f2090b29cd1f169e6a4ac6f3532c6858 (patch) | |
tree | 02f3fe42ef7307b5c70a901b59598478897baa1b /drivers/usb/renesas_usbhs/fifo.h | |
parent | 659d495404d20ff8f96644fca82c772455f1226c (diff) |
usb: renesas_usbhs: modify data transfer interrupt
On current driver, overall data transfer method was implemented in fifo.c,
but its interrupt which is member of packet queue control
was still in mod_gadget.c.
This patch move it into fifo.c.
By this patch, the packet/fifo control is independent from mod_gadget.
Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Diffstat (limited to 'drivers/usb/renesas_usbhs/fifo.h')
-rw-r--r-- | drivers/usb/renesas_usbhs/fifo.h | 21 |
1 files changed, 17 insertions, 4 deletions
diff --git a/drivers/usb/renesas_usbhs/fifo.h b/drivers/usb/renesas_usbhs/fifo.h index 04d8cddaf812..eab3258e9834 100644 --- a/drivers/usb/renesas_usbhs/fifo.h +++ b/drivers/usb/renesas_usbhs/fifo.h | |||
@@ -19,30 +19,43 @@ | |||
19 | 19 | ||
20 | #include "pipe.h" | 20 | #include "pipe.h" |
21 | 21 | ||
22 | struct usbhs_pkt_handle; | ||
22 | struct usbhs_pkt { | 23 | struct usbhs_pkt { |
23 | struct list_head node; | 24 | struct list_head node; |
24 | struct usbhs_pipe *pipe; | 25 | struct usbhs_pipe *pipe; |
26 | struct usbhs_pkt_handle *handler; | ||
25 | void *buf; | 27 | void *buf; |
26 | int length; | 28 | int length; |
27 | int actual; | 29 | int actual; |
28 | int zero; | 30 | int zero; |
29 | }; | 31 | }; |
30 | 32 | ||
33 | struct usbhs_pkt_handle { | ||
34 | int (*prepare)(struct usbhs_pkt *pkt); | ||
35 | int (*try_run)(struct usbhs_pkt *pkt); | ||
36 | }; | ||
37 | |||
31 | /* | 38 | /* |
32 | * fifo | 39 | * fifo |
33 | */ | 40 | */ |
34 | int usbhs_fifo_write(struct usbhs_pkt *pkt); | 41 | void usbhs_fifo_init(struct usbhs_priv *priv); |
35 | int usbhs_fifo_read(struct usbhs_pkt *pkt); | 42 | void usbhs_fifo_quit(struct usbhs_priv *priv); |
36 | int usbhs_fifo_prepare_write(struct usbhs_pipe *pipe); | ||
37 | int usbhs_fifo_prepare_read(struct usbhs_pipe *pipe); | ||
38 | 43 | ||
39 | /* | 44 | /* |
40 | * packet info | 45 | * packet info |
41 | */ | 46 | */ |
47 | extern struct usbhs_pkt_handle usbhs_fifo_push_handler; | ||
48 | extern struct usbhs_pkt_handle usbhs_fifo_pop_handler; | ||
49 | extern struct usbhs_pkt_handle usbhs_ctrl_stage_end_handler; | ||
50 | |||
42 | void usbhs_pkt_init(struct usbhs_pkt *pkt); | 51 | void usbhs_pkt_init(struct usbhs_pkt *pkt); |
43 | void usbhs_pkt_push(struct usbhs_pipe *pipe, struct usbhs_pkt *pkt, | 52 | void usbhs_pkt_push(struct usbhs_pipe *pipe, struct usbhs_pkt *pkt, |
53 | struct usbhs_pkt_handle *handler, | ||
44 | void *buf, int len, int zero); | 54 | void *buf, int len, int zero); |
45 | void usbhs_pkt_pop(struct usbhs_pkt *pkt); | 55 | void usbhs_pkt_pop(struct usbhs_pkt *pkt); |
46 | struct usbhs_pkt *usbhs_pkt_get(struct usbhs_pipe *pipe); | 56 | struct usbhs_pkt *usbhs_pkt_get(struct usbhs_pipe *pipe); |
47 | 57 | ||
58 | #define usbhs_pkt_start(p) ((p)->handler->prepare(p)) | ||
59 | #define usbhs_pkt_run(p) ((p)->handler->try_run(p)) | ||
60 | |||
48 | #endif /* RENESAS_USB_FIFO_H */ | 61 | #endif /* RENESAS_USB_FIFO_H */ |