1 /******************************************************************************* 2 * Copyright 2019-2020 Microchip FPGA Embedded Systems Solutions. 3 * 4 * SPDX-License-Identifier: MIT 5 * 6 * PolarFire SoC MSS USB Driver Stack 7 * 8 * Standard USB definitions. 9 * 10 */ 11 #ifndef __MSS_USB_STD_DEF_H_ 12 #define __MSS_USB_STD_DEF_H_ 13 14 #ifdef __cplusplus 15 extern "C" { 16 #endif 17 18 /*-------------------------------------------------------------------------*//** 19 Constant values which are internally used by the driver. 20 ============================ 21 */ 22 23 /* USB request types */ 24 #define USB_STANDARD_REQUEST 0x00u 25 #define USB_CLASS_REQUEST 0x20u 26 #define USB_VENDOR_REQUEST 0x40u 27 28 /* USB request type masks */ 29 #define USB_STD_REQ_DATA_DIR_MASK 0x80u 30 #define USB_STD_REQ_TYPE_MASK 0x60u 31 #define USB_STD_REQ_RECIPIENT_MASK 0x1Fu 32 33 #define USB_STD_REQ_DATA_DIR_OUT 0x00u 34 #define USB_STD_REQ_DATA_DIR_IN 0x80u 35 36 #define USB_STD_REQ_RECIPIENT_DEVICE 0x00u 37 #define USB_STD_REQ_RECIPIENT_INTERFACE 0x01u 38 #define USB_STD_REQ_RECIPIENT_ENDPOINT 0x02u 39 40 #define USB_STD_REQ_GET_STATUS 0x00u 41 #define USB_STD_REQ_CLEAR_FEATURE 0x01u 42 #define USB_STD_REQ_SET_FEATURE 0x03u 43 #define USB_STD_REQ_SET_ADDRESS 0x05u 44 #define USB_STD_REQ_GET_DESCRIPTOR 0x06u 45 #define USB_STD_REQ_SET_DESCRIPTOR 0x07u 46 #define USB_STD_REQ_GET_CONFIG 0x08u 47 #define USB_STD_REQ_SET_CONFIG 0x09u 48 #define USB_STD_REQ_GET_INTERFACE 0x0Au 49 #define USB_STD_REQ_SET_INTERFACE 0x0Bu 50 #define USB_STD_REQ_SYNCH_FRAME 0x0Cu 51 52 /* USB Feature selector */ 53 #define USB_STD_FEATURE_REMOTE_WAKEUP 0x0001u 54 #define USB_STD_FEATURE_TEST_MODE 0x0002u 55 #define USB_STD_FEATURE_EP_HALT 0x0000u 56 57 /* USB Test Mode, Test selectors */ 58 #define USB_TEST_MODE_SELECTOR_TEST_J 0x01u 59 #define USB_TEST_MODE_SELECTOR_TEST_K 0x02u 60 #define USB_TEST_MODE_SELECTOR_TEST_SE0NAK 0x03u 61 #define USB_TEST_MODE_SELECTOR_TEST_PACKET 0x04u 62 #define USB_TEST_MODE_SELECTOR_TEST_FORCE_ENA 0x05u 63 64 /* Descriptor types */ 65 #define USB_DEVICE_DESCRIPTOR_TYPE 1u 66 #define USB_CONFIGURATION_DESCRIPTOR_TYPE 2u 67 #define USB_STRING_DESCRIPTOR_TYPE 3u 68 #define USB_INTERFACE_DESCRIPTOR_TYPE 4u 69 #define USB_ENDPOINT_DESCRIPTOR_TYPE 5u 70 #define USB_DEVICE_QUALIFIER_DESCRIPTOR_TYPE 6u 71 #define USB_OTHER_SPEED_CONFIG_DESCRIPTOR_TYPE 7u 72 #define USB_INTERFACE_POWER_DESCRIPTOR_TYPE 8u 73 #define USB_INTERFACE_ASSOCIATION_DESCRIPTOR_TYPE 11u 74 75 #define USB_WVALUE_HIBITE_SHIFT 8u 76 #define USB_WINDEX_HIBITE_SHIFT 8u 77 78 #define USB_EP_DESCR_ATTR_CONTROL 0x00u 79 #define USB_EP_DESCR_ATTR_ISO 0x01u 80 #define USB_EP_DESCR_ATTR_BULK 0x02u 81 #define USB_EP_DESCR_ATTR_INTR 0x03u 82 83 #define USB_BCD_VERSION_2_0 0x0200u 84 #define USB_BCD_VERSION_2_1 0x0210u 85 #define USB_BCD_VERSION_1_1 0x0110u 86 #define USB_BCD_VERSION_1_0 0x0100u 87 88 #define USB_DEFAULT_TARGET_ADDR 0u 89 #define USB_SETUP_PKT_LEN 8u 90 91 #define USB_STD_DEVICE_DESCR_LEN 18u 92 #define USB_STD_CONFIG_DESCR_LEN 9u 93 #define USB_STD_INTERFACE_DESCR_LEN 9u 94 #define USB_STD_ENDPOINT_DESCR_LEN 7u 95 #define USB_STD_IA_DESCR_LEN 8u 96 #define USB_STD_DEV_QUAL_DESCR_LENGTH 10u 97 98 #define USB_DEVICE_BUS_POWER_MASK 0x40u 99 #define USB_DEVICE_REM_WAKEUP_MASK 0x20u 100 #define USB_MAX_BUS_POWER 250u /*num = mA/2*/ 101 102 #define USB_CLASS_CODE_MSD 0x08u /* bInterfaceClass */ 103 #define USB_CLASS_MSD_SUBCLASS_SCSI 0x06u /* bInterfaceSubClass */ 104 #define USB_CLAS_MSD_PROTOCOL_BOT 0x50u /* bInterfaceProtocol */ 105 106 #define USB_DEF_CONFIG_NUM 0u 107 108 /*-------------------------------------------------------------------------*//** 109 Maximum allowed Packet Sizes for respective transfer types 110 */ 111 #define USB_HS_BULK_MAX_PKT_SIZE 512u 112 #define USB_HS_INTERRUPT_MAX_PKT_SIZE 1024u 113 #define USB_HS_ISO_MAX_PKT_SIZE 1024u 114 115 #define USB_FS_BULK_MAX_PKT_SIZE 64u 116 #define USB_FS_INTERRUPT_MAX_PKT_SIZE 64u 117 #define USB_FS_ISO_MAX_PKT_SIZE 1023u 118 119 /*-------------------------------------------------------------------------*//** 120 MSC class related definitions 121 */ 122 /* BoT protocol constants */ 123 #define USBD_MSC_BOT_CSW_LENGTH 13u 124 #define USBD_MSC_BOT_CBW_LENGTH 31u 125 126 #define USB_MSC_BOT_REQ_GET_MAX_LUN 0xFEu 127 #define USB_MSC_BOT_REQ_BMS_RESET 0xFFu 128 129 #define USB_MSC_BOT_CBW_SIGNATURE 0x43425355u 130 #define USB_MSC_BOT_CSW_SIGNATURE 0x53425355u 131 132 /* Supported SCSI commands*/ 133 #define USB_MSC_SCSI_INQUIRY 0x12u 134 #define USB_MSC_SCSI_READ_FORMAT_CAPACITIES 0x23u 135 #define USB_MSC_SCSI_READ_CAPACITY_10 0x25u 136 #define USB_MSC_SCSI_READ_10 0x28u 137 #define USB_MSC_SCSI_REQUEST_SENSE 0x03u 138 #define USB_MSC_SCSI_TEST_UNIT_READY 0x00u 139 #define USB_MSC_SCSI_WRITE_10 0x2Au 140 #define USB_MSC_SCSI_MODE_SENSE_6 0x1Au 141 #define USB_MSC_SCSI_MODE_SELECT_6 0x15u 142 #define USB_MSC_SCSI_PREVENT_ALLW_MDM_RMVL 0x1Eu 143 #define USB_MSC_SCSI_VERIFY_10 0x2Fu 144 #define USB_MSC_SCSI_INVALID_COMMAND_CODE 0xFFu 145 146 /* Additional sense codes */ 147 #define SC_NO_SENSE 0x00u 148 #define SC_RECOVERED_ERR 0x01u 149 #define SC_NOT_READY 0x02u 150 #define SC_MEDIUM_ERROR 0x03u 151 #define SC_HARDWARE_ERR 0x04u 152 #define SC_ILLEGAL_REQUEST 0x05u 153 #define SC_UNIT_ATTENTION 0x06u 154 #define SC_DATA_PROTECT 0x07u 155 #define SC_BLANK_CHECK 0x08u 156 #define SC_VENDOR_SPECIFIC 0x09u 157 #define SC_COPY_ABORTED 0x0Au 158 #define SC_ABORTED_COMMAND 0x0Bu 159 /*0x0C is obsolete*/ 160 #define SC_VOLUME_OVERFLOW 0x0Du 161 #define SC_MISCOMPARE 0x0Eu 162 /*0x0F is reserved*/ 163 164 #define ASC_INVALID_CDB 0x20u 165 #define ASC_INVALID_FIELED_IN_COMMAND 0x24u 166 #define ASC_PARAMETER_LIST_LENGTH_ERROR 0x1Au 167 #define ASC_INVALID_FIELD_IN_PARAMETER_LIST 0x26u 168 #define ASC_ADDRESS_OUT_OF_RANGE 0x21u 169 #define ASC_MEDIUM_NOT_PRESENT 0x3Au 170 #define ASC_MEDIUM_HAS_CHANGED 0x28u 171 #define ASC_WRITE_PROTECTED 0x27u 172 #define ASC_UNRECOVERED_READ_ERROR 0x11u 173 #define ASC_WRITE_FAULT 0x03u 174 175 /*-------------------------------------------------------------------------*//** 176 CDC class related definitions 177 */ 178 /* CDC Requests for ACM sub-class */ 179 #define USB_CDC_SEND_ENCAPSULATED_COMMAND 0x00u 180 #define USB_CDC_GET_ENCAPSULATED_RESPONSE 0x01u 181 #define USB_CDC_SET_COMM_FEATURE 0x02u 182 #define USB_CDC_GET_COMM_FEATURE 0x03u 183 #define USB_CDC_CLEAR_COMM_FEATURE 0x04u 184 #define USB_CDC_SET_LINE_CODING 0x20u 185 #define USB_CDC_GET_LINE_CODING 0x21u 186 #define USB_CDC_SET_CONTROL_LINE_STATE 0x22u 187 #define USB_CDC_SEND_BREAK 0x23u 188 189 /*-------------------------------------------------------------------------*//** 190 HID class related definitions 191 */ 192 #define USB_HID_DESCR_LENGTH 9u 193 194 #define USB_HID_DESCRIPTOR_TYPE 0x21u 195 #define USB_REPORT_DESCRIPTOR_TYPE 0x22u 196 197 198 #ifdef __cplusplus 199 } 200 #endif 201 202 #endif /* __MSS_USB_STD_DEF_H_ */ 203