aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/usb/renesas_usbhs/fifo.h
diff options
context:
space:
mode:
authorKuninori Morimoto <kuninori.morimoto.gx@renesas.com>2011-06-06 01:18:28 -0400
committerGreg Kroah-Hartman <gregkh@suse.de>2011-06-07 12:10:08 -0400
commitdad67397f2090b29cd1f169e6a4ac6f3532c6858 (patch)
tree02f3fe42ef7307b5c70a901b59598478897baa1b /drivers/usb/renesas_usbhs/fifo.h
parent659d495404d20ff8f96644fca82c772455f1226c (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.h21
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
22struct usbhs_pkt_handle;
22struct usbhs_pkt { 23struct 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
33struct 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 */
34int usbhs_fifo_write(struct usbhs_pkt *pkt); 41void usbhs_fifo_init(struct usbhs_priv *priv);
35int usbhs_fifo_read(struct usbhs_pkt *pkt); 42void usbhs_fifo_quit(struct usbhs_priv *priv);
36int usbhs_fifo_prepare_write(struct usbhs_pipe *pipe);
37int usbhs_fifo_prepare_read(struct usbhs_pipe *pipe);
38 43
39/* 44/*
40 * packet info 45 * packet info
41 */ 46 */
47extern struct usbhs_pkt_handle usbhs_fifo_push_handler;
48extern struct usbhs_pkt_handle usbhs_fifo_pop_handler;
49extern struct usbhs_pkt_handle usbhs_ctrl_stage_end_handler;
50
42void usbhs_pkt_init(struct usbhs_pkt *pkt); 51void usbhs_pkt_init(struct usbhs_pkt *pkt);
43void usbhs_pkt_push(struct usbhs_pipe *pipe, struct usbhs_pkt *pkt, 52void 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);
45void usbhs_pkt_pop(struct usbhs_pkt *pkt); 55void usbhs_pkt_pop(struct usbhs_pkt *pkt);
46struct usbhs_pkt *usbhs_pkt_get(struct usbhs_pipe *pipe); 56struct 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 */