1b3147863b523912633bfd4876d242cd5ae7d8e7aChris Kelly/* -----------------------------------------------------------------------------
2b3147863b523912633bfd4876d242cd5ae7d8e7aChris Kelly * Copyright (c) 2011 Ozmo Inc
3b3147863b523912633bfd4876d242cd5ae7d8e7aChris Kelly * Released under the GNU General Public License Version 2 (GPLv2).
4b3147863b523912633bfd4876d242cd5ae7d8e7aChris Kelly * -----------------------------------------------------------------------------
5b3147863b523912633bfd4876d242cd5ae7d8e7aChris Kelly */
6b3147863b523912633bfd4876d242cd5ae7d8e7aChris Kelly#ifndef _OZUSBSVC_H
7b3147863b523912633bfd4876d242cd5ae7d8e7aChris Kelly#define _OZUSBSVC_H
8b3147863b523912633bfd4876d242cd5ae7d8e7aChris Kelly
9b3147863b523912633bfd4876d242cd5ae7d8e7aChris Kelly/*------------------------------------------------------------------------------
10b3147863b523912633bfd4876d242cd5ae7d8e7aChris Kelly * Per PD context info stored in application context area of PD.
11b3147863b523912633bfd4876d242cd5ae7d8e7aChris Kelly * This object is reference counted to ensure it doesn't disappear while
12b3147863b523912633bfd4876d242cd5ae7d8e7aChris Kelly * still in use.
13b3147863b523912633bfd4876d242cd5ae7d8e7aChris Kelly */
14b3147863b523912633bfd4876d242cd5ae7d8e7aChris Kellystruct oz_usb_ctx {
15b3147863b523912633bfd4876d242cd5ae7d8e7aChris Kelly	atomic_t ref_count;
16b3147863b523912633bfd4876d242cd5ae7d8e7aChris Kelly	u8 tx_seq_num;
17b3147863b523912633bfd4876d242cd5ae7d8e7aChris Kelly	u8 rx_seq_num;
18b3147863b523912633bfd4876d242cd5ae7d8e7aChris Kelly	struct oz_pd *pd;
19b3147863b523912633bfd4876d242cd5ae7d8e7aChris Kelly	void *hport;
20b3147863b523912633bfd4876d242cd5ae7d8e7aChris Kelly	int stopped;
21b3147863b523912633bfd4876d242cd5ae7d8e7aChris Kelly};
22b3147863b523912633bfd4876d242cd5ae7d8e7aChris Kelly
23b3147863b523912633bfd4876d242cd5ae7d8e7aChris Kellyint oz_usb_init(void);
24b3147863b523912633bfd4876d242cd5ae7d8e7aChris Kellyvoid oz_usb_term(void);
25b3147863b523912633bfd4876d242cd5ae7d8e7aChris Kellyint oz_usb_start(struct oz_pd *pd, int resume);
26b3147863b523912633bfd4876d242cd5ae7d8e7aChris Kellyvoid oz_usb_stop(struct oz_pd *pd, int pause);
27b3147863b523912633bfd4876d242cd5ae7d8e7aChris Kellyvoid oz_usb_rx(struct oz_pd *pd, struct oz_elt *elt);
28b3147863b523912633bfd4876d242cd5ae7d8e7aChris Kellyint oz_usb_heartbeat(struct oz_pd *pd);
29b3147863b523912633bfd4876d242cd5ae7d8e7aChris Kellyvoid oz_usb_farewell(struct oz_pd *pd, u8 ep_num, u8 *data, u8 len);
30b3147863b523912633bfd4876d242cd5ae7d8e7aChris Kelly
31b3147863b523912633bfd4876d242cd5ae7d8e7aChris Kelly#endif /* _OZUSBSVC_H */
32b3147863b523912633bfd4876d242cd5ae7d8e7aChris Kelly
33