1*9f758cafSpengcheng chen - Sun Microsystems - Beijing China /* 2*9f758cafSpengcheng chen - Sun Microsystems - Beijing China * Copyright 2009 Sun Microsystems, Inc. All rights reserved. 3*9f758cafSpengcheng chen - Sun Microsystems - Beijing China * Use is subject to license terms. 4*9f758cafSpengcheng chen - Sun Microsystems - Beijing China */ 5*9f758cafSpengcheng chen - Sun Microsystems - Beijing China 6*9f758cafSpengcheng chen - Sun Microsystems - Beijing China /* 7*9f758cafSpengcheng chen - Sun Microsystems - Beijing China * Copyright (c) 2003 8*9f758cafSpengcheng chen - Sun Microsystems - Beijing China * Daan Vreeken <Danovitsch@Vitsch.net>. All rights reserved. 9*9f758cafSpengcheng chen - Sun Microsystems - Beijing China * 10*9f758cafSpengcheng chen - Sun Microsystems - Beijing China * Redistribution and use in source and binary forms, with or without 11*9f758cafSpengcheng chen - Sun Microsystems - Beijing China * modification, are permitted provided that the following conditions 12*9f758cafSpengcheng chen - Sun Microsystems - Beijing China * are met: 13*9f758cafSpengcheng chen - Sun Microsystems - Beijing China * 1. Redistributions of source code must retain the above copyright 14*9f758cafSpengcheng chen - Sun Microsystems - Beijing China * notice, this list of conditions and the following disclaimer. 15*9f758cafSpengcheng chen - Sun Microsystems - Beijing China * 2. Redistributions in binary form must reproduce the above copyright 16*9f758cafSpengcheng chen - Sun Microsystems - Beijing China * notice, this list of conditions and the following disclaimer in the 17*9f758cafSpengcheng chen - Sun Microsystems - Beijing China * documentation and/or other materials provided with the distribution. 18*9f758cafSpengcheng chen - Sun Microsystems - Beijing China * 3. All advertising materials mentioning features or use of this software 19*9f758cafSpengcheng chen - Sun Microsystems - Beijing China * must display the following acknowledgement: 20*9f758cafSpengcheng chen - Sun Microsystems - Beijing China * This product includes software developed by Daan Vreeken. 21*9f758cafSpengcheng chen - Sun Microsystems - Beijing China * 4. Neither the name of the author nor the names of any co-contributors 22*9f758cafSpengcheng chen - Sun Microsystems - Beijing China * may be used to endorse or promote products derived from this software 23*9f758cafSpengcheng chen - Sun Microsystems - Beijing China * without specific prior written permission. 24*9f758cafSpengcheng chen - Sun Microsystems - Beijing China * 25*9f758cafSpengcheng chen - Sun Microsystems - Beijing China * THIS SOFTWARE IS PROVIDED BY DAAN VREEKEN AND CONTRIBUTORS ``AS IS'' AND 26*9f758cafSpengcheng chen - Sun Microsystems - Beijing China * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 27*9f758cafSpengcheng chen - Sun Microsystems - Beijing China * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 28*9f758cafSpengcheng chen - Sun Microsystems - Beijing China * ARE DISCLAIMED. IN NO EVENT SHALL Daan Vreeken OR THE VOICES IN HIS HEAD 29*9f758cafSpengcheng chen - Sun Microsystems - Beijing China * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 30*9f758cafSpengcheng chen - Sun Microsystems - Beijing China * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 31*9f758cafSpengcheng chen - Sun Microsystems - Beijing China * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 32*9f758cafSpengcheng chen - Sun Microsystems - Beijing China * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 33*9f758cafSpengcheng chen - Sun Microsystems - Beijing China * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 34*9f758cafSpengcheng chen - Sun Microsystems - Beijing China * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF 35*9f758cafSpengcheng chen - Sun Microsystems - Beijing China * THE POSSIBILITY OF SUCH DAMAGE. 36*9f758cafSpengcheng chen - Sun Microsystems - Beijing China * 37*9f758cafSpengcheng chen - Sun Microsystems - Beijing China */ 38*9f758cafSpengcheng chen - Sun Microsystems - Beijing China 39*9f758cafSpengcheng chen - Sun Microsystems - Beijing China #ifndef _ATU_H 40*9f758cafSpengcheng chen - Sun Microsystems - Beijing China #define _ATU_H 41*9f758cafSpengcheng chen - Sun Microsystems - Beijing China 42*9f758cafSpengcheng chen - Sun Microsystems - Beijing China #ifdef __cplusplus 43*9f758cafSpengcheng chen - Sun Microsystems - Beijing China extern "C" { 44*9f758cafSpengcheng chen - Sun Microsystems - Beijing China #endif 45*9f758cafSpengcheng chen - Sun Microsystems - Beijing China 46*9f758cafSpengcheng chen - Sun Microsystems - Beijing China enum atu_radio_type { 47*9f758cafSpengcheng chen - Sun Microsystems - Beijing China RadioRFMD, 48*9f758cafSpengcheng chen - Sun Microsystems - Beijing China RadioRFMD2958, 49*9f758cafSpengcheng chen - Sun Microsystems - Beijing China RadioRFMD2958_SMC, 50*9f758cafSpengcheng chen - Sun Microsystems - Beijing China RadioIntersil, 51*9f758cafSpengcheng chen - Sun Microsystems - Beijing China AT76C503_i3863, 52*9f758cafSpengcheng chen - Sun Microsystems - Beijing China AT76C503_RFMD_ACC, 53*9f758cafSpengcheng chen - Sun Microsystems - Beijing China AT76C505_RFMD 54*9f758cafSpengcheng chen - Sun Microsystems - Beijing China }; 55*9f758cafSpengcheng chen - Sun Microsystems - Beijing China 56*9f758cafSpengcheng chen - Sun Microsystems - Beijing China struct atu_dev_type { 57*9f758cafSpengcheng chen - Sun Microsystems - Beijing China uint16_t atu_vid; 58*9f758cafSpengcheng chen - Sun Microsystems - Beijing China uint16_t atu_pid; 59*9f758cafSpengcheng chen - Sun Microsystems - Beijing China enum atu_radio_type atu_radio; 60*9f758cafSpengcheng chen - Sun Microsystems - Beijing China uint16_t atu_quirk; 61*9f758cafSpengcheng chen - Sun Microsystems - Beijing China }; 62*9f758cafSpengcheng chen - Sun Microsystems - Beijing China 63*9f758cafSpengcheng chen - Sun Microsystems - Beijing China struct atu_firmware { 64*9f758cafSpengcheng chen - Sun Microsystems - Beijing China enum atu_radio_type atur_type; 65*9f758cafSpengcheng chen - Sun Microsystems - Beijing China uint8_t *atur_int; 66*9f758cafSpengcheng chen - Sun Microsystems - Beijing China uint8_t *atur_ext; 67*9f758cafSpengcheng chen - Sun Microsystems - Beijing China uint_t atur_int_size; 68*9f758cafSpengcheng chen - Sun Microsystems - Beijing China uint_t atur_ext_size; 69*9f758cafSpengcheng chen - Sun Microsystems - Beijing China uint8_t max_rssi; 70*9f758cafSpengcheng chen - Sun Microsystems - Beijing China }; 71*9f758cafSpengcheng chen - Sun Microsystems - Beijing China 72*9f758cafSpengcheng chen - Sun Microsystems - Beijing China struct atu_softc { 73*9f758cafSpengcheng chen - Sun Microsystems - Beijing China struct ieee80211com sc_ic; 74*9f758cafSpengcheng chen - Sun Microsystems - Beijing China 75*9f758cafSpengcheng chen - Sun Microsystems - Beijing China char sc_name[16]; 76*9f758cafSpengcheng chen - Sun Microsystems - Beijing China uint32_t sc_flags; 77*9f758cafSpengcheng chen - Sun Microsystems - Beijing China enum atu_radio_type sc_radio; 78*9f758cafSpengcheng chen - Sun Microsystems - Beijing China uint16_t sc_quirk; 79*9f758cafSpengcheng chen - Sun Microsystems - Beijing China 80*9f758cafSpengcheng chen - Sun Microsystems - Beijing China dev_info_t *sc_dip; 81*9f758cafSpengcheng chen - Sun Microsystems - Beijing China usb_client_dev_data_t *sc_udev; 82*9f758cafSpengcheng chen - Sun Microsystems - Beijing China usb_pipe_handle_t sc_rx_pipe; 83*9f758cafSpengcheng chen - Sun Microsystems - Beijing China usb_pipe_handle_t sc_tx_pipe; 84*9f758cafSpengcheng chen - Sun Microsystems - Beijing China 85*9f758cafSpengcheng chen - Sun Microsystems - Beijing China kmutex_t sc_genlock; 86*9f758cafSpengcheng chen - Sun Microsystems - Beijing China kmutex_t sc_txlock; 87*9f758cafSpengcheng chen - Sun Microsystems - Beijing China kmutex_t sc_rxlock; 88*9f758cafSpengcheng chen - Sun Microsystems - Beijing China 89*9f758cafSpengcheng chen - Sun Microsystems - Beijing China boolean_t sc_need_sched; 90*9f758cafSpengcheng chen - Sun Microsystems - Beijing China int tx_queued; 91*9f758cafSpengcheng chen - Sun Microsystems - Beijing China int rx_queued; 92*9f758cafSpengcheng chen - Sun Microsystems - Beijing China 93*9f758cafSpengcheng chen - Sun Microsystems - Beijing China uint32_t sc_tx_nobuf; 94*9f758cafSpengcheng chen - Sun Microsystems - Beijing China uint32_t sc_rx_nobuf; 95*9f758cafSpengcheng chen - Sun Microsystems - Beijing China uint32_t sc_rx_err; 96*9f758cafSpengcheng chen - Sun Microsystems - Beijing China 97*9f758cafSpengcheng chen - Sun Microsystems - Beijing China timeout_id_t sc_scan_timer; 98*9f758cafSpengcheng chen - Sun Microsystems - Beijing China 99*9f758cafSpengcheng chen - Sun Microsystems - Beijing China int (*sc_newstate)(struct ieee80211com *, 100*9f758cafSpengcheng chen - Sun Microsystems - Beijing China enum ieee80211_state, int); 101*9f758cafSpengcheng chen - Sun Microsystems - Beijing China }; 102*9f758cafSpengcheng chen - Sun Microsystems - Beijing China 103*9f758cafSpengcheng chen - Sun Microsystems - Beijing China #define ATU_FLAG_RUNNING (1<<0) 104*9f758cafSpengcheng chen - Sun Microsystems - Beijing China #define ATU_FLAG_REATTACH (1<<1) 105*9f758cafSpengcheng chen - Sun Microsystems - Beijing China #define ATU_FLAG_RADIO_ON (1<<2) 106*9f758cafSpengcheng chen - Sun Microsystems - Beijing China 107*9f758cafSpengcheng chen - Sun Microsystems - Beijing China #define ATU_RUNNING(sc) ((sc)->sc_flags & ATU_FLAG_RUNNING) 108*9f758cafSpengcheng chen - Sun Microsystems - Beijing China #define ATU_REATTACH(sc) ((sc)->sc_flags & ATU_FLAG_REATTACH) 109*9f758cafSpengcheng chen - Sun Microsystems - Beijing China #define ATU_RADIO_ON(sc) ((sc)->sc_flags & ATU_FLAG_RADIO_ON) 110*9f758cafSpengcheng chen - Sun Microsystems - Beijing China 111*9f758cafSpengcheng chen - Sun Microsystems - Beijing China #define ATU_LOCK(sc) mutex_enter(&(sc)->sc_genlock) 112*9f758cafSpengcheng chen - Sun Microsystems - Beijing China #define ATU_UNLOCK(sc) mutex_exit(&(sc)->sc_genlock) 113*9f758cafSpengcheng chen - Sun Microsystems - Beijing China 114*9f758cafSpengcheng chen - Sun Microsystems - Beijing China #define ATU_RX_LIST_CNT 1 115*9f758cafSpengcheng chen - Sun Microsystems - Beijing China #define ATU_TX_LIST_CNT 8 116*9f758cafSpengcheng chen - Sun Microsystems - Beijing China #define ATU_MIN_FRAMELEN sizeof (struct ieee80211_frame_min) 117*9f758cafSpengcheng chen - Sun Microsystems - Beijing China 118*9f758cafSpengcheng chen - Sun Microsystems - Beijing China #define ATU_RX_BUFSZ \ 119*9f758cafSpengcheng chen - Sun Microsystems - Beijing China (ATU_RX_HDRLEN + \ 120*9f758cafSpengcheng chen - Sun Microsystems - Beijing China sizeof (struct ieee80211_frame_addr4) + \ 121*9f758cafSpengcheng chen - Sun Microsystems - Beijing China 2312 + 4) 122*9f758cafSpengcheng chen - Sun Microsystems - Beijing China #define ATU_TX_BUFSZ \ 123*9f758cafSpengcheng chen - Sun Microsystems - Beijing China (ATU_TX_HDRLEN + \ 124*9f758cafSpengcheng chen - Sun Microsystems - Beijing China sizeof (struct ieee80211_frame_addr4) + 2312) 125*9f758cafSpengcheng chen - Sun Microsystems - Beijing China 126*9f758cafSpengcheng chen - Sun Microsystems - Beijing China #define ATU_DEF_CHAN 10 127*9f758cafSpengcheng chen - Sun Microsystems - Beijing China #define ATU_DEF_TX_RATE 3 128*9f758cafSpengcheng chen - Sun Microsystems - Beijing China #define ATU_JOIN_TIMEOUT 2000 129*9f758cafSpengcheng chen - Sun Microsystems - Beijing China 130*9f758cafSpengcheng chen - Sun Microsystems - Beijing China #define ATU_QUIRK_NONE 0x0000 131*9f758cafSpengcheng chen - Sun Microsystems - Beijing China #define ATU_QUIRK_NO_REMAP 0x0001 132*9f758cafSpengcheng chen - Sun Microsystems - Beijing China #define ATU_QUIRK_FW_DELAY 0x0002 133*9f758cafSpengcheng chen - Sun Microsystems - Beijing China 134*9f758cafSpengcheng chen - Sun Microsystems - Beijing China #define ATU_ENC_NONE 0 135*9f758cafSpengcheng chen - Sun Microsystems - Beijing China #define ATU_ENC_WEP40 1 136*9f758cafSpengcheng chen - Sun Microsystems - Beijing China #define ATU_ENC_WEP104 2 137*9f758cafSpengcheng chen - Sun Microsystems - Beijing China 138*9f758cafSpengcheng chen - Sun Microsystems - Beijing China #define ATU_MODE_IBSS 1 139*9f758cafSpengcheng chen - Sun Microsystems - Beijing China #define ATU_MODE_STA 2 140*9f758cafSpengcheng chen - Sun Microsystems - Beijing China 141*9f758cafSpengcheng chen - Sun Microsystems - Beijing China #define ATU_POWER_ACTIVE 1 142*9f758cafSpengcheng chen - Sun Microsystems - Beijing China #define ATU_POWER_SAVE 2 143*9f758cafSpengcheng chen - Sun Microsystems - Beijing China #define ATU_POWER_SMART 3 144*9f758cafSpengcheng chen - Sun Microsystems - Beijing China 145*9f758cafSpengcheng chen - Sun Microsystems - Beijing China #define ATU_PREAMBLE_LONG 0 146*9f758cafSpengcheng chen - Sun Microsystems - Beijing China #define ATU_PREAMBLE_SHORT 1 147*9f758cafSpengcheng chen - Sun Microsystems - Beijing China 148*9f758cafSpengcheng chen - Sun Microsystems - Beijing China /* AT76c503 operating modes */ 149*9f758cafSpengcheng chen - Sun Microsystems - Beijing China #define ATU_DEV_UNKNOWN 0x00 150*9f758cafSpengcheng chen - Sun Microsystems - Beijing China #define ATU_DEV_READY 0x01 151*9f758cafSpengcheng chen - Sun Microsystems - Beijing China #define ATU_DEV_CONFIG 0x02 152*9f758cafSpengcheng chen - Sun Microsystems - Beijing China #define ATU_DEV_DFU 0x03 153*9f758cafSpengcheng chen - Sun Microsystems - Beijing China #define ATU_DEV_STAGE2 0x04 154*9f758cafSpengcheng chen - Sun Microsystems - Beijing China 155*9f758cafSpengcheng chen - Sun Microsystems - Beijing China /* AT76c503 commands */ 156*9f758cafSpengcheng chen - Sun Microsystems - Beijing China #define CMD_SET_MIB 0x01 157*9f758cafSpengcheng chen - Sun Microsystems - Beijing China #define CMD_START_SCAN 0x03 158*9f758cafSpengcheng chen - Sun Microsystems - Beijing China #define CMD_JOIN 0x04 159*9f758cafSpengcheng chen - Sun Microsystems - Beijing China #define CMD_START_IBSS 0x05 160*9f758cafSpengcheng chen - Sun Microsystems - Beijing China #define CMD_RADIO 0x06 161*9f758cafSpengcheng chen - Sun Microsystems - Beijing China #define CMD_RADIO_ON 0x06 162*9f758cafSpengcheng chen - Sun Microsystems - Beijing China #define CMD_RADIO_OFF 0x07 163*9f758cafSpengcheng chen - Sun Microsystems - Beijing China #define CMD_STARTUP 0x0b 164*9f758cafSpengcheng chen - Sun Microsystems - Beijing China 165*9f758cafSpengcheng chen - Sun Microsystems - Beijing China /* AT76c503 wait status */ 166*9f758cafSpengcheng chen - Sun Microsystems - Beijing China #define STATUS_IDLE 0x00 167*9f758cafSpengcheng chen - Sun Microsystems - Beijing China #define STATUS_COMPLETE 0x01 168*9f758cafSpengcheng chen - Sun Microsystems - Beijing China #define STATUS_UNKNOWN 0x02 169*9f758cafSpengcheng chen - Sun Microsystems - Beijing China #define STATUS_INVALID_PARAMETER 0x03 170*9f758cafSpengcheng chen - Sun Microsystems - Beijing China #define STATUS_FUNCTION_NOT_SUPPORTED 0x04 171*9f758cafSpengcheng chen - Sun Microsystems - Beijing China #define STATUS_TIME_OUT 0x07 172*9f758cafSpengcheng chen - Sun Microsystems - Beijing China #define STATUS_IN_PROGRESS 0x08 173*9f758cafSpengcheng chen - Sun Microsystems - Beijing China #define STATUS_HOST_FAILURE 0xff 174*9f758cafSpengcheng chen - Sun Microsystems - Beijing China #define STATUS_SCAN_FAILED 0xf0 175*9f758cafSpengcheng chen - Sun Microsystems - Beijing China 176*9f758cafSpengcheng chen - Sun Microsystems - Beijing China /* Name Type Size Index */ 177*9f758cafSpengcheng chen - Sun Microsystems - Beijing China #define MIB_LOCAL 0x01 178*9f758cafSpengcheng chen - Sun Microsystems - Beijing China #define MIB_LOCAL_BEACON_ENABLE MIB_LOCAL, 1, 2 179*9f758cafSpengcheng chen - Sun Microsystems - Beijing China #define MIB_LOCAL_AUTO_RATE_FALLBACK MIB_LOCAL, 1, 3 180*9f758cafSpengcheng chen - Sun Microsystems - Beijing China #define MIB_LOCAL_SSID_SIZE MIB_LOCAL, 1, 5 181*9f758cafSpengcheng chen - Sun Microsystems - Beijing China #define MIB_LOCAL_PREAMBLE MIB_LOCAL, 1, 9 182*9f758cafSpengcheng chen - Sun Microsystems - Beijing China #define MIB_MAC_ADDR 0x02 183*9f758cafSpengcheng chen - Sun Microsystems - Beijing China #define MIB_MAC_ADDR_STA MIB_MAC_ADDR, 6, 0 184*9f758cafSpengcheng chen - Sun Microsystems - Beijing China #define MIB_MAC 0x03 185*9f758cafSpengcheng chen - Sun Microsystems - Beijing China #define MIB_MAC_FRAG MIB_MAC, 2, 8 186*9f758cafSpengcheng chen - Sun Microsystems - Beijing China #define MIB_MAC_RTS MIB_MAC, 2, 10 187*9f758cafSpengcheng chen - Sun Microsystems - Beijing China #define MIB_MAC_DESIRED_SSID MIB_MAC, 32, 28 188*9f758cafSpengcheng chen - Sun Microsystems - Beijing China #define MIB_MAC_MGMT 0x05 189*9f758cafSpengcheng chen - Sun Microsystems - Beijing China #define MIB_MAC_MGMT_BEACON_PERIOD MIB_MAC_MGMT, 2, 0 190*9f758cafSpengcheng chen - Sun Microsystems - Beijing China #define MIB_MAC_MGMT_CURRENT_BSSID MIB_MAC_MGMT, 6, 14 191*9f758cafSpengcheng chen - Sun Microsystems - Beijing China #define MIB_MAC_MGMT_CURRENT_ESSID MIB_MAC_MGMT, 32, 20 192*9f758cafSpengcheng chen - Sun Microsystems - Beijing China #define MIB_MAC_MGMT_POWER_MODE MIB_MAC_MGMT, 1, 53 193*9f758cafSpengcheng chen - Sun Microsystems - Beijing China #define MIB_MAC_MGMT_IBSS_CHANGE MIB_MAC_MGMT, 1, 54 194*9f758cafSpengcheng chen - Sun Microsystems - Beijing China #define MIB_MAC_WEP 0x06 195*9f758cafSpengcheng chen - Sun Microsystems - Beijing China #define MIB_MAC_WEP_PRIVACY_INVOKED MIB_MAC_WEP, 1, 0 196*9f758cafSpengcheng chen - Sun Microsystems - Beijing China #define MIB_MAC_WEP_KEY_ID MIB_MAC_WEP, 1, 1 197*9f758cafSpengcheng chen - Sun Microsystems - Beijing China #define MIB_MAC_WEP_ICV_ERROR_COUNT MIB_MAC_WEP, 4, 4 198*9f758cafSpengcheng chen - Sun Microsystems - Beijing China #define MIB_MAC_WEP_EXCLUDED_COUNT MIB_MAC_WEP, 4, 8 199*9f758cafSpengcheng chen - Sun Microsystems - Beijing China #define MIB_MAC_WEP_KEYS(nr) MIB_MAC_WEP, 13, 12+(nr)*13 200*9f758cafSpengcheng chen - Sun Microsystems - Beijing China #define MIB_MAC_WEP_ENCR_LEVEL MIB_MAC_WEP, 1, 64 201*9f758cafSpengcheng chen - Sun Microsystems - Beijing China #define MIB_PHY 0x07 202*9f758cafSpengcheng chen - Sun Microsystems - Beijing China #define MIB_PHY_CHANNEL MIB_PHY, 1, 20 203*9f758cafSpengcheng chen - Sun Microsystems - Beijing China #define MIB_PHY_REG_DOMAIN MIB_PHY, 1, 23 204*9f758cafSpengcheng chen - Sun Microsystems - Beijing China #define MIB_FW_VERSION 0x08 205*9f758cafSpengcheng chen - Sun Microsystems - Beijing China #define MIB_DOMAIN 0x09 206*9f758cafSpengcheng chen - Sun Microsystems - Beijing China #define MIB_DOMAIN_POWER_LEVELS MIB_DOMAIN, 14, 0 207*9f758cafSpengcheng chen - Sun Microsystems - Beijing China #define MIB_DOMAIN_CHANNELS MIB_DOMAIN, 14, 14 208*9f758cafSpengcheng chen - Sun Microsystems - Beijing China 209*9f758cafSpengcheng chen - Sun Microsystems - Beijing China /* USB request types */ 210*9f758cafSpengcheng chen - Sun Microsystems - Beijing China #define ATU_CLASS_IF_IN \ 211*9f758cafSpengcheng chen - Sun Microsystems - Beijing China (USB_DEV_REQ_DEV_TO_HOST | \ 212*9f758cafSpengcheng chen - Sun Microsystems - Beijing China USB_DEV_REQ_TYPE_CLASS | \ 213*9f758cafSpengcheng chen - Sun Microsystems - Beijing China USB_DEV_REQ_RCPT_IF) 214*9f758cafSpengcheng chen - Sun Microsystems - Beijing China 215*9f758cafSpengcheng chen - Sun Microsystems - Beijing China #define ATU_VENDOR_IF_IN \ 216*9f758cafSpengcheng chen - Sun Microsystems - Beijing China (USB_DEV_REQ_DEV_TO_HOST | \ 217*9f758cafSpengcheng chen - Sun Microsystems - Beijing China USB_DEV_REQ_TYPE_VENDOR | \ 218*9f758cafSpengcheng chen - Sun Microsystems - Beijing China USB_DEV_REQ_RCPT_IF) 219*9f758cafSpengcheng chen - Sun Microsystems - Beijing China 220*9f758cafSpengcheng chen - Sun Microsystems - Beijing China #define ATU_VENDOR_DEV_OUT \ 221*9f758cafSpengcheng chen - Sun Microsystems - Beijing China (USB_DEV_REQ_HOST_TO_DEV | \ 222*9f758cafSpengcheng chen - Sun Microsystems - Beijing China USB_DEV_REQ_TYPE_VENDOR | \ 223*9f758cafSpengcheng chen - Sun Microsystems - Beijing China USB_DEV_REQ_RCPT_DEV) 224*9f758cafSpengcheng chen - Sun Microsystems - Beijing China 225*9f758cafSpengcheng chen - Sun Microsystems - Beijing China #define ATU_CLASS_IF_OUT \ 226*9f758cafSpengcheng chen - Sun Microsystems - Beijing China (USB_DEV_REQ_HOST_TO_DEV | \ 227*9f758cafSpengcheng chen - Sun Microsystems - Beijing China USB_DEV_REQ_TYPE_CLASS | \ 228*9f758cafSpengcheng chen - Sun Microsystems - Beijing China USB_DEV_REQ_RCPT_IF) 229*9f758cafSpengcheng chen - Sun Microsystems - Beijing China 230*9f758cafSpengcheng chen - Sun Microsystems - Beijing China #define ATU_VENDOR_IF_OUT \ 231*9f758cafSpengcheng chen - Sun Microsystems - Beijing China (USB_DEV_REQ_HOST_TO_DEV | \ 232*9f758cafSpengcheng chen - Sun Microsystems - Beijing China USB_DEV_REQ_TYPE_VENDOR | \ 233*9f758cafSpengcheng chen - Sun Microsystems - Beijing China USB_DEV_REQ_RCPT_IF) 234*9f758cafSpengcheng chen - Sun Microsystems - Beijing China 235*9f758cafSpengcheng chen - Sun Microsystems - Beijing China /* standard DFU commands */ 236*9f758cafSpengcheng chen - Sun Microsystems - Beijing China #define DFU_DNLOAD ATU_CLASS_IF_OUT, 0x01 237*9f758cafSpengcheng chen - Sun Microsystems - Beijing China #define DFU_GETSTATUS ATU_CLASS_IF_IN, 0x03 238*9f758cafSpengcheng chen - Sun Microsystems - Beijing China #define DFU_GETSTATE ATU_CLASS_IF_IN, 0x05 239*9f758cafSpengcheng chen - Sun Microsystems - Beijing China #define DFU_REMAP ATU_VENDOR_IF_OUT, 0x0a 240*9f758cafSpengcheng chen - Sun Microsystems - Beijing China 241*9f758cafSpengcheng chen - Sun Microsystems - Beijing China /* DFU states */ 242*9f758cafSpengcheng chen - Sun Microsystems - Beijing China #define DFUState_AppIdle 0 243*9f758cafSpengcheng chen - Sun Microsystems - Beijing China #define DFUState_AppDetach 1 244*9f758cafSpengcheng chen - Sun Microsystems - Beijing China #define DFUState_DFUIdle 2 245*9f758cafSpengcheng chen - Sun Microsystems - Beijing China #define DFUState_DnLoadSync 3 246*9f758cafSpengcheng chen - Sun Microsystems - Beijing China #define DFUState_DnLoadBusy 4 247*9f758cafSpengcheng chen - Sun Microsystems - Beijing China #define DFUState_DnLoadIdle 5 248*9f758cafSpengcheng chen - Sun Microsystems - Beijing China #define DFUState_ManifestSync 6 249*9f758cafSpengcheng chen - Sun Microsystems - Beijing China #define DFUState_Manifest 7 250*9f758cafSpengcheng chen - Sun Microsystems - Beijing China #define DFUState_ManifestWait 8 251*9f758cafSpengcheng chen - Sun Microsystems - Beijing China #define DFUState_UploadIdle 9 252*9f758cafSpengcheng chen - Sun Microsystems - Beijing China #define DFUState_DFUError 10 253*9f758cafSpengcheng chen - Sun Microsystems - Beijing China #define DFU_MaxBlockSize 1024 254*9f758cafSpengcheng chen - Sun Microsystems - Beijing China 255*9f758cafSpengcheng chen - Sun Microsystems - Beijing China #pragma pack(1) 256*9f758cafSpengcheng chen - Sun Microsystems - Beijing China /* AT76c503 command header */ 257*9f758cafSpengcheng chen - Sun Microsystems - Beijing China struct atu_cmd { 258*9f758cafSpengcheng chen - Sun Microsystems - Beijing China uint8_t Cmd; 259*9f758cafSpengcheng chen - Sun Microsystems - Beijing China uint8_t Reserved; 260*9f758cafSpengcheng chen - Sun Microsystems - Beijing China uint16_t Size; 261*9f758cafSpengcheng chen - Sun Microsystems - Beijing China }; 262*9f758cafSpengcheng chen - Sun Microsystems - Beijing China 263*9f758cafSpengcheng chen - Sun Microsystems - Beijing China /* CMD_SET_MIB command (0x01) */ 264*9f758cafSpengcheng chen - Sun Microsystems - Beijing China struct atu_cmd_set_mib { 265*9f758cafSpengcheng chen - Sun Microsystems - Beijing China /* AT76c503 command header */ 266*9f758cafSpengcheng chen - Sun Microsystems - Beijing China uint8_t AtCmd; 267*9f758cafSpengcheng chen - Sun Microsystems - Beijing China uint8_t AtReserved; 268*9f758cafSpengcheng chen - Sun Microsystems - Beijing China uint16_t AtSize; 269*9f758cafSpengcheng chen - Sun Microsystems - Beijing China /* MIB header */ 270*9f758cafSpengcheng chen - Sun Microsystems - Beijing China uint8_t MIBType; 271*9f758cafSpengcheng chen - Sun Microsystems - Beijing China uint8_t MIBSize; 272*9f758cafSpengcheng chen - Sun Microsystems - Beijing China uint8_t MIBIndex; 273*9f758cafSpengcheng chen - Sun Microsystems - Beijing China uint8_t MIBReserved; 274*9f758cafSpengcheng chen - Sun Microsystems - Beijing China /* MIB data */ 275*9f758cafSpengcheng chen - Sun Microsystems - Beijing China uint8_t data[72]; 276*9f758cafSpengcheng chen - Sun Microsystems - Beijing China }; 277*9f758cafSpengcheng chen - Sun Microsystems - Beijing China 278*9f758cafSpengcheng chen - Sun Microsystems - Beijing China /* CMD_STARTUP command (0x0b) */ 279*9f758cafSpengcheng chen - Sun Microsystems - Beijing China struct atu_cmd_card_config { 280*9f758cafSpengcheng chen - Sun Microsystems - Beijing China uint8_t Cmd; 281*9f758cafSpengcheng chen - Sun Microsystems - Beijing China uint8_t Reserved; 282*9f758cafSpengcheng chen - Sun Microsystems - Beijing China uint16_t Size; 283*9f758cafSpengcheng chen - Sun Microsystems - Beijing China 284*9f758cafSpengcheng chen - Sun Microsystems - Beijing China uint8_t ExcludeUnencrypted; 285*9f758cafSpengcheng chen - Sun Microsystems - Beijing China uint8_t PromiscuousMode; 286*9f758cafSpengcheng chen - Sun Microsystems - Beijing China uint8_t ShortRetryLimit; 287*9f758cafSpengcheng chen - Sun Microsystems - Beijing China uint8_t EncryptionType; 288*9f758cafSpengcheng chen - Sun Microsystems - Beijing China uint16_t RTS_Threshold; 289*9f758cafSpengcheng chen - Sun Microsystems - Beijing China uint16_t FragThreshold; 290*9f758cafSpengcheng chen - Sun Microsystems - Beijing China uint8_t BasicRateSet[4]; 291*9f758cafSpengcheng chen - Sun Microsystems - Beijing China uint8_t AutoRateFallback; 292*9f758cafSpengcheng chen - Sun Microsystems - Beijing China uint8_t Channel; 293*9f758cafSpengcheng chen - Sun Microsystems - Beijing China uint8_t PrivacyInvoked; 294*9f758cafSpengcheng chen - Sun Microsystems - Beijing China uint8_t WEP_DefaultKeyID; 295*9f758cafSpengcheng chen - Sun Microsystems - Beijing China uint8_t SSID[IEEE80211_NWID_LEN]; 296*9f758cafSpengcheng chen - Sun Microsystems - Beijing China uint8_t WEP_DefaultKey[4][13]; 297*9f758cafSpengcheng chen - Sun Microsystems - Beijing China uint8_t SSID_Len; 298*9f758cafSpengcheng chen - Sun Microsystems - Beijing China uint8_t ShortPreamble; 299*9f758cafSpengcheng chen - Sun Microsystems - Beijing China uint16_t BeaconPeriod; 300*9f758cafSpengcheng chen - Sun Microsystems - Beijing China }; 301*9f758cafSpengcheng chen - Sun Microsystems - Beijing China 302*9f758cafSpengcheng chen - Sun Microsystems - Beijing China /* CMD_SCAN command (0x03) */ 303*9f758cafSpengcheng chen - Sun Microsystems - Beijing China struct atu_cmd_do_scan { 304*9f758cafSpengcheng chen - Sun Microsystems - Beijing China uint8_t Cmd; 305*9f758cafSpengcheng chen - Sun Microsystems - Beijing China uint8_t Reserved; 306*9f758cafSpengcheng chen - Sun Microsystems - Beijing China uint16_t Size; 307*9f758cafSpengcheng chen - Sun Microsystems - Beijing China 308*9f758cafSpengcheng chen - Sun Microsystems - Beijing China uint8_t BSSID[IEEE80211_ADDR_LEN]; 309*9f758cafSpengcheng chen - Sun Microsystems - Beijing China uint8_t SSID[IEEE80211_NWID_LEN]; 310*9f758cafSpengcheng chen - Sun Microsystems - Beijing China uint8_t ScanType; 311*9f758cafSpengcheng chen - Sun Microsystems - Beijing China uint8_t Channel; 312*9f758cafSpengcheng chen - Sun Microsystems - Beijing China uint16_t ProbeDelay; 313*9f758cafSpengcheng chen - Sun Microsystems - Beijing China uint16_t MinChannelTime; 314*9f758cafSpengcheng chen - Sun Microsystems - Beijing China uint16_t MaxChannelTime; 315*9f758cafSpengcheng chen - Sun Microsystems - Beijing China uint8_t SSID_Len; 316*9f758cafSpengcheng chen - Sun Microsystems - Beijing China uint8_t InternationalScan; 317*9f758cafSpengcheng chen - Sun Microsystems - Beijing China }; 318*9f758cafSpengcheng chen - Sun Microsystems - Beijing China #define ATU_SCAN_ACTIVE 0x00 319*9f758cafSpengcheng chen - Sun Microsystems - Beijing China #define ATU_SCAN_PASSIVE 0x01 320*9f758cafSpengcheng chen - Sun Microsystems - Beijing China 321*9f758cafSpengcheng chen - Sun Microsystems - Beijing China /* CMD_JOIN command (0x04) */ 322*9f758cafSpengcheng chen - Sun Microsystems - Beijing China struct atu_cmd_join { 323*9f758cafSpengcheng chen - Sun Microsystems - Beijing China uint8_t Cmd; 324*9f758cafSpengcheng chen - Sun Microsystems - Beijing China uint8_t Reserved; 325*9f758cafSpengcheng chen - Sun Microsystems - Beijing China uint16_t Size; 326*9f758cafSpengcheng chen - Sun Microsystems - Beijing China 327*9f758cafSpengcheng chen - Sun Microsystems - Beijing China uint8_t bssid[IEEE80211_ADDR_LEN]; 328*9f758cafSpengcheng chen - Sun Microsystems - Beijing China uint8_t essid[32]; 329*9f758cafSpengcheng chen - Sun Microsystems - Beijing China uint8_t bss_type; 330*9f758cafSpengcheng chen - Sun Microsystems - Beijing China uint8_t channel; 331*9f758cafSpengcheng chen - Sun Microsystems - Beijing China uint16_t timeout; 332*9f758cafSpengcheng chen - Sun Microsystems - Beijing China uint8_t essid_size; 333*9f758cafSpengcheng chen - Sun Microsystems - Beijing China uint8_t reserved; 334*9f758cafSpengcheng chen - Sun Microsystems - Beijing China }; 335*9f758cafSpengcheng chen - Sun Microsystems - Beijing China 336*9f758cafSpengcheng chen - Sun Microsystems - Beijing China /* CMD_START_IBSS (0x05) */ 337*9f758cafSpengcheng chen - Sun Microsystems - Beijing China struct atu_cmd_start_ibss { 338*9f758cafSpengcheng chen - Sun Microsystems - Beijing China uint8_t Cmd; 339*9f758cafSpengcheng chen - Sun Microsystems - Beijing China uint8_t Reserved; 340*9f758cafSpengcheng chen - Sun Microsystems - Beijing China uint16_t Size; 341*9f758cafSpengcheng chen - Sun Microsystems - Beijing China 342*9f758cafSpengcheng chen - Sun Microsystems - Beijing China uint8_t BSSID[IEEE80211_ADDR_LEN]; 343*9f758cafSpengcheng chen - Sun Microsystems - Beijing China uint8_t SSID[32]; 344*9f758cafSpengcheng chen - Sun Microsystems - Beijing China uint8_t BSSType; 345*9f758cafSpengcheng chen - Sun Microsystems - Beijing China uint8_t Channel; 346*9f758cafSpengcheng chen - Sun Microsystems - Beijing China uint8_t SSIDSize; 347*9f758cafSpengcheng chen - Sun Microsystems - Beijing China uint8_t Res[3]; 348*9f758cafSpengcheng chen - Sun Microsystems - Beijing China }; 349*9f758cafSpengcheng chen - Sun Microsystems - Beijing China 350*9f758cafSpengcheng chen - Sun Microsystems - Beijing China /* 351*9f758cafSpengcheng chen - Sun Microsystems - Beijing China * The At76c503 adapters come with different types of radios on them. 352*9f758cafSpengcheng chen - Sun Microsystems - Beijing China * At this moment the driver supports adapters with RFMD and Intersil radios. 353*9f758cafSpengcheng chen - Sun Microsystems - Beijing China */ 354*9f758cafSpengcheng chen - Sun Microsystems - Beijing China 355*9f758cafSpengcheng chen - Sun Microsystems - Beijing China /* The config structure of an RFMD radio */ 356*9f758cafSpengcheng chen - Sun Microsystems - Beijing China struct atu_rfmd_conf { 357*9f758cafSpengcheng chen - Sun Microsystems - Beijing China uint8_t CR20[14]; 358*9f758cafSpengcheng chen - Sun Microsystems - Beijing China uint8_t CR21[14]; 359*9f758cafSpengcheng chen - Sun Microsystems - Beijing China uint8_t BB_CR[14]; 360*9f758cafSpengcheng chen - Sun Microsystems - Beijing China uint8_t PidVid[4]; 361*9f758cafSpengcheng chen - Sun Microsystems - Beijing China uint8_t MACAddr[IEEE80211_ADDR_LEN]; 362*9f758cafSpengcheng chen - Sun Microsystems - Beijing China uint8_t RegulatoryDomain; 363*9f758cafSpengcheng chen - Sun Microsystems - Beijing China uint8_t LowPowerValues[14]; 364*9f758cafSpengcheng chen - Sun Microsystems - Beijing China uint8_t NormalPowerValues[14]; 365*9f758cafSpengcheng chen - Sun Microsystems - Beijing China uint8_t Reserved[3]; 366*9f758cafSpengcheng chen - Sun Microsystems - Beijing China /* then we have 84 bytes, somehow Windows reads 95?? */ 367*9f758cafSpengcheng chen - Sun Microsystems - Beijing China uint8_t Rest[11]; 368*9f758cafSpengcheng chen - Sun Microsystems - Beijing China }; 369*9f758cafSpengcheng chen - Sun Microsystems - Beijing China 370*9f758cafSpengcheng chen - Sun Microsystems - Beijing China /* The config structure of an Intersil radio */ 371*9f758cafSpengcheng chen - Sun Microsystems - Beijing China struct atu_intersil_conf { 372*9f758cafSpengcheng chen - Sun Microsystems - Beijing China uint8_t MACAddr[IEEE80211_ADDR_LEN]; 373*9f758cafSpengcheng chen - Sun Microsystems - Beijing China /* From the HFA3861B manual : */ 374*9f758cafSpengcheng chen - Sun Microsystems - Beijing China /* Manual TX power control (7bit : -64 to 63) */ 375*9f758cafSpengcheng chen - Sun Microsystems - Beijing China uint8_t CR31[14]; 376*9f758cafSpengcheng chen - Sun Microsystems - Beijing China /* TX power measurement */ 377*9f758cafSpengcheng chen - Sun Microsystems - Beijing China uint8_t CR58[14]; 378*9f758cafSpengcheng chen - Sun Microsystems - Beijing China uint8_t PidVid[4]; 379*9f758cafSpengcheng chen - Sun Microsystems - Beijing China uint8_t RegulatoryDomain; 380*9f758cafSpengcheng chen - Sun Microsystems - Beijing China uint8_t Reserved[1]; 381*9f758cafSpengcheng chen - Sun Microsystems - Beijing China }; 382*9f758cafSpengcheng chen - Sun Microsystems - Beijing China 383*9f758cafSpengcheng chen - Sun Microsystems - Beijing China struct atu_rx_hdr { 384*9f758cafSpengcheng chen - Sun Microsystems - Beijing China uint16_t length; 385*9f758cafSpengcheng chen - Sun Microsystems - Beijing China uint8_t rx_rate; 386*9f758cafSpengcheng chen - Sun Microsystems - Beijing China uint8_t newbss; 387*9f758cafSpengcheng chen - Sun Microsystems - Beijing China uint8_t fragmentation; 388*9f758cafSpengcheng chen - Sun Microsystems - Beijing China uint8_t rssi; 389*9f758cafSpengcheng chen - Sun Microsystems - Beijing China uint8_t link_quality; 390*9f758cafSpengcheng chen - Sun Microsystems - Beijing China uint8_t noise_level; 391*9f758cafSpengcheng chen - Sun Microsystems - Beijing China uint32_t rx_time; 392*9f758cafSpengcheng chen - Sun Microsystems - Beijing China }; 393*9f758cafSpengcheng chen - Sun Microsystems - Beijing China #define ATU_RX_HDRLEN sizeof (struct atu_rx_hdr) 394*9f758cafSpengcheng chen - Sun Microsystems - Beijing China 395*9f758cafSpengcheng chen - Sun Microsystems - Beijing China struct atu_tx_hdr { 396*9f758cafSpengcheng chen - Sun Microsystems - Beijing China uint16_t length; 397*9f758cafSpengcheng chen - Sun Microsystems - Beijing China uint8_t tx_rate; 398*9f758cafSpengcheng chen - Sun Microsystems - Beijing China uint8_t padding; 399*9f758cafSpengcheng chen - Sun Microsystems - Beijing China uint8_t reserved[4]; 400*9f758cafSpengcheng chen - Sun Microsystems - Beijing China }; 401*9f758cafSpengcheng chen - Sun Microsystems - Beijing China #define ATU_TX_HDRLEN sizeof (struct atu_tx_hdr) 402*9f758cafSpengcheng chen - Sun Microsystems - Beijing China #pragma pack() 403*9f758cafSpengcheng chen - Sun Microsystems - Beijing China 404*9f758cafSpengcheng chen - Sun Microsystems - Beijing China static struct atu_dev_type atu_dev_table[] = { 405*9f758cafSpengcheng chen - Sun Microsystems - Beijing China { 0x0506, 0x0a01, RadioRFMD, ATU_QUIRK_NONE }, 406*9f758cafSpengcheng chen - Sun Microsystems - Beijing China { 0x07b8, 0xb000, RadioRFMD, ATU_QUIRK_NONE }, 407*9f758cafSpengcheng chen - Sun Microsystems - Beijing China { 0x083a, 0x3501, AT76C503_RFMD_ACC, ATU_QUIRK_NONE }, 408*9f758cafSpengcheng chen - Sun Microsystems - Beijing China { 0x04a5, 0x9000, RadioIntersil, ATU_QUIRK_NONE }, 409*9f758cafSpengcheng chen - Sun Microsystems - Beijing China { 0x04a5, 0x9001, RadioRFMD, ATU_QUIRK_NONE }, 410*9f758cafSpengcheng chen - Sun Microsystems - Beijing China { 0x1668, 0x7605, RadioRFMD, ATU_QUIRK_NONE }, 411*9f758cafSpengcheng chen - Sun Microsystems - Beijing China { 0x05dd, 0xff31, RadioIntersil, ATU_QUIRK_NONE }, 412*9f758cafSpengcheng chen - Sun Microsystems - Beijing China { 0x12fd, 0x1001, RadioRFMD2958, ATU_QUIRK_NONE }, 413*9f758cafSpengcheng chen - Sun Microsystems - Beijing China { 0x069a, 0x0821, RadioIntersil, ATU_QUIRK_NONE }, 414*9f758cafSpengcheng chen - Sun Microsystems - Beijing China { 0x069a, 0x0320, RadioIntersil, ATU_QUIRK_NONE }, 415*9f758cafSpengcheng chen - Sun Microsystems - Beijing China { 0x069a, 0x0321, RadioRFMD, ATU_QUIRK_NONE }, 416*9f758cafSpengcheng chen - Sun Microsystems - Beijing China { 0x03eb, 0x7603, RadioIntersil, ATU_QUIRK_NONE }, 417*9f758cafSpengcheng chen - Sun Microsystems - Beijing China { 0x03eb, 0x7604, AT76C503_i3863, ATU_QUIRK_NONE }, 418*9f758cafSpengcheng chen - Sun Microsystems - Beijing China { 0x03eb, 0x7605, RadioRFMD, ATU_QUIRK_NONE }, 419*9f758cafSpengcheng chen - Sun Microsystems - Beijing China { 0x03eb, 0x7606, AT76C505_RFMD, ATU_QUIRK_NONE }, 420*9f758cafSpengcheng chen - Sun Microsystems - Beijing China { 0x03eb, 0x7613, RadioRFMD2958, ATU_QUIRK_NONE }, 421*9f758cafSpengcheng chen - Sun Microsystems - Beijing China { 0x03eb, 0x7614, RadioRFMD2958_SMC, 422*9f758cafSpengcheng chen - Sun Microsystems - Beijing China ATU_QUIRK_NO_REMAP | ATU_QUIRK_FW_DELAY }, 423*9f758cafSpengcheng chen - Sun Microsystems - Beijing China { 0x03eb, 0x7617, RadioRFMD2958_SMC, 424*9f758cafSpengcheng chen - Sun Microsystems - Beijing China ATU_QUIRK_NO_REMAP | ATU_QUIRK_FW_DELAY }, 425*9f758cafSpengcheng chen - Sun Microsystems - Beijing China { 0x03eb, 0x3301, RadioRFMD, ATU_QUIRK_NONE }, 426*9f758cafSpengcheng chen - Sun Microsystems - Beijing China { 0x050d, 0x0050, RadioRFMD, ATU_QUIRK_NONE }, 427*9f758cafSpengcheng chen - Sun Microsystems - Beijing China { 0x0d8e, 0x7100, RadioIntersil, ATU_QUIRK_NONE }, 428*9f758cafSpengcheng chen - Sun Microsystems - Beijing China { 0x0d8e, 0x7110, RadioIntersil, ATU_QUIRK_NONE }, 429*9f758cafSpengcheng chen - Sun Microsystems - Beijing China { 0x049f, 0x0032, RadioRFMD, ATU_QUIRK_NONE }, 430*9f758cafSpengcheng chen - Sun Microsystems - Beijing China { 0x07aa, 0x7613, RadioRFMD2958, ATU_QUIRK_NONE }, 431*9f758cafSpengcheng chen - Sun Microsystems - Beijing China { 0x1371, 0x0013, RadioRFMD2958, ATU_QUIRK_NONE }, 432*9f758cafSpengcheng chen - Sun Microsystems - Beijing China { 0x1371, 0x0002, RadioRFMD, ATU_QUIRK_NONE }, 433*9f758cafSpengcheng chen - Sun Microsystems - Beijing China { 0x1371, 0x0014, RadioRFMD2958, ATU_QUIRK_NONE }, 434*9f758cafSpengcheng chen - Sun Microsystems - Beijing China { 0x1371, 0x5743, RadioRFMD, ATU_QUIRK_NONE }, 435*9f758cafSpengcheng chen - Sun Microsystems - Beijing China { 0x2001, 0x3200, RadioRFMD, ATU_QUIRK_NONE }, 436*9f758cafSpengcheng chen - Sun Microsystems - Beijing China { 0x1044, 0x8003, RadioRFMD, ATU_QUIRK_NONE }, 437*9f758cafSpengcheng chen - Sun Microsystems - Beijing China { 0x1690, 0x0701, RadioRFMD2958_SMC, 438*9f758cafSpengcheng chen - Sun Microsystems - Beijing China ATU_QUIRK_NO_REMAP | ATU_QUIRK_FW_DELAY }, 439*9f758cafSpengcheng chen - Sun Microsystems - Beijing China { 0x03f0, 0x011c, RadioIntersil, ATU_QUIRK_NONE }, 440*9f758cafSpengcheng chen - Sun Microsystems - Beijing China { 0x8086, 0x0200, RadioIntersil, ATU_QUIRK_NONE }, 441*9f758cafSpengcheng chen - Sun Microsystems - Beijing China { 0x04bb, 0x0919, RadioIntersil, ATU_QUIRK_NONE }, 442*9f758cafSpengcheng chen - Sun Microsystems - Beijing China { 0x05dc, 0xa002, RadioRFMD, ATU_QUIRK_NONE }, 443*9f758cafSpengcheng chen - Sun Microsystems - Beijing China { 0x066b, 0x2211, RadioIntersil, ATU_QUIRK_NONE }, 444*9f758cafSpengcheng chen - Sun Microsystems - Beijing China { 0x077b, 0x2219, RadioRFMD, ATU_QUIRK_NONE }, 445*9f758cafSpengcheng chen - Sun Microsystems - Beijing China { 0x077b, 0x2219, RadioRFMD, ATU_QUIRK_NONE }, 446*9f758cafSpengcheng chen - Sun Microsystems - Beijing China { 0x1915, 0x2233, RadioRFMD2958, ATU_QUIRK_NONE }, 447*9f758cafSpengcheng chen - Sun Microsystems - Beijing China { 0x0db0, 0x1020, RadioRFMD2958, ATU_QUIRK_NONE }, 448*9f758cafSpengcheng chen - Sun Microsystems - Beijing China { 0x0864, 0x4100, RadioIntersil, ATU_QUIRK_NONE }, 449*9f758cafSpengcheng chen - Sun Microsystems - Beijing China { 0x0864, 0x4102, RadioRFMD, ATU_QUIRK_NONE }, 450*9f758cafSpengcheng chen - Sun Microsystems - Beijing China { 0x1557, 0x0002, RadioRFMD2958_SMC, 451*9f758cafSpengcheng chen - Sun Microsystems - Beijing China ATU_QUIRK_NO_REMAP | ATU_QUIRK_FW_DELAY }, 452*9f758cafSpengcheng chen - Sun Microsystems - Beijing China { 0x2019, 0x3220, RadioRFMD, ATU_QUIRK_NONE }, 453*9f758cafSpengcheng chen - Sun Microsystems - Beijing China { 0x055d, 0xa000, AT76C503_i3863, ATU_QUIRK_NONE }, 454*9f758cafSpengcheng chen - Sun Microsystems - Beijing China { 0x0681, 0x001b, RadioRFMD, ATU_QUIRK_NONE }, 455*9f758cafSpengcheng chen - Sun Microsystems - Beijing China { 0x0d5c, 0xa001, RadioIntersil, ATU_QUIRK_NONE }, 456*9f758cafSpengcheng chen - Sun Microsystems - Beijing China { 0x0d5c, 0xa002, AT76C503_RFMD_ACC, ATU_QUIRK_NONE }, 457*9f758cafSpengcheng chen - Sun Microsystems - Beijing China { 0x0b3b, 0x1612, RadioIntersil, ATU_QUIRK_NONE }, 458*9f758cafSpengcheng chen - Sun Microsystems - Beijing China { 0x0cde, 0x0001, RadioIntersil, ATU_QUIRK_NONE }, 459*9f758cafSpengcheng chen - Sun Microsystems - Beijing China }; 460*9f758cafSpengcheng chen - Sun Microsystems - Beijing China 461*9f758cafSpengcheng chen - Sun Microsystems - Beijing China static struct atu_firmware atu_fw_table[] = { 462*9f758cafSpengcheng chen - Sun Microsystems - Beijing China { 463*9f758cafSpengcheng chen - Sun Microsystems - Beijing China RadioRFMD, 464*9f758cafSpengcheng chen - Sun Microsystems - Beijing China atmel_fw_rfmd_int, 465*9f758cafSpengcheng chen - Sun Microsystems - Beijing China atmel_fw_rfmd_ext, 466*9f758cafSpengcheng chen - Sun Microsystems - Beijing China sizeof (atmel_fw_rfmd_int), 467*9f758cafSpengcheng chen - Sun Microsystems - Beijing China sizeof (atmel_fw_rfmd_ext), 468*9f758cafSpengcheng chen - Sun Microsystems - Beijing China 0 469*9f758cafSpengcheng chen - Sun Microsystems - Beijing China }, 470*9f758cafSpengcheng chen - Sun Microsystems - Beijing China { 471*9f758cafSpengcheng chen - Sun Microsystems - Beijing China RadioRFMD2958, 472*9f758cafSpengcheng chen - Sun Microsystems - Beijing China atmel_fw_rfmd2958_int, 473*9f758cafSpengcheng chen - Sun Microsystems - Beijing China atmel_fw_rfmd2958_ext, 474*9f758cafSpengcheng chen - Sun Microsystems - Beijing China sizeof (atmel_fw_rfmd2958_int), 475*9f758cafSpengcheng chen - Sun Microsystems - Beijing China sizeof (atmel_fw_rfmd2958_ext), 476*9f758cafSpengcheng chen - Sun Microsystems - Beijing China 81 477*9f758cafSpengcheng chen - Sun Microsystems - Beijing China }, 478*9f758cafSpengcheng chen - Sun Microsystems - Beijing China { 479*9f758cafSpengcheng chen - Sun Microsystems - Beijing China RadioRFMD2958_SMC, 480*9f758cafSpengcheng chen - Sun Microsystems - Beijing China atmel_fw_rfmd2958_smc_int, 481*9f758cafSpengcheng chen - Sun Microsystems - Beijing China atmel_fw_rfmd2958_smc_ext, 482*9f758cafSpengcheng chen - Sun Microsystems - Beijing China sizeof (atmel_fw_rfmd2958_smc_int), 483*9f758cafSpengcheng chen - Sun Microsystems - Beijing China sizeof (atmel_fw_rfmd2958_smc_ext), 484*9f758cafSpengcheng chen - Sun Microsystems - Beijing China 0 485*9f758cafSpengcheng chen - Sun Microsystems - Beijing China }, 486*9f758cafSpengcheng chen - Sun Microsystems - Beijing China { 487*9f758cafSpengcheng chen - Sun Microsystems - Beijing China RadioIntersil, 488*9f758cafSpengcheng chen - Sun Microsystems - Beijing China atmel_fw_intersil_int, 489*9f758cafSpengcheng chen - Sun Microsystems - Beijing China atmel_fw_intersil_ext, 490*9f758cafSpengcheng chen - Sun Microsystems - Beijing China sizeof (atmel_fw_intersil_int), 491*9f758cafSpengcheng chen - Sun Microsystems - Beijing China sizeof (atmel_fw_intersil_ext), 492*9f758cafSpengcheng chen - Sun Microsystems - Beijing China 0 493*9f758cafSpengcheng chen - Sun Microsystems - Beijing China }, 494*9f758cafSpengcheng chen - Sun Microsystems - Beijing China { 495*9f758cafSpengcheng chen - Sun Microsystems - Beijing China AT76C503_i3863, 496*9f758cafSpengcheng chen - Sun Microsystems - Beijing China atmel_at76c503_i3863_fw_int, 497*9f758cafSpengcheng chen - Sun Microsystems - Beijing China atmel_at76c503_i3863_fw_ext, 498*9f758cafSpengcheng chen - Sun Microsystems - Beijing China sizeof (atmel_at76c503_i3863_fw_int), 499*9f758cafSpengcheng chen - Sun Microsystems - Beijing China sizeof (atmel_at76c503_i3863_fw_ext), 500*9f758cafSpengcheng chen - Sun Microsystems - Beijing China 0 501*9f758cafSpengcheng chen - Sun Microsystems - Beijing China }, 502*9f758cafSpengcheng chen - Sun Microsystems - Beijing China { 503*9f758cafSpengcheng chen - Sun Microsystems - Beijing China AT76C503_RFMD_ACC, 504*9f758cafSpengcheng chen - Sun Microsystems - Beijing China atmel_at76c503_rfmd_acc_fw_int, 505*9f758cafSpengcheng chen - Sun Microsystems - Beijing China atmel_at76c503_rfmd_acc_fw_ext, 506*9f758cafSpengcheng chen - Sun Microsystems - Beijing China sizeof (atmel_at76c503_rfmd_acc_fw_int), 507*9f758cafSpengcheng chen - Sun Microsystems - Beijing China sizeof (atmel_at76c503_rfmd_acc_fw_ext), 508*9f758cafSpengcheng chen - Sun Microsystems - Beijing China 0 509*9f758cafSpengcheng chen - Sun Microsystems - Beijing China }, 510*9f758cafSpengcheng chen - Sun Microsystems - Beijing China { 511*9f758cafSpengcheng chen - Sun Microsystems - Beijing China AT76C505_RFMD, 512*9f758cafSpengcheng chen - Sun Microsystems - Beijing China atmel_at76c505_rfmd_fw_int, 513*9f758cafSpengcheng chen - Sun Microsystems - Beijing China atmel_at76c505_rfmd_fw_ext, 514*9f758cafSpengcheng chen - Sun Microsystems - Beijing China sizeof (atmel_at76c505_rfmd_fw_int), 515*9f758cafSpengcheng chen - Sun Microsystems - Beijing China sizeof (atmel_at76c505_rfmd_fw_ext), 516*9f758cafSpengcheng chen - Sun Microsystems - Beijing China 0 517*9f758cafSpengcheng chen - Sun Microsystems - Beijing China } 518*9f758cafSpengcheng chen - Sun Microsystems - Beijing China }; 519*9f758cafSpengcheng chen - Sun Microsystems - Beijing China 520*9f758cafSpengcheng chen - Sun Microsystems - Beijing China #ifdef __cplusplus 521*9f758cafSpengcheng chen - Sun Microsystems - Beijing China } 522*9f758cafSpengcheng chen - Sun Microsystems - Beijing China #endif 523*9f758cafSpengcheng chen - Sun Microsystems - Beijing China 524*9f758cafSpengcheng chen - Sun Microsystems - Beijing China #endif /* _ATU_H */ 525