Commit | Line | Data |
---|---|---|
e8d548d5 KM |
1 | /* |
2 | * Renesas USB driver | |
3 | * | |
4 | * Copyright (C) 2011 Renesas Solutions Corp. | |
5 | * Kuninori Morimoto <kuninori.morimoto.gx@renesas.com> | |
6 | * | |
7 | * This program is distributed in the hope that it will be useful, | |
8 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
9 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
10 | * GNU General Public License for more details. | |
11 | * | |
12 | * You should have received a copy of the GNU General Public License | |
13 | * along with this program; if not, write to the Free Software | |
14 | * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA | |
15 | * | |
16 | */ | |
17 | #ifndef RENESAS_USB_FIFO_H | |
18 | #define RENESAS_USB_FIFO_H | |
19 | ||
4bd04811 KM |
20 | #include "pipe.h" |
21 | ||
dad67397 | 22 | struct usbhs_pkt_handle; |
4bd04811 | 23 | struct usbhs_pkt { |
6acb95d4 | 24 | struct list_head node; |
4bd04811 | 25 | struct usbhs_pipe *pipe; |
dad67397 | 26 | struct usbhs_pkt_handle *handler; |
4bd04811 KM |
27 | void *buf; |
28 | int length; | |
29 | int actual; | |
659d4954 | 30 | int zero; |
4bd04811 | 31 | }; |
e8d548d5 | 32 | |
dad67397 KM |
33 | struct usbhs_pkt_handle { |
34 | int (*prepare)(struct usbhs_pkt *pkt); | |
35 | int (*try_run)(struct usbhs_pkt *pkt); | |
36 | }; | |
37 | ||
e8d548d5 KM |
38 | /* |
39 | * fifo | |
40 | */ | |
dad67397 KM |
41 | void usbhs_fifo_init(struct usbhs_priv *priv); |
42 | void usbhs_fifo_quit(struct usbhs_priv *priv); | |
e8d548d5 | 43 | |
4bd04811 KM |
44 | /* |
45 | * packet info | |
46 | */ | |
dad67397 KM |
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 | ||
6acb95d4 | 51 | void usbhs_pkt_init(struct usbhs_pkt *pkt); |
659d4954 | 52 | void usbhs_pkt_push(struct usbhs_pipe *pipe, struct usbhs_pkt *pkt, |
dad67397 | 53 | struct usbhs_pkt_handle *handler, |
659d4954 | 54 | void *buf, int len, int zero); |
6acb95d4 KM |
55 | void usbhs_pkt_pop(struct usbhs_pkt *pkt); |
56 | struct usbhs_pkt *usbhs_pkt_get(struct usbhs_pipe *pipe); | |
4bd04811 | 57 | |
dad67397 KM |
58 | #define usbhs_pkt_start(p) ((p)->handler->prepare(p)) |
59 | #define usbhs_pkt_run(p) ((p)->handler->try_run(p)) | |
60 | ||
e8d548d5 | 61 | #endif /* RENESAS_USB_FIFO_H */ |