X-Git-Url: https://git.openpandora.org/cgi-bin/gitweb.cgi?p=pandora-kernel.git;a=blobdiff_plain;f=drivers%2Fusb%2Frenesas_usbhs%2Ffifo.h;h=eab3258e98343638be884d13c18f4e6bde79ed5c;hp=758d85dd31ddba3a7af1616272841ed2ae52a5ce;hb=dad67397f2090b29cd1f169e6a4ac6f3532c6858;hpb=4bd0481152d0d5e8326d7e24329b0069713ed718 diff --git a/drivers/usb/renesas_usbhs/fifo.h b/drivers/usb/renesas_usbhs/fifo.h index 758d85dd31dd..eab3258e9834 100644 --- a/drivers/usb/renesas_usbhs/fifo.h +++ b/drivers/usb/renesas_usbhs/fifo.h @@ -19,27 +19,43 @@ #include "pipe.h" +struct usbhs_pkt_handle; struct usbhs_pkt { + struct list_head node; struct usbhs_pipe *pipe; - int maxp; + struct usbhs_pkt_handle *handler; void *buf; int length; int actual; + int zero; +}; + +struct usbhs_pkt_handle { + int (*prepare)(struct usbhs_pkt *pkt); + int (*try_run)(struct usbhs_pkt *pkt); }; /* * fifo */ -int usbhs_fifo_write(struct usbhs_pkt *pkt); -int usbhs_fifo_read(struct usbhs_pkt *pkt); -int usbhs_fifo_prepare_write(struct usbhs_pipe *pipe); -int usbhs_fifo_prepare_read(struct usbhs_pipe *pipe); +void usbhs_fifo_init(struct usbhs_priv *priv); +void usbhs_fifo_quit(struct usbhs_priv *priv); /* * packet info */ -void usbhs_pkt_update(struct usbhs_pkt *pkt, - struct usbhs_pipe *pipe, - void *buf, int len); +extern struct usbhs_pkt_handle usbhs_fifo_push_handler; +extern struct usbhs_pkt_handle usbhs_fifo_pop_handler; +extern struct usbhs_pkt_handle usbhs_ctrl_stage_end_handler; + +void usbhs_pkt_init(struct usbhs_pkt *pkt); +void usbhs_pkt_push(struct usbhs_pipe *pipe, struct usbhs_pkt *pkt, + struct usbhs_pkt_handle *handler, + void *buf, int len, int zero); +void usbhs_pkt_pop(struct usbhs_pkt *pkt); +struct usbhs_pkt *usbhs_pkt_get(struct usbhs_pipe *pipe); + +#define usbhs_pkt_start(p) ((p)->handler->prepare(p)) +#define usbhs_pkt_run(p) ((p)->handler->try_run(p)) #endif /* RENESAS_USB_FIFO_H */