[BACK]Return to if_zydreg.h CVS log [TXT][DIR] Up to [local] / sys / dev / usb

Annotation of sys/dev/usb/if_zydreg.h, Revision 1.1

1.1     ! nbrk        1: /*     $OpenBSD: if_zydreg.h,v 1.20 2007/06/06 19:25:49 mk Exp $       */
        !             2:
        !             3: /*-
        !             4:  * Copyright (c) 2006 by Damien Bergamini <damien.bergamini@free.fr>
        !             5:  * Copyright (c) 2006 by Florian Stoehr <ich@florian-stoehr.de>
        !             6:  *
        !             7:  * Permission to use, copy, modify, and distribute this software for any
        !             8:  * purpose with or without fee is hereby granted, provided that the above
        !             9:  * copyright notice and this permission notice appear in all copies.
        !            10:  *
        !            11:  * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
        !            12:  * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
        !            13:  * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
        !            14:  * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
        !            15:  * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
        !            16:  * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
        !            17:  * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
        !            18:  */
        !            19:
        !            20: /*
        !            21:  * ZyDAS ZD1211/ZD1211B USB WLAN driver.
        !            22:  */
        !            23:
        !            24: #define ZYD_CR_GPI_EN          0x9418
        !            25: #define ZYD_CR_RADIO_PD                0x942c
        !            26: #define ZYD_CR_RF2948_PD       0x942c
        !            27: #define ZYD_CR_EN_PS_MANUAL_AGC        0x943c
        !            28: #define ZYD_CR_CONFIG_PHILIPS  0x9440
        !            29: #define ZYD_CR_I2C_WRITE       0x9444
        !            30: #define ZYD_CR_SA2400_SER_RP   0x9448
        !            31: #define ZYD_CR_RADIO_PE                0x9458
        !            32: #define ZYD_CR_RST_BUS_MASTER  0x945c
        !            33: #define ZYD_CR_RFCFG           0x9464
        !            34: #define ZYD_CR_HSTSCHG         0x946c
        !            35: #define ZYD_CR_PHY_ON          0x9474
        !            36: #define ZYD_CR_RX_DELAY                0x9478
        !            37: #define ZYD_CR_RX_PE_DELAY     0x947c
        !            38: #define ZYD_CR_GPIO_1          0x9490
        !            39: #define ZYD_CR_GPIO_2          0x9494
        !            40: #define ZYD_CR_EnZYD_CRyBufMux 0x94a8
        !            41: #define ZYD_CR_PS_CTRL         0x9500
        !            42: #define ZYD_CR_ADDA_PWR_DWN    0x9504
        !            43: #define ZYD_CR_ADDA_MBIAS_WT   0x9508
        !            44: #define ZYD_CR_INTERRUPT       0x9510
        !            45: #define ZYD_CR_MAC_PS_STATE    0x950c
        !            46: #define ZYD_CR_ATIM_WND_PERIOD 0x951c
        !            47: #define ZYD_CR_BCN_INTERVAL    0x9520
        !            48: #define ZYD_CR_PRE_TBTT                0x9524
        !            49:
        !            50: /*
        !            51:  * MAC registers.
        !            52:  */
        !            53: #define ZYD_MAC_MACADRL                0x9610 /* MAC address (low) */
        !            54: #define ZYD_MAC_MACADRH                0x9614 /* MAC address (high) */
        !            55: #define ZYD_MAC_BSSADRL                0x9618 /* BSS address (low) */
        !            56: #define ZYD_MAC_BSSADRH                0x961c /* BSS address (high) */
        !            57: #define ZYD_MAC_BCNCFG         0x9620 /* BCN configuration */
        !            58: #define ZYD_MAC_GHTBL          0x9624 /* Group hash table (low) */
        !            59: #define ZYD_MAC_GHTBH          0x9628 /* Group hash table (high) */
        !            60: #define ZYD_MAC_RX_TIMEOUT     0x962c /* Rx timeout value */
        !            61: #define ZYD_MAC_BAS_RATE       0x9630 /* Basic rate setting */
        !            62: #define ZYD_MAC_MAN_RATE       0x9634 /* Mandatory rate setting */
        !            63: #define ZYD_MAC_RTSCTSRATE     0x9638 /* RTS CTS rate */
        !            64: #define ZYD_MAC_BACKOFF_PROTECT        0x963c /* Backoff protection */
        !            65: #define ZYD_MAC_RX_THRESHOLD   0x9640 /* Rx threshold */
        !            66: #define ZYD_MAC_TX_PE_CONTROL  0x9644 /* Tx_PE control */
        !            67: #define ZYD_MAC_AFTER_PNP      0x9648 /* After PnP */
        !            68: #define ZYD_MAC_RX_PE_DELAY    0x964c /* Rx_pe delay */
        !            69: #define ZYD_MAC_RX_ADDR2_L     0x9650 /* RX address2 (low)    */
        !            70: #define ZYD_MAC_RX_ADDR2_H     0x9654 /* RX address2 (high) */
        !            71: #define ZYD_MAC_SIFS_ACK_TIME  0x9658 /* Dynamic SIFS ack time */
        !            72: #define ZYD_MAC_PHY_DELAY      0x9660 /* PHY delay */
        !            73: #define ZYD_MAC_PHY_DELAY2     0x966c /* PHY delay */
        !            74: #define ZYD_MAC_BCNFIFO                0x9670 /* Beacon FIFO I/O port */
        !            75: #define ZYD_MAC_SNIFFER                0x9674 /* Sniffer on/off */
        !            76: #define ZYD_MAC_ENCRYPTION_TYPE 0x9678 /* Encryption type */
        !            77: #define ZYD_MAC_RETRY          0x967c /* Retry time */
        !            78: #define ZYD_MAC_MISC           0x9680 /* Misc */
        !            79: #define ZYD_MAC_STMACHINESTAT  0x9684 /* State machine status */
        !            80: #define ZYD_MAC_TX_UNDERRUN_CNT        0x9688 /* TX underrun counter */
        !            81: #define ZYD_MAC_RXFILTER       0x968c /* Send to host settings */
        !            82: #define ZYD_MAC_ACK_EXT                0x9690 /* Acknowledge extension */
        !            83: #define ZYD_MAC_BCNFIFOST      0x9694 /* BCN FIFO set and status */
        !            84: #define ZYD_MAC_DIFS_EIFS_SIFS 0x9698 /* DIFS, EIFS & SIFS settings */
        !            85: #define ZYD_MAC_RX_TIMEOUT_CNT 0x969c /* RX timeout count */
        !            86: #define ZYD_MAC_RX_TOTAL_FRAME 0x96a0 /* RX total frame count */
        !            87: #define ZYD_MAC_RX_CRC32_CNT   0x96a4 /* RX CRC32 frame count */
        !            88: #define ZYD_MAC_RX_CRC16_CNT   0x96a8 /* RX CRC16 frame count */
        !            89: #define ZYD_MAC_RX_UDEC                0x96ac /* RX unicast decr. error count */
        !            90: #define ZYD_MAC_RX_OVERRUN_CNT 0x96b0 /* RX FIFO overrun count */
        !            91: #define ZYD_MAC_RX_MDEC                0x96bc /* RX multicast decr. err. cnt. */
        !            92: #define ZYD_MAC_NAV_TCR                0x96c4 /* NAV timer count read */
        !            93: #define ZYD_MAC_BACKOFF_ST_RD  0x96c8 /* Backoff status read */
        !            94: #define ZYD_MAC_DM_RETRY_CNT_RD        0x96cc /* DM retry count read */
        !            95: #define ZYD_MAC_RX_ACR         0x96d0 /* RX arbitration count read    */
        !            96: #define ZYD_MAC_TX_CCR         0x96d4 /* Tx complete count read */
        !            97: #define ZYD_MAC_TCB_ADDR       0x96e8 /* Current PCI process TCP addr */
        !            98: #define ZYD_MAC_RCB_ADDR       0x96ec /* Next RCB address */
        !            99: #define ZYD_MAC_CONT_WIN_LIMIT 0x96f0 /* Contention window limit */
        !           100: #define ZYD_MAC_TX_PKT         0x96f4 /* Tx total packet count read */
        !           101: #define ZYD_MAC_DL_CTRL                0x96f8 /* Download control */
        !           102: #define ZYD_MACB_TXPWR_CTL1    0x9b00
        !           103: #define ZYD_MACB_TXPWR_CTL2    0x9b04
        !           104: #define ZYD_MACB_TXPWR_CTL3    0x9b08
        !           105: #define ZYD_MACB_TXPWR_CTL4    0x9b0c
        !           106: #define ZYD_MACB_AIFS_CTL1     0x9b10
        !           107: #define ZYD_MACB_AIFS_CTL2     0x9b14
        !           108: #define ZYD_MACB_TXOP          0x9b20
        !           109: #define ZYD_MACB_MAX_RETRY     0x9b28
        !           110:
        !           111: /*
        !           112:  * Miscellanous registers.
        !           113:  */
        !           114: #define ZYD_FIRMWARE_START_ADDR        0xee00
        !           115: #define ZYD_FIRMWARE_BASE_ADDR 0xee1d /* Firmware base address */
        !           116:
        !           117: /*
        !           118:  * EEPROM registers.
        !           119:  */
        !           120: #define ZYD_EEPROM_START_HEAD  0xf800 /* EEPROM start */
        !           121: #define ZYD_EEPROM_SUBID       0xf817
        !           122: #define ZYD_EEPROM_POD         0xf819
        !           123: #define ZYD_EEPROM_MAC_ADDR_P1 0xf81b /* Part 1 of the MAC address */
        !           124: #define ZYD_EEPROM_MAC_ADDR_P2 0xf81d /* Part 2 of the MAC address */
        !           125: #define ZYD_EEPROM_PWR_CAL     0xf81f /* Calibration */
        !           126: #define ZYD_EEPROM_PWR_INT     0xf827 /* Calibration */
        !           127: #define ZYD_EEPROM_ALLOWEDCHAN 0xf82f /* Allowed CH mask, 1 bit each */
        !           128: #define ZYD_EEPROM_PHY_REG     0xf831 /* PHY registers */
        !           129: #define ZYD_EEPROM_DEVICE_VER  0xf837 /* Device version */
        !           130: #define ZYD_EEPROM_36M_CAL     0xf83f /* Calibration */
        !           131: #define ZYD_EEPROM_11A_INT     0xf847 /* Interpolation */
        !           132: #define ZYD_EEPROM_48M_CAL     0xf84f /* Calibration */
        !           133: #define ZYD_EEPROM_48M_INT     0xf857 /* Interpolation */
        !           134: #define ZYD_EEPROM_54M_CAL     0xf85f /* Calibration */
        !           135: #define ZYD_EEPROM_54M_INT     0xf867 /* Interpolation */
        !           136:
        !           137: /*
        !           138:  * Firmware registers offsets (relative to fwbase).
        !           139:  */
        !           140: #define ZYD_FW_FIRMWARE_REV    0x0000 /* Firmware version */
        !           141: #define ZYD_FW_USB_SPEED       0x0001 /* USB speed (!=0 if highspeed) */
        !           142: #define ZYD_FW_FIX_TX_RATE     0x0002 /* Fixed TX rate */
        !           143: #define ZYD_FW_LINK_STATUS     0x0003
        !           144: #define ZYD_FW_SOFT_RESET      0x0004
        !           145: #define ZYD_FW_FLASH_CHK       0x0005
        !           146:
        !           147: /* possible flags for register ZYD_FW_LINK_STATUS */
        !           148: #define ZYD_LED1       (1 << 8)
        !           149: #define ZYD_LED2       (1 << 9)
        !           150:
        !           151: /*
        !           152:  * RF IDs.
        !           153:  */
        !           154: #define ZYD_RF_UW2451          0x2     /* not supported yet */
        !           155: #define ZYD_RF_UCHIP           0x3     /* not supported yet */
        !           156: #define ZYD_RF_AL2230          0x4
        !           157: #define ZYD_RF_AL7230B         0x5
        !           158: #define ZYD_RF_THETA           0x6     /* not supported yet */
        !           159: #define ZYD_RF_AL2210          0x7
        !           160: #define ZYD_RF_MAXIM_NEW       0x8
        !           161: #define ZYD_RF_GCT             0x9
        !           162: #define ZYD_RF_PV2000          0xa     /* not supported yet */
        !           163: #define ZYD_RF_RALINK          0xb     /* not supported yet */
        !           164: #define ZYD_RF_INTERSIL                0xc     /* not supported yet */
        !           165: #define ZYD_RF_RFMD            0xd
        !           166: #define ZYD_RF_MAXIM_NEW2      0xe
        !           167: #define ZYD_RF_PHILIPS         0xf     /* not supported yet */
        !           168:
        !           169: /*
        !           170:  * PHY registers (8 bits, not documented).
        !           171:  */
        !           172: #define ZYD_CR0                0x9000
        !           173: #define ZYD_CR1                0x9004
        !           174: #define ZYD_CR2                0x9008
        !           175: #define ZYD_CR3                0x900c
        !           176: #define ZYD_CR5                0x9010
        !           177: #define ZYD_CR6                0x9014
        !           178: #define ZYD_CR7                0x9018
        !           179: #define ZYD_CR8                0x901c
        !           180: #define ZYD_CR4                0x9020
        !           181: #define ZYD_CR9                0x9024
        !           182: #define ZYD_CR10       0x9028
        !           183: #define ZYD_CR11       0x902c
        !           184: #define ZYD_CR12       0x9030
        !           185: #define ZYD_CR13       0x9034
        !           186: #define ZYD_CR14       0x9038
        !           187: #define ZYD_CR15       0x903c
        !           188: #define ZYD_CR16       0x9040
        !           189: #define ZYD_CR17       0x9044
        !           190: #define ZYD_CR18       0x9048
        !           191: #define ZYD_CR19       0x904c
        !           192: #define ZYD_CR20       0x9050
        !           193: #define ZYD_CR21       0x9054
        !           194: #define ZYD_CR22       0x9058
        !           195: #define ZYD_CR23       0x905c
        !           196: #define ZYD_CR24       0x9060
        !           197: #define ZYD_CR25       0x9064
        !           198: #define ZYD_CR26       0x9068
        !           199: #define ZYD_CR27       0x906c
        !           200: #define ZYD_CR28       0x9070
        !           201: #define ZYD_CR29       0x9074
        !           202: #define ZYD_CR30       0x9078
        !           203: #define ZYD_CR31       0x907c
        !           204: #define ZYD_CR32       0x9080
        !           205: #define ZYD_CR33       0x9084
        !           206: #define ZYD_CR34       0x9088
        !           207: #define ZYD_CR35       0x908c
        !           208: #define ZYD_CR36       0x9090
        !           209: #define ZYD_CR37       0x9094
        !           210: #define ZYD_CR38       0x9098
        !           211: #define ZYD_CR39       0x909c
        !           212: #define ZYD_CR40       0x90a0
        !           213: #define ZYD_CR41       0x90a4
        !           214: #define ZYD_CR42       0x90a8
        !           215: #define ZYD_CR43       0x90ac
        !           216: #define ZYD_CR44       0x90b0
        !           217: #define ZYD_CR45       0x90b4
        !           218: #define ZYD_CR46       0x90b8
        !           219: #define ZYD_CR47       0x90bc
        !           220: #define ZYD_CR48       0x90c0
        !           221: #define ZYD_CR49       0x90c4
        !           222: #define ZYD_CR50       0x90c8
        !           223: #define ZYD_CR51       0x90cc
        !           224: #define ZYD_CR52       0x90d0
        !           225: #define ZYD_CR53       0x90d4
        !           226: #define ZYD_CR54       0x90d8
        !           227: #define ZYD_CR55       0x90dc
        !           228: #define ZYD_CR56       0x90e0
        !           229: #define ZYD_CR57       0x90e4
        !           230: #define ZYD_CR58       0x90e8
        !           231: #define ZYD_CR59       0x90ec
        !           232: #define ZYD_CR60       0x90f0
        !           233: #define ZYD_CR61       0x90f4
        !           234: #define ZYD_CR62       0x90f8
        !           235: #define ZYD_CR63       0x90fc
        !           236: #define ZYD_CR64       0x9100
        !           237: #define ZYD_CR65       0x9104
        !           238: #define ZYD_CR66       0x9108
        !           239: #define ZYD_CR67       0x910c
        !           240: #define ZYD_CR68       0x9110
        !           241: #define ZYD_CR69       0x9114
        !           242: #define ZYD_CR70       0x9118
        !           243: #define ZYD_CR71       0x911c
        !           244: #define ZYD_CR72       0x9120
        !           245: #define ZYD_CR73       0x9124
        !           246: #define ZYD_CR74       0x9128
        !           247: #define ZYD_CR75       0x912c
        !           248: #define ZYD_CR76       0x9130
        !           249: #define ZYD_CR77       0x9134
        !           250: #define ZYD_CR78       0x9138
        !           251: #define ZYD_CR79       0x913c
        !           252: #define ZYD_CR80       0x9140
        !           253: #define ZYD_CR81       0x9144
        !           254: #define ZYD_CR82       0x9148
        !           255: #define ZYD_CR83       0x914c
        !           256: #define ZYD_CR84       0x9150
        !           257: #define ZYD_CR85       0x9154
        !           258: #define ZYD_CR86       0x9158
        !           259: #define ZYD_CR87       0x915c
        !           260: #define ZYD_CR88       0x9160
        !           261: #define ZYD_CR89       0x9164
        !           262: #define ZYD_CR90       0x9168
        !           263: #define ZYD_CR91       0x916c
        !           264: #define ZYD_CR92       0x9170
        !           265: #define ZYD_CR93       0x9174
        !           266: #define ZYD_CR94       0x9178
        !           267: #define ZYD_CR95       0x917c
        !           268: #define ZYD_CR96       0x9180
        !           269: #define ZYD_CR97       0x9184
        !           270: #define ZYD_CR98       0x9188
        !           271: #define ZYD_CR99       0x918c
        !           272: #define ZYD_CR100      0x9190
        !           273: #define ZYD_CR101      0x9194
        !           274: #define ZYD_CR102      0x9198
        !           275: #define ZYD_CR103      0x919c
        !           276: #define ZYD_CR104      0x91a0
        !           277: #define ZYD_CR105      0x91a4
        !           278: #define ZYD_CR106      0x91a8
        !           279: #define ZYD_CR107      0x91ac
        !           280: #define ZYD_CR108      0x91b0
        !           281: #define ZYD_CR109      0x91b4
        !           282: #define ZYD_CR110      0x91b8
        !           283: #define ZYD_CR111      0x91bc
        !           284: #define ZYD_CR112      0x91c0
        !           285: #define ZYD_CR113      0x91c4
        !           286: #define ZYD_CR114      0x91c8
        !           287: #define ZYD_CR115      0x91cc
        !           288: #define ZYD_CR116      0x91d0
        !           289: #define ZYD_CR117      0x91d4
        !           290: #define ZYD_CR118      0x91d8
        !           291: #define ZYD_CR119      0x91dc
        !           292: #define ZYD_CR120      0x91e0
        !           293: #define ZYD_CR121      0x91e4
        !           294: #define ZYD_CR122      0x91e8
        !           295: #define ZYD_CR123      0x91ec
        !           296: #define ZYD_CR124      0x91f0
        !           297: #define ZYD_CR125      0x91f4
        !           298: #define ZYD_CR126      0x91f8
        !           299: #define ZYD_CR127      0x91fc
        !           300: #define ZYD_CR128      0x9200
        !           301: #define ZYD_CR129      0x9204
        !           302: #define ZYD_CR130      0x9208
        !           303: #define ZYD_CR131      0x920c
        !           304: #define ZYD_CR132      0x9210
        !           305: #define ZYD_CR133      0x9214
        !           306: #define ZYD_CR134      0x9218
        !           307: #define ZYD_CR135      0x921c
        !           308: #define ZYD_CR136      0x9220
        !           309: #define ZYD_CR137      0x9224
        !           310: #define ZYD_CR138      0x9228
        !           311: #define ZYD_CR139      0x922c
        !           312: #define ZYD_CR140      0x9230
        !           313: #define ZYD_CR141      0x9234
        !           314: #define ZYD_CR142      0x9238
        !           315: #define ZYD_CR143      0x923c
        !           316: #define ZYD_CR144      0x9240
        !           317: #define ZYD_CR145      0x9244
        !           318: #define ZYD_CR146      0x9248
        !           319: #define ZYD_CR147      0x924c
        !           320: #define ZYD_CR148      0x9250
        !           321: #define ZYD_CR149      0x9254
        !           322: #define ZYD_CR150      0x9258
        !           323: #define ZYD_CR151      0x925c
        !           324: #define ZYD_CR152      0x9260
        !           325: #define ZYD_CR153      0x9264
        !           326: #define ZYD_CR154      0x9268
        !           327: #define ZYD_CR155      0x926c
        !           328: #define ZYD_CR156      0x9270
        !           329: #define ZYD_CR157      0x9274
        !           330: #define ZYD_CR158      0x9278
        !           331: #define ZYD_CR159      0x927c
        !           332: #define ZYD_CR160      0x9280
        !           333: #define ZYD_CR161      0x9284
        !           334: #define ZYD_CR162      0x9288
        !           335: #define ZYD_CR163      0x928c
        !           336: #define ZYD_CR164      0x9290
        !           337: #define ZYD_CR165      0x9294
        !           338: #define ZYD_CR166      0x9298
        !           339: #define ZYD_CR167      0x929c
        !           340: #define ZYD_CR168      0x92a0
        !           341: #define ZYD_CR169      0x92a4
        !           342: #define ZYD_CR170      0x92a8
        !           343: #define ZYD_CR171      0x92ac
        !           344: #define ZYD_CR172      0x92b0
        !           345: #define ZYD_CR173      0x92b4
        !           346: #define ZYD_CR174      0x92b8
        !           347: #define ZYD_CR175      0x92bc
        !           348: #define ZYD_CR176      0x92c0
        !           349: #define ZYD_CR177      0x92c4
        !           350: #define ZYD_CR178      0x92c8
        !           351: #define ZYD_CR179      0x92cc
        !           352: #define ZYD_CR180      0x92d0
        !           353: #define ZYD_CR181      0x92d4
        !           354: #define ZYD_CR182      0x92d8
        !           355: #define ZYD_CR183      0x92dc
        !           356: #define ZYD_CR184      0x92e0
        !           357: #define ZYD_CR185      0x92e4
        !           358: #define ZYD_CR186      0x92e8
        !           359: #define ZYD_CR187      0x92ec
        !           360: #define ZYD_CR188      0x92f0
        !           361: #define ZYD_CR189      0x92f4
        !           362: #define ZYD_CR190      0x92f8
        !           363: #define ZYD_CR191      0x92fc
        !           364: #define ZYD_CR192      0x9300
        !           365: #define ZYD_CR193      0x9304
        !           366: #define ZYD_CR194      0x9308
        !           367: #define ZYD_CR195      0x930c
        !           368: #define ZYD_CR196      0x9310
        !           369: #define ZYD_CR197      0x9314
        !           370: #define ZYD_CR198      0x9318
        !           371: #define ZYD_CR199      0x931c
        !           372: #define ZYD_CR200      0x9320
        !           373: #define ZYD_CR201      0x9324
        !           374: #define ZYD_CR202      0x9328
        !           375: #define ZYD_CR203      0x932c
        !           376: #define ZYD_CR204      0x9330
        !           377: #define ZYD_CR205      0x9334
        !           378: #define ZYD_CR206      0x9338
        !           379: #define ZYD_CR207      0x933c
        !           380: #define ZYD_CR208      0x9340
        !           381: #define ZYD_CR209      0x9344
        !           382: #define ZYD_CR210      0x9348
        !           383: #define ZYD_CR211      0x934c
        !           384: #define ZYD_CR212      0x9350
        !           385: #define ZYD_CR213      0x9354
        !           386: #define ZYD_CR214      0x9358
        !           387: #define ZYD_CR215      0x935c
        !           388: #define ZYD_CR216      0x9360
        !           389: #define ZYD_CR217      0x9364
        !           390: #define ZYD_CR218      0x9368
        !           391: #define ZYD_CR219      0x936c
        !           392: #define ZYD_CR220      0x9370
        !           393: #define ZYD_CR221      0x9374
        !           394: #define ZYD_CR222      0x9378
        !           395: #define ZYD_CR223      0x937c
        !           396: #define ZYD_CR224      0x9380
        !           397: #define ZYD_CR225      0x9384
        !           398: #define ZYD_CR226      0x9388
        !           399: #define ZYD_CR227      0x938c
        !           400: #define ZYD_CR228      0x9390
        !           401: #define ZYD_CR229      0x9394
        !           402: #define ZYD_CR230      0x9398
        !           403: #define ZYD_CR231      0x939c
        !           404: #define ZYD_CR232      0x93a0
        !           405: #define ZYD_CR233      0x93a4
        !           406: #define ZYD_CR234      0x93a8
        !           407: #define ZYD_CR235      0x93ac
        !           408: #define ZYD_CR236      0x93b0
        !           409: #define ZYD_CR240      0x93c0
        !           410: #define ZYD_CR241      0x93c4
        !           411: #define ZYD_CR242      0x93c8
        !           412: #define ZYD_CR243      0x93cc
        !           413: #define ZYD_CR244      0x93d0
        !           414: #define ZYD_CR245      0x93d4
        !           415: #define ZYD_CR251      0x93ec
        !           416: #define ZYD_CR252      0x93f0
        !           417: #define ZYD_CR253      0x93f4
        !           418: #define ZYD_CR254      0x93f8
        !           419: #define ZYD_CR255      0x93fc
        !           420:
        !           421: /* copied nearly verbatim from the Linux driver rewrite */
        !           422: #define ZYD_DEF_PHY                                                    \
        !           423: {                                                                      \
        !           424:        { ZYD_CR0,   0x0a }, { ZYD_CR1,   0x06 }, { ZYD_CR2,   0x26 },  \
        !           425:        { ZYD_CR3,   0x38 }, { ZYD_CR4,   0x80 }, { ZYD_CR9,   0xa0 },  \
        !           426:        { ZYD_CR10,  0x81 }, { ZYD_CR11,  0x00 }, { ZYD_CR12,  0x7f },  \
        !           427:        { ZYD_CR13,  0x8c }, { ZYD_CR14,  0x80 }, { ZYD_CR15,  0x3d },  \
        !           428:        { ZYD_CR16,  0x20 }, { ZYD_CR17,  0x1e }, { ZYD_CR18,  0x0a },  \
        !           429:        { ZYD_CR19,  0x48 }, { ZYD_CR20,  0x0c }, { ZYD_CR21,  0x0c },  \
        !           430:        { ZYD_CR22,  0x23 }, { ZYD_CR23,  0x90 }, { ZYD_CR24,  0x14 },  \
        !           431:        { ZYD_CR25,  0x40 }, { ZYD_CR26,  0x10 }, { ZYD_CR27,  0x19 },  \
        !           432:        { ZYD_CR28,  0x7f }, { ZYD_CR29,  0x80 }, { ZYD_CR30,  0x4b },  \
        !           433:        { ZYD_CR31,  0x60 }, { ZYD_CR32,  0x43 }, { ZYD_CR33,  0x08 },  \
        !           434:        { ZYD_CR34,  0x06 }, { ZYD_CR35,  0x0a }, { ZYD_CR36,  0x00 },  \
        !           435:        { ZYD_CR37,  0x00 }, { ZYD_CR38,  0x38 }, { ZYD_CR39,  0x0c },  \
        !           436:        { ZYD_CR40,  0x84 }, { ZYD_CR41,  0x2a }, { ZYD_CR42,  0x80 },  \
        !           437:        { ZYD_CR43,  0x10 }, { ZYD_CR44,  0x12 }, { ZYD_CR46,  0xff },  \
        !           438:        { ZYD_CR47,  0x08 }, { ZYD_CR48,  0x26 }, { ZYD_CR49,  0x5b },  \
        !           439:        { ZYD_CR64,  0xd0 }, { ZYD_CR65,  0x04 }, { ZYD_CR66,  0x58 },  \
        !           440:        { ZYD_CR67,  0xc9 }, { ZYD_CR68,  0x88 }, { ZYD_CR69,  0x41 },  \
        !           441:        { ZYD_CR70,  0x23 }, { ZYD_CR71,  0x10 }, { ZYD_CR72,  0xff },  \
        !           442:        { ZYD_CR73,  0x32 }, { ZYD_CR74,  0x30 }, { ZYD_CR75,  0x65 },  \
        !           443:        { ZYD_CR76,  0x41 }, { ZYD_CR77,  0x1b }, { ZYD_CR78,  0x30 },  \
        !           444:        { ZYD_CR79,  0x68 }, { ZYD_CR80,  0x64 }, { ZYD_CR81,  0x64 },  \
        !           445:        { ZYD_CR82,  0x00 }, { ZYD_CR83,  0x00 }, { ZYD_CR84,  0x00 },  \
        !           446:        { ZYD_CR85,  0x02 }, { ZYD_CR86,  0x00 }, { ZYD_CR87,  0x00 },  \
        !           447:        { ZYD_CR88,  0xff }, { ZYD_CR89,  0xfc }, { ZYD_CR90,  0x00 },  \
        !           448:        { ZYD_CR91,  0x00 }, { ZYD_CR92,  0x00 }, { ZYD_CR93,  0x08 },  \
        !           449:        { ZYD_CR94,  0x00 }, { ZYD_CR95,  0x00 }, { ZYD_CR96,  0xff },  \
        !           450:        { ZYD_CR97,  0xe7 }, { ZYD_CR98,  0x00 }, { ZYD_CR99,  0x00 },  \
        !           451:        { ZYD_CR100, 0x00 }, { ZYD_CR101, 0xae }, { ZYD_CR102, 0x02 },  \
        !           452:        { ZYD_CR103, 0x00 }, { ZYD_CR104, 0x03 }, { ZYD_CR105, 0x65 },  \
        !           453:        { ZYD_CR106, 0x04 }, { ZYD_CR107, 0x00 }, { ZYD_CR108, 0x0a },  \
        !           454:        { ZYD_CR109, 0xaa }, { ZYD_CR110, 0xaa }, { ZYD_CR111, 0x25 },  \
        !           455:        { ZYD_CR112, 0x25 }, { ZYD_CR113, 0x00 }, { ZYD_CR119, 0x1e },  \
        !           456:        { ZYD_CR125, 0x90 }, { ZYD_CR126, 0x00 }, { ZYD_CR127, 0x00 },  \
        !           457:        { ZYD_CR5,   0x00 }, { ZYD_CR6,   0x00 }, { ZYD_CR7,   0x00 },  \
        !           458:        { ZYD_CR8,   0x00 }, { ZYD_CR9,   0x20 }, { ZYD_CR12,  0xf0 },  \
        !           459:        { ZYD_CR20,  0x0e }, { ZYD_CR21,  0x0e }, { ZYD_CR27,  0x10 },  \
        !           460:        { ZYD_CR44,  0x33 }, { ZYD_CR47,  0x30 }, { ZYD_CR83,  0x24 },  \
        !           461:        { ZYD_CR84,  0x04 }, { ZYD_CR85,  0x00 }, { ZYD_CR86,  0x0C },  \
        !           462:        { ZYD_CR87,  0x12 }, { ZYD_CR88,  0x0C }, { ZYD_CR89,  0x00 },  \
        !           463:        { ZYD_CR90,  0x10 }, { ZYD_CR91,  0x08 }, { ZYD_CR93,  0x00 },  \
        !           464:        { ZYD_CR94,  0x01 }, { ZYD_CR95,  0x00 }, { ZYD_CR96,  0x50 },  \
        !           465:        { ZYD_CR97,  0x37 }, { ZYD_CR98,  0x35 }, { ZYD_CR101, 0x13 },  \
        !           466:        { ZYD_CR102, 0x27 }, { ZYD_CR103, 0x27 }, { ZYD_CR104, 0x18 },  \
        !           467:        { ZYD_CR105, 0x12 }, { ZYD_CR109, 0x27 }, { ZYD_CR110, 0x27 },  \
        !           468:        { ZYD_CR111, 0x27 }, { ZYD_CR112, 0x27 }, { ZYD_CR113, 0x27 },  \
        !           469:        { ZYD_CR114, 0x27 }, { ZYD_CR115, 0x26 }, { ZYD_CR116, 0x24 },  \
        !           470:        { ZYD_CR117, 0xfc }, { ZYD_CR118, 0xfa }, { ZYD_CR120, 0x4f },  \
        !           471:        { ZYD_CR123, 0x27 }, { ZYD_CR125, 0xaa }, { ZYD_CR127, 0x03 },  \
        !           472:        { ZYD_CR128, 0x14 }, { ZYD_CR129, 0x12 }, { ZYD_CR130, 0x10 },  \
        !           473:        { ZYD_CR131, 0x0C }, { ZYD_CR136, 0xdf }, { ZYD_CR137, 0x40 },  \
        !           474:        { ZYD_CR138, 0xa0 }, { ZYD_CR139, 0xb0 }, { ZYD_CR140, 0x99 },  \
        !           475:        { ZYD_CR141, 0x82 }, { ZYD_CR142, 0x54 }, { ZYD_CR143, 0x1c },  \
        !           476:        { ZYD_CR144, 0x6c }, { ZYD_CR147, 0x07 }, { ZYD_CR148, 0x4c },  \
        !           477:        { ZYD_CR149, 0x50 }, { ZYD_CR150, 0x0e }, { ZYD_CR151, 0x18 },  \
        !           478:        { ZYD_CR160, 0xfe }, { ZYD_CR161, 0xee }, { ZYD_CR162, 0xaa },  \
        !           479:        { ZYD_CR163, 0xfa }, { ZYD_CR164, 0xfa }, { ZYD_CR165, 0xea },  \
        !           480:        { ZYD_CR166, 0xbe }, { ZYD_CR167, 0xbe }, { ZYD_CR168, 0x6a },  \
        !           481:        { ZYD_CR169, 0xba }, { ZYD_CR170, 0xba }, { ZYD_CR171, 0xba },  \
        !           482:        { ZYD_CR204, 0x7d }, { ZYD_CR203, 0x30 },                       \
        !           483:        { 0, 0 }                                                        \
        !           484: }
        !           485:
        !           486: #define ZYD_DEF_PHYB                                                   \
        !           487: {                                                                      \
        !           488:        { ZYD_CR0,   0x14 }, { ZYD_CR1,   0x06 }, { ZYD_CR2,   0x26 },  \
        !           489:        { ZYD_CR3,   0x38 }, { ZYD_CR4,   0x80 }, { ZYD_CR9,   0xe0 },  \
        !           490:        { ZYD_CR10,  0x81 }, { ZYD_CR11,  0x00 }, { ZYD_CR12,  0xf0 },  \
        !           491:        { ZYD_CR13,  0x8c }, { ZYD_CR14,  0x80 }, { ZYD_CR15,  0x3d },  \
        !           492:        { ZYD_CR16,  0x20 }, { ZYD_CR17,  0x1e }, { ZYD_CR18,  0x0a },  \
        !           493:        { ZYD_CR19,  0x48 }, { ZYD_CR20,  0x10 }, { ZYD_CR21,  0x0e },  \
        !           494:        { ZYD_CR22,  0x23 }, { ZYD_CR23,  0x90 }, { ZYD_CR24,  0x14 },  \
        !           495:        { ZYD_CR25,  0x40 }, { ZYD_CR26,  0x10 }, { ZYD_CR27,  0x10 },  \
        !           496:        { ZYD_CR28,  0x7f }, { ZYD_CR29,  0x80 }, { ZYD_CR30,  0x4b },  \
        !           497:        { ZYD_CR31,  0x60 }, { ZYD_CR32,  0x43 }, { ZYD_CR33,  0x08 },  \
        !           498:        { ZYD_CR34,  0x06 }, { ZYD_CR35,  0x0a }, { ZYD_CR36,  0x00 },  \
        !           499:        { ZYD_CR37,  0x00 }, { ZYD_CR38,  0x38 }, { ZYD_CR39,  0x0c },  \
        !           500:        { ZYD_CR40,  0x84 }, { ZYD_CR41,  0x2a }, { ZYD_CR42,  0x80 },  \
        !           501:        { ZYD_CR43,  0x10 }, { ZYD_CR44,  0x33 }, { ZYD_CR46,  0xff },  \
        !           502:        { ZYD_CR47,  0x1E }, { ZYD_CR48,  0x26 }, { ZYD_CR49,  0x5b },  \
        !           503:        { ZYD_CR64,  0xd0 }, { ZYD_CR65,  0x04 }, { ZYD_CR66,  0x58 },  \
        !           504:        { ZYD_CR67,  0xc9 }, { ZYD_CR68,  0x88 }, { ZYD_CR69,  0x41 },  \
        !           505:        { ZYD_CR70,  0x23 }, { ZYD_CR71,  0x10 }, { ZYD_CR72,  0xff },  \
        !           506:        { ZYD_CR73,  0x32 }, { ZYD_CR74,  0x30 }, { ZYD_CR75,  0x65 },  \
        !           507:        { ZYD_CR76,  0x41 }, { ZYD_CR77,  0x1b }, { ZYD_CR78,  0x30 },  \
        !           508:        { ZYD_CR79,  0xf0 }, { ZYD_CR80,  0x64 }, { ZYD_CR81,  0x64 },  \
        !           509:        { ZYD_CR82,  0x00 }, { ZYD_CR83,  0x24 }, { ZYD_CR84,  0x04 },  \
        !           510:        { ZYD_CR85,  0x00 }, { ZYD_CR86,  0x0c }, { ZYD_CR87,  0x12 },  \
        !           511:        { ZYD_CR88,  0x0c }, { ZYD_CR89,  0x00 }, { ZYD_CR90,  0x58 },  \
        !           512:        { ZYD_CR91,  0x04 }, { ZYD_CR92,  0x00 }, { ZYD_CR93,  0x00 },  \
        !           513:        { ZYD_CR94,  0x01 }, { ZYD_CR95,  0x20 }, { ZYD_CR96,  0x50 },  \
        !           514:        { ZYD_CR97,  0x37 }, { ZYD_CR98,  0x35 }, { ZYD_CR99,  0x00 },  \
        !           515:        { ZYD_CR100, 0x01 }, { ZYD_CR101, 0x13 }, { ZYD_CR102, 0x27 },  \
        !           516:        { ZYD_CR103, 0x27 }, { ZYD_CR104, 0x18 }, { ZYD_CR105, 0x12 },  \
        !           517:        { ZYD_CR106, 0x04 }, { ZYD_CR107, 0x00 }, { ZYD_CR108, 0x0a },  \
        !           518:        { ZYD_CR109, 0x27 }, { ZYD_CR110, 0x27 }, { ZYD_CR111, 0x27 },  \
        !           519:        { ZYD_CR112, 0x27 }, { ZYD_CR113, 0x27 }, { ZYD_CR114, 0x27 },  \
        !           520:        { ZYD_CR115, 0x26 }, { ZYD_CR116, 0x24 }, { ZYD_CR117, 0xfc },  \
        !           521:        { ZYD_CR118, 0xfa }, { ZYD_CR119, 0x1e }, { ZYD_CR125, 0x90 },  \
        !           522:        { ZYD_CR126, 0x00 }, { ZYD_CR127, 0x00 }, { ZYD_CR128, 0x14 },  \
        !           523:        { ZYD_CR129, 0x12 }, { ZYD_CR130, 0x10 }, { ZYD_CR131, 0x0c },  \
        !           524:        { ZYD_CR136, 0xdf }, { ZYD_CR137, 0xa0 }, { ZYD_CR138, 0xa8 },  \
        !           525:        { ZYD_CR139, 0xb4 }, { ZYD_CR140, 0x98 }, { ZYD_CR141, 0x82 },  \
        !           526:        { ZYD_CR142, 0x53 }, { ZYD_CR143, 0x1c }, { ZYD_CR144, 0x6c },  \
        !           527:        { ZYD_CR147, 0x07 }, { ZYD_CR148, 0x40 }, { ZYD_CR149, 0x40 },  \
        !           528:        { ZYD_CR150, 0x14 }, { ZYD_CR151, 0x18 }, { ZYD_CR159, 0x70 },  \
        !           529:        { ZYD_CR160, 0xfe }, { ZYD_CR161, 0xee }, { ZYD_CR162, 0xaa },  \
        !           530:        { ZYD_CR163, 0xfa }, { ZYD_CR164, 0xfa }, { ZYD_CR165, 0xea },  \
        !           531:        { ZYD_CR166, 0xbe }, { ZYD_CR167, 0xbe }, { ZYD_CR168, 0x6a },  \
        !           532:        { ZYD_CR169, 0xba }, { ZYD_CR170, 0xba }, { ZYD_CR171, 0xba },  \
        !           533:        { ZYD_CR204, 0x7d }, { ZYD_CR203, 0x30 },                       \
        !           534:        { 0, 0 }                                                        \
        !           535: }
        !           536:
        !           537: #define ZYD_RFMD_PHY                                                   \
        !           538: {                                                                      \
        !           539:        { ZYD_CR2,   0x1e }, { ZYD_CR9,   0x20 }, { ZYD_CR10,  0x89 },  \
        !           540:        { ZYD_CR11,  0x00 }, { ZYD_CR15,  0xd0 }, { ZYD_CR17,  0x68 },  \
        !           541:        { ZYD_CR19,  0x4a }, { ZYD_CR20,  0x0c }, { ZYD_CR21,  0x0e },  \
        !           542:        { ZYD_CR23,  0x48 }, { ZYD_CR24,  0x14 }, { ZYD_CR26,  0x90 },  \
        !           543:        { ZYD_CR27,  0x30 }, { ZYD_CR29,  0x20 }, { ZYD_CR31,  0xb2 },  \
        !           544:        { ZYD_CR32,  0x43 }, { ZYD_CR33,  0x28 }, { ZYD_CR38,  0x30 },  \
        !           545:        { ZYD_CR34,  0x0f }, { ZYD_CR35,  0xf0 }, { ZYD_CR41,  0x2a },  \
        !           546:        { ZYD_CR46,  0x7f }, { ZYD_CR47,  0x1e }, { ZYD_CR51,  0xc5 },  \
        !           547:        { ZYD_CR52,  0xc5 }, { ZYD_CR53,  0xc5 }, { ZYD_CR79,  0x58 },  \
        !           548:        { ZYD_CR80,  0x30 }, { ZYD_CR81,  0x30 }, { ZYD_CR82,  0x00 },  \
        !           549:        { ZYD_CR83,  0x24 }, { ZYD_CR84,  0x04 }, { ZYD_CR85,  0x00 },  \
        !           550:        { ZYD_CR86,  0x10 }, { ZYD_CR87,  0x2a }, { ZYD_CR88,  0x10 },  \
        !           551:        { ZYD_CR89,  0x24 }, { ZYD_CR90,  0x18 }, { ZYD_CR91,  0x00 },  \
        !           552:        { ZYD_CR92,  0x0a }, { ZYD_CR93,  0x00 }, { ZYD_CR94,  0x01 },  \
        !           553:        { ZYD_CR95,  0x00 }, { ZYD_CR96,  0x40 }, { ZYD_CR97,  0x37 },  \
        !           554:        { ZYD_CR98,  0x05 }, { ZYD_CR99,  0x28 }, { ZYD_CR100, 0x00 },  \
        !           555:        { ZYD_CR101, 0x13 }, { ZYD_CR102, 0x27 }, { ZYD_CR103, 0x27 },  \
        !           556:        { ZYD_CR104, 0x18 }, { ZYD_CR105, 0x12 }, { ZYD_CR106, 0x1a },  \
        !           557:        { ZYD_CR107, 0x24 }, { ZYD_CR108, 0x0a }, { ZYD_CR109, 0x13 },  \
        !           558:        { ZYD_CR110, 0x2f }, { ZYD_CR111, 0x27 }, { ZYD_CR112, 0x27 },  \
        !           559:        { ZYD_CR113, 0x27 }, { ZYD_CR114, 0x27 }, { ZYD_CR115, 0x40 },  \
        !           560:        { ZYD_CR116, 0x40 }, { ZYD_CR117, 0xf0 }, { ZYD_CR118, 0xf0 },  \
        !           561:        { ZYD_CR119, 0x16 }, { ZYD_CR122, 0x00 }, { ZYD_CR127, 0x03 },  \
        !           562:        { ZYD_CR131, 0x08 }, { ZYD_CR138, 0x28 }, { ZYD_CR148, 0x44 },  \
        !           563:        { ZYD_CR150, 0x10 }, { ZYD_CR169, 0xbb }, { ZYD_CR170, 0xbb }   \
        !           564: }
        !           565:
        !           566: #define ZYD_RFMD_RF                                                    \
        !           567: {                                                                      \
        !           568:        0x000007, 0x07dd43, 0x080959, 0x0e6666, 0x116a57, 0x17dd43,     \
        !           569:        0x1819f9, 0x1e6666, 0x214554, 0x25e7fa, 0x27fffa, 0x294128,     \
        !           570:        0x2c0000, 0x300000, 0x340000, 0x381e0f, 0x6c180f                \
        !           571: }
        !           572:
        !           573: #define ZYD_RFMD_CHANTABLE     \
        !           574: {                              \
        !           575:        { 0x181979, 0x1e6666 }, \
        !           576:        { 0x181989, 0x1e6666 }, \
        !           577:        { 0x181999, 0x1e6666 }, \
        !           578:        { 0x1819a9, 0x1e6666 }, \
        !           579:        { 0x1819b9, 0x1e6666 }, \
        !           580:        { 0x1819c9, 0x1e6666 }, \
        !           581:        { 0x1819d9, 0x1e6666 }, \
        !           582:        { 0x1819e9, 0x1e6666 }, \
        !           583:        { 0x1819f9, 0x1e6666 }, \
        !           584:        { 0x181a09, 0x1e6666 }, \
        !           585:        { 0x181a19, 0x1e6666 }, \
        !           586:        { 0x181a29, 0x1e6666 }, \
        !           587:        { 0x181a39, 0x1e6666 }, \
        !           588:        { 0x181a60, 0x1c0000 }  \
        !           589: }
        !           590:
        !           591:
        !           592:
        !           593: #define ZYD_AL2230_PHY                                                 \
        !           594: {                                                                      \
        !           595:        { ZYD_CR15,  0x20 }, { ZYD_CR23,  0x40 }, { ZYD_CR24,  0x20 },  \
        !           596:        { ZYD_CR26,  0x11 }, { ZYD_CR28,  0x3e }, { ZYD_CR29,  0x00 },  \
        !           597:        { ZYD_CR44,  0x33 }, { ZYD_CR106, 0x2a }, { ZYD_CR107, 0x1a },  \
        !           598:        { ZYD_CR109, 0x09 }, { ZYD_CR110, 0x27 }, { ZYD_CR111, 0x2b },  \
        !           599:        { ZYD_CR112, 0x2b }, { ZYD_CR119, 0x0a }, { ZYD_CR10,  0x89 },  \
        !           600:        { ZYD_CR17,  0x28 }, { ZYD_CR26,  0x93 }, { ZYD_CR34,  0x30 },  \
        !           601:        { ZYD_CR35,  0x3e }, { ZYD_CR41,  0x24 }, { ZYD_CR44,  0x32 },  \
        !           602:        { ZYD_CR46,  0x96 }, { ZYD_CR47,  0x1e }, { ZYD_CR79,  0x58 },  \
        !           603:        { ZYD_CR80,  0x30 }, { ZYD_CR81,  0x30 }, { ZYD_CR87,  0x0a },  \
        !           604:        { ZYD_CR89,  0x04 }, { ZYD_CR92,  0x0a }, { ZYD_CR99,  0x28 },  \
        !           605:        { ZYD_CR100, 0x00 }, { ZYD_CR101, 0x13 }, { ZYD_CR102, 0x27 },  \
        !           606:        { ZYD_CR106, 0x24 }, { ZYD_CR107, 0x2a }, { ZYD_CR109, 0x09 },  \
        !           607:        { ZYD_CR110, 0x13 }, { ZYD_CR111, 0x1f }, { ZYD_CR112, 0x1f },  \
        !           608:        { ZYD_CR113, 0x27 }, { ZYD_CR114, 0x27 }, { ZYD_CR115, 0x24 },  \
        !           609:        { ZYD_CR116, 0x24 }, { ZYD_CR117, 0xf4 }, { ZYD_CR118, 0xfc },  \
        !           610:        { ZYD_CR119, 0x10 }, { ZYD_CR120, 0x4f }, { ZYD_CR121, 0x77 },  \
        !           611:        { ZYD_CR122, 0xe0 }, { ZYD_CR137, 0x88 }, { ZYD_CR252, 0xff },  \
        !           612:        { ZYD_CR253, 0xff }, { ZYD_CR251, 0x2f }, { ZYD_CR251, 0x3f },  \
        !           613:        { ZYD_CR138, 0x28 }, { ZYD_CR203, 0x06 }                        \
        !           614: }
        !           615:
        !           616: #define ZYD_AL2230_PHY_B                                               \
        !           617: {                                                                      \
        !           618:        { ZYD_CR10,  0x89 }, { ZYD_CR15,  0x20 }, { ZYD_CR17,  0x2b },  \
        !           619:        { ZYD_CR23,  0x40 }, { ZYD_CR24,  0x20 }, { ZYD_CR26,  0x93 },  \
        !           620:        { ZYD_CR28,  0x3e }, { ZYD_CR29,  0x00 }, { ZYD_CR33,  0x28 },  \
        !           621:        { ZYD_CR34,  0x30 }, { ZYD_CR35,  0x3e }, { ZYD_CR41,  0x24 },  \
        !           622:        { ZYD_CR44,  0x32 }, { ZYD_CR46,  0x99 }, { ZYD_CR47,  0x1e },  \
        !           623:        { ZYD_CR48,  0x00 }, { ZYD_CR49,  0x00 }, { ZYD_CR51,  0x01 },  \
        !           624:        { ZYD_CR52,  0x80 }, { ZYD_CR53,  0x7e }, { ZYD_CR65,  0x00 },  \
        !           625:        { ZYD_CR66,  0x00 }, { ZYD_CR67,  0x00 }, { ZYD_CR68,  0x00 },  \
        !           626:        { ZYD_CR69,  0x28 }, { ZYD_CR79,  0x58 }, { ZYD_CR80,  0x30 },  \
        !           627:        { ZYD_CR81,  0x30 }, { ZYD_CR87,  0x0a }, { ZYD_CR89,  0x04 },  \
        !           628:        { ZYD_CR91,  0x00 }, { ZYD_CR92,  0x0a }, { ZYD_CR98,  0x8d },  \
        !           629:        { ZYD_CR99,  0x00 }, { ZYD_CR101, 0x13 }, { ZYD_CR106, 0x24 },  \
        !           630:        { ZYD_CR107, 0x2a }, { ZYD_CR109, 0x13 }, { ZYD_CR110, 0x1f },  \
        !           631:        { ZYD_CR111, 0x1f }, { ZYD_CR114, 0x27 }, { ZYD_CR115, 0x26 },  \
        !           632:        { ZYD_CR116, 0x24 }, { ZYD_CR117, 0xfa }, { ZYD_CR118, 0xfa },  \
        !           633:        { ZYD_CR119, 0x10 }, { ZYD_CR120, 0x4f }, { ZYD_CR121, 0x6c },  \
        !           634:        { ZYD_CR122, 0xfc }, { ZYD_CR123, 0x57 }, { ZYD_CR125, 0xad },  \
        !           635:        { ZYD_CR126, 0x6c }, { ZYD_CR127, 0x03 }, { ZYD_CR137, 0x50 },  \
        !           636:        { ZYD_CR138, 0xa8 }, { ZYD_CR144, 0xac }, { ZYD_CR150, 0x0d },  \
        !           637:        { ZYD_CR252, 0x00 }, { ZYD_CR253, 0x00 }                        \
        !           638: }
        !           639:
        !           640: #define ZYD_AL2230_RF                                                  \
        !           641: {                                                                      \
        !           642:        0x03f790, 0x033331, 0x00000d, 0x0b3331, 0x03b812, 0x00fff3,     \
        !           643:        0x000da4, 0x0f4dc5, 0x0805b6, 0x011687, 0x000688, 0x0403b9,     \
        !           644:        0x00dbba, 0x00099b, 0x0bdffc, 0x00000d, 0x00500f, 0x00d00f,     \
        !           645:        0x004c0f, 0x00540f, 0x00700f, 0x00500f                          \
        !           646: }
        !           647:
        !           648: #define ZYD_AL2230_RF_B                                                        \
        !           649: {                                                                      \
        !           650:        0x03f790, 0x033331, 0x00000d, 0x0b3331, 0x03b812, 0x00fff3,     \
        !           651:        0x0005a4, 0x0f4dc5, 0x0805b6, 0x0146c7, 0x000688, 0x0403b9,     \
        !           652:        0x00dbba, 0x00099b, 0x0bdffc, 0x00000d, 0x00580f                \
        !           653: }
        !           654:
        !           655: #define ZYD_AL2230_CHANTABLE                   \
        !           656: {                                              \
        !           657:        { 0x03f790, 0x033331, 0x00000d },       \
        !           658:        { 0x03f790, 0x0b3331, 0x00000d },       \
        !           659:        { 0x03e790, 0x033331, 0x00000d },       \
        !           660:        { 0x03e790, 0x0b3331, 0x00000d },       \
        !           661:        { 0x03f7a0, 0x033331, 0x00000d },       \
        !           662:        { 0x03f7a0, 0x0b3331, 0x00000d },       \
        !           663:        { 0x03e7a0, 0x033331, 0x00000d },       \
        !           664:        { 0x03e7a0, 0x0b3331, 0x00000d },       \
        !           665:        { 0x03f7b0, 0x033331, 0x00000d },       \
        !           666:        { 0x03f7b0, 0x0b3331, 0x00000d },       \
        !           667:        { 0x03e7b0, 0x033331, 0x00000d },       \
        !           668:        { 0x03e7b0, 0x0b3331, 0x00000d },       \
        !           669:        { 0x03f7c0, 0x033331, 0x00000d },       \
        !           670:        { 0x03e7c0, 0x066661, 0x00000d }        \
        !           671: }
        !           672:
        !           673:
        !           674:
        !           675: #define ZYD_AL7230B_PHY_1                                                      \
        !           676: {                                                                      \
        !           677:        { ZYD_CR240, 0x57 }, { ZYD_CR15,  0x20 }, { ZYD_CR23,  0x40 },  \
        !           678:        { ZYD_CR24,  0x20 }, { ZYD_CR26,  0x11 }, { ZYD_CR28,  0x3e },  \
        !           679:        { ZYD_CR29,  0x00 }, { ZYD_CR44,  0x33 }, { ZYD_CR106, 0x22 },  \
        !           680:        { ZYD_CR107, 0x1a }, { ZYD_CR109, 0x09 }, { ZYD_CR110, 0x27 },  \
        !           681:        { ZYD_CR111, 0x2b }, { ZYD_CR112, 0x2b }, { ZYD_CR119, 0x0a },  \
        !           682:        { ZYD_CR122, 0xfc }, { ZYD_CR10,  0x89 }, { ZYD_CR17,  0x28 },  \
        !           683:        { ZYD_CR26,  0x93 }, { ZYD_CR34,  0x30 }, { ZYD_CR35,  0x3e },  \
        !           684:        { ZYD_CR41,  0x24 }, { ZYD_CR44,  0x32 }, { ZYD_CR46,  0x96 },  \
        !           685:        { ZYD_CR47,  0x1e }, { ZYD_CR79,  0x58 }, { ZYD_CR80,  0x30 },  \
        !           686:        { ZYD_CR81,  0x30 }, { ZYD_CR87,  0x0a }, { ZYD_CR89,  0x04 },  \
        !           687:        { ZYD_CR92,  0x0a }, { ZYD_CR99,  0x28 }, { ZYD_CR100, 0x02 },  \
        !           688:        { ZYD_CR101, 0x13 }, { ZYD_CR102, 0x27 }, { ZYD_CR106, 0x22 },  \
        !           689:        { ZYD_CR107, 0x3f }, { ZYD_CR109, 0x09 }, { ZYD_CR110, 0x1f },  \
        !           690:        { ZYD_CR111, 0x1f }, { ZYD_CR112, 0x1f }, { ZYD_CR113, 0x27 },  \
        !           691:        { ZYD_CR114, 0x27 }, { ZYD_CR115, 0x24 }, { ZYD_CR116, 0x3f },  \
        !           692:        { ZYD_CR117, 0xfa }, { ZYD_CR118, 0xfc }, { ZYD_CR119, 0x10 },  \
        !           693:        { ZYD_CR120, 0x4f }, { ZYD_CR121, 0x77 }, { ZYD_CR137, 0x88 },  \
        !           694:        { ZYD_CR138, 0xa8 }, { ZYD_CR252, 0x34 }, { ZYD_CR253, 0x34 },  \
        !           695:        { ZYD_CR251, 0x2f }                                             \
        !           696: }
        !           697:
        !           698: #define ZYD_AL7230B_PHY_2                                              \
        !           699: {                                                                      \
        !           700:        { ZYD_CR251, 0x3f }, { ZYD_CR128, 0x14 }, { ZYD_CR129, 0x12 },  \
        !           701:        { ZYD_CR130, 0x10 }, { ZYD_CR38,  0x38 }, { ZYD_CR136, 0xdf }   \
        !           702: }
        !           703:
        !           704: #define ZYD_AL7230B_PHY_3                                              \
        !           705: {                                                                      \
        !           706:        { ZYD_CR203, 0x06 }, { ZYD_CR240, 0x80 }                        \
        !           707: }
        !           708:
        !           709: #define ZYD_AL7230B_RF_1                                               \
        !           710: {                                                                      \
        !           711:        0x09ec04, 0x8cccc8, 0x4ff821, 0xc5fbfc, 0x21ebfe, 0xafd401,     \
        !           712:        0x6cf56a, 0xe04073, 0x193d76, 0x9dd844, 0x500007, 0xd8c010,     \
        !           713:        0x3c9000, 0xbfffff, 0x700000, 0xf15d58                          \
        !           714: }
        !           715:
        !           716: #define ZYD_AL7230B_RF_2                                               \
        !           717: {                                                                      \
        !           718:        0xf15d59, 0xf15d5c, 0xf15d58                                    \
        !           719: }
        !           720:
        !           721: #define ZYD_AL7230B_RF_SETCHANNEL                                      \
        !           722: {                                                                      \
        !           723:        0x4ff821, 0xc5fbfc, 0x21ebfe, 0xafd401, 0x6cf56a, 0xe04073,     \
        !           724:        0x193d76, 0x9dd844, 0x500007, 0xd8c010, 0x3c9000, 0xf15d58      \
        !           725: }
        !           726:
        !           727: #define ZYD_AL7230B_CHANTABLE  \
        !           728: {                              \
        !           729:        { 0x09ec00, 0x8cccc8 }, \
        !           730:        { 0x09ec00, 0x8cccd8 }, \
        !           731:        { 0x09ec00, 0x8cccc0 }, \
        !           732:        { 0x09ec00, 0x8cccd0 }, \
        !           733:        { 0x05ec00, 0x8cccc8 }, \
        !           734:        { 0x05ec00, 0x8cccd8 }, \
        !           735:        { 0x05ec00, 0x8cccc0 }, \
        !           736:        { 0x05ec00, 0x8cccd0 }, \
        !           737:        { 0x0dec00, 0x8cccc8 }, \
        !           738:        { 0x0dec00, 0x8cccd8 }, \
        !           739:        { 0x0dec00, 0x8cccc0 }, \
        !           740:        { 0x0dec00, 0x8cccd0 }, \
        !           741:        { 0x03ec00, 0x8cccc8 }, \
        !           742:        { 0x03ec00, 0x866660 }  \
        !           743: }
        !           744:
        !           745:
        !           746:
        !           747: #define ZYD_AL2210_PHY                                                 \
        !           748: {                                                                      \
        !           749:        { ZYD_CR9,   0xe0 }, { ZYD_CR10, 0x91 }, { ZYD_CR12,  0x90 },   \
        !           750:        { ZYD_CR15,  0xd0 }, { ZYD_CR16, 0x40 }, { ZYD_CR17,  0x58 },   \
        !           751:        { ZYD_CR18,  0x04 }, { ZYD_CR23, 0x66 }, { ZYD_CR24,  0x14 },   \
        !           752:        { ZYD_CR26,  0x90 }, { ZYD_CR31, 0x80 }, { ZYD_CR34,  0x06 },   \
        !           753:        { ZYD_CR35,  0x3e }, { ZYD_CR38, 0x38 }, { ZYD_CR46,  0x90 },   \
        !           754:        { ZYD_CR47,  0x1e }, { ZYD_CR64, 0x64 }, { ZYD_CR79,  0xb5 },   \
        !           755:        { ZYD_CR80,  0x38 }, { ZYD_CR81, 0x30 }, { ZYD_CR113, 0xc0 },   \
        !           756:        { ZYD_CR127, 0x03 }                                             \
        !           757: }
        !           758:
        !           759: #define ZYD_AL2210_RF                                                  \
        !           760: {                                                                      \
        !           761:        0x2396c0, 0x00fcb1, 0x358132, 0x0108b3, 0xc77804, 0x456415,     \
        !           762:        0xff2226, 0x806667, 0x7860f8, 0xbb01c9, 0x00000a, 0x00000b      \
        !           763: }
        !           764:
        !           765: #define ZYD_AL2210_CHANTABLE                                           \
        !           766: {                                                                      \
        !           767:        0x0196c0, 0x019710, 0x019760, 0x0197b0, 0x019800, 0x019850,     \
        !           768:        0x0198a0, 0x0198f0, 0x019940, 0x019990, 0x0199e0, 0x019a30,     \
        !           769:        0x019a80, 0x019b40                                              \
        !           770: }
        !           771:
        !           772:
        !           773:
        !           774: #define ZYD_GCT_PHY                                                    \
        !           775: {                                                                      \
        !           776:        { ZYD_CR47,  0x1e }, { ZYD_CR15, 0xdc }, { ZYD_CR113, 0xc0 },   \
        !           777:        { ZYD_CR20,  0x0c }, { ZYD_CR17, 0x65 }, { ZYD_CR34,  0x04 },   \
        !           778:        { ZYD_CR35,  0x35 }, { ZYD_CR24, 0x20 }, { ZYD_CR9,   0xe0 },   \
        !           779:        { ZYD_CR127, 0x02 }, { ZYD_CR10, 0x91 }, { ZYD_CR23,  0x7f },   \
        !           780:        { ZYD_CR27,  0x10 }, { ZYD_CR28, 0x7a }, { ZYD_CR79,  0xb5 },   \
        !           781:        { ZYD_CR64,  0x80 }, { ZYD_CR33, 0x28 }, { ZYD_CR38,  0x30 }    \
        !           782: }
        !           783:
        !           784: #define ZYD_GCT_RF                                                     \
        !           785: {                                                                      \
        !           786:        0x1f0000, 0x1f0000, 0x1f0200, 0x1f0600, 0x1f8600, 0x1f8600,     \
        !           787:        0x002050, 0x1f8000, 0x1f8200, 0x1f8600, 0x1c0000, 0x10c458,     \
        !           788:        0x088e92, 0x187b82, 0x0401b4, 0x140816, 0x0c7000, 0x1c0000,     \
        !           789:        0x02ccae, 0x128023, 0x0a0000, 0x1a0000, 0x06e380, 0x16cb94,     \
        !           790:        0x0e1740, 0x014980, 0x116240, 0x090000, 0x192304, 0x05112f,     \
        !           791:        0x0d54a8, 0x0f8000, 0x1c0008, 0x1c0000, 0x1a0000, 0x1c0008,     \
        !           792:        0x150000, 0x0c7000, 0x150800, 0x150000                          \
        !           793: }
        !           794:
        !           795: #define ZYD_GCT_CHANTABLE                                              \
        !           796: {                                                                      \
        !           797:        0x1a0000, 0x1a8000, 0x1a4000, 0x1ac000, 0x1a2000, 0x1aa000,     \
        !           798:        0x1a6000, 0x1ae000, 0x1a1000, 0x1a9000, 0x1a5000, 0x1ad000,     \
        !           799:        0x1a3000, 0x1ab000                                              \
        !           800: }
        !           801:
        !           802:
        !           803:
        !           804: #define ZYD_MAXIM_PHY                                                  \
        !           805: {                                                                      \
        !           806:        { ZYD_CR23,  0x40 }, { ZYD_CR15,  0x20 }, { ZYD_CR28,  0x3e },  \
        !           807:        { ZYD_CR29,  0x00 }, { ZYD_CR26,  0x11 }, { ZYD_CR44,  0x33 },  \
        !           808:        { ZYD_CR106, 0x2a }, { ZYD_CR107, 0x1a }, { ZYD_CR109, 0x2b },  \
        !           809:        { ZYD_CR110, 0x2b }, { ZYD_CR111, 0x2b }, { ZYD_CR112, 0x2b },  \
        !           810:        { ZYD_CR10,  0x89 }, { ZYD_CR17,  0x20 }, { ZYD_CR26,  0x93 },  \
        !           811:        { ZYD_CR34,  0x30 }, { ZYD_CR35,  0x40 }, { ZYD_CR41,  0x24 },  \
        !           812:        { ZYD_CR44,  0x32 }, { ZYD_CR46,  0x90 }, { ZYD_CR89,  0x18 },  \
        !           813:        { ZYD_CR92,  0x0a }, { ZYD_CR101, 0x13 }, { ZYD_CR102, 0x27 },  \
        !           814:        { ZYD_CR106, 0x20 }, { ZYD_CR107, 0x24 }, { ZYD_CR109, 0x09 },  \
        !           815:        { ZYD_CR110, 0x13 }, { ZYD_CR111, 0x13 }, { ZYD_CR112, 0x13 },  \
        !           816:        { ZYD_CR113, 0x27 }, { ZYD_CR114, 0x27 }, { ZYD_CR115, 0x24 },  \
        !           817:        { ZYD_CR116, 0x24 }, { ZYD_CR117, 0xf4 }, { ZYD_CR118, 0xfa },  \
        !           818:        { ZYD_CR120, 0x4f }, { ZYD_CR121, 0x77 }, { ZYD_CR122, 0xfe },  \
        !           819:        { ZYD_CR10,  0x89 }, { ZYD_CR17,  0x20 }, { ZYD_CR26,  0x93 },  \
        !           820:        { ZYD_CR34,  0x30 }, { ZYD_CR35,  0x40 }, { ZYD_CR41,  0x24 },  \
        !           821:        { ZYD_CR44,  0x32 }, { ZYD_CR46,  0x90 }, { ZYD_CR89,  0x18 },  \
        !           822:        { ZYD_CR92,  0x0a }, { ZYD_CR101, 0x13 }, { ZYD_CR102, 0x27 },  \
        !           823:        { ZYD_CR106, 0x20 }, { ZYD_CR107, 0x24 }, { ZYD_CR109, 0x13 },  \
        !           824:        { ZYD_CR110, 0x27 }, { ZYD_CR111, 0x27 }, { ZYD_CR112, 0x13 },  \
        !           825:        { ZYD_CR113, 0x27 }, { ZYD_CR114, 0x27 }, { ZYD_CR115, 0x24 },  \
        !           826:        { ZYD_CR116, 0x24 }, { ZYD_CR117, 0xf4 }, { ZYD_CR118, 0x00 },  \
        !           827:        { ZYD_CR120, 0x4f }, { ZYD_CR121, 0x06 }, { ZYD_CR122, 0xfe },  \
        !           828:        { ZYD_CR150, 0x0d }                                             \
        !           829: }
        !           830:
        !           831: #define ZYD_MAXIM_RF                                                   \
        !           832: {                                                                      \
        !           833:        0x00ccd4, 0x030a03, 0x000400, 0x000ca1, 0x010072, 0x018645,     \
        !           834:        0x004006, 0x0000a7, 0x008258, 0x003fc9, 0x00040a, 0x00000b,     \
        !           835:        0x00026c                                                        \
        !           836: }
        !           837:
        !           838: #define ZYD_MAXIM_CHANTABLE    \
        !           839: {                              \
        !           840:        { 0x0ccd4, 0x30a03 },   \
        !           841:        { 0x22224, 0x00a13 },   \
        !           842:        { 0x37774, 0x10a13 },   \
        !           843:        { 0x0ccd4, 0x30a13 },   \
        !           844:        { 0x22224, 0x00a23 },   \
        !           845:        { 0x37774, 0x10a23 },   \
        !           846:        { 0x0ccd4, 0x30a23 },   \
        !           847:        { 0x22224, 0x00a33 },   \
        !           848:        { 0x37774, 0x10a33 },   \
        !           849:        { 0x0ccd4, 0x30a33 },   \
        !           850:        { 0x22224, 0x00a43 },   \
        !           851:        { 0x37774, 0x10a43 },   \
        !           852:        { 0x0ccd4, 0x30a43 },   \
        !           853:        { 0x199a4, 0x20a53 }    \
        !           854: }
        !           855:
        !           856:
        !           857:
        !           858: #define ZYD_MAXIM2_PHY                                                 \
        !           859: {                                                                      \
        !           860:        { ZYD_CR23,  0x40 }, { ZYD_CR15,  0x20 }, { ZYD_CR28,  0x3e },  \
        !           861:        { ZYD_CR29,  0x00 }, { ZYD_CR26,  0x11 }, { ZYD_CR44,  0x33 },  \
        !           862:        { ZYD_CR106, 0x2a }, { ZYD_CR107, 0x1a }, { ZYD_CR109, 0x2b },  \
        !           863:        { ZYD_CR110, 0x2b }, { ZYD_CR111, 0x2b }, { ZYD_CR112, 0x2b },  \
        !           864:        { ZYD_CR10,  0x89 }, { ZYD_CR17,  0x20 }, { ZYD_CR26,  0x93 },  \
        !           865:        { ZYD_CR34,  0x30 }, { ZYD_CR35,  0x40 }, { ZYD_CR41,  0x24 },  \
        !           866:        { ZYD_CR44,  0x32 }, { ZYD_CR46,  0x90 }, { ZYD_CR89,  0x18 },  \
        !           867:        { ZYD_CR92,  0x0a }, { ZYD_CR101, 0x13 }, { ZYD_CR102, 0x27 },  \
        !           868:        { ZYD_CR106, 0x20 }, { ZYD_CR107, 0x24 }, { ZYD_CR109, 0x09 },  \
        !           869:        { ZYD_CR110, 0x13 }, { ZYD_CR111, 0x13 }, { ZYD_CR112, 0x13 },  \
        !           870:        { ZYD_CR113, 0x27 }, { ZYD_CR114, 0x27 }, { ZYD_CR115, 0x24 },  \
        !           871:        { ZYD_CR116, 0x24 }, { ZYD_CR117, 0xf4 }, { ZYD_CR118, 0xfa },  \
        !           872:        { ZYD_CR120, 0x4f }, { ZYD_CR121, 0x77 }, { ZYD_CR122, 0xfe },  \
        !           873:        { ZYD_CR10,  0x89 }, { ZYD_CR17,  0x20 }, { ZYD_CR26,  0x93 },  \
        !           874:        { ZYD_CR34,  0x30 }, { ZYD_CR35,  0x40 }, { ZYD_CR41,  0x24 },  \
        !           875:        { ZYD_CR44,  0x32 }, { ZYD_CR46,  0x90 }, { ZYD_CR79,  0x58 },  \
        !           876:        { ZYD_CR80,  0x30 }, { ZYD_CR81,  0x30 }, { ZYD_CR89,  0x18 },  \
        !           877:        { ZYD_CR92,  0x0a }, { ZYD_CR101, 0x13 }, { ZYD_CR102, 0x27 },  \
        !           878:        { ZYD_CR106, 0x20 }, { ZYD_CR107, 0x24 }, { ZYD_CR109, 0x09 },  \
        !           879:        { ZYD_CR110, 0x13 }, { ZYD_CR111, 0x13 }, { ZYD_CR112, 0x13 },  \
        !           880:        { ZYD_CR113, 0x27 }, { ZYD_CR114, 0x27 }, { ZYD_CR115, 0x24 },  \
        !           881:        { ZYD_CR116, 0x24 }, { ZYD_CR117, 0xf4 }, { ZYD_CR118, 0x00 },  \
        !           882:        { ZYD_CR120, 0x4f }, { ZYD_CR121, 0x06 }, { ZYD_CR122, 0xfe }   \
        !           883: }
        !           884:
        !           885: #define ZYD_MAXIM2_RF                                                  \
        !           886: {                                                                      \
        !           887:        0x33334, 0x10a03, 0x00400, 0x00ca1, 0x10072, 0x18645, 0x04006,  \
        !           888:        0x000a7, 0x08258, 0x03fc9, 0x0040a, 0x0000b, 0x0026c            \
        !           889: }
        !           890:
        !           891: #define ZYD_MAXIM2_CHANTABLE_F                                         \
        !           892: {                                                                      \
        !           893:        0x33334, 0x08884, 0x1ddd4, 0x33334, 0x08884, 0x1ddd4, 0x33334,  \
        !           894:        0x08884, 0x1ddd4, 0x33334, 0x08884, 0x1ddd4, 0x33334, 0x26664   \
        !           895: }
        !           896:
        !           897: #define ZYD_MAXIM2_CHANTABLE   \
        !           898: {                              \
        !           899:        { 0x33334, 0x10a03 },   \
        !           900:        { 0x08884, 0x20a13 },   \
        !           901:        { 0x1ddd4, 0x30a13 },   \
        !           902:        { 0x33334, 0x10a13 },   \
        !           903:        { 0x08884, 0x20a23 },   \
        !           904:        { 0x1ddd4, 0x30a23 },   \
        !           905:        { 0x33334, 0x10a23 },   \
        !           906:        { 0x08884, 0x20a33 },   \
        !           907:        { 0x1ddd4, 0x30a33 },   \
        !           908:        { 0x33334, 0x10a33 },   \
        !           909:        { 0x08884, 0x20a43 },   \
        !           910:        { 0x1ddd4, 0x30a43 },   \
        !           911:        { 0x33334, 0x10a43 },   \
        !           912:        { 0x26664, 0x20a53 }    \
        !           913: }
        !           914:
        !           915: /*
        !           916:  * Control pipe requests.
        !           917:  */
        !           918: #define ZYD_DOWNLOADREQ        0x30
        !           919: #define ZYD_DOWNLOADSTS        0x31
        !           920:
        !           921: /* possible values for register ZYD_CR_INTERRUPT */
        !           922: #define ZYD_HWINT_MASK 0x004f0000
        !           923:
        !           924: /* possible values for register ZYD_MAC_MISC */
        !           925: #define ZYD_UNLOCK_PHY_REGS    0x80
        !           926:
        !           927: /* possible values for register ZYD_MAC_ENCRYPTION_TYPE */
        !           928: #define ZYD_ENC_SNIFFER        8
        !           929:
        !           930: /* flags for register ZYD_MAC_RXFILTER */
        !           931: #define ZYD_FILTER_ASS_REQ     (1 << 0)
        !           932: #define ZYD_FILTER_ASS_RSP     (1 << 1)
        !           933: #define ZYD_FILTER_REASS_REQ   (1 << 2)
        !           934: #define ZYD_FILTER_REASS_RSP   (1 << 3)
        !           935: #define ZYD_FILTER_PRB_REQ     (1 << 4)
        !           936: #define ZYD_FILTER_PRB_RSP     (1 << 5)
        !           937: #define ZYD_FILTER_BCN         (1 << 8)
        !           938: #define ZYD_FILTER_ATIM                (1 << 9)
        !           939: #define ZYD_FILTER_DEASS       (1 << 10)
        !           940: #define ZYD_FILTER_AUTH                (1 << 11)
        !           941: #define ZYD_FILTER_DEAUTH      (1 << 12)
        !           942: #define ZYD_FILTER_PS_POLL     (1 << 26)
        !           943: #define ZYD_FILTER_RTS         (1 << 27)
        !           944: #define ZYD_FILTER_CTS         (1 << 28)
        !           945: #define ZYD_FILTER_ACK         (1 << 29)
        !           946: #define ZYD_FILTER_CFE         (1 << 30)
        !           947: #define ZYD_FILTER_CFE_A       (1 << 31)
        !           948:
        !           949: /* helpers for register ZYD_MAC_RXFILTER */
        !           950: #define ZYD_FILTER_MONITOR     0xffffffff
        !           951: #define ZYD_FILTER_BSS                                                 \
        !           952:        (ZYD_FILTER_ASS_RSP | ZYD_FILTER_REASS_RSP |                    \
        !           953:         ZYD_FILTER_PRB_RSP | ZYD_FILTER_BCN | ZYD_FILTER_DEASS |       \
        !           954:         ZYD_FILTER_AUTH | ZYD_FILTER_DEAUTH)
        !           955: #define ZYD_FILTER_HOSTAP                                              \
        !           956:        (ZYD_FILTER_ASS_REQ | ZYD_FILTER_REASS_REQ |                    \
        !           957:         ZYD_FILTER_PRB_REQ | ZYD_FILTER_DEASS | ZYD_FILTER_AUTH |      \
        !           958:         ZYD_FILTER_DEAUTH | ZYD_FILTER_PS_POLL)
        !           959:
        !           960: struct zyd_tx_desc {
        !           961:        uint8_t         phy;
        !           962: #define ZYD_TX_PHY_SIGNAL(x)   ((x) & 0xf)
        !           963: #define ZYD_TX_PHY_OFDM                (1 << 4)
        !           964: #define ZYD_TX_PHY_SHPREAMBLE  (1 << 5)        /* CCK */
        !           965: #define ZYD_TX_PHY_5GHZ                (1 << 5)        /* OFDM */
        !           966:
        !           967:        uint16_t        len;
        !           968:        uint8_t         flags;
        !           969: #define ZYD_TX_FLAG_BACKOFF    (1 << 0)
        !           970: #define ZYD_TX_FLAG_MULTICAST  (1 << 1)
        !           971: #define ZYD_TX_FLAG_TYPE(x)    (((x) & 0x3) << 2)
        !           972: #define ZYD_TX_TYPE_DATA       0
        !           973: #define ZYD_TX_TYPE_PS_POLL    1
        !           974: #define ZYD_TX_TYPE_MGMT       2
        !           975: #define ZYD_TX_TYPE_CTL                3
        !           976: #define ZYD_TX_FLAG_WAKEUP     (1 << 4)
        !           977: #define ZYD_TX_FLAG_RTS                (1 << 5)
        !           978: #define ZYD_TX_FLAG_ENCRYPT    (1 << 6)
        !           979: #define ZYD_TX_FLAG_CTS_TO_SELF        (1 << 7)
        !           980:
        !           981:        uint16_t        pktlen;
        !           982:        uint16_t        plcp_length;
        !           983:        uint8_t         plcp_service;
        !           984: #define ZYD_PLCP_LENGEXT       0x80
        !           985:
        !           986:        uint16_t        nextlen;
        !           987: } __packed;
        !           988:
        !           989: struct zyd_plcphdr {
        !           990:        uint8_t         signal;
        !           991:        uint8_t         reserved[2];
        !           992:        uint16_t        service;        /* unaligned! */
        !           993: } __packed;
        !           994:
        !           995: struct zyd_rx_stat {
        !           996:        uint8_t rssi;
        !           997:        uint8_t signal_cck;
        !           998:        uint8_t signal_ofdm;
        !           999:        uint8_t cipher;
        !          1000: #define ZYD_RX_CIPHER_WEP64    1
        !          1001: #define ZYD_RX_CIPHER_TKIP     2
        !          1002: #define ZYD_RX_CIPHER_AES      4
        !          1003: #define ZYD_RX_CIPHER_WEP128   5
        !          1004: #define ZYD_RX_CIPHER_WEP256   6
        !          1005: #define ZYD_RX_CIPHER_WEP      \
        !          1006:        (ZYD_RX_CIPHER_WEP64 | ZYD_RX_CIPHER_WEP128 | ZYD_RX_CIPHER_WEP256)
        !          1007:
        !          1008:        uint8_t flags;
        !          1009: #define ZYD_RX_OFDM            (1 << 0)
        !          1010: #define ZYD_RX_TIMEOUT         (1 << 1)
        !          1011: #define ZYD_RX_OVERRUN         (1 << 2)
        !          1012: #define ZYD_RX_DECRYPTERR      (1 << 3)
        !          1013: #define ZYD_RX_BADCRC32                (1 << 4)
        !          1014: #define ZYD_RX_NOT2ME          (1 << 5)
        !          1015: #define ZYD_RX_BADCRC16                (1 << 6)
        !          1016: #define ZYD_RX_ERROR           (1 << 7)
        !          1017: } __packed;
        !          1018:
        !          1019: /* this structure may be unaligned */
        !          1020: struct zyd_rx_desc {
        !          1021: #define ZYD_MAX_RXFRAMECNT     3
        !          1022:        uWord   len[ZYD_MAX_RXFRAMECNT];
        !          1023:        uWord   tag;
        !          1024: #define ZYD_TAG_MULTIFRAME     0x697e
        !          1025: } __packed;
        !          1026:
        !          1027: /* I2C bus alike */
        !          1028: struct zyd_rfwrite {
        !          1029:        uint16_t        code;
        !          1030:        uint16_t        width;
        !          1031:        uint16_t        bit[32];
        !          1032: #define ZYD_RF_IF_LE   (1 << 1)
        !          1033: #define ZYD_RF_CLK     (1 << 2)
        !          1034: #define ZYD_RF_DATA    (1 << 3)
        !          1035: } __packed;
        !          1036:
        !          1037: struct zyd_cmd {
        !          1038:        uint16_t        code;
        !          1039: #define ZYD_CMD_IOWR           0x0021  /* write HMAC or PHY register */
        !          1040: #define ZYD_CMD_IORD           0x0022  /* read HMAC or PHY register */
        !          1041: #define ZYD_CMD_RFCFG          0x0023  /* write RF register */
        !          1042: #define ZYD_NOTIF_IORD         0x9001  /* response for ZYD_CMD_IORD */
        !          1043: #define ZYD_NOTIF_MACINTR      0x9001  /* interrupt notification */
        !          1044: #define ZYD_NOTIF_RETRYSTATUS  0xa001  /* Tx retry notification */
        !          1045:
        !          1046:        uint8_t         data[64];
        !          1047: } __packed;
        !          1048:
        !          1049: /* structure for command ZYD_CMD_IOWR */
        !          1050: struct zyd_pair {
        !          1051:        uint16_t        reg;
        !          1052: /* helpers macros to read/write 32-bit registers */
        !          1053: #define ZYD_REG32_LO(reg)      (reg)
        !          1054: #define ZYD_REG32_HI(reg)      \
        !          1055:        ((reg) + ((((reg) & 0xf000) == 0x9000) ? 2 : 1))
        !          1056:
        !          1057:        uint16_t        val;
        !          1058: } __packed;
        !          1059:
        !          1060: /* structure for notification ZYD_NOTIF_RETRYSTATUS */
        !          1061: struct zyd_notif_retry {
        !          1062:        uint16_t        rate;
        !          1063:        uint8_t         macaddr[IEEE80211_ADDR_LEN];
        !          1064:        uint16_t        count;
        !          1065: } __packed;
        !          1066:
        !          1067:
        !          1068: #define ZYD_RX_LIST_CNT        1
        !          1069: #define ZYD_TX_LIST_CNT        1
        !          1070:
        !          1071: #define ZYD_CONFIG_NO          1
        !          1072: #define ZYD_IFACE_INDEX                0
        !          1073:
        !          1074: #define ZYD_INTR_TIMEOUT       1000
        !          1075: #define ZYD_TX_TIMEOUT         10000
        !          1076:
        !          1077: #define ZYD_MAX_TXBUFSZ        \
        !          1078:        (sizeof (struct zyd_tx_desc) + IEEE80211_MAX_LEN)
        !          1079:
        !          1080: #define ZYD_MIN_FRAGSZ                                                 \
        !          1081:        (sizeof (struct zyd_plcphdr) + IEEE80211_MIN_LEN +              \
        !          1082:         sizeof (struct zyd_rx_stat))
        !          1083: #define ZYD_MIN_RXBUFSZ        ZYD_MIN_FRAGSZ
        !          1084: #define ZYX_MAX_RXBUFSZ        \
        !          1085:        (sizeof (struct zyd_plcphdr) + MCLBYTES + sizeof (struct zyd_rx_desc))
        !          1086:
        !          1087: #define ZYD_CMD_FLAG_READ      (1 << 0)
        !          1088:
        !          1089: /* quickly determine if a given rate is CCK or OFDM */
        !          1090: #define ZYD_RATE_IS_OFDM(rate) ((rate) >= 12 && (rate) != 22)
        !          1091:
        !          1092: struct zyd_phy_pair {
        !          1093:        uint16_t        reg;
        !          1094:        uint8_t         val;
        !          1095: };
        !          1096:
        !          1097: struct zyd_mac_pair {
        !          1098:        uint16_t        reg;
        !          1099:        uint32_t        val;
        !          1100: };
        !          1101:
        !          1102: struct zyd_tx_data {
        !          1103:        struct zyd_softc        *sc;
        !          1104:        usbd_xfer_handle        xfer;
        !          1105:        uint8_t                 *buf;
        !          1106:        struct ieee80211_node   *ni;
        !          1107: };
        !          1108:
        !          1109: struct zyd_rx_data {
        !          1110:        struct zyd_softc        *sc;
        !          1111:        usbd_xfer_handle        xfer;
        !          1112:        const uint8_t           *buf;
        !          1113: };
        !          1114:
        !          1115: struct zyd_node {
        !          1116:        struct ieee80211_node           ni;     /* must be the first */
        !          1117:        struct ieee80211_amrr_node      amn;
        !          1118: };
        !          1119:
        !          1120: struct zyd_rx_radiotap_header {
        !          1121:        struct ieee80211_radiotap_header wr_ihdr;
        !          1122:        uint8_t         wr_flags;
        !          1123:        uint8_t         wr_rate;
        !          1124:        uint16_t        wr_chan_freq;
        !          1125:        uint16_t        wr_chan_flags;
        !          1126:        uint8_t         wr_rssi;
        !          1127: } __packed;
        !          1128:
        !          1129: #define ZYD_RX_RADIOTAP_PRESENT                                                \
        !          1130:        ((1 << IEEE80211_RADIOTAP_FLAGS) |                              \
        !          1131:         (1 << IEEE80211_RADIOTAP_RATE) |                               \
        !          1132:         (1 << IEEE80211_RADIOTAP_CHANNEL) |                            \
        !          1133:         (1 << IEEE80211_RADIOTAP_RSSI))
        !          1134:
        !          1135: struct zyd_tx_radiotap_header {
        !          1136:        struct ieee80211_radiotap_header wt_ihdr;
        !          1137:        uint8_t         wt_flags;
        !          1138:        uint8_t         wt_rate;
        !          1139:        uint16_t        wt_chan_freq;
        !          1140:        uint16_t        wt_chan_flags;
        !          1141: } __packed;
        !          1142:
        !          1143: #define ZYD_TX_RADIOTAP_PRESENT                                                \
        !          1144:        ((1 << IEEE80211_RADIOTAP_FLAGS) |                              \
        !          1145:         (1 << IEEE80211_RADIOTAP_RATE) |                               \
        !          1146:         (1 << IEEE80211_RADIOTAP_CHANNEL))
        !          1147:
        !          1148: struct zyd_softc;      /* forward declaration */
        !          1149:
        !          1150: struct zyd_rf {
        !          1151:        /* RF methods */
        !          1152:        int     (*init)(struct zyd_rf *);
        !          1153:        int     (*switch_radio)(struct zyd_rf *, int);
        !          1154:        int     (*set_channel)(struct zyd_rf *, uint8_t);
        !          1155:
        !          1156:        /* RF attributes */
        !          1157:        struct  zyd_softc *rf_sc;       /* back-pointer */
        !          1158:        int     width;
        !          1159: };
        !          1160:
        !          1161: struct zyd_softc {
        !          1162:        struct device                   sc_dev;
        !          1163:        struct ieee80211com             sc_ic;
        !          1164:        int                             (*sc_newstate)(struct ieee80211com *,
        !          1165:                                            enum ieee80211_state, int);
        !          1166:        struct zyd_rf                   sc_rf;
        !          1167:
        !          1168:        struct usb_task                 sc_task;
        !          1169:        usbd_device_handle              sc_udev;
        !          1170:        usbd_interface_handle           sc_iface;
        !          1171:
        !          1172:        enum ieee80211_state            sc_state;
        !          1173:        int                             sc_arg;
        !          1174:        int                             attached;
        !          1175:
        !          1176:        struct timeout                  scan_to;
        !          1177:        struct timeout                  amrr_to;
        !          1178:
        !          1179:        struct ieee80211_amrr           amrr;
        !          1180:
        !          1181:        void                            *odata;
        !          1182:        int                             olen;
        !          1183:
        !          1184:        uint16_t                        fwbase;
        !          1185:        uint8_t                         regdomain;
        !          1186:        uint8_t                         mac_rev;
        !          1187:        uint16_t                        fw_rev;
        !          1188:        uint8_t                         rf_rev;
        !          1189:        uint8_t                         pa_rev;
        !          1190:        uint8_t                         pwr_cal[14];
        !          1191:        uint8_t                         pwr_int[14];
        !          1192:        uint8_t                         ofdm36_cal[14];
        !          1193:        uint8_t                         ofdm48_cal[14];
        !          1194:        uint8_t                         ofdm54_cal[14];
        !          1195:
        !          1196: #define ZYD_ENDPT_BOUT 0
        !          1197: #define ZYD_ENDPT_BIN  1
        !          1198: #define ZYD_ENDPT_IIN  2
        !          1199: #define ZYD_ENDPT_IOUT 3
        !          1200: #define ZYD_ENDPT_CNT  4
        !          1201:        usbd_pipe_handle                zyd_ep[ZYD_ENDPT_CNT];
        !          1202:        uint8_t                         *ibuf;
        !          1203:
        !          1204:        struct zyd_rx_data              rx_data[ZYD_RX_LIST_CNT];
        !          1205:        struct zyd_tx_data              tx_data[ZYD_TX_LIST_CNT];
        !          1206:        int                             tx_queued;
        !          1207:
        !          1208:        int                             tx_timer;
        !          1209:
        !          1210: #if NBPFILTER > 0
        !          1211:        caddr_t                         sc_drvbpf;
        !          1212:
        !          1213:        union {
        !          1214:                struct zyd_rx_radiotap_header th;
        !          1215:                uint8_t pad[64];
        !          1216:        }                               sc_rxtapu;
        !          1217: #define sc_rxtap       sc_rxtapu.th
        !          1218:        int                             sc_rxtap_len;
        !          1219:
        !          1220:        union {
        !          1221:                struct zyd_tx_radiotap_header th;
        !          1222:                uint8_t pad[64];
        !          1223:        }                               sc_txtapu;
        !          1224: #define sc_txtap       sc_txtapu.th
        !          1225:        int                             sc_txtap_len;
        !          1226: #endif
        !          1227: };

CVSweb