Repostiory containing DAPLink source code with Reset Pin workaround for HANI_IOT board.
Upstream: https://github.com/ARMmbed/DAPLink
Diff: source/usb/usb_def.h
- Revision:
- 0:01f31e923fe2
diff -r 000000000000 -r 01f31e923fe2 source/usb/usb_def.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/source/usb/usb_def.h Tue Apr 07 12:55:42 2020 +0200 @@ -0,0 +1,330 @@ +/** + * @file usb_def.h + * @brief USB defines + * + * DAPLink Interface Firmware + * Copyright (c) 2009-2016, ARM Limited, All Rights Reserved + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef __USB_DEF_H__ +#define __USB_DEF_H__ + +#pragma anon_unions + +#include <stdint.h> +#include <stddef.h> + +#ifndef NULL + #ifdef __cplusplus + #define NULL 0 + #else + #define NULL ((void *) 0) + #endif +#endif + +#ifndef EOF + #define EOF (-1) +#endif + +#ifndef __size_t + #define __size_t 1 + typedef unsigned int size_t; +#endif + +typedef signed char S8; +typedef unsigned char U8; +typedef short S16; +typedef unsigned short U16; +typedef int S32; +typedef unsigned int U32; +typedef long long S64; +typedef unsigned long long U64; +typedef unsigned char BIT; +typedef unsigned int BOOL; + +#ifndef __TRUE + #define __TRUE 1 +#endif +#ifndef __FALSE + #define __FALSE 0 +#endif + + +/* bmRequestType.Dir */ +#define REQUEST_HOST_TO_DEVICE 0 +#define REQUEST_DEVICE_TO_HOST 1 + +/* bmRequestType.Type */ +#define REQUEST_STANDARD 0 +#define REQUEST_CLASS 1 +#define REQUEST_VENDOR 2 +#define REQUEST_RESERVED 3 + +/* bmRequestType.Recipient */ +#define REQUEST_TO_DEVICE 0 +#define REQUEST_TO_INTERFACE 1 +#define REQUEST_TO_ENDPOINT 2 +#define REQUEST_TO_OTHER 3 + +/* bmRequestType Definition */ +typedef __packed struct _REQUEST_TYPE { + U8 Recipient : 5; /* D4..0: Recipient */ + U8 Type : 2; /* D6..5: Type */ + U8 Dir : 1; /* D7: Data Phase Txsfer Direction */ +} REQUEST_TYPE; + +/* USB Standard Request Codes */ +#define USB_REQUEST_GET_STATUS 0 +#define USB_REQUEST_CLEAR_FEATURE 1 +#define USB_REQUEST_SET_FEATURE 3 +#define USB_REQUEST_SET_ADDRESS 5 +#define USB_REQUEST_GET_DESCRIPTOR 6 +#define USB_REQUEST_SET_DESCRIPTOR 7 +#define USB_REQUEST_GET_CONFIGURATION 8 +#define USB_REQUEST_SET_CONFIGURATION 9 +#define USB_REQUEST_GET_INTERFACE 10 +#define USB_REQUEST_SET_INTERFACE 11 +#define USB_REQUEST_SYNC_FRAME 12 + +/* USB GET_STATUS Bit Values */ +#define USB_GETSTATUS_SELF_POWERED 0x01 +#define USB_GETSTATUS_REMOTE_WAKEUP 0x02 +#define USB_GETSTATUS_ENDPOINT_STALL 0x01 + +/* USB Standard Feature selectors */ +#define USB_FEATURE_ENDPOINT_STALL 0 +#define USB_FEATURE_REMOTE_WAKEUP 1 + +/* USB Default Control Pipe Setup Packet */ +typedef __packed struct _USB_SETUP_PACKET { + REQUEST_TYPE bmRequestType; /* bmRequestType */ + U8 bRequest; /* bRequest */ + __packed union { + U16 wValue; /* wValue */ + __packed struct { + U8 wValueL; + U8 wValueH; + }; + }; + __packed union { + U16 wIndex; /* wIndex */ + __packed struct { + U8 wIndexL; + U8 wIndexH; + }; + }; + U16 wLength; /* wLength */ +} USB_SETUP_PACKET; + + +/* USB Descriptor Types */ +#define USB_DEVICE_DESCRIPTOR_TYPE 1 +#define USB_CONFIGURATION_DESCRIPTOR_TYPE 2 +#define USB_STRING_DESCRIPTOR_TYPE 3 +#define USB_INTERFACE_DESCRIPTOR_TYPE 4 +#define USB_ENDPOINT_DESCRIPTOR_TYPE 5 +#define USB_DEVICE_QUALIFIER_DESCRIPTOR_TYPE 6 +#define USB_OTHER_SPEED_CONFIG_DESCRIPTOR_TYPE 7 +#define USB_INTERFACE_POWER_DESCRIPTOR_TYPE 8 +#define USB_OTG_DESCRIPTOR_TYPE 9 +#define USB_DEBUG_DESCRIPTOR_TYPE 10 +#define USB_INTERFACE_ASSOCIATION_DESCRIPTOR_TYPE 11 +#define USB_BINARY_OBJECT_STORE_DESCRIPTOR_TYPE 15 +#define USB_DEVICE_CAPABILITY_DESCRIPTOR_TYPE 16 + +/* USB Device Classes */ +#define USB_DEVICE_CLASS_RESERVED 0x00 +#define USB_DEVICE_CLASS_AUDIO 0x01 +#define USB_DEVICE_CLASS_COMMUNICATIONS 0x02 +#define USB_DEVICE_CLASS_HUMAN_INTERFACE 0x03 +#define USB_DEVICE_CLASS_MONITOR 0x04 +#define USB_DEVICE_CLASS_PHYSICAL_INTERFACE 0x05 +#define USB_DEVICE_CLASS_POWER 0x06 +#define USB_DEVICE_CLASS_PRINTER 0x07 +#define USB_DEVICE_CLASS_STORAGE 0x08 +#define USB_DEVICE_CLASS_HUB 0x09 +#define USB_DEVICE_CLASS_MISCELLANEOUS 0xEF +#define USB_DEVICE_CLASS_APPLICATION_SPECIFIC 0xFE +#define USB_DEVICE_CLASS_VENDOR_SPECIFIC 0xFF + +/* bmAttributes in Configuration Descriptor */ +#define USB_CONFIG_POWERED_MASK 0x40 +#define USB_CONFIG_BUS_POWERED 0x80 +#define USB_CONFIG_SELF_POWERED 0xC0 +#define USB_CONFIG_REMOTE_WAKEUP 0x20 + +/* bMaxPower in Configuration Descriptor */ +#define USB_CONFIG_POWER_MA(mA) ((mA)/2) + +/* bEndpointAddress in Endpoint Descriptor */ +#define USB_ENDPOINT_DIRECTION_MASK 0x80 +#define USB_ENDPOINT_OUT(addr) ((addr) | 0x00) +#define USB_ENDPOINT_IN(addr) ((addr) | 0x80) + +/* bmAttributes in Endpoint Descriptor */ +#define USB_ENDPOINT_TYPE_MASK 0x03 +#define USB_ENDPOINT_TYPE_CONTROL 0x00 +#define USB_ENDPOINT_TYPE_ISOCHRONOUS 0x01 +#define USB_ENDPOINT_TYPE_BULK 0x02 +#define USB_ENDPOINT_TYPE_INTERRUPT 0x03 +#define USB_ENDPOINT_SYNC_MASK 0x0C +#define USB_ENDPOINT_SYNC_NO_SYNCHRONIZATION 0x00 +#define USB_ENDPOINT_SYNC_ASYNCHRONOUS 0x04 +#define USB_ENDPOINT_SYNC_ADAPTIVE 0x08 +#define USB_ENDPOINT_SYNC_SYNCHRONOUS 0x0C +#define USB_ENDPOINT_USAGE_MASK 0x30 +#define USB_ENDPOINT_USAGE_DATA 0x00 +#define USB_ENDPOINT_USAGE_FEEDBACK 0x10 +#define USB_ENDPOINT_USAGE_IMPLICIT_FEEDBACK 0x20 +#define USB_ENDPOINT_USAGE_RESERVED 0x30 + +/* bDevCapabilityType in Device Capability Descriptor */ +#define USB_DEVICE_CAPABILITY_WIRELESS_USB 1 +#define USB_DEVICE_CAPABILITY_USB_2_0_EXTENSION 2 +#define USB_DEVICE_CAPABILITY_SUPERSPEED_USB 3 +#define USB_DEVICE_CAPABILITY_CONTAINER_ID 4 +#define USB_DEVICE_CAPABILITY_PLATFORM 5 +#define USB_DEVICE_CAPABILITY_POWER_DELIVERY_CAPABILITY 6 +#define USB_DEVICE_CAPABILITY_BATTERY_INFO_CAPABILITY 7 +#define USB_DEVICE_CAPABILITY_PD_CONSUMER_PORT_CAPABILITY 8 +#define USB_DEVICE_CAPABILITY_PD_PROVIDER_PORT_CAPABILITY 9 +#define USB_DEVICE_CAPABILITY_SUPERSPEED_PLUS 10 +#define USB_DEVICE_CAPABILITY_PRECISION_TIME_MEASUREMENT 11 +#define USB_DEVICE_CAPABILITY_WIRELESS_USB_EXT 12 + +/* USB Standard Device Descriptor */ +typedef __packed struct _USB_DEVICE_DESCRIPTOR { + U8 bLength; + U8 bDescriptorType; + U16 bcdUSB; + U8 bDeviceClass; + U8 bDeviceSubClass; + U8 bDeviceProtocol; + U8 bMaxPacketSize0; + U16 idVendor; + U16 idProduct; + U16 bcdDevice; + U8 iManufacturer; + U8 iProduct; + U8 iSerialNumber; + U8 bNumConfigurations; +} USB_DEVICE_DESCRIPTOR; + +/* USB 2.0 Device Qualifier Descriptor */ +typedef __packed struct _USB_DEVICE_QUALIFIER_DESCRIPTOR { + U8 bLength; + U8 bDescriptorType; + U16 bcdUSB; + U8 bDeviceClass; + U8 bDeviceSubClass; + U8 bDeviceProtocol; + U8 bMaxPacketSize0; + U8 bNumConfigurations; + U8 bReserved; +} USB_DEVICE_QUALIFIER_DESCRIPTOR; + +/* USB Standard Configuration Descriptor */ +typedef __packed struct _USB_CONFIGURATION_DESCRIPTOR { + U8 bLength; + U8 bDescriptorType; + U16 wTotalLength; + U8 bNumInterfaces; + U8 bConfigurationValue; + U8 iConfiguration; + U8 bmAttributes; + U8 bMaxPower; +} USB_CONFIGURATION_DESCRIPTOR; + +/* USB Standard Interface Descriptor */ +typedef __packed struct _USB_INTERFACE_DESCRIPTOR { + U8 bLength; + U8 bDescriptorType; + U8 bInterfaceNumber; + U8 bAlternateSetting; + U8 bNumEndpoints; + U8 bInterfaceClass; + U8 bInterfaceSubClass; + U8 bInterfaceProtocol; + U8 iInterface; +} USB_INTERFACE_DESCRIPTOR; + +/* USB Standard Endpoint Descriptor */ +typedef __packed struct _USB_ENDPOINT_DESCRIPTOR { + U8 bLength; + U8 bDescriptorType; + U8 bEndpointAddress; + U8 bmAttributes; + U16 wMaxPacketSize; + U8 bInterval; +} USB_ENDPOINT_DESCRIPTOR; + +/* USB String Descriptor */ +typedef __packed struct _USB_STRING_DESCRIPTOR { + U8 bLength; + U8 bDescriptorType; + U16 bString/*[]*/; +} USB_STRING_DESCRIPTOR; + +/* USB Common Descriptor */ +typedef __packed struct _USB_COMMON_DESCRIPTOR { + U8 bLength; + U8 bDescriptorType; +} USB_COMMON_DESCRIPTOR; + +/* USB Interface Association Descriptor */ +typedef __packed struct _USB_INTERFACE_ASSOCIATION_DESCRIPTOR { + U8 bLength; + U8 bDescriptorType; + U8 bFirstInterface; + U8 bInterfaceCount; + U8 bFunctionClass; + U8 bFunctionSubclass; + U8 bFunctionProtocol; + U8 iFunction; +} USB_INTERFACE_ASSOCIATION_DESCRIPTOR; + +/* USB Binary Object Store Descriptor */ +typedef __packed struct _USB_BINARY_OBJECT_STORE_DESCRIPTOR { + U8 bLength; + U8 bDescriptorType; + U16 wTotalLength; + U8 bNumDeviceCaps; +} USB_BINARY_OBJECT_STORE_DESCRIPTOR; + +/* Union Functional Descriptor */ +typedef __packed struct _UNION_FUNCTIONAL_DESCRIPTOR { + U8 bLength; + U8 bDescriptorType; + U8 bDescriptorSubtype; + U8 bMasterInterface; + U8 bSlaveInterface0; +} UNION_FUNCTIONAL_DESCRIPTOR; + +typedef __packed struct _WINUSB_FUNCTION_SUBSET_HEADER { + U16 wLength; + U16 wDescriptorType; + U8 bFirstInterface; + U8 bReserved; +} WINUSB_FUNCTION_SUBSET_HEADER; + +/* USB Device Capability Descriptor */ +typedef __packed struct _USB_DEVICE_CAPABILITY_DESCRIPTOR { + U8 bLength; + U8 bDescriptorType; + U8 bDevCapabilityType; +} USB_DEVICE_CAPABILITY_DESCRIPTOR; + +#endif /* __USB_DEF_H__ */