Home | History | Annotate | Download | only in usb
      1 /****************************************************************************
      2  ****************************************************************************
      3  ***
      4  ***   This header was automatically generated from a Linux kernel header
      5  ***   of the same name, to make information necessary for userspace to
      6  ***   call into the kernel available to libc.  It contains only constants,
      7  ***   structures, and macros generated from the original header, and thus,
      8  ***   contains no copyrightable information.
      9  ***
     10  ***   To edit the content of this header, modify the corresponding
     11  ***   source file (e.g. under external/kernel-headers/original/) then
     12  ***   run bionic/libc/kernel/tools/update_all.py
     13  ***
     14  ***   Any manual change here will be lost the next time this script will
     15  ***   be run. You've been warned!
     16  ***
     17  ****************************************************************************
     18  ****************************************************************************/
     19 #ifndef __UAPI_LINUX_USB_CDC_H
     20 #define __UAPI_LINUX_USB_CDC_H
     21 #include <linux/types.h>
     22 #define USB_CDC_SUBCLASS_ACM 0x02
     23 #define USB_CDC_SUBCLASS_ETHERNET 0x06
     24 #define USB_CDC_SUBCLASS_WHCM 0x08
     25 #define USB_CDC_SUBCLASS_DMM 0x09
     26 #define USB_CDC_SUBCLASS_MDLM 0x0a
     27 #define USB_CDC_SUBCLASS_OBEX 0x0b
     28 #define USB_CDC_SUBCLASS_EEM 0x0c
     29 #define USB_CDC_SUBCLASS_NCM 0x0d
     30 #define USB_CDC_SUBCLASS_MBIM 0x0e
     31 #define USB_CDC_PROTO_NONE 0
     32 #define USB_CDC_ACM_PROTO_AT_V25TER 1
     33 #define USB_CDC_ACM_PROTO_AT_PCCA101 2
     34 #define USB_CDC_ACM_PROTO_AT_PCCA101_WAKE 3
     35 #define USB_CDC_ACM_PROTO_AT_GSM 4
     36 #define USB_CDC_ACM_PROTO_AT_3G 5
     37 #define USB_CDC_ACM_PROTO_AT_CDMA 6
     38 #define USB_CDC_ACM_PROTO_VENDOR 0xff
     39 #define USB_CDC_PROTO_EEM 7
     40 #define USB_CDC_NCM_PROTO_NTB 1
     41 #define USB_CDC_MBIM_PROTO_NTB 2
     42 #define USB_CDC_HEADER_TYPE 0x00
     43 #define USB_CDC_CALL_MANAGEMENT_TYPE 0x01
     44 #define USB_CDC_ACM_TYPE 0x02
     45 #define USB_CDC_UNION_TYPE 0x06
     46 #define USB_CDC_COUNTRY_TYPE 0x07
     47 #define USB_CDC_NETWORK_TERMINAL_TYPE 0x0a
     48 #define USB_CDC_ETHERNET_TYPE 0x0f
     49 #define USB_CDC_WHCM_TYPE 0x11
     50 #define USB_CDC_MDLM_TYPE 0x12
     51 #define USB_CDC_MDLM_DETAIL_TYPE 0x13
     52 #define USB_CDC_DMM_TYPE 0x14
     53 #define USB_CDC_OBEX_TYPE 0x15
     54 #define USB_CDC_NCM_TYPE 0x1a
     55 #define USB_CDC_MBIM_TYPE 0x1b
     56 #define USB_CDC_MBIM_EXTENDED_TYPE 0x1c
     57 struct usb_cdc_header_desc {
     58   __u8 bLength;
     59   __u8 bDescriptorType;
     60   __u8 bDescriptorSubType;
     61   __le16 bcdCDC;
     62 } __attribute__((packed));
     63 struct usb_cdc_call_mgmt_descriptor {
     64   __u8 bLength;
     65   __u8 bDescriptorType;
     66   __u8 bDescriptorSubType;
     67   __u8 bmCapabilities;
     68 #define USB_CDC_CALL_MGMT_CAP_CALL_MGMT 0x01
     69 #define USB_CDC_CALL_MGMT_CAP_DATA_INTF 0x02
     70   __u8 bDataInterface;
     71 } __attribute__((packed));
     72 struct usb_cdc_acm_descriptor {
     73   __u8 bLength;
     74   __u8 bDescriptorType;
     75   __u8 bDescriptorSubType;
     76   __u8 bmCapabilities;
     77 } __attribute__((packed));
     78 #define USB_CDC_COMM_FEATURE 0x01
     79 #define USB_CDC_CAP_LINE 0x02
     80 #define USB_CDC_CAP_BRK 0x04
     81 #define USB_CDC_CAP_NOTIFY 0x08
     82 struct usb_cdc_union_desc {
     83   __u8 bLength;
     84   __u8 bDescriptorType;
     85   __u8 bDescriptorSubType;
     86   __u8 bMasterInterface0;
     87   __u8 bSlaveInterface0;
     88 } __attribute__((packed));
     89 struct usb_cdc_country_functional_desc {
     90   __u8 bLength;
     91   __u8 bDescriptorType;
     92   __u8 bDescriptorSubType;
     93   __u8 iCountryCodeRelDate;
     94   __le16 wCountyCode0;
     95 } __attribute__((packed));
     96 struct usb_cdc_network_terminal_desc {
     97   __u8 bLength;
     98   __u8 bDescriptorType;
     99   __u8 bDescriptorSubType;
    100   __u8 bEntityId;
    101   __u8 iName;
    102   __u8 bChannelIndex;
    103   __u8 bPhysicalInterface;
    104 } __attribute__((packed));
    105 struct usb_cdc_ether_desc {
    106   __u8 bLength;
    107   __u8 bDescriptorType;
    108   __u8 bDescriptorSubType;
    109   __u8 iMACAddress;
    110   __le32 bmEthernetStatistics;
    111   __le16 wMaxSegmentSize;
    112   __le16 wNumberMCFilters;
    113   __u8 bNumberPowerFilters;
    114 } __attribute__((packed));
    115 struct usb_cdc_dmm_desc {
    116   __u8 bFunctionLength;
    117   __u8 bDescriptorType;
    118   __u8 bDescriptorSubtype;
    119   __u16 bcdVersion;
    120   __le16 wMaxCommand;
    121 } __attribute__((packed));
    122 struct usb_cdc_mdlm_desc {
    123   __u8 bLength;
    124   __u8 bDescriptorType;
    125   __u8 bDescriptorSubType;
    126   __le16 bcdVersion;
    127   __u8 bGUID[16];
    128 } __attribute__((packed));
    129 struct usb_cdc_mdlm_detail_desc {
    130   __u8 bLength;
    131   __u8 bDescriptorType;
    132   __u8 bDescriptorSubType;
    133   __u8 bGuidDescriptorType;
    134   __u8 bDetailData[0];
    135 } __attribute__((packed));
    136 struct usb_cdc_obex_desc {
    137   __u8 bLength;
    138   __u8 bDescriptorType;
    139   __u8 bDescriptorSubType;
    140   __le16 bcdVersion;
    141 } __attribute__((packed));
    142 struct usb_cdc_ncm_desc {
    143   __u8 bLength;
    144   __u8 bDescriptorType;
    145   __u8 bDescriptorSubType;
    146   __le16 bcdNcmVersion;
    147   __u8 bmNetworkCapabilities;
    148 } __attribute__((packed));
    149 struct usb_cdc_mbim_desc {
    150   __u8 bLength;
    151   __u8 bDescriptorType;
    152   __u8 bDescriptorSubType;
    153   __le16 bcdMBIMVersion;
    154   __le16 wMaxControlMessage;
    155   __u8 bNumberFilters;
    156   __u8 bMaxFilterSize;
    157   __le16 wMaxSegmentSize;
    158   __u8 bmNetworkCapabilities;
    159 } __attribute__((packed));
    160 struct usb_cdc_mbim_extended_desc {
    161   __u8 bLength;
    162   __u8 bDescriptorType;
    163   __u8 bDescriptorSubType;
    164   __le16 bcdMBIMExtendedVersion;
    165   __u8 bMaxOutstandingCommandMessages;
    166   __le16 wMTU;
    167 } __attribute__((packed));
    168 #define USB_CDC_SEND_ENCAPSULATED_COMMAND 0x00
    169 #define USB_CDC_GET_ENCAPSULATED_RESPONSE 0x01
    170 #define USB_CDC_REQ_SET_LINE_CODING 0x20
    171 #define USB_CDC_REQ_GET_LINE_CODING 0x21
    172 #define USB_CDC_REQ_SET_CONTROL_LINE_STATE 0x22
    173 #define USB_CDC_REQ_SEND_BREAK 0x23
    174 #define USB_CDC_SET_ETHERNET_MULTICAST_FILTERS 0x40
    175 #define USB_CDC_SET_ETHERNET_PM_PATTERN_FILTER 0x41
    176 #define USB_CDC_GET_ETHERNET_PM_PATTERN_FILTER 0x42
    177 #define USB_CDC_SET_ETHERNET_PACKET_FILTER 0x43
    178 #define USB_CDC_GET_ETHERNET_STATISTIC 0x44
    179 #define USB_CDC_GET_NTB_PARAMETERS 0x80
    180 #define USB_CDC_GET_NET_ADDRESS 0x81
    181 #define USB_CDC_SET_NET_ADDRESS 0x82
    182 #define USB_CDC_GET_NTB_FORMAT 0x83
    183 #define USB_CDC_SET_NTB_FORMAT 0x84
    184 #define USB_CDC_GET_NTB_INPUT_SIZE 0x85
    185 #define USB_CDC_SET_NTB_INPUT_SIZE 0x86
    186 #define USB_CDC_GET_MAX_DATAGRAM_SIZE 0x87
    187 #define USB_CDC_SET_MAX_DATAGRAM_SIZE 0x88
    188 #define USB_CDC_GET_CRC_MODE 0x89
    189 #define USB_CDC_SET_CRC_MODE 0x8a
    190 struct usb_cdc_line_coding {
    191   __le32 dwDTERate;
    192   __u8 bCharFormat;
    193 #define USB_CDC_1_STOP_BITS 0
    194 #define USB_CDC_1_5_STOP_BITS 1
    195 #define USB_CDC_2_STOP_BITS 2
    196   __u8 bParityType;
    197 #define USB_CDC_NO_PARITY 0
    198 #define USB_CDC_ODD_PARITY 1
    199 #define USB_CDC_EVEN_PARITY 2
    200 #define USB_CDC_MARK_PARITY 3
    201 #define USB_CDC_SPACE_PARITY 4
    202   __u8 bDataBits;
    203 } __attribute__((packed));
    204 #define USB_CDC_PACKET_TYPE_PROMISCUOUS (1 << 0)
    205 #define USB_CDC_PACKET_TYPE_ALL_MULTICAST (1 << 1)
    206 #define USB_CDC_PACKET_TYPE_DIRECTED (1 << 2)
    207 #define USB_CDC_PACKET_TYPE_BROADCAST (1 << 3)
    208 #define USB_CDC_PACKET_TYPE_MULTICAST (1 << 4)
    209 #define USB_CDC_NOTIFY_NETWORK_CONNECTION 0x00
    210 #define USB_CDC_NOTIFY_RESPONSE_AVAILABLE 0x01
    211 #define USB_CDC_NOTIFY_SERIAL_STATE 0x20
    212 #define USB_CDC_NOTIFY_SPEED_CHANGE 0x2a
    213 struct usb_cdc_notification {
    214   __u8 bmRequestType;
    215   __u8 bNotificationType;
    216   __le16 wValue;
    217   __le16 wIndex;
    218   __le16 wLength;
    219 } __attribute__((packed));
    220 struct usb_cdc_speed_change {
    221   __le32 DLBitRRate;
    222   __le32 ULBitRate;
    223 } __attribute__((packed));
    224 struct usb_cdc_ncm_ntb_parameters {
    225   __le16 wLength;
    226   __le16 bmNtbFormatsSupported;
    227   __le32 dwNtbInMaxSize;
    228   __le16 wNdpInDivisor;
    229   __le16 wNdpInPayloadRemainder;
    230   __le16 wNdpInAlignment;
    231   __le16 wPadding1;
    232   __le32 dwNtbOutMaxSize;
    233   __le16 wNdpOutDivisor;
    234   __le16 wNdpOutPayloadRemainder;
    235   __le16 wNdpOutAlignment;
    236   __le16 wNtbOutMaxDatagrams;
    237 } __attribute__((packed));
    238 #define USB_CDC_NCM_NTH16_SIGN 0x484D434E
    239 #define USB_CDC_NCM_NTH32_SIGN 0x686D636E
    240 struct usb_cdc_ncm_nth16 {
    241   __le32 dwSignature;
    242   __le16 wHeaderLength;
    243   __le16 wSequence;
    244   __le16 wBlockLength;
    245   __le16 wNdpIndex;
    246 } __attribute__((packed));
    247 struct usb_cdc_ncm_nth32 {
    248   __le32 dwSignature;
    249   __le16 wHeaderLength;
    250   __le16 wSequence;
    251   __le32 dwBlockLength;
    252   __le32 dwNdpIndex;
    253 } __attribute__((packed));
    254 #define USB_CDC_NCM_NDP16_CRC_SIGN 0x314D434E
    255 #define USB_CDC_NCM_NDP16_NOCRC_SIGN 0x304D434E
    256 #define USB_CDC_NCM_NDP32_CRC_SIGN 0x316D636E
    257 #define USB_CDC_NCM_NDP32_NOCRC_SIGN 0x306D636E
    258 #define USB_CDC_MBIM_NDP16_IPS_SIGN 0x00535049
    259 #define USB_CDC_MBIM_NDP32_IPS_SIGN 0x00737069
    260 #define USB_CDC_MBIM_NDP16_DSS_SIGN 0x00535344
    261 #define USB_CDC_MBIM_NDP32_DSS_SIGN 0x00737364
    262 struct usb_cdc_ncm_dpe16 {
    263   __le16 wDatagramIndex;
    264   __le16 wDatagramLength;
    265 } __attribute__((__packed__));
    266 struct usb_cdc_ncm_ndp16 {
    267   __le32 dwSignature;
    268   __le16 wLength;
    269   __le16 wNextNdpIndex;
    270   struct usb_cdc_ncm_dpe16 dpe16[0];
    271 } __attribute__((packed));
    272 struct usb_cdc_ncm_dpe32 {
    273   __le32 dwDatagramIndex;
    274   __le32 dwDatagramLength;
    275 } __attribute__((__packed__));
    276 struct usb_cdc_ncm_ndp32 {
    277   __le32 dwSignature;
    278   __le16 wLength;
    279   __le16 wReserved6;
    280   __le32 dwNextNdpIndex;
    281   __le32 dwReserved12;
    282   struct usb_cdc_ncm_dpe32 dpe32[0];
    283 } __attribute__((packed));
    284 #define USB_CDC_NCM_NDP16_INDEX_MIN 0x000C
    285 #define USB_CDC_NCM_NDP32_INDEX_MIN 0x0010
    286 #define USB_CDC_NCM_DATAGRAM_FORMAT_CRC 0x30
    287 #define USB_CDC_NCM_DATAGRAM_FORMAT_NOCRC 0X31
    288 #define USB_CDC_NCM_PROTO_CODE_NO_ENCAP_COMMANDS 0x00
    289 #define USB_CDC_NCM_PROTO_CODE_EXTERN_PROTO 0xFE
    290 #define USB_CDC_NCM_NCAP_ETH_FILTER (1 << 0)
    291 #define USB_CDC_NCM_NCAP_NET_ADDRESS (1 << 1)
    292 #define USB_CDC_NCM_NCAP_ENCAP_COMMAND (1 << 2)
    293 #define USB_CDC_NCM_NCAP_MAX_DATAGRAM_SIZE (1 << 3)
    294 #define USB_CDC_NCM_NCAP_CRC_MODE (1 << 4)
    295 #define USB_CDC_NCM_NCAP_NTB_INPUT_SIZE (1 << 5)
    296 #define USB_CDC_NCM_NTB16_SUPPORTED (1 << 0)
    297 #define USB_CDC_NCM_NTB32_SUPPORTED (1 << 1)
    298 #define USB_CDC_NCM_NDP_ALIGN_MIN_SIZE 0x04
    299 #define USB_CDC_NCM_NTB_MAX_LENGTH 0x1C
    300 #define USB_CDC_NCM_NTB16_FORMAT 0x00
    301 #define USB_CDC_NCM_NTB32_FORMAT 0x01
    302 #define USB_CDC_NCM_NTB_MIN_IN_SIZE 2048
    303 #define USB_CDC_NCM_NTB_MIN_OUT_SIZE 2048
    304 struct usb_cdc_ncm_ndp_input_size {
    305   __le32 dwNtbInMaxSize;
    306   __le16 wNtbInMaxDatagrams;
    307   __le16 wReserved;
    308 } __attribute__((packed));
    309 #define USB_CDC_NCM_CRC_NOT_APPENDED 0x00
    310 #define USB_CDC_NCM_CRC_APPENDED 0x01
    311 #endif
    312