1094332d3Sopenharmony_ci/* 2094332d3Sopenharmony_ci * Copyright (c) 2020-2024 Huawei Device Co., Ltd. 3094332d3Sopenharmony_ci * 4094332d3Sopenharmony_ci * HDF is dual licensed: you can use it either under the terms of 5094332d3Sopenharmony_ci * the GPL, or the BSD license, at your option. 6094332d3Sopenharmony_ci * See the LICENSE file in the root of this repository for complete details. 7094332d3Sopenharmony_ci */ 8094332d3Sopenharmony_ci 9094332d3Sopenharmony_ci#ifndef HDF_USB_PNP_MANAGE_H 10094332d3Sopenharmony_ci#define HDF_USB_PNP_MANAGE_H 11094332d3Sopenharmony_ci 12094332d3Sopenharmony_ci#include "hdf_base.h" 13094332d3Sopenharmony_ci 14094332d3Sopenharmony_ci#define USB_PNP_NOTIFY_TEST_MODE false 15094332d3Sopenharmony_ci#define USB_PNP_INFO_MAX_INTERFACES 32 16094332d3Sopenharmony_ci 17094332d3Sopenharmony_cienum UsbPnpNotifyServiceCmd { 18094332d3Sopenharmony_ci USB_PNP_NOTIFY_ADD_INTERFACE, 19094332d3Sopenharmony_ci USB_PNP_NOTIFY_REMOVE_INTERFACE, 20094332d3Sopenharmony_ci USB_PNP_NOTIFY_REPORT_INTERFACE, 21094332d3Sopenharmony_ci USB_PNP_NOTIFY_ADD_DEVICE, 22094332d3Sopenharmony_ci USB_PNP_NOTIFY_REMOVE_DEVICE, 23094332d3Sopenharmony_ci #if USB_PNP_NOTIFY_TEST_MODE == true 24094332d3Sopenharmony_ci USB_PNP_NOTIFY_ADD_TEST, 25094332d3Sopenharmony_ci USB_PNP_NOTIFY_REMOVE_TEST, 26094332d3Sopenharmony_ci #endif 27094332d3Sopenharmony_ci USB_PNP_DRIVER_REGISTER_DEVICE, 28094332d3Sopenharmony_ci USB_PNP_DRIVER_UNREGISTER_DEVICE, 29094332d3Sopenharmony_ci USB_PNP_DRIVER_GETDEVICES = 20, 30094332d3Sopenharmony_ci USB_PNP_DRIVER_GADGET_ADD = 30, 31094332d3Sopenharmony_ci USB_PNP_DRIVER_GADGET_REMOVE, 32094332d3Sopenharmony_ci USB_PNP_DRIVER_PORT_HOST = 40, 33094332d3Sopenharmony_ci USB_PNP_DRIVER_PORT_DEVICE, 34094332d3Sopenharmony_ci USB_PNP_DRIVER_GET_GADGET_LINK_STATUS, 35094332d3Sopenharmony_ci}; 36094332d3Sopenharmony_ci 37094332d3Sopenharmony_cienum UsbPnpNotifyRemoveType { 38094332d3Sopenharmony_ci USB_PNP_NOTIFY_REMOVE_BUS_DEV_NUM, 39094332d3Sopenharmony_ci USB_PNP_NOTIFY_REMOVE_INTERFACE_NUM, 40094332d3Sopenharmony_ci}; 41094332d3Sopenharmony_ci 42094332d3Sopenharmony_cienum { 43094332d3Sopenharmony_ci USB_PNP_NOTIFY_MATCH_VENDOR = 0x0001, 44094332d3Sopenharmony_ci USB_PNP_NOTIFY_MATCH_PRODUCT = 0x0002, 45094332d3Sopenharmony_ci USB_PNP_NOTIFY_MATCH_DEV_LOW = 0x0004, 46094332d3Sopenharmony_ci USB_PNP_NOTIFY_MATCH_DEV_HIGH = 0x0008, 47094332d3Sopenharmony_ci USB_PNP_NOTIFY_MATCH_DEV_CLASS = 0x0010, 48094332d3Sopenharmony_ci USB_PNP_NOTIFY_MATCH_DEV_SUBCLASS = 0x0020, 49094332d3Sopenharmony_ci USB_PNP_NOTIFY_MATCH_DEV_PROTOCOL = 0x0040, 50094332d3Sopenharmony_ci USB_PNP_NOTIFY_MATCH_INT_CLASS = 0x0080, 51094332d3Sopenharmony_ci USB_PNP_NOTIFY_MATCH_INT_SUBCLASS = 0x0100, 52094332d3Sopenharmony_ci USB_PNP_NOTIFY_MATCH_INT_PROTOCOL = 0x0200, 53094332d3Sopenharmony_ci USB_PNP_NOTIFY_MATCH_INT_NUMBER = 0x0400, 54094332d3Sopenharmony_ci}; 55094332d3Sopenharmony_ci 56094332d3Sopenharmony_cistruct UsbPnpNotifyServiceInfo { 57094332d3Sopenharmony_ci uint8_t curInterfaceNumber; 58094332d3Sopenharmony_ci uint32_t length; 59094332d3Sopenharmony_ci 60094332d3Sopenharmony_ci int32_t devNum; 61094332d3Sopenharmony_ci int32_t busNum; 62094332d3Sopenharmony_ci 63094332d3Sopenharmony_ci int32_t interfaceLength; 64094332d3Sopenharmony_ci uint8_t interfaceNumber[USB_PNP_INFO_MAX_INTERFACES]; 65094332d3Sopenharmony_ci} __attribute__ ((packed)); 66094332d3Sopenharmony_ci 67094332d3Sopenharmony_cistruct UsbPnpNotifyInterfaceInfo { 68094332d3Sopenharmony_ci uint8_t interfaceClass; 69094332d3Sopenharmony_ci uint8_t interfaceSubClass; 70094332d3Sopenharmony_ci uint8_t interfaceProtocol; 71094332d3Sopenharmony_ci 72094332d3Sopenharmony_ci uint8_t interfaceNumber; 73094332d3Sopenharmony_ci}; 74094332d3Sopenharmony_ci 75094332d3Sopenharmony_cistruct UsbPnpNotifyDeviceInfo { 76094332d3Sopenharmony_ci uint16_t vendorId; 77094332d3Sopenharmony_ci uint16_t productId; 78094332d3Sopenharmony_ci 79094332d3Sopenharmony_ci uint16_t bcdDeviceLow; 80094332d3Sopenharmony_ci uint16_t bcdDeviceHigh; 81094332d3Sopenharmony_ci 82094332d3Sopenharmony_ci uint8_t deviceClass; 83094332d3Sopenharmony_ci uint8_t deviceSubClass; 84094332d3Sopenharmony_ci uint8_t deviceProtocol; 85094332d3Sopenharmony_ci}; 86094332d3Sopenharmony_ci 87094332d3Sopenharmony_cistruct UsbPnpNotifyMatchInfoTable { 88094332d3Sopenharmony_ci uint64_t usbDevAddr; 89094332d3Sopenharmony_ci int32_t devNum; 90094332d3Sopenharmony_ci int32_t busNum; 91094332d3Sopenharmony_ci 92094332d3Sopenharmony_ci struct UsbPnpNotifyDeviceInfo deviceInfo; 93094332d3Sopenharmony_ci 94094332d3Sopenharmony_ci uint8_t removeType; 95094332d3Sopenharmony_ci uint8_t numInfos; 96094332d3Sopenharmony_ci 97094332d3Sopenharmony_ci struct UsbPnpNotifyInterfaceInfo interfaceInfo[USB_PNP_INFO_MAX_INTERFACES]; 98094332d3Sopenharmony_ci}; 99094332d3Sopenharmony_ci 100094332d3Sopenharmony_cistruct UsbPnpAddRemoveInfo { 101094332d3Sopenharmony_ci int32_t devNum; 102094332d3Sopenharmony_ci int32_t busNum; 103094332d3Sopenharmony_ci uint8_t interfaceNumber; 104094332d3Sopenharmony_ci uint8_t interfaceClass; 105094332d3Sopenharmony_ci uint8_t interfaceSubClass; 106094332d3Sopenharmony_ci uint8_t interfaceProtocol; 107094332d3Sopenharmony_ci}; 108094332d3Sopenharmony_ci 109094332d3Sopenharmony_ci#endif /* HDF_USB_PNP_MANAGE_H */ 110