Skip to content

Commit

Permalink
usb: cdc: ncm constants and structures added
Browse files Browse the repository at this point in the history
Signed-off-by: Yauheni Kaliuta <yauheni.kaliuta@nokia.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
  • Loading branch information
Yauheni Kaliuta authored and Greg Kroah-Hartman committed May 20, 2010
1 parent 9ff68c7 commit 01154aa
Showing 1 changed file with 94 additions and 0 deletions.
94 changes: 94 additions & 0 deletions include/linux/usb/cdc.h
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@
#define USB_CDC_SUBCLASS_MDLM 0x0a
#define USB_CDC_SUBCLASS_OBEX 0x0b
#define USB_CDC_SUBCLASS_EEM 0x0c
#define USB_CDC_SUBCLASS_NCM 0x0d

#define USB_CDC_PROTO_NONE 0

Expand Down Expand Up @@ -49,6 +50,7 @@
#define USB_CDC_MDLM_DETAIL_TYPE 0x13 /* mdlm_detail_desc */
#define USB_CDC_DMM_TYPE 0x14
#define USB_CDC_OBEX_TYPE 0x15
#define USB_CDC_NCM_TYPE 0x1a

/* "Header Functional Descriptor" from CDC spec 5.2.3.1 */
struct usb_cdc_header_desc {
Expand Down Expand Up @@ -174,6 +176,15 @@ struct usb_cdc_obex_desc {
__le16 bcdVersion;
} __attribute__ ((packed));

/* "NCM Control Model Functional Descriptor" */
struct usb_cdc_ncm_desc {
__u8 bLength;
__u8 bDescriptorType;
__u8 bDescriptorSubType;

__le16 bcdNcmVersion;
__u8 bmNetworkCapabilities;
} __attribute__ ((packed));
/*-------------------------------------------------------------------------*/

/*
Expand All @@ -197,6 +208,17 @@ struct usb_cdc_obex_desc {
#define USB_CDC_GET_ETHERNET_PM_PATTERN_FILTER 0x42
#define USB_CDC_SET_ETHERNET_PACKET_FILTER 0x43
#define USB_CDC_GET_ETHERNET_STATISTIC 0x44
#define USB_CDC_GET_NTB_PARAMETERS 0x80
#define USB_CDC_GET_NET_ADDRESS 0x81
#define USB_CDC_SET_NET_ADDRESS 0x82
#define USB_CDC_GET_NTB_FORMAT 0x83
#define USB_CDC_SET_NTB_FORMAT 0x84
#define USB_CDC_GET_NTB_INPUT_SIZE 0x85
#define USB_CDC_SET_NTB_INPUT_SIZE 0x86
#define USB_CDC_GET_MAX_DATAGRAM_SIZE 0x87
#define USB_CDC_SET_MAX_DATAGRAM_SIZE 0x88
#define USB_CDC_GET_CRC_MODE 0x89
#define USB_CDC_SET_CRC_MODE 0x8a

/* Line Coding Structure from CDC spec 6.2.13 */
struct usb_cdc_line_coding {
Expand Down Expand Up @@ -247,4 +269,76 @@ struct usb_cdc_notification {
__le16 wLength;
} __attribute__ ((packed));

/*-------------------------------------------------------------------------*/

/*
* Class Specific structures and constants
*
* CDC NCM parameter structure, CDC NCM subclass 6.2.1
*
*/

struct usb_cdc_ncm_ntb_parameter {
__le16 wLength;
__le16 bmNtbFormatSupported;
__le32 dwNtbInMaxSize;
__le16 wNdpInDivisor;
__le16 wNdpInPayloadRemainder;
__le16 wNdpInAlignment;
__le16 wPadding1;
__le32 dwNtbOutMaxSize;
__le16 wNdpOutDivisor;
__le16 wNdpOutPayloadRemainder;
__le16 wNdpOutAlignment;
__le16 wPadding2;
} __attribute__ ((packed));

/*
* CDC NCM transfer headers, CDC NCM subclass 3.2
*/

#define NCM_NTH16_SIGN 0x484D434E /* NCMH */
#define NCM_NTH32_SIGN 0x686D636E /* ncmh */

struct usb_cdc_ncm_nth16 {
__le32 dwSignature;
__le16 wHeaderLength;
__le16 wSequence;
__le16 wBlockLength;
__le16 wFpIndex;
} __attribute__ ((packed));

struct usb_cdc_ncm_nth32 {
__le32 dwSignature;
__le16 wHeaderLength;
__le16 wSequence;
__le32 dwBlockLength;
__le32 dwFpIndex;
} __attribute__ ((packed));

/*
* CDC NCM datagram pointers, CDC NCM subclass 3.3
*/

#define NCM_NDP16_CRC_SIGN 0x314D434E /* NCM1 */
#define NCM_NDP16_NOCRC_SIGN 0x304D434E /* NCM0 */
#define NCM_NDP32_CRC_SIGN 0x316D636E /* ncm1 */
#define NCM_NDP32_NOCRC_SIGN 0x306D636E /* ncm0 */

struct usb_cdc_ncm_ndp16 {
__le32 dwSignature;
__le16 wLength;
__le16 wNextFpIndex;
__u8 data[0];
} __attribute__ ((packed));

struct usb_cdc_ncm_ndp32 {
__le32 dwSignature;
__le16 wLength;
__le16 wReserved6;
__le32 dwNextFpIndex;
__le32 dwReserved12;
__u8 data[0];
} __attribute__ ((packed));

#endif /* __LINUX_USB_CDC_H */

0 comments on commit 01154aa

Please sign in to comment.