1 | /* SPDX-License-Identifier: GPL-2.0 */ |
---|---|
2 | /* |
3 | * Copyright (C) 2005-2007 Takahiro Hirofuchi |
4 | */ |
5 | |
6 | #ifndef __VHCI_DRIVER_H |
7 | #define __VHCI_DRIVER_H |
8 | |
9 | #include <libudev.h> |
10 | #include <stdint.h> |
11 | |
12 | #include "usbip_common.h" |
13 | |
14 | #define USBIP_VHCI_BUS_TYPE "platform" |
15 | #define USBIP_VHCI_DEVICE_NAME "vhci_hcd.0" |
16 | |
17 | enum hub_speed { |
18 | HUB_SPEED_HIGH = 0, |
19 | HUB_SPEED_SUPER, |
20 | }; |
21 | |
22 | struct usbip_imported_device { |
23 | enum hub_speed hub; |
24 | uint8_t port; |
25 | uint32_t status; |
26 | |
27 | uint32_t devid; |
28 | |
29 | uint8_t busnum; |
30 | uint8_t devnum; |
31 | |
32 | /* usbip_class_device list */ |
33 | struct usbip_usb_device udev; |
34 | }; |
35 | |
36 | struct usbip_vhci_driver { |
37 | |
38 | /* /sys/devices/platform/vhci_hcd */ |
39 | struct udev_device *hc_device; |
40 | |
41 | int ncontrollers; |
42 | int nports; |
43 | struct usbip_imported_device idev[]; |
44 | }; |
45 | |
46 | |
47 | extern struct usbip_vhci_driver *vhci_driver; |
48 | |
49 | int usbip_vhci_driver_open(void); |
50 | void usbip_vhci_driver_close(void); |
51 | |
52 | int usbip_vhci_refresh_device_list(void); |
53 | |
54 | |
55 | int usbip_vhci_get_free_port(uint32_t speed); |
56 | int usbip_vhci_attach_device2(uint8_t port, int sockfd, uint32_t devid, |
57 | uint32_t speed); |
58 | |
59 | /* will be removed */ |
60 | int usbip_vhci_attach_device(uint8_t port, int sockfd, uint8_t busnum, |
61 | uint8_t devnum, uint32_t speed); |
62 | |
63 | int usbip_vhci_detach_device(uint8_t port); |
64 | |
65 | int usbip_vhci_imported_device_dump(struct usbip_imported_device *idev); |
66 | |
67 | #endif /* __VHCI_DRIVER_H */ |
68 |