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