xref: /aosp_15_r20/external/libusb/libusb/os/sunos_usb.h (revision 86b64dcb59b3a0b37502ecd56e119234366a6f7e)
1 /*
2  *
3  * Copyright (c) 2016, Oracle and/or its affiliates.
4  *
5  * This library is free software; you can redistribute it and/or
6  * modify it under the terms of the GNU Lesser General Public
7  * License as published by the Free Software Foundation; either
8  * version 2.1 of the License, or (at your option) any later version.
9  *
10  * This library is distributed in the hope that it will be useful,
11  * but WITHOUT ANY WARRANTY; without even the implied warranty of
12  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
13  * Lesser General Public License for more details.
14  *
15  * You should have received a copy of the GNU Lesser General Public
16  * License along with this library; if not, write to the Free Software
17  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
18  */
19 
20 #ifndef	LIBUSB_SUNOS_H
21 #define	LIBUSB_SUNOS_H
22 
23 #include <libdevinfo.h>
24 #include <pthread.h>
25 #include "libusbi.h"
26 
27 #define	READ	0
28 #define	WRITE	1
29 
30 typedef struct sunos_device_priv {
31 	uint8_t	cfgvalue;		/* active config value */
32 	uint8_t	*raw_cfgdescr;		/* active config descriptor */
33 	char	*ugenpath;		/* name of the ugen(4) node */
34 	char	*phypath;		/* physical path */
35 } sunos_dev_priv_t;
36 
37 typedef	struct endpoint {
38 	int datafd;	/* data file */
39 	int statfd;	/* state file */
40 } sunos_ep_priv_t;
41 
42 typedef struct sunos_device_handle_priv {
43 	uint8_t			altsetting[USB_MAXINTERFACES];	/* a interface's alt */
44 	uint8_t			config_index;
45 	sunos_ep_priv_t		eps[USB_MAXENDPOINTS];
46 	sunos_dev_priv_t	*dpriv; /* device private */
47 } sunos_dev_handle_priv_t;
48 
49 typedef	struct sunos_transfer_priv {
50 	struct aiocb		aiocb;
51 	struct libusb_transfer	*transfer;
52 } sunos_xfer_priv_t;
53 
54 struct node_args {
55 	struct libusb_context	*ctx;
56 	struct discovered_devs	**discdevs;
57 	const char		*last_ugenpath;
58 	di_devlink_handle_t	dlink_hdl;
59 };
60 
61 struct devlink_cbarg {
62 	struct node_args	*nargs;	/* di node walk arguments */
63 	di_node_t		myself;	/* the di node */
64 	di_minor_t		minor;
65 };
66 
67 typedef struct walk_link {
68 	char *path;
69 	int len;
70 	char **linkpp;
71 } walk_link_t;
72 
73 /* AIO callback args */
74 struct aio_callback_args{
75 	struct libusb_transfer *transfer;
76 	struct aiocb aiocb;
77 };
78 
79 #endif /* LIBUSB_SUNOS_H */
80