18c2ecf20Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0 */ 28c2ecf20Sopenharmony_ci/* 38c2ecf20Sopenharmony_ci * Copyright (C) 2005-2007 Takahiro Hirofuchi 48c2ecf20Sopenharmony_ci */ 58c2ecf20Sopenharmony_ci 68c2ecf20Sopenharmony_ci#ifndef __VHCI_DRIVER_H 78c2ecf20Sopenharmony_ci#define __VHCI_DRIVER_H 88c2ecf20Sopenharmony_ci 98c2ecf20Sopenharmony_ci#include <libudev.h> 108c2ecf20Sopenharmony_ci#include <stdint.h> 118c2ecf20Sopenharmony_ci 128c2ecf20Sopenharmony_ci#include "usbip_common.h" 138c2ecf20Sopenharmony_ci 148c2ecf20Sopenharmony_ci#define USBIP_VHCI_BUS_TYPE "platform" 158c2ecf20Sopenharmony_ci#define USBIP_VHCI_DEVICE_NAME "vhci_hcd.0" 168c2ecf20Sopenharmony_ci 178c2ecf20Sopenharmony_cienum hub_speed { 188c2ecf20Sopenharmony_ci HUB_SPEED_HIGH = 0, 198c2ecf20Sopenharmony_ci HUB_SPEED_SUPER, 208c2ecf20Sopenharmony_ci}; 218c2ecf20Sopenharmony_ci 228c2ecf20Sopenharmony_cistruct usbip_imported_device { 238c2ecf20Sopenharmony_ci enum hub_speed hub; 248c2ecf20Sopenharmony_ci uint8_t port; 258c2ecf20Sopenharmony_ci uint32_t status; 268c2ecf20Sopenharmony_ci 278c2ecf20Sopenharmony_ci uint32_t devid; 288c2ecf20Sopenharmony_ci 298c2ecf20Sopenharmony_ci uint8_t busnum; 308c2ecf20Sopenharmony_ci uint8_t devnum; 318c2ecf20Sopenharmony_ci 328c2ecf20Sopenharmony_ci /* usbip_class_device list */ 338c2ecf20Sopenharmony_ci struct usbip_usb_device udev; 348c2ecf20Sopenharmony_ci}; 358c2ecf20Sopenharmony_ci 368c2ecf20Sopenharmony_cistruct usbip_vhci_driver { 378c2ecf20Sopenharmony_ci 388c2ecf20Sopenharmony_ci /* /sys/devices/platform/vhci_hcd */ 398c2ecf20Sopenharmony_ci struct udev_device *hc_device; 408c2ecf20Sopenharmony_ci 418c2ecf20Sopenharmony_ci int ncontrollers; 428c2ecf20Sopenharmony_ci int nports; 438c2ecf20Sopenharmony_ci struct usbip_imported_device idev[]; 448c2ecf20Sopenharmony_ci}; 458c2ecf20Sopenharmony_ci 468c2ecf20Sopenharmony_ci 478c2ecf20Sopenharmony_ciextern struct usbip_vhci_driver *vhci_driver; 488c2ecf20Sopenharmony_ci 498c2ecf20Sopenharmony_ciint usbip_vhci_driver_open(void); 508c2ecf20Sopenharmony_civoid usbip_vhci_driver_close(void); 518c2ecf20Sopenharmony_ci 528c2ecf20Sopenharmony_ciint usbip_vhci_refresh_device_list(void); 538c2ecf20Sopenharmony_ci 548c2ecf20Sopenharmony_ci 558c2ecf20Sopenharmony_ciint usbip_vhci_get_free_port(uint32_t speed); 568c2ecf20Sopenharmony_ciint usbip_vhci_attach_device2(uint8_t port, int sockfd, uint32_t devid, 578c2ecf20Sopenharmony_ci uint32_t speed); 588c2ecf20Sopenharmony_ci 598c2ecf20Sopenharmony_ci/* will be removed */ 608c2ecf20Sopenharmony_ciint usbip_vhci_attach_device(uint8_t port, int sockfd, uint8_t busnum, 618c2ecf20Sopenharmony_ci uint8_t devnum, uint32_t speed); 628c2ecf20Sopenharmony_ci 638c2ecf20Sopenharmony_ciint usbip_vhci_detach_device(uint8_t port); 648c2ecf20Sopenharmony_ci 658c2ecf20Sopenharmony_ciint usbip_vhci_imported_device_dump(struct usbip_imported_device *idev); 668c2ecf20Sopenharmony_ci 678c2ecf20Sopenharmony_ci#endif /* __VHCI_DRIVER_H */ 68