diff options
| author | Linus Torvalds <torvalds@linux-foundation.org> | 2008-05-14 13:52:40 -0400 |
|---|---|---|
| committer | Linus Torvalds <torvalds@linux-foundation.org> | 2008-05-14 13:52:40 -0400 |
| commit | e90a4e475a8b34adbefe189c9d0932fa0b7b750f (patch) | |
| tree | 9547183741c7361edd9e329d8a000ae432378a87 /include/linux | |
| parent | 6aa5fc434958d15a4d66d922d0416dfb03c07def (diff) | |
| parent | 405177070614f35133304d4daa1332afeb83ffa2 (diff) | |
Merge git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb-2.6
* git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb-2.6: (22 commits)
USB: atmel_usba_udc fixes, mostly disconnect()
USB: pxa27x_udc: minor fixes
usbtest: comment on why this code "expects" negative and positive errnos
USB: remove PICDEM FS USB demo (04d8:000c) device from ldusb
USB: option: add new Dell 5520 HSDPA variant
USB: unusual_devs: Add support for GI 0401 SD-Card interface
USB: serial gadget: descriptor cleanup
USB: serial gadget: simplify endpoint handling
USB: serial gadget: remove needless data structure
USB: serial gadget: cleanup/reorg
usb: fix compile warning in isp1760
USB: do not handle device 1410:5010 in 'option' driver
USB: Fix unusual_devs.h ordering
USB: add Zoom Telephonics Model 3095F V.92 USB Mini External modem to cdc-acm
USB: Support for the ET502HS HDSPA modem in option driver
USB: Support for the ET502HS HDSPA modem
usb: fix integer as NULL pointer warnings found by sparse
USB: isp1760: fix printk format
USB: add Telstra NextG CDMA id to option driver
USB: add association.h
...
Diffstat (limited to 'include/linux')
| -rw-r--r-- | include/linux/usb/association.h | 150 |
1 files changed, 150 insertions, 0 deletions
diff --git a/include/linux/usb/association.h b/include/linux/usb/association.h new file mode 100644 index 000000000000..07c5e3cf5898 --- /dev/null +++ b/include/linux/usb/association.h | |||
| @@ -0,0 +1,150 @@ | |||
| 1 | /* | ||
| 2 | * Wireless USB - Cable Based Association | ||
| 3 | * | ||
| 4 | * Copyright (C) 2006 Intel Corporation | ||
| 5 | * Inaky Perez-Gonzalez <inaky.perez-gonzalez@intel.com> | ||
| 6 | * | ||
| 7 | * This program is free software; you can redistribute it and/or | ||
| 8 | * modify it under the terms of the GNU General Public License version | ||
| 9 | * 2 as published by the Free Software Foundation. | ||
| 10 | * | ||
| 11 | */ | ||
| 12 | #ifndef __LINUX_USB_ASSOCIATION_H | ||
| 13 | #define __LINUX_USB_ASSOCIATION_H | ||
| 14 | |||
| 15 | |||
| 16 | /* | ||
| 17 | * Association attributes | ||
| 18 | * | ||
| 19 | * Association Models Supplement to WUSB 1.0 T[3-1] | ||
| 20 | * | ||
| 21 | * Each field in the structures has it's ID, it's length and then the | ||
| 22 | * value. This is the actual definition of the field's ID and its | ||
| 23 | * length. | ||
| 24 | */ | ||
| 25 | struct wusb_am_attr { | ||
| 26 | __u8 id; | ||
| 27 | __u8 len; | ||
| 28 | }; | ||
| 29 | |||
| 30 | /* Different fields defined by the spec */ | ||
| 31 | #define WUSB_AR_AssociationTypeId { .id = 0x0000, .len = 2 } | ||
| 32 | #define WUSB_AR_AssociationSubTypeId { .id = 0x0001, .len = 2 } | ||
| 33 | #define WUSB_AR_Length { .id = 0x0002, .len = 4 } | ||
| 34 | #define WUSB_AR_AssociationStatus { .id = 0x0004, .len = 4 } | ||
| 35 | #define WUSB_AR_LangID { .id = 0x0008, .len = 2 } | ||
| 36 | #define WUSB_AR_DeviceFriendlyName { .id = 0x000b, .len = 64 } /* max */ | ||
| 37 | #define WUSB_AR_HostFriendlyName { .id = 0x000c, .len = 64 } /* max */ | ||
| 38 | #define WUSB_AR_CHID { .id = 0x1000, .len = 16 } | ||
| 39 | #define WUSB_AR_CDID { .id = 0x1001, .len = 16 } | ||
| 40 | #define WUSB_AR_ConnectionContext { .id = 0x1002, .len = 48 } | ||
| 41 | #define WUSB_AR_BandGroups { .id = 0x1004, .len = 2 } | ||
| 42 | |||
| 43 | /* CBAF Control Requests (AMS1.0[T4-1] */ | ||
| 44 | enum { | ||
| 45 | CBAF_REQ_GET_ASSOCIATION_INFORMATION = 0x01, | ||
| 46 | CBAF_REQ_GET_ASSOCIATION_REQUEST, | ||
| 47 | CBAF_REQ_SET_ASSOCIATION_RESPONSE | ||
| 48 | }; | ||
| 49 | |||
| 50 | /* | ||
| 51 | * CBAF USB-interface defitions | ||
| 52 | * | ||
| 53 | * No altsettings, one optional interrupt endpoint. | ||
| 54 | */ | ||
| 55 | enum { | ||
| 56 | CBAF_IFACECLASS = 0xef, | ||
| 57 | CBAF_IFACESUBCLASS = 0x03, | ||
| 58 | CBAF_IFACEPROTOCOL = 0x01, | ||
| 59 | }; | ||
| 60 | |||
| 61 | /* Association Information (AMS1.0[T4-3]) */ | ||
| 62 | struct wusb_cbaf_assoc_info { | ||
| 63 | __le16 Length; | ||
| 64 | __u8 NumAssociationRequests; | ||
| 65 | __le16 Flags; | ||
| 66 | __u8 AssociationRequestsArray[]; | ||
| 67 | } __attribute__((packed)); | ||
| 68 | |||
| 69 | /* Association Request (AMS1.0[T4-4]) */ | ||
| 70 | struct wusb_cbaf_assoc_request { | ||
| 71 | __u8 AssociationDataIndex; | ||
| 72 | __u8 Reserved; | ||
| 73 | __le16 AssociationTypeId; | ||
| 74 | __le16 AssociationSubTypeId; | ||
| 75 | __le32 AssociationTypeInfoSize; | ||
| 76 | } __attribute__((packed)); | ||
| 77 | |||
| 78 | enum { | ||
| 79 | AR_TYPE_WUSB = 0x0001, | ||
| 80 | AR_TYPE_WUSB_RETRIEVE_HOST_INFO = 0x0000, | ||
| 81 | AR_TYPE_WUSB_ASSOCIATE = 0x0001, | ||
| 82 | }; | ||
| 83 | |||
| 84 | /* Association Attribute header (AMS1.0[3.8]) */ | ||
| 85 | struct wusb_cbaf_attr_hdr { | ||
| 86 | __le16 id; | ||
| 87 | __le16 len; | ||
| 88 | } __attribute__((packed)); | ||
| 89 | |||
| 90 | /* Host Info (AMS1.0[T4-7]) (yeah, more headers and fields...) */ | ||
| 91 | struct wusb_cbaf_host_info { | ||
| 92 | struct wusb_cbaf_attr_hdr AssociationTypeId_hdr; | ||
| 93 | __le16 AssociationTypeId; | ||
| 94 | struct wusb_cbaf_attr_hdr AssociationSubTypeId_hdr; | ||
| 95 | __le16 AssociationSubTypeId; | ||
| 96 | struct wusb_cbaf_attr_hdr CHID_hdr; | ||
| 97 | struct wusb_ckhdid CHID; | ||
| 98 | struct wusb_cbaf_attr_hdr LangID_hdr; | ||
| 99 | __le16 LangID; | ||
| 100 | struct wusb_cbaf_attr_hdr HostFriendlyName_hdr; | ||
| 101 | __u8 HostFriendlyName[]; | ||
| 102 | } __attribute__((packed)); | ||
| 103 | |||
| 104 | /* Device Info (AMS1.0[T4-8]) | ||
| 105 | * | ||
| 106 | * I still don't get this tag'n'header stuff for each goddamn | ||
| 107 | * field... | ||
| 108 | */ | ||
| 109 | struct wusb_cbaf_device_info { | ||
| 110 | struct wusb_cbaf_attr_hdr Length_hdr; | ||
| 111 | __le32 Length; | ||
| 112 | struct wusb_cbaf_attr_hdr CDID_hdr; | ||
| 113 | struct wusb_ckhdid CDID; | ||
| 114 | struct wusb_cbaf_attr_hdr BandGroups_hdr; | ||
| 115 | __le16 BandGroups; | ||
| 116 | struct wusb_cbaf_attr_hdr LangID_hdr; | ||
| 117 | __le16 LangID; | ||
| 118 | struct wusb_cbaf_attr_hdr DeviceFriendlyName_hdr; | ||
| 119 | __u8 DeviceFriendlyName[]; | ||
| 120 | } __attribute__((packed)); | ||
| 121 | |||
| 122 | /* Connection Context; CC_DATA - Success case (AMS1.0[T4-9]) */ | ||
| 123 | struct wusb_cbaf_cc_data { | ||
| 124 | struct wusb_cbaf_attr_hdr AssociationTypeId_hdr; | ||
| 125 | __le16 AssociationTypeId; | ||
| 126 | struct wusb_cbaf_attr_hdr AssociationSubTypeId_hdr; | ||
| 127 | __le16 AssociationSubTypeId; | ||
| 128 | struct wusb_cbaf_attr_hdr Length_hdr; | ||
| 129 | __le32 Length; | ||
| 130 | struct wusb_cbaf_attr_hdr ConnectionContext_hdr; | ||
| 131 | struct wusb_ckhdid CHID; | ||
| 132 | struct wusb_ckhdid CDID; | ||
| 133 | struct wusb_ckhdid CK; | ||
| 134 | struct wusb_cbaf_attr_hdr BandGroups_hdr; | ||
| 135 | __le16 BandGroups; | ||
| 136 | } __attribute__((packed)); | ||
| 137 | |||
| 138 | /* CC_DATA - Failure case (AMS1.0[T4-10]) */ | ||
| 139 | struct wusb_cbaf_cc_data_fail { | ||
| 140 | struct wusb_cbaf_attr_hdr AssociationTypeId_hdr; | ||
| 141 | __le16 AssociationTypeId; | ||
| 142 | struct wusb_cbaf_attr_hdr AssociationSubTypeId_hdr; | ||
| 143 | __le16 AssociationSubTypeId; | ||
| 144 | struct wusb_cbaf_attr_hdr Length_hdr; | ||
| 145 | __le16 Length; | ||
| 146 | struct wusb_cbaf_attr_hdr AssociationStatus_hdr; | ||
| 147 | __u32 AssociationStatus; | ||
| 148 | } __attribute__((packed)); | ||
| 149 | |||
| 150 | #endif /* __LINUX_USB_ASSOCIATION_H */ | ||
