xref: /minix/minix/include/minix/devman.h (revision 7f5f010b)
1 #ifndef MINIX_LIBDEVMAN_H
2 #define MINIX_LIBDEVMAN_H
3 #include <minix/com.h>
4 #include <minix/ipc.h>
5 #include <minix/usb_ch9.h>
6 
7 /* used for serializing */
8 struct devman_device_info {
9 	int count;
10 	int parent_dev_id;
11 	unsigned name_offset;
12 	unsigned subsystem_offset;
13 };
14 
15 struct devman_device_info_entry {
16 	unsigned type;
17 	unsigned name_offset;
18 	unsigned data_offset;
19 	unsigned req_nr;
20 };
21 
22 #ifndef DEVMAN_SERVER
23 struct devman_usb_bind_cb_data {
24 	int dev_id;
25 	int interface;
26 };
27 
28 struct devman_usb_interface {
29 	struct devman_dev *dev;
30 	struct devman_usb_dev *usb_dev;
31 	usb_interface_descriptor_t *desc;
32 	/* used by the lib */
33 	struct devman_usb_bind_cb_data cb_data;
34 };
35 
36 struct devman_usb_dev {
37 	struct devman_dev *dev;
38 	int    dev_id;            /* The ID identifying the device
39 									 on server side */
40 	usb_device_descriptor_t *desc;
41 
42 	int    configuration;        /* the configuration used for this
43 	                                device */
44 
45 	char   *manufacturer;
46 	char   *product;
47 	char   *serial;
48 
49 	int    intf_count;          /* the number of interfaces in the current
50 	                               configuration */
51 
52 	struct devman_usb_interface interfaces[32];
53 	/* used by the lib */
54 	struct devman_usb_bind_cb_data cb_data;
55 };
56 
57 typedef int (*devman_usb_bind_cb_t)(struct devman_usb_bind_cb_data *data, endpoint_t ep);
58 
59 int devman_add_device(struct devman_dev *dev);
60 int devman_del_device(struct devman_dev *dev);
61 int devman_init(void);
62 struct devman_usb_dev* devman_usb_device_new(int dev_id);
63 int devman_usb_device_add(struct devman_usb_dev *dev);
64 int devman_usb_device_remove(struct devman_usb_dev *dev);
65 void devman_usb_device_delete(struct devman_usb_dev *udev);
66 int devman_handle_msg(message *m);
67 void devman_usb_init(devman_usb_bind_cb_t bind_cb, devman_usb_bind_cb_t
68 	unbind_cb);
69 
70 #endif
71 
72 #endif
73