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 17enum hub_speed { 18 HUB_SPEED_HIGH = 0, 19 HUB_SPEED_SUPER, 20}; 21 22struct 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 36struct 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 47extern struct usbip_vhci_driver *vhci_driver; 48 49int usbip_vhci_driver_open(void); 50void usbip_vhci_driver_close(void); 51 52int usbip_vhci_refresh_device_list(void); 53 54 55int usbip_vhci_get_free_port(uint32_t speed); 56int usbip_vhci_attach_device2(uint8_t port, int sockfd, uint32_t devid, 57 uint32_t speed); 58 59/* will be removed */ 60int usbip_vhci_attach_device(uint8_t port, int sockfd, uint8_t busnum, 61 uint8_t devnum, uint32_t speed); 62 63int usbip_vhci_detach_device(uint8_t port); 64 65int usbip_vhci_imported_device_dump(struct usbip_imported_device *idev); 66 67#endif /* __VHCI_DRIVER_H */ 68