if_bwn_radio_2055.c revision 300016
1/* 2 3 Broadcom B43 wireless driver 4 IEEE 802.11n PHY data tables 5 6 Copyright (c) 2008 Michael Buesch <m@bues.ch> 7 Copyright (c) 2010 Rafa�� Mi��ecki <zajec5@gmail.com> 8 9 This program is free software; you can redistribute it and/or modify 10 it under the terms of the GNU General Public License as published by 11 the Free Software Foundation; either version 2 of the License, or 12 (at your option) any later version. 13 14 This program is distributed in the hope that it will be useful, 15 but WITHOUT ANY WARRANTY; without even the implied warranty of 16 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 17 GNU General Public License for more details. 18 19 You should have received a copy of the GNU General Public License 20 along with this program; see the file COPYING. If not, write to 21 the Free Software Foundation, Inc., 51 Franklin Steet, Fifth Floor, 22 Boston, MA 02110-1301, USA. 23 24*/ 25 26#include <sys/cdefs.h> 27__FBSDID("$FreeBSD: head/sys/gnu/dev/bwn/phy_n/if_bwn_radio_2055.c 300016 2016-05-17 07:09:24Z adrian $"); 28 29/* 30 * The Broadcom Wireless LAN controller driver. 31 */ 32 33#include <sys/param.h> 34#include <sys/systm.h> 35#include <sys/kernel.h> 36#include <sys/malloc.h> 37#include <sys/module.h> 38#include <sys/endian.h> 39#include <sys/errno.h> 40#include <sys/firmware.h> 41#include <sys/lock.h> 42#include <sys/mutex.h> 43#include <machine/bus.h> 44#include <machine/resource.h> 45#include <sys/bus.h> 46#include <sys/rman.h> 47#include <sys/socket.h> 48#include <sys/sockio.h> 49 50#include <net/ethernet.h> 51#include <net/if.h> 52#include <net/if_var.h> 53#include <net/if_arp.h> 54#include <net/if_dl.h> 55#include <net/if_llc.h> 56#include <net/if_media.h> 57#include <net/if_types.h> 58 59#include <dev/pci/pcivar.h> 60#include <dev/pci/pcireg.h> 61#include <dev/siba/siba_ids.h> 62#include <dev/siba/sibareg.h> 63#include <dev/siba/sibavar.h> 64 65#include <net80211/ieee80211_var.h> 66#include <net80211/ieee80211_radiotap.h> 67#include <net80211/ieee80211_regdomain.h> 68#include <net80211/ieee80211_phy.h> 69#include <net80211/ieee80211_ratectl.h> 70 71#include <dev/bwn/if_bwnreg.h> 72#include <dev/bwn/if_bwnvar.h> 73#include <dev/bwn/if_bwn_debug.h> 74 75#include <gnu/dev/bwn/phy_n/if_bwn_phy_n_regs.h> 76#include <gnu/dev/bwn/phy_n/if_bwn_phy_n_tables.h> 77#include <gnu/dev/bwn/phy_n/if_bwn_radio_2055.h> 78 79struct b2055_inittab_entry { 80 /* Value to write if we use the 5GHz band. */ 81 uint16_t ghz5; 82 /* Value to write if we use the 2.4GHz band. */ 83 uint16_t ghz2; 84 /* Flags */ 85 uint8_t flags; 86#define B2055_INITTAB_ENTRY_OK 0x01 87#define B2055_INITTAB_UPLOAD 0x02 88}; 89#define UPLOAD .flags = B2055_INITTAB_ENTRY_OK | B2055_INITTAB_UPLOAD 90#define NOUPLOAD .flags = B2055_INITTAB_ENTRY_OK 91 92static const struct b2055_inittab_entry b2055_inittab [] = { 93 [B2055_SP_PINPD] = { .ghz5 = 0x0080, .ghz2 = 0x0080, NOUPLOAD, }, 94 [B2055_C1_SP_RSSI] = { .ghz5 = 0x0000, .ghz2 = 0x0000, NOUPLOAD, }, 95 [B2055_C1_SP_PDMISC] = { .ghz5 = 0x0027, .ghz2 = 0x0027, NOUPLOAD, }, 96 [B2055_C2_SP_RSSI] = { .ghz5 = 0x0000, .ghz2 = 0x0000, NOUPLOAD, }, 97 [B2055_C2_SP_PDMISC] = { .ghz5 = 0x0027, .ghz2 = 0x0027, NOUPLOAD, }, 98 [B2055_C1_SP_RXGC1] = { .ghz5 = 0x007F, .ghz2 = 0x007F, UPLOAD, }, 99 [B2055_C1_SP_RXGC2] = { .ghz5 = 0x0007, .ghz2 = 0x0007, UPLOAD, }, 100 [B2055_C2_SP_RXGC1] = { .ghz5 = 0x007F, .ghz2 = 0x007F, UPLOAD, }, 101 [B2055_C2_SP_RXGC2] = { .ghz5 = 0x0007, .ghz2 = 0x0007, UPLOAD, }, 102 [B2055_C1_SP_LPFBWSEL] = { .ghz5 = 0x0015, .ghz2 = 0x0015, NOUPLOAD, }, 103 [B2055_C2_SP_LPFBWSEL] = { .ghz5 = 0x0015, .ghz2 = 0x0015, NOUPLOAD, }, 104 [B2055_C1_SP_TXGC1] = { .ghz5 = 0x004F, .ghz2 = 0x004F, UPLOAD, }, 105 [B2055_C1_SP_TXGC2] = { .ghz5 = 0x0005, .ghz2 = 0x0005, UPLOAD, }, 106 [B2055_C2_SP_TXGC1] = { .ghz5 = 0x004F, .ghz2 = 0x004F, UPLOAD, }, 107 [B2055_C2_SP_TXGC2] = { .ghz5 = 0x0005, .ghz2 = 0x0005, UPLOAD, }, 108 [B2055_MASTER1] = { .ghz5 = 0x00D0, .ghz2 = 0x00D0, NOUPLOAD, }, 109 [B2055_MASTER2] = { .ghz5 = 0x0002, .ghz2 = 0x0002, NOUPLOAD, }, 110 [B2055_PD_LGEN] = { .ghz5 = 0x0000, .ghz2 = 0x0000, NOUPLOAD, }, 111 [B2055_PD_PLLTS] = { .ghz5 = 0x0040, .ghz2 = 0x0040, NOUPLOAD, }, 112 [B2055_C1_PD_LGBUF] = { .ghz5 = 0x0000, .ghz2 = 0x0000, NOUPLOAD, }, 113 [B2055_C1_PD_TX] = { .ghz5 = 0x0000, .ghz2 = 0x0000, NOUPLOAD, }, 114 [B2055_C1_PD_RXTX] = { .ghz5 = 0x0000, .ghz2 = 0x0000, NOUPLOAD, }, 115 [B2055_C1_PD_RSSIMISC] = { .ghz5 = 0x0000, .ghz2 = 0x0000, NOUPLOAD, }, 116 [B2055_C2_PD_LGBUF] = { .ghz5 = 0x0000, .ghz2 = 0x0000, NOUPLOAD, }, 117 [B2055_C2_PD_TX] = { .ghz5 = 0x0000, .ghz2 = 0x0000, NOUPLOAD, }, 118 [B2055_C2_PD_RXTX] = { .ghz5 = 0x0000, .ghz2 = 0x0000, NOUPLOAD, }, 119 [B2055_C2_PD_RSSIMISC] = { .ghz5 = 0x0000, .ghz2 = 0x0000, NOUPLOAD, }, 120 [B2055_PWRDET_LGEN] = { .ghz5 = 0x00C0, .ghz2 = 0x00C0, NOUPLOAD, }, 121 [B2055_C1_PWRDET_LGBUF] = { .ghz5 = 0x00FF, .ghz2 = 0x00FF, NOUPLOAD, }, 122 [B2055_C1_PWRDET_RXTX] = { .ghz5 = 0x00C0, .ghz2 = 0x00C0, NOUPLOAD, }, 123 [B2055_C2_PWRDET_LGBUF] = { .ghz5 = 0x00FF, .ghz2 = 0x00FF, NOUPLOAD, }, 124 [B2055_C2_PWRDET_RXTX] = { .ghz5 = 0x00C0, .ghz2 = 0x00C0, NOUPLOAD, }, 125 [B2055_RRCCAL_CS] = { .ghz5 = 0x0000, .ghz2 = 0x0000, NOUPLOAD, }, 126 [B2055_RRCCAL_NOPTSEL] = { .ghz5 = 0x002C, .ghz2 = 0x002C, NOUPLOAD, }, 127 [B2055_CAL_MISC] = { .ghz5 = 0x0000, .ghz2 = 0x0000, NOUPLOAD, }, 128 [B2055_CAL_COUT] = { .ghz5 = 0x0000, .ghz2 = 0x0000, NOUPLOAD, }, 129 [B2055_CAL_COUT2] = { .ghz5 = 0x0000, .ghz2 = 0x0000, NOUPLOAD, }, 130 [B2055_CAL_CVARCTL] = { .ghz5 = 0x0000, .ghz2 = 0x0000, NOUPLOAD, }, 131 [B2055_CAL_RVARCTL] = { .ghz5 = 0x0000, .ghz2 = 0x0000, NOUPLOAD, }, 132 [B2055_CAL_LPOCTL] = { .ghz5 = 0x0000, .ghz2 = 0x0000, NOUPLOAD, }, 133 [B2055_CAL_TS] = { .ghz5 = 0x0000, .ghz2 = 0x0000, NOUPLOAD, }, 134 [B2055_CAL_RCCALRTS] = { .ghz5 = 0x0000, .ghz2 = 0x0000, NOUPLOAD, }, 135 [B2055_CAL_RCALRTS] = { .ghz5 = 0x0000, .ghz2 = 0x0000, NOUPLOAD, }, 136 [B2055_PADDRV] = { .ghz5 = 0x00A4, .ghz2 = 0x00A4, NOUPLOAD, }, 137 [B2055_XOCTL1] = { .ghz5 = 0x0038, .ghz2 = 0x0038, NOUPLOAD, }, 138 [B2055_XOCTL2] = { .ghz5 = 0x0000, .ghz2 = 0x0000, NOUPLOAD, }, 139 [B2055_XOREGUL] = { .ghz5 = 0x0004, .ghz2 = 0x0004, UPLOAD, }, 140 [B2055_XOMISC] = { .ghz5 = 0x0000, .ghz2 = 0x0000, NOUPLOAD, }, 141 [B2055_PLL_LFC1] = { .ghz5 = 0x000A, .ghz2 = 0x000A, NOUPLOAD, }, 142 [B2055_PLL_CALVTH] = { .ghz5 = 0x0087, .ghz2 = 0x0087, NOUPLOAD, }, 143 [B2055_PLL_LFC2] = { .ghz5 = 0x0009, .ghz2 = 0x0009, NOUPLOAD, }, 144 [B2055_PLL_REF] = { .ghz5 = 0x0070, .ghz2 = 0x0070, NOUPLOAD, }, 145 [B2055_PLL_LFR1] = { .ghz5 = 0x0011, .ghz2 = 0x0011, NOUPLOAD, }, 146 [B2055_PLL_PFDCP] = { .ghz5 = 0x0018, .ghz2 = 0x0018, UPLOAD, }, 147 [B2055_PLL_IDAC_CPOPAMP] = { .ghz5 = 0x0006, .ghz2 = 0x0006, NOUPLOAD, }, 148 [B2055_PLL_CPREG] = { .ghz5 = 0x0004, .ghz2 = 0x0004, UPLOAD, }, 149 [B2055_PLL_RCAL] = { .ghz5 = 0x0006, .ghz2 = 0x0006, NOUPLOAD, }, 150 [B2055_RF_PLLMOD0] = { .ghz5 = 0x009E, .ghz2 = 0x009E, NOUPLOAD, }, 151 [B2055_RF_PLLMOD1] = { .ghz5 = 0x0009, .ghz2 = 0x0009, NOUPLOAD, }, 152 [B2055_RF_MMDIDAC1] = { .ghz5 = 0x00C8, .ghz2 = 0x00C8, UPLOAD, }, 153 [B2055_RF_MMDIDAC0] = { .ghz5 = 0x0088, .ghz2 = 0x0088, NOUPLOAD, }, 154 [B2055_RF_MMDSP] = { .ghz5 = 0x0000, .ghz2 = 0x0000, NOUPLOAD, }, 155 [B2055_VCO_CAL1] = { .ghz5 = 0x0000, .ghz2 = 0x0000, NOUPLOAD, }, 156 [B2055_VCO_CAL2] = { .ghz5 = 0x0000, .ghz2 = 0x0000, NOUPLOAD, }, 157 [B2055_VCO_CAL3] = { .ghz5 = 0x0001, .ghz2 = 0x0001, NOUPLOAD, }, 158 [B2055_VCO_CAL4] = { .ghz5 = 0x0002, .ghz2 = 0x0002, NOUPLOAD, }, 159 [B2055_VCO_CAL5] = { .ghz5 = 0x0096, .ghz2 = 0x0096, NOUPLOAD, }, 160 [B2055_VCO_CAL6] = { .ghz5 = 0x003E, .ghz2 = 0x003E, NOUPLOAD, }, 161 [B2055_VCO_CAL7] = { .ghz5 = 0x003E, .ghz2 = 0x003E, NOUPLOAD, }, 162 [B2055_VCO_CAL8] = { .ghz5 = 0x0013, .ghz2 = 0x0013, NOUPLOAD, }, 163 [B2055_VCO_CAL9] = { .ghz5 = 0x0002, .ghz2 = 0x0002, NOUPLOAD, }, 164 [B2055_VCO_CAL10] = { .ghz5 = 0x0015, .ghz2 = 0x0015, NOUPLOAD, }, 165 [B2055_VCO_CAL11] = { .ghz5 = 0x0007, .ghz2 = 0x0007, NOUPLOAD, }, 166 [B2055_VCO_CAL12] = { .ghz5 = 0x0000, .ghz2 = 0x0000, NOUPLOAD, }, 167 [B2055_VCO_CAL13] = { .ghz5 = 0x0000, .ghz2 = 0x0000, NOUPLOAD, }, 168 [B2055_VCO_CAL14] = { .ghz5 = 0x0000, .ghz2 = 0x0000, NOUPLOAD, }, 169 [B2055_VCO_CAL15] = { .ghz5 = 0x0000, .ghz2 = 0x0000, NOUPLOAD, }, 170 [B2055_VCO_CAL16] = { .ghz5 = 0x0000, .ghz2 = 0x0000, NOUPLOAD, }, 171 [B2055_VCO_KVCO] = { .ghz5 = 0x0008, .ghz2 = 0x0008, NOUPLOAD, }, 172 [B2055_VCO_CAPTAIL] = { .ghz5 = 0x0008, .ghz2 = 0x0008, NOUPLOAD, }, 173 [B2055_VCO_IDACVCO] = { .ghz5 = 0x0006, .ghz2 = 0x0006, NOUPLOAD, }, 174 [B2055_VCO_REG] = { .ghz5 = 0x0084, .ghz2 = 0x0084, UPLOAD, }, 175 [B2055_PLL_RFVTH] = { .ghz5 = 0x00C3, .ghz2 = 0x00C3, NOUPLOAD, }, 176 [B2055_LGBUF_CENBUF] = { .ghz5 = 0x008F, .ghz2 = 0x008F, NOUPLOAD, }, 177 [B2055_LGEN_TUNE1] = { .ghz5 = 0x00FF, .ghz2 = 0x00FF, NOUPLOAD, }, 178 [B2055_LGEN_TUNE2] = { .ghz5 = 0x00FF, .ghz2 = 0x00FF, NOUPLOAD, }, 179 [B2055_LGEN_IDAC1] = { .ghz5 = 0x0088, .ghz2 = 0x0088, NOUPLOAD, }, 180 [B2055_LGEN_IDAC2] = { .ghz5 = 0x0088, .ghz2 = 0x0088, NOUPLOAD, }, 181 [B2055_LGEN_BIASC] = { .ghz5 = 0x0000, .ghz2 = 0x0000, NOUPLOAD, }, 182 [B2055_LGEN_BIASIDAC] = { .ghz5 = 0x00CC, .ghz2 = 0x00CC, NOUPLOAD, }, 183 [B2055_LGEN_RCAL] = { .ghz5 = 0x0006, .ghz2 = 0x0006, NOUPLOAD, }, 184 [B2055_LGEN_DIV] = { .ghz5 = 0x0080, .ghz2 = 0x0080, NOUPLOAD, }, 185 [B2055_LGEN_SPARE2] = { .ghz5 = 0x0080, .ghz2 = 0x0080, NOUPLOAD, }, 186 [B2055_C1_LGBUF_ATUNE] = { .ghz5 = 0x00F8, .ghz2 = 0x00F8, NOUPLOAD, }, 187 [B2055_C1_LGBUF_GTUNE] = { .ghz5 = 0x0088, .ghz2 = 0x0088, NOUPLOAD, }, 188 [B2055_C1_LGBUF_DIV] = { .ghz5 = 0x0088, .ghz2 = 0x0088, NOUPLOAD, }, 189 [B2055_C1_LGBUF_AIDAC] = { .ghz5 = 0x0088, .ghz2 = 0x0008, UPLOAD, }, 190 [B2055_C1_LGBUF_GIDAC] = { .ghz5 = 0x0088, .ghz2 = 0x0088, NOUPLOAD, }, 191 [B2055_C1_LGBUF_IDACFO] = { .ghz5 = 0x0000, .ghz2 = 0x0000, NOUPLOAD, }, 192 [B2055_C1_LGBUF_SPARE] = { .ghz5 = 0x0001, .ghz2 = 0x0001, UPLOAD, }, 193 [B2055_C1_RX_RFSPC1] = { .ghz5 = 0x008A, .ghz2 = 0x008A, NOUPLOAD, }, 194 [B2055_C1_RX_RFR1] = { .ghz5 = 0x0008, .ghz2 = 0x0008, NOUPLOAD, }, 195 [B2055_C1_RX_RFR2] = { .ghz5 = 0x0083, .ghz2 = 0x0083, NOUPLOAD, }, 196 [B2055_C1_RX_RFRCAL] = { .ghz5 = 0x0006, .ghz2 = 0x0006, NOUPLOAD, }, 197 [B2055_C1_RX_BB_BLCMP] = { .ghz5 = 0x00A0, .ghz2 = 0x00A0, NOUPLOAD, }, 198 [B2055_C1_RX_BB_LPF] = { .ghz5 = 0x000A, .ghz2 = 0x000A, NOUPLOAD, }, 199 [B2055_C1_RX_BB_MIDACHP] = { .ghz5 = 0x0087, .ghz2 = 0x0087, UPLOAD, }, 200 [B2055_C1_RX_BB_VGA1IDAC] = { .ghz5 = 0x002A, .ghz2 = 0x002A, NOUPLOAD, }, 201 [B2055_C1_RX_BB_VGA2IDAC] = { .ghz5 = 0x002A, .ghz2 = 0x002A, NOUPLOAD, }, 202 [B2055_C1_RX_BB_VGA3IDAC] = { .ghz5 = 0x002A, .ghz2 = 0x002A, NOUPLOAD, }, 203 [B2055_C1_RX_BB_BUFOCTL] = { .ghz5 = 0x002A, .ghz2 = 0x002A, NOUPLOAD, }, 204 [B2055_C1_RX_BB_RCCALCTL] = { .ghz5 = 0x0018, .ghz2 = 0x0018, NOUPLOAD, }, 205 [B2055_C1_RX_BB_RSSICTL1] = { .ghz5 = 0x006A, .ghz2 = 0x006A, UPLOAD, }, 206 [B2055_C1_RX_BB_RSSICTL2] = { .ghz5 = 0x00AB, .ghz2 = 0x00AB, UPLOAD, }, 207 [B2055_C1_RX_BB_RSSICTL3] = { .ghz5 = 0x0013, .ghz2 = 0x0013, UPLOAD, }, 208 [B2055_C1_RX_BB_RSSICTL4] = { .ghz5 = 0x00C1, .ghz2 = 0x00C1, UPLOAD, }, 209 [B2055_C1_RX_BB_RSSICTL5] = { .ghz5 = 0x00AA, .ghz2 = 0x00AA, UPLOAD, }, 210 [B2055_C1_RX_BB_REG] = { .ghz5 = 0x0087, .ghz2 = 0x0087, UPLOAD, }, 211 [B2055_C1_RX_BB_SPARE1] = { .ghz5 = 0x0000, .ghz2 = 0x0000, NOUPLOAD, }, 212 [B2055_C1_RX_TXBBRCAL] = { .ghz5 = 0x0006, .ghz2 = 0x0006, NOUPLOAD, }, 213 [B2055_C1_TX_RF_SPGA] = { .ghz5 = 0x0007, .ghz2 = 0x0007, NOUPLOAD, }, 214 [B2055_C1_TX_RF_SPAD] = { .ghz5 = 0x0007, .ghz2 = 0x0007, NOUPLOAD, }, 215 [B2055_C1_TX_RF_CNTPGA1] = { .ghz5 = 0x0015, .ghz2 = 0x0015, NOUPLOAD, }, 216 [B2055_C1_TX_RF_CNTPAD1] = { .ghz5 = 0x0055, .ghz2 = 0x0055, NOUPLOAD, }, 217 [B2055_C1_TX_RF_PGAIDAC] = { .ghz5 = 0x0097, .ghz2 = 0x0097, UPLOAD, }, 218 [B2055_C1_TX_PGAPADTN] = { .ghz5 = 0x0008, .ghz2 = 0x0008, NOUPLOAD, }, 219 [B2055_C1_TX_PADIDAC1] = { .ghz5 = 0x0014, .ghz2 = 0x0014, UPLOAD, }, 220 [B2055_C1_TX_PADIDAC2] = { .ghz5 = 0x0033, .ghz2 = 0x0033, NOUPLOAD, }, 221 [B2055_C1_TX_MXBGTRIM] = { .ghz5 = 0x0088, .ghz2 = 0x0088, NOUPLOAD, }, 222 [B2055_C1_TX_RF_RCAL] = { .ghz5 = 0x0006, .ghz2 = 0x0006, NOUPLOAD, }, 223 [B2055_C1_TX_RF_PADTSSI1] = { .ghz5 = 0x0003, .ghz2 = 0x0003, UPLOAD, }, 224 [B2055_C1_TX_RF_PADTSSI2] = { .ghz5 = 0x000A, .ghz2 = 0x000A, NOUPLOAD, }, 225 [B2055_C1_TX_RF_SPARE] = { .ghz5 = 0x0003, .ghz2 = 0x0003, UPLOAD, }, 226 [B2055_C1_TX_RF_IQCAL1] = { .ghz5 = 0x002A, .ghz2 = 0x002A, NOUPLOAD, }, 227 [B2055_C1_TX_RF_IQCAL2] = { .ghz5 = 0x00A4, .ghz2 = 0x00A4, NOUPLOAD, }, 228 [B2055_C1_TXBB_RCCAL] = { .ghz5 = 0x0018, .ghz2 = 0x0018, NOUPLOAD, }, 229 [B2055_C1_TXBB_LPF1] = { .ghz5 = 0x0028, .ghz2 = 0x0028, NOUPLOAD, }, 230 [B2055_C1_TX_VOSCNCL] = { .ghz5 = 0x0000, .ghz2 = 0x0000, NOUPLOAD, }, 231 [B2055_C1_TX_LPF_MXGMIDAC] = { .ghz5 = 0x004A, .ghz2 = 0x004A, NOUPLOAD, }, 232 [B2055_C1_TX_BB_MXGM] = { .ghz5 = 0x0000, .ghz2 = 0x0000, NOUPLOAD, }, 233 [B2055_C2_LGBUF_ATUNE] = { .ghz5 = 0x00F8, .ghz2 = 0x00F8, NOUPLOAD, }, 234 [B2055_C2_LGBUF_GTUNE] = { .ghz5 = 0x0088, .ghz2 = 0x0088, NOUPLOAD, }, 235 [B2055_C2_LGBUF_DIV] = { .ghz5 = 0x0088, .ghz2 = 0x0088, NOUPLOAD, }, 236 [B2055_C2_LGBUF_AIDAC] = { .ghz5 = 0x0088, .ghz2 = 0x0008, UPLOAD, }, 237 [B2055_C2_LGBUF_GIDAC] = { .ghz5 = 0x0088, .ghz2 = 0x0088, NOUPLOAD, }, 238 [B2055_C2_LGBUF_IDACFO] = { .ghz5 = 0x0000, .ghz2 = 0x0000, NOUPLOAD, }, 239 [B2055_C2_LGBUF_SPARE] = { .ghz5 = 0x0001, .ghz2 = 0x0001, UPLOAD, }, 240 [B2055_C2_RX_RFSPC1] = { .ghz5 = 0x008A, .ghz2 = 0x008A, NOUPLOAD, }, 241 [B2055_C2_RX_RFR1] = { .ghz5 = 0x0008, .ghz2 = 0x0008, NOUPLOAD, }, 242 [B2055_C2_RX_RFR2] = { .ghz5 = 0x0083, .ghz2 = 0x0083, NOUPLOAD, }, 243 [B2055_C2_RX_RFRCAL] = { .ghz5 = 0x0006, .ghz2 = 0x0006, NOUPLOAD, }, 244 [B2055_C2_RX_BB_BLCMP] = { .ghz5 = 0x00A0, .ghz2 = 0x00A0, NOUPLOAD, }, 245 [B2055_C2_RX_BB_LPF] = { .ghz5 = 0x000A, .ghz2 = 0x000A, NOUPLOAD, }, 246 [B2055_C2_RX_BB_MIDACHP] = { .ghz5 = 0x0087, .ghz2 = 0x0087, UPLOAD, }, 247 [B2055_C2_RX_BB_VGA1IDAC] = { .ghz5 = 0x002A, .ghz2 = 0x002A, NOUPLOAD, }, 248 [B2055_C2_RX_BB_VGA2IDAC] = { .ghz5 = 0x002A, .ghz2 = 0x002A, NOUPLOAD, }, 249 [B2055_C2_RX_BB_VGA3IDAC] = { .ghz5 = 0x002A, .ghz2 = 0x002A, NOUPLOAD, }, 250 [B2055_C2_RX_BB_BUFOCTL] = { .ghz5 = 0x002A, .ghz2 = 0x002A, NOUPLOAD, }, 251 [B2055_C2_RX_BB_RCCALCTL] = { .ghz5 = 0x0018, .ghz2 = 0x0018, NOUPLOAD, }, 252 [B2055_C2_RX_BB_RSSICTL1] = { .ghz5 = 0x006A, .ghz2 = 0x006A, UPLOAD, }, 253 [B2055_C2_RX_BB_RSSICTL2] = { .ghz5 = 0x00AB, .ghz2 = 0x00AB, UPLOAD, }, 254 [B2055_C2_RX_BB_RSSICTL3] = { .ghz5 = 0x0013, .ghz2 = 0x0013, UPLOAD, }, 255 [B2055_C2_RX_BB_RSSICTL4] = { .ghz5 = 0x00C1, .ghz2 = 0x00C1, UPLOAD, }, 256 [B2055_C2_RX_BB_RSSICTL5] = { .ghz5 = 0x00AA, .ghz2 = 0x00AA, UPLOAD, }, 257 [B2055_C2_RX_BB_REG] = { .ghz5 = 0x0087, .ghz2 = 0x0087, UPLOAD, }, 258 [B2055_C2_RX_BB_SPARE1] = { .ghz5 = 0x0000, .ghz2 = 0x0000, NOUPLOAD, }, 259 [B2055_C2_RX_TXBBRCAL] = { .ghz5 = 0x0006, .ghz2 = 0x0006, NOUPLOAD, }, 260 [B2055_C2_TX_RF_SPGA] = { .ghz5 = 0x0007, .ghz2 = 0x0007, NOUPLOAD, }, 261 [B2055_C2_TX_RF_SPAD] = { .ghz5 = 0x0007, .ghz2 = 0x0007, NOUPLOAD, }, 262 [B2055_C2_TX_RF_CNTPGA1] = { .ghz5 = 0x0015, .ghz2 = 0x0015, NOUPLOAD, }, 263 [B2055_C2_TX_RF_CNTPAD1] = { .ghz5 = 0x0055, .ghz2 = 0x0055, NOUPLOAD, }, 264 [B2055_C2_TX_RF_PGAIDAC] = { .ghz5 = 0x0097, .ghz2 = 0x0097, UPLOAD, }, 265 [B2055_C2_TX_PGAPADTN] = { .ghz5 = 0x0008, .ghz2 = 0x0008, NOUPLOAD, }, 266 [B2055_C2_TX_PADIDAC1] = { .ghz5 = 0x0014, .ghz2 = 0x0014, UPLOAD, }, 267 [B2055_C2_TX_PADIDAC2] = { .ghz5 = 0x0033, .ghz2 = 0x0033, NOUPLOAD, }, 268 [B2055_C2_TX_MXBGTRIM] = { .ghz5 = 0x0088, .ghz2 = 0x0088, NOUPLOAD, }, 269 [B2055_C2_TX_RF_RCAL] = { .ghz5 = 0x0006, .ghz2 = 0x0006, NOUPLOAD, }, 270 [B2055_C2_TX_RF_PADTSSI1] = { .ghz5 = 0x0003, .ghz2 = 0x0003, UPLOAD, }, 271 [B2055_C2_TX_RF_PADTSSI2] = { .ghz5 = 0x000A, .ghz2 = 0x000A, NOUPLOAD, }, 272 [B2055_C2_TX_RF_SPARE] = { .ghz5 = 0x0003, .ghz2 = 0x0003, UPLOAD, }, 273 [B2055_C2_TX_RF_IQCAL1] = { .ghz5 = 0x002A, .ghz2 = 0x002A, NOUPLOAD, }, 274 [B2055_C2_TX_RF_IQCAL2] = { .ghz5 = 0x00A4, .ghz2 = 0x00A4, NOUPLOAD, }, 275 [B2055_C2_TXBB_RCCAL] = { .ghz5 = 0x0018, .ghz2 = 0x0018, NOUPLOAD, }, 276 [B2055_C2_TXBB_LPF1] = { .ghz5 = 0x0028, .ghz2 = 0x0028, NOUPLOAD, }, 277 [B2055_C2_TX_VOSCNCL] = { .ghz5 = 0x0000, .ghz2 = 0x0000, NOUPLOAD, }, 278 [B2055_C2_TX_LPF_MXGMIDAC] = { .ghz5 = 0x004A, .ghz2 = 0x004A, NOUPLOAD, }, 279 [B2055_C2_TX_BB_MXGM] = { .ghz5 = 0x0000, .ghz2 = 0x0000, NOUPLOAD, }, 280 [B2055_PRG_GCHP21] = { .ghz5 = 0x0071, .ghz2 = 0x0071, NOUPLOAD, }, 281 [B2055_PRG_GCHP22] = { .ghz5 = 0x0072, .ghz2 = 0x0072, NOUPLOAD, }, 282 [B2055_PRG_GCHP23] = { .ghz5 = 0x0073, .ghz2 = 0x0073, NOUPLOAD, }, 283 [B2055_PRG_GCHP24] = { .ghz5 = 0x0074, .ghz2 = 0x0074, NOUPLOAD, }, 284 [B2055_PRG_GCHP25] = { .ghz5 = 0x0075, .ghz2 = 0x0075, NOUPLOAD, }, 285 [B2055_PRG_GCHP26] = { .ghz5 = 0x0076, .ghz2 = 0x0076, NOUPLOAD, }, 286 [B2055_PRG_GCHP27] = { .ghz5 = 0x0077, .ghz2 = 0x0077, NOUPLOAD, }, 287 [B2055_PRG_GCHP28] = { .ghz5 = 0x0078, .ghz2 = 0x0078, NOUPLOAD, }, 288 [B2055_PRG_GCHP29] = { .ghz5 = 0x0079, .ghz2 = 0x0079, NOUPLOAD, }, 289 [B2055_PRG_GCHP30] = { .ghz5 = 0x007A, .ghz2 = 0x007A, NOUPLOAD, }, 290 [0xC7] = { .ghz5 = 0x0000, .ghz2 = 0x0000, NOUPLOAD, }, 291 [0xC8] = { .ghz5 = 0x0000, .ghz2 = 0x0000, NOUPLOAD, }, 292 [0xC9] = { .ghz5 = 0x0000, .ghz2 = 0x0000, NOUPLOAD, }, 293 [0xCA] = { .ghz5 = 0x0000, .ghz2 = 0x0000, NOUPLOAD, }, 294 [0xCB] = { .ghz5 = 0x0000, .ghz2 = 0x0000, NOUPLOAD, }, 295 [0xCC] = { .ghz5 = 0x0000, .ghz2 = 0x0000, NOUPLOAD, }, 296 [B2055_C1_LNA_GAINBST] = { .ghz5 = 0x0000, .ghz2 = 0x0000, NOUPLOAD, }, 297 [0xCE] = { .ghz5 = 0x0006, .ghz2 = 0x0006, NOUPLOAD, }, 298 [0xCF] = { .ghz5 = 0x0000, .ghz2 = 0x0000, NOUPLOAD, }, 299 [0xD0] = { .ghz5 = 0x0000, .ghz2 = 0x0000, NOUPLOAD, }, 300 [0xD1] = { .ghz5 = 0x0018, .ghz2 = 0x0018, NOUPLOAD, }, 301 [B2055_C1_B0NB_RSSIVCM] = { .ghz5 = 0x0088, .ghz2 = 0x0088, NOUPLOAD, }, 302 [0xD3] = { .ghz5 = 0x0000, .ghz2 = 0x0000, NOUPLOAD, }, 303 [0xD4] = { .ghz5 = 0x0000, .ghz2 = 0x0000, NOUPLOAD, }, 304 [0xD5] = { .ghz5 = 0x0000, .ghz2 = 0x0000, NOUPLOAD, }, 305 [B2055_C1_GENSPARE2] = { .ghz5 = 0x0000, .ghz2 = 0x0000, NOUPLOAD, }, 306 [0xD7] = { .ghz5 = 0x0000, .ghz2 = 0x0000, NOUPLOAD, }, 307 [0xD8] = { .ghz5 = 0x0000, .ghz2 = 0x0000, NOUPLOAD, }, 308 [B2055_C2_LNA_GAINBST] = { .ghz5 = 0x0000, .ghz2 = 0x0000, NOUPLOAD, }, 309 [0xDA] = { .ghz5 = 0x0006, .ghz2 = 0x0006, NOUPLOAD, }, 310 [0xDB] = { .ghz5 = 0x0000, .ghz2 = 0x0000, NOUPLOAD, }, 311 [0xDC] = { .ghz5 = 0x0000, .ghz2 = 0x0000, NOUPLOAD, }, 312 [0xDD] = { .ghz5 = 0x0018, .ghz2 = 0x0018, NOUPLOAD, }, 313 [B2055_C2_B0NB_RSSIVCM] = { .ghz5 = 0x0088, .ghz2 = 0x0088, NOUPLOAD, }, 314 [0xDF] = { .ghz5 = 0x0000, .ghz2 = 0x0000, NOUPLOAD, }, 315 [0xE0] = { .ghz5 = 0x0000, .ghz2 = 0x0000, NOUPLOAD, }, 316 [0xE1] = { .ghz5 = 0x0000, .ghz2 = 0x0000, NOUPLOAD, }, 317 [B2055_C2_GENSPARE2] = { .ghz5 = 0x0000, .ghz2 = 0x0000, NOUPLOAD, }, 318}; 319 320#define RADIOREGS(r0, r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, r11, \ 321 r12, r13, r14, r15, r16, r17, r18, r19, r20, r21) \ 322 .radio_pll_ref = r0, \ 323 .radio_rf_pllmod0 = r1, \ 324 .radio_rf_pllmod1 = r2, \ 325 .radio_vco_captail = r3, \ 326 .radio_vco_cal1 = r4, \ 327 .radio_vco_cal2 = r5, \ 328 .radio_pll_lfc1 = r6, \ 329 .radio_pll_lfr1 = r7, \ 330 .radio_pll_lfc2 = r8, \ 331 .radio_lgbuf_cenbuf = r9, \ 332 .radio_lgen_tune1 = r10, \ 333 .radio_lgen_tune2 = r11, \ 334 .radio_c1_lgbuf_atune = r12, \ 335 .radio_c1_lgbuf_gtune = r13, \ 336 .radio_c1_rx_rfr1 = r14, \ 337 .radio_c1_tx_pgapadtn = r15, \ 338 .radio_c1_tx_mxbgtrim = r16, \ 339 .radio_c2_lgbuf_atune = r17, \ 340 .radio_c2_lgbuf_gtune = r18, \ 341 .radio_c2_rx_rfr1 = r19, \ 342 .radio_c2_tx_pgapadtn = r20, \ 343 .radio_c2_tx_mxbgtrim = r21 344 345#define PHYREGS(r0, r1, r2, r3, r4, r5) \ 346 .phy_regs.phy_bw1a = r0, \ 347 .phy_regs.phy_bw2 = r1, \ 348 .phy_regs.phy_bw3 = r2, \ 349 .phy_regs.phy_bw4 = r3, \ 350 .phy_regs.phy_bw5 = r4, \ 351 .phy_regs.phy_bw6 = r5 352 353static const struct bwn_nphy_channeltab_entry_rev2 bwn_nphy_channeltab_rev2[] = { 354 { .channel = 184, 355 .freq = 4920, /* MHz */ 356 .unk2 = 3280, 357 RADIOREGS(0x71, 0xEC, 0x01, 0x0F, 0xFF, 0x01, 0x04, 0x0A, 358 0x00, 0x8F, 0xFF, 0xFF, 0xFF, 0x00, 0x0F, 0x0F, 359 0x8F, 0xFF, 0x00, 0x0F, 0x0F, 0x8F), 360 PHYREGS(0x07B4, 0x07B0, 0x07AC, 0x0214, 0x0215, 0x0216), 361 }, 362 { .channel = 186, 363 .freq = 4930, /* MHz */ 364 .unk2 = 3287, 365 RADIOREGS(0x71, 0xED, 0x01, 0x0F, 0xFF, 0x01, 0x04, 0x0A, 366 0x00, 0x8F, 0xFF, 0xFF, 0xFF, 0x00, 0x0F, 0x0F, 367 0x8F, 0xFF, 0x00, 0x0F, 0x0F, 0x8F), 368 PHYREGS(0x07B8, 0x07B4, 0x07B0, 0x0213, 0x0214, 0x0215), 369 }, 370 { .channel = 188, 371 .freq = 4940, /* MHz */ 372 .unk2 = 3293, 373 RADIOREGS(0x71, 0xEE, 0x01, 0x0F, 0xFF, 0x01, 0x04, 0x0A, 374 0x00, 0x8F, 0xEE, 0xEE, 0xFF, 0x00, 0x0F, 0x0F, 375 0x8F, 0xFF, 0x00, 0x0F, 0x0F, 0x8F), 376 PHYREGS(0x07BC, 0x07B8, 0x07B4, 0x0212, 0x0213, 0x0214), 377 }, 378 { .channel = 190, 379 .freq = 4950, /* MHz */ 380 .unk2 = 3300, 381 RADIOREGS(0x71, 0xEF, 0x01, 0x0F, 0xFF, 0x01, 0x04, 0x0A, 382 0x00, 0x8F, 0xEE, 0xEE, 0xFF, 0x00, 0x0F, 0x0F, 383 0x8F, 0xFF, 0x00, 0x0F, 0x0F, 0x8F), 384 PHYREGS(0x07C0, 0x07BC, 0x07B8, 0x0211, 0x0212, 0x0213), 385 }, 386 { .channel = 192, 387 .freq = 4960, /* MHz */ 388 .unk2 = 3307, 389 RADIOREGS(0x71, 0xF0, 0x01, 0x0F, 0xFF, 0x01, 0x04, 0x0A, 390 0x00, 0x8F, 0xEE, 0xEE, 0xFF, 0x00, 0x0F, 0x0F, 391 0x8F, 0xFF, 0x00, 0x0F, 0x0F, 0x8F), 392 PHYREGS(0x07C4, 0x07C0, 0x07BC, 0x020F, 0x0211, 0x0212), 393 }, 394 { .channel = 194, 395 .freq = 4970, /* MHz */ 396 .unk2 = 3313, 397 RADIOREGS(0x71, 0xF1, 0x01, 0x0F, 0xFF, 0x01, 0x04, 0x0A, 398 0x00, 0x8F, 0xEE, 0xEE, 0xFF, 0x00, 0x0F, 0x0F, 399 0x8F, 0xFF, 0x00, 0x0F, 0x0F, 0x8F), 400 PHYREGS(0x07C8, 0x07C4, 0x07C0, 0x020E, 0x020F, 0x0211), 401 }, 402 { .channel = 196, 403 .freq = 4980, /* MHz */ 404 .unk2 = 3320, 405 RADIOREGS(0x71, 0xF2, 0x01, 0x0E, 0xFF, 0x01, 0x04, 0x0A, 406 0x00, 0x8F, 0xDD, 0xDD, 0xFF, 0x00, 0x0F, 0x0F, 407 0x8F, 0xFF, 0x00, 0x0F, 0x0F, 0x8F), 408 PHYREGS(0x07CC, 0x07C8, 0x07C4, 0x020D, 0x020E, 0x020F), 409 }, 410 { .channel = 198, 411 .freq = 4990, /* MHz */ 412 .unk2 = 3327, 413 RADIOREGS(0x71, 0xF3, 0x01, 0x0E, 0xFF, 0x01, 0x04, 0x0A, 414 0x00, 0x8F, 0xDD, 0xDD, 0xFF, 0x00, 0x0F, 0x0F, 415 0x8F, 0xFF, 0x00, 0x0F, 0x0F, 0x8F), 416 PHYREGS(0x07D0, 0x07CC, 0x07C8, 0x020C, 0x020D, 0x020E), 417 }, 418 { .channel = 200, 419 .freq = 5000, /* MHz */ 420 .unk2 = 3333, 421 RADIOREGS(0x71, 0xF4, 0x01, 0x0E, 0xFF, 0x01, 0x04, 0x0A, 422 0x00, 0x8F, 0xDD, 0xDD, 0xFF, 0x00, 0x0F, 0x0F, 423 0x8F, 0xFF, 0x00, 0x0F, 0x0F, 0x8F), 424 PHYREGS(0x07D4, 0x07D0, 0x07CC, 0x020B, 0x020C, 0x020D), 425 }, 426 { .channel = 202, 427 .freq = 5010, /* MHz */ 428 .unk2 = 3340, 429 RADIOREGS(0x71, 0xF5, 0x01, 0x0E, 0xFF, 0x01, 0x04, 0x0A, 430 0x00, 0x8F, 0xDD, 0xDD, 0xFF, 0x00, 0x0F, 0x0F, 431 0x8F, 0xFF, 0x00, 0x0F, 0x0F, 0x8F), 432 PHYREGS(0x07D8, 0x07D4, 0x07D0, 0x020A, 0x020B, 0x020C), 433 }, 434 { .channel = 204, 435 .freq = 5020, /* MHz */ 436 .unk2 = 3347, 437 RADIOREGS(0x71, 0xF6, 0x01, 0x0E, 0xF7, 0x01, 0x04, 0x0A, 438 0x00, 0x8F, 0xCC, 0xCC, 0xFF, 0x00, 0x0F, 0x0F, 439 0x8F, 0xFF, 0x00, 0x0F, 0x0F, 0x8F), 440 PHYREGS(0x07DC, 0x07D8, 0x07D4, 0x0209, 0x020A, 0x020B), 441 }, 442 { .channel = 206, 443 .freq = 5030, /* MHz */ 444 .unk2 = 3353, 445 RADIOREGS(0x71, 0xF7, 0x01, 0x0E, 0xF7, 0x01, 0x04, 0x0A, 446 0x00, 0x8F, 0xCC, 0xCC, 0xFF, 0x00, 0x0F, 0x0F, 447 0x8F, 0xFF, 0x00, 0x0F, 0x0F, 0x8F), 448 PHYREGS(0x07E0, 0x07DC, 0x07D8, 0x0208, 0x0209, 0x020A), 449 }, 450 { .channel = 208, 451 .freq = 5040, /* MHz */ 452 .unk2 = 3360, 453 RADIOREGS(0x71, 0xF8, 0x01, 0x0D, 0xEF, 0x01, 0x04, 0x0A, 454 0x00, 0x8F, 0xCC, 0xCC, 0xFF, 0x00, 0x0F, 0x0F, 455 0x8F, 0xFF, 0x00, 0x0F, 0x0F, 0x8F), 456 PHYREGS(0x07E4, 0x07E0, 0x07DC, 0x0207, 0x0208, 0x0209), 457 }, 458 { .channel = 210, 459 .freq = 5050, /* MHz */ 460 .unk2 = 3367, 461 RADIOREGS(0x71, 0xF9, 0x01, 0x0D, 0xEF, 0x01, 0x04, 0x0A, 462 0x00, 0x8F, 0xCC, 0xCC, 0xFF, 0x00, 0x0F, 0x0F, 463 0x8F, 0xFF, 0x00, 0x0F, 0x0F, 0x8F), 464 PHYREGS(0x07E8, 0x07E4, 0x07E0, 0x0206, 0x0207, 0x0208), 465 }, 466 { .channel = 212, 467 .freq = 5060, /* MHz */ 468 .unk2 = 3373, 469 RADIOREGS(0x71, 0xFA, 0x01, 0x0D, 0xE6, 0x01, 0x04, 0x0A, 470 0x00, 0x8F, 0xBB, 0xBB, 0xFF, 0x00, 0x0E, 0x0F, 471 0x8E, 0xFF, 0x00, 0x0E, 0x0F, 0x8E), 472 PHYREGS(0x07EC, 0x07E8, 0x07E4, 0x0205, 0x0206, 0x0207), 473 }, 474 { .channel = 214, 475 .freq = 5070, /* MHz */ 476 .unk2 = 3380, 477 RADIOREGS(0x71, 0xFB, 0x01, 0x0D, 0xE6, 0x01, 0x04, 0x0A, 478 0x00, 0x8F, 0xBB, 0xBB, 0xFF, 0x00, 0x0E, 0x0F, 479 0x8E, 0xFF, 0x00, 0x0E, 0x0F, 0x8E), 480 PHYREGS(0x07F0, 0x07EC, 0x07E8, 0x0204, 0x0205, 0x0206), 481 }, 482 { .channel = 216, 483 .freq = 5080, /* MHz */ 484 .unk2 = 3387, 485 RADIOREGS(0x71, 0xFC, 0x01, 0x0D, 0xDE, 0x01, 0x04, 0x0A, 486 0x00, 0x8E, 0xBB, 0xBB, 0xEE, 0x00, 0x0E, 0x0F, 487 0x8D, 0xEE, 0x00, 0x0E, 0x0F, 0x8D), 488 PHYREGS(0x07F4, 0x07F0, 0x07EC, 0x0203, 0x0204, 0x0205), 489 }, 490 { .channel = 218, 491 .freq = 5090, /* MHz */ 492 .unk2 = 3393, 493 RADIOREGS(0x71, 0xFD, 0x01, 0x0D, 0xDE, 0x01, 0x04, 0x0A, 494 0x00, 0x8E, 0xBB, 0xBB, 0xEE, 0x00, 0x0E, 0x0F, 495 0x8D, 0xEE, 0x00, 0x0E, 0x0F, 0x8D), 496 PHYREGS(0x07F8, 0x07F4, 0x07F0, 0x0202, 0x0203, 0x0204), 497 }, 498 { .channel = 220, 499 .freq = 5100, /* MHz */ 500 .unk2 = 3400, 501 RADIOREGS(0x71, 0xFE, 0x01, 0x0C, 0xD6, 0x01, 0x04, 0x0A, 502 0x00, 0x8E, 0xAA, 0xAA, 0xEE, 0x00, 0x0D, 0x0F, 503 0x8D, 0xEE, 0x00, 0x0D, 0x0F, 0x8D), 504 PHYREGS(0x07FC, 0x07F8, 0x07F4, 0x0201, 0x0202, 0x0203), 505 }, 506 { .channel = 222, 507 .freq = 5110, /* MHz */ 508 .unk2 = 3407, 509 RADIOREGS(0x71, 0xFF, 0x01, 0x0C, 0xD6, 0x01, 0x04, 0x0A, 510 0x00, 0x8E, 0xAA, 0xAA, 0xEE, 0x00, 0x0D, 0x0F, 511 0x8D, 0xEE, 0x00, 0x0D, 0x0F, 0x8D), 512 PHYREGS(0x0800, 0x07FC, 0x07F8, 0x0200, 0x0201, 0x0202), 513 }, 514 { .channel = 224, 515 .freq = 5120, /* MHz */ 516 .unk2 = 3413, 517 RADIOREGS(0x71, 0x00, 0x02, 0x0C, 0xCE, 0x01, 0x04, 0x0A, 518 0x00, 0x8D, 0xAA, 0xAA, 0xDD, 0x00, 0x0D, 0x0F, 519 0x8C, 0xDD, 0x00, 0x0D, 0x0F, 0x8C), 520 PHYREGS(0x0804, 0x0800, 0x07FC, 0x01FF, 0x0200, 0x0201), 521 }, 522 { .channel = 226, 523 .freq = 5130, /* MHz */ 524 .unk2 = 3420, 525 RADIOREGS(0x71, 0x01, 0x02, 0x0C, 0xCE, 0x01, 0x04, 0x0A, 526 0x00, 0x8D, 0xAA, 0xAA, 0xDD, 0x00, 0x0D, 0x0F, 527 0x8C, 0xDD, 0x00, 0x0D, 0x0F, 0x8C), 528 PHYREGS(0x0808, 0x0804, 0x0800, 0x01FE, 0x01FF, 0x0200), 529 }, 530 { .channel = 228, 531 .freq = 5140, /* MHz */ 532 .unk2 = 3427, 533 RADIOREGS(0x71, 0x02, 0x02, 0x0C, 0xC6, 0x01, 0x04, 0x0A, 534 0x00, 0x8D, 0x99, 0x99, 0xDD, 0x00, 0x0C, 0x0E, 535 0x8B, 0xDD, 0x00, 0x0C, 0x0E, 0x8B), 536 PHYREGS(0x080C, 0x0808, 0x0804, 0x01FD, 0x01FE, 0x01FF), 537 }, 538 { .channel = 32, 539 .freq = 5160, /* MHz */ 540 .unk2 = 3440, 541 RADIOREGS(0x71, 0x04, 0x02, 0x0B, 0xBE, 0x01, 0x04, 0x0A, 542 0x00, 0x8C, 0x99, 0x99, 0xCC, 0x00, 0x0B, 0x0D, 543 0x8A, 0xCC, 0x00, 0x0B, 0x0D, 0x8A), 544 PHYREGS(0x0814, 0x0810, 0x080C, 0x01FB, 0x01FC, 0x01FD), 545 }, 546 { .channel = 34, 547 .freq = 5170, /* MHz */ 548 .unk2 = 3447, 549 RADIOREGS(0x71, 0x05, 0x02, 0x0B, 0xBE, 0x01, 0x04, 0x0A, 550 0x00, 0x8C, 0x99, 0x99, 0xCC, 0x00, 0x0B, 0x0D, 551 0x8A, 0xCC, 0x00, 0x0B, 0x0D, 0x8A), 552 PHYREGS(0x0818, 0x0814, 0x0810, 0x01FA, 0x01FB, 0x01FC), 553 }, 554 { .channel = 36, 555 .freq = 5180, /* MHz */ 556 .unk2 = 3453, 557 RADIOREGS(0x71, 0x06, 0x02, 0x0B, 0xB6, 0x01, 0x04, 0x0A, 558 0x00, 0x8C, 0x88, 0x88, 0xCC, 0x00, 0x0B, 0x0C, 559 0x89, 0xCC, 0x00, 0x0B, 0x0C, 0x89), 560 PHYREGS(0x081C, 0x0818, 0x0814, 0x01F9, 0x01FA, 0x01FB), 561 }, 562 { .channel = 38, 563 .freq = 5190, /* MHz */ 564 .unk2 = 3460, 565 RADIOREGS(0x71, 0x07, 0x02, 0x0B, 0xB6, 0x01, 0x04, 0x0A, 566 0x00, 0x8C, 0x88, 0x88, 0xCC, 0x00, 0x0B, 0x0C, 567 0x89, 0xCC, 0x00, 0x0B, 0x0C, 0x89), 568 PHYREGS(0x0820, 0x081C, 0x0818, 0x01F8, 0x01F9, 0x01FA), 569 }, 570 { .channel = 40, 571 .freq = 5200, /* MHz */ 572 .unk2 = 3467, 573 RADIOREGS(0x71, 0x08, 0x02, 0x0B, 0xAF, 0x01, 0x04, 0x0A, 574 0x00, 0x8B, 0x88, 0x88, 0xBB, 0x00, 0x0A, 0x0B, 575 0x89, 0xBB, 0x00, 0x0A, 0x0B, 0x89), 576 PHYREGS(0x0824, 0x0820, 0x081C, 0x01F7, 0x01F8, 0x01F9), 577 }, 578 { .channel = 42, 579 .freq = 5210, /* MHz */ 580 .unk2 = 3473, 581 RADIOREGS(0x71, 0x09, 0x02, 0x0B, 0xAF, 0x01, 0x04, 0x0A, 582 0x00, 0x8B, 0x88, 0x88, 0xBB, 0x00, 0x0A, 0x0B, 583 0x89, 0xBB, 0x00, 0x0A, 0x0B, 0x89), 584 PHYREGS(0x0828, 0x0824, 0x0820, 0x01F6, 0x01F7, 0x01F8), 585 }, 586 { .channel = 44, 587 .freq = 5220, /* MHz */ 588 .unk2 = 3480, 589 RADIOREGS(0x71, 0x0A, 0x02, 0x0A, 0xA7, 0x01, 0x04, 0x0A, 590 0x00, 0x8B, 0x77, 0x77, 0xBB, 0x00, 0x09, 0x0A, 591 0x88, 0xBB, 0x00, 0x09, 0x0A, 0x88), 592 PHYREGS(0x082C, 0x0828, 0x0824, 0x01F5, 0x01F6, 0x01F7), 593 }, 594 { .channel = 46, 595 .freq = 5230, /* MHz */ 596 .unk2 = 3487, 597 RADIOREGS(0x71, 0x0B, 0x02, 0x0A, 0xA7, 0x01, 0x04, 0x0A, 598 0x00, 0x8B, 0x77, 0x77, 0xBB, 0x00, 0x09, 0x0A, 599 0x88, 0xBB, 0x00, 0x09, 0x0A, 0x88), 600 PHYREGS(0x0830, 0x082C, 0x0828, 0x01F4, 0x01F5, 0x01F6), 601 }, 602 { .channel = 48, 603 .freq = 5240, /* MHz */ 604 .unk2 = 3493, 605 RADIOREGS(0x71, 0x0C, 0x02, 0x0A, 0xA0, 0x01, 0x04, 0x0A, 606 0x00, 0x8A, 0x77, 0x77, 0xAA, 0x00, 0x09, 0x0A, 607 0x87, 0xAA, 0x00, 0x09, 0x0A, 0x87), 608 PHYREGS(0x0834, 0x0830, 0x082C, 0x01F3, 0x01F4, 0x01F5), 609 }, 610 { .channel = 50, 611 .freq = 5250, /* MHz */ 612 .unk2 = 3500, 613 RADIOREGS(0x71, 0x0D, 0x02, 0x0A, 0xA0, 0x01, 0x04, 0x0A, 614 0x00, 0x8A, 0x77, 0x77, 0xAA, 0x00, 0x09, 0x0A, 615 0x87, 0xAA, 0x00, 0x09, 0x0A, 0x87), 616 PHYREGS(0x0838, 0x0834, 0x0830, 0x01F2, 0x01F3, 0x01F4), 617 }, 618 { .channel = 52, 619 .freq = 5260, /* MHz */ 620 .unk2 = 3507, 621 RADIOREGS(0x71, 0x0E, 0x02, 0x0A, 0x98, 0x01, 0x04, 0x0A, 622 0x00, 0x8A, 0x66, 0x66, 0xAA, 0x00, 0x08, 0x09, 623 0x87, 0xAA, 0x00, 0x08, 0x09, 0x87), 624 PHYREGS(0x083C, 0x0838, 0x0834, 0x01F1, 0x01F2, 0x01F3), 625 }, 626 { .channel = 54, 627 .freq = 5270, /* MHz */ 628 .unk2 = 3513, 629 RADIOREGS(0x71, 0x0F, 0x02, 0x0A, 0x98, 0x01, 0x04, 0x0A, 630 0x00, 0x8A, 0x66, 0x66, 0xAA, 0x00, 0x08, 0x09, 631 0x87, 0xAA, 0x00, 0x08, 0x09, 0x87), 632 PHYREGS(0x0840, 0x083C, 0x0838, 0x01F0, 0x01F1, 0x01F2), 633 }, 634 { .channel = 56, 635 .freq = 5280, /* MHz */ 636 .unk2 = 3520, 637 RADIOREGS(0x71, 0x10, 0x02, 0x09, 0x91, 0x01, 0x04, 0x0A, 638 0x00, 0x89, 0x66, 0x66, 0x99, 0x00, 0x08, 0x08, 639 0x86, 0x99, 0x00, 0x08, 0x08, 0x86), 640 PHYREGS(0x0844, 0x0840, 0x083C, 0x01F0, 0x01F0, 0x01F1), 641 }, 642 { .channel = 58, 643 .freq = 5290, /* MHz */ 644 .unk2 = 3527, 645 RADIOREGS(0x71, 0x11, 0x02, 0x09, 0x91, 0x01, 0x04, 0x0A, 646 0x00, 0x89, 0x66, 0x66, 0x99, 0x00, 0x08, 0x08, 647 0x86, 0x99, 0x00, 0x08, 0x08, 0x86), 648 PHYREGS(0x0848, 0x0844, 0x0840, 0x01EF, 0x01F0, 0x01F0), 649 }, 650 { .channel = 60, 651 .freq = 5300, /* MHz */ 652 .unk2 = 3533, 653 RADIOREGS(0x71, 0x12, 0x02, 0x09, 0x8A, 0x01, 0x04, 0x0A, 654 0x00, 0x89, 0x55, 0x55, 0x99, 0x00, 0x08, 0x07, 655 0x85, 0x99, 0x00, 0x08, 0x07, 0x85), 656 PHYREGS(0x084C, 0x0848, 0x0844, 0x01EE, 0x01EF, 0x01F0), 657 }, 658 { .channel = 62, 659 .freq = 5310, /* MHz */ 660 .unk2 = 3540, 661 RADIOREGS(0x71, 0x13, 0x02, 0x09, 0x8A, 0x01, 0x04, 0x0A, 662 0x00, 0x89, 0x55, 0x55, 0x99, 0x00, 0x08, 0x07, 663 0x85, 0x99, 0x00, 0x08, 0x07, 0x85), 664 PHYREGS(0x0850, 0x084C, 0x0848, 0x01ED, 0x01EE, 0x01EF), 665 }, 666 { .channel = 64, 667 .freq = 5320, /* MHz */ 668 .unk2 = 3547, 669 RADIOREGS(0x71, 0x14, 0x02, 0x09, 0x83, 0x01, 0x04, 0x0A, 670 0x00, 0x88, 0x55, 0x55, 0x88, 0x00, 0x07, 0x07, 671 0x84, 0x88, 0x00, 0x07, 0x07, 0x84), 672 PHYREGS(0x0854, 0x0850, 0x084C, 0x01EC, 0x01ED, 0x01EE), 673 }, 674 { .channel = 66, 675 .freq = 5330, /* MHz */ 676 .unk2 = 3553, 677 RADIOREGS(0x71, 0x15, 0x02, 0x09, 0x83, 0x01, 0x04, 0x0A, 678 0x00, 0x88, 0x55, 0x55, 0x88, 0x00, 0x07, 0x07, 679 0x84, 0x88, 0x00, 0x07, 0x07, 0x84), 680 PHYREGS(0x0858, 0x0854, 0x0850, 0x01EB, 0x01EC, 0x01ED), 681 }, 682 { .channel = 68, 683 .freq = 5340, /* MHz */ 684 .unk2 = 3560, 685 RADIOREGS(0x71, 0x16, 0x02, 0x08, 0x7C, 0x01, 0x04, 0x0A, 686 0x00, 0x88, 0x44, 0x44, 0x88, 0x00, 0x07, 0x06, 687 0x84, 0x88, 0x00, 0x07, 0x06, 0x84), 688 PHYREGS(0x085C, 0x0858, 0x0854, 0x01EA, 0x01EB, 0x01EC), 689 }, 690 { .channel = 70, 691 .freq = 5350, /* MHz */ 692 .unk2 = 3567, 693 RADIOREGS(0x71, 0x17, 0x02, 0x08, 0x7C, 0x01, 0x04, 0x0A, 694 0x00, 0x88, 0x44, 0x44, 0x88, 0x00, 0x07, 0x06, 695 0x84, 0x88, 0x00, 0x07, 0x06, 0x84), 696 PHYREGS(0x0860, 0x085C, 0x0858, 0x01E9, 0x01EA, 0x01EB), 697 }, 698 { .channel = 72, 699 .freq = 5360, /* MHz */ 700 .unk2 = 3573, 701 RADIOREGS(0x71, 0x18, 0x02, 0x08, 0x75, 0x01, 0x04, 0x0A, 702 0x00, 0x87, 0x44, 0x44, 0x77, 0x00, 0x06, 0x05, 703 0x83, 0x77, 0x00, 0x06, 0x05, 0x83), 704 PHYREGS(0x0864, 0x0860, 0x085C, 0x01E8, 0x01E9, 0x01EA), 705 }, 706 { .channel = 74, 707 .freq = 5370, /* MHz */ 708 .unk2 = 3580, 709 RADIOREGS(0x71, 0x19, 0x02, 0x08, 0x75, 0x01, 0x04, 0x0A, 710 0x00, 0x87, 0x44, 0x44, 0x77, 0x00, 0x06, 0x05, 711 0x83, 0x77, 0x00, 0x06, 0x05, 0x83), 712 PHYREGS(0x0868, 0x0864, 0x0860, 0x01E7, 0x01E8, 0x01E9), 713 }, 714 { .channel = 76, 715 .freq = 5380, /* MHz */ 716 .unk2 = 3587, 717 RADIOREGS(0x71, 0x1A, 0x02, 0x08, 0x6E, 0x01, 0x04, 0x0A, 718 0x00, 0x87, 0x33, 0x33, 0x77, 0x00, 0x06, 0x04, 719 0x82, 0x77, 0x00, 0x06, 0x04, 0x82), 720 PHYREGS(0x086C, 0x0868, 0x0864, 0x01E6, 0x01E7, 0x01E8), 721 }, 722 { .channel = 78, 723 .freq = 5390, /* MHz */ 724 .unk2 = 3593, 725 RADIOREGS(0x71, 0x1B, 0x02, 0x08, 0x6E, 0x01, 0x04, 0x0A, 726 0x00, 0x87, 0x33, 0x33, 0x77, 0x00, 0x06, 0x04, 727 0x82, 0x77, 0x00, 0x06, 0x04, 0x82), 728 PHYREGS(0x0870, 0x086C, 0x0868, 0x01E5, 0x01E6, 0x01E7), 729 }, 730 { .channel = 80, 731 .freq = 5400, /* MHz */ 732 .unk2 = 3600, 733 RADIOREGS(0x71, 0x1C, 0x02, 0x07, 0x67, 0x01, 0x04, 0x0A, 734 0x00, 0x86, 0x33, 0x33, 0x66, 0x00, 0x05, 0x04, 735 0x81, 0x66, 0x00, 0x05, 0x04, 0x81), 736 PHYREGS(0x0874, 0x0870, 0x086C, 0x01E5, 0x01E5, 0x01E6), 737 }, 738 { .channel = 82, 739 .freq = 5410, /* MHz */ 740 .unk2 = 3607, 741 RADIOREGS(0x71, 0x1D, 0x02, 0x07, 0x67, 0x01, 0x04, 0x0A, 742 0x00, 0x86, 0x33, 0x33, 0x66, 0x00, 0x05, 0x04, 743 0x81, 0x66, 0x00, 0x05, 0x04, 0x81), 744 PHYREGS(0x0878, 0x0874, 0x0870, 0x01E4, 0x01E5, 0x01E5), 745 }, 746 { .channel = 84, 747 .freq = 5420, /* MHz */ 748 .unk2 = 3613, 749 RADIOREGS(0x71, 0x1E, 0x02, 0x07, 0x61, 0x01, 0x04, 0x0A, 750 0x00, 0x86, 0x22, 0x22, 0x66, 0x00, 0x05, 0x03, 751 0x80, 0x66, 0x00, 0x05, 0x03, 0x80), 752 PHYREGS(0x087C, 0x0878, 0x0874, 0x01E3, 0x01E4, 0x01E5), 753 }, 754 { .channel = 86, 755 .freq = 5430, /* MHz */ 756 .unk2 = 3620, 757 RADIOREGS(0x71, 0x1F, 0x02, 0x07, 0x61, 0x01, 0x04, 0x0A, 758 0x00, 0x86, 0x22, 0x22, 0x66, 0x00, 0x05, 0x03, 759 0x80, 0x66, 0x00, 0x05, 0x03, 0x80), 760 PHYREGS(0x0880, 0x087C, 0x0878, 0x01E2, 0x01E3, 0x01E4), 761 }, 762 { .channel = 88, 763 .freq = 5440, /* MHz */ 764 .unk2 = 3627, 765 RADIOREGS(0x71, 0x20, 0x02, 0x07, 0x5A, 0x01, 0x04, 0x0A, 766 0x00, 0x85, 0x22, 0x22, 0x55, 0x00, 0x04, 0x02, 767 0x80, 0x55, 0x00, 0x04, 0x02, 0x80), 768 PHYREGS(0x0884, 0x0880, 0x087C, 0x01E1, 0x01E2, 0x01E3), 769 }, 770 { .channel = 90, 771 .freq = 5450, /* MHz */ 772 .unk2 = 3633, 773 RADIOREGS(0x71, 0x21, 0x02, 0x07, 0x5A, 0x01, 0x04, 0x0A, 774 0x00, 0x85, 0x22, 0x22, 0x55, 0x00, 0x04, 0x02, 775 0x80, 0x55, 0x00, 0x04, 0x02, 0x80), 776 PHYREGS(0x0888, 0x0884, 0x0880, 0x01E0, 0x01E1, 0x01E2), 777 }, 778 { .channel = 92, 779 .freq = 5460, /* MHz */ 780 .unk2 = 3640, 781 RADIOREGS(0x71, 0x22, 0x02, 0x06, 0x53, 0x01, 0x04, 0x0A, 782 0x00, 0x85, 0x11, 0x11, 0x55, 0x00, 0x04, 0x01, 783 0x80, 0x55, 0x00, 0x04, 0x01, 0x80), 784 PHYREGS(0x088C, 0x0888, 0x0884, 0x01DF, 0x01E0, 0x01E1), 785 }, 786 { .channel = 94, 787 .freq = 5470, /* MHz */ 788 .unk2 = 3647, 789 RADIOREGS(0x71, 0x23, 0x02, 0x06, 0x53, 0x01, 0x04, 0x0A, 790 0x00, 0x85, 0x11, 0x11, 0x55, 0x00, 0x04, 0x01, 791 0x80, 0x55, 0x00, 0x04, 0x01, 0x80), 792 PHYREGS(0x0890, 0x088C, 0x0888, 0x01DE, 0x01DF, 0x01E0), 793 }, 794 { .channel = 96, 795 .freq = 5480, /* MHz */ 796 .unk2 = 3653, 797 RADIOREGS(0x71, 0x24, 0x02, 0x06, 0x4D, 0x01, 0x04, 0x0A, 798 0x00, 0x84, 0x11, 0x11, 0x44, 0x00, 0x03, 0x00, 799 0x80, 0x44, 0x00, 0x03, 0x00, 0x80), 800 PHYREGS(0x0894, 0x0890, 0x088C, 0x01DD, 0x01DE, 0x01DF), 801 }, 802 { .channel = 98, 803 .freq = 5490, /* MHz */ 804 .unk2 = 3660, 805 RADIOREGS(0x71, 0x25, 0x02, 0x06, 0x4D, 0x01, 0x04, 0x0A, 806 0x00, 0x84, 0x11, 0x11, 0x44, 0x00, 0x03, 0x00, 807 0x80, 0x44, 0x00, 0x03, 0x00, 0x80), 808 PHYREGS(0x0898, 0x0894, 0x0890, 0x01DD, 0x01DD, 0x01DE), 809 }, 810 { .channel = 100, 811 .freq = 5500, /* MHz */ 812 .unk2 = 3667, 813 RADIOREGS(0x71, 0x26, 0x02, 0x06, 0x47, 0x01, 0x04, 0x0A, 814 0x00, 0x84, 0x00, 0x00, 0x44, 0x00, 0x03, 0x00, 815 0x80, 0x44, 0x00, 0x03, 0x00, 0x80), 816 PHYREGS(0x089C, 0x0898, 0x0894, 0x01DC, 0x01DD, 0x01DD), 817 }, 818 { .channel = 102, 819 .freq = 5510, /* MHz */ 820 .unk2 = 3673, 821 RADIOREGS(0x71, 0x27, 0x02, 0x06, 0x47, 0x01, 0x04, 0x0A, 822 0x00, 0x84, 0x00, 0x00, 0x44, 0x00, 0x03, 0x00, 823 0x80, 0x44, 0x00, 0x03, 0x00, 0x80), 824 PHYREGS(0x08A0, 0x089C, 0x0898, 0x01DB, 0x01DC, 0x01DD), 825 }, 826 { .channel = 104, 827 .freq = 5520, /* MHz */ 828 .unk2 = 3680, 829 RADIOREGS(0x71, 0x28, 0x02, 0x05, 0x40, 0x01, 0x04, 0x0A, 830 0x00, 0x83, 0x00, 0x00, 0x33, 0x00, 0x02, 0x00, 831 0x80, 0x33, 0x00, 0x02, 0x00, 0x80), 832 PHYREGS(0x08A4, 0x08A0, 0x089C, 0x01DA, 0x01DB, 0x01DC), 833 }, 834 { .channel = 106, 835 .freq = 5530, /* MHz */ 836 .unk2 = 3687, 837 RADIOREGS(0x71, 0x29, 0x02, 0x05, 0x40, 0x01, 0x04, 0x0A, 838 0x00, 0x83, 0x00, 0x00, 0x33, 0x00, 0x02, 0x00, 839 0x80, 0x33, 0x00, 0x02, 0x00, 0x80), 840 PHYREGS(0x08A8, 0x08A4, 0x08A0, 0x01D9, 0x01DA, 0x01DB), 841 }, 842 { .channel = 108, 843 .freq = 5540, /* MHz */ 844 .unk2 = 3693, 845 RADIOREGS(0x71, 0x2A, 0x02, 0x05, 0x3A, 0x01, 0x04, 0x0A, 846 0x00, 0x83, 0x00, 0x00, 0x33, 0x00, 0x02, 0x00, 847 0x80, 0x33, 0x00, 0x02, 0x00, 0x80), 848 PHYREGS(0x08AC, 0x08A8, 0x08A4, 0x01D8, 0x01D9, 0x01DA), 849 }, 850 { .channel = 110, 851 .freq = 5550, /* MHz */ 852 .unk2 = 3700, 853 RADIOREGS(0x71, 0x2B, 0x02, 0x05, 0x3A, 0x01, 0x04, 0x0A, 854 0x00, 0x83, 0x00, 0x00, 0x33, 0x00, 0x02, 0x00, 855 0x80, 0x33, 0x00, 0x02, 0x00, 0x80), 856 PHYREGS(0x08B0, 0x08AC, 0x08A8, 0x01D7, 0x01D8, 0x01D9), 857 }, 858 { .channel = 112, 859 .freq = 5560, /* MHz */ 860 .unk2 = 3707, 861 RADIOREGS(0x71, 0x2C, 0x02, 0x05, 0x34, 0x01, 0x04, 0x0A, 862 0x00, 0x82, 0x00, 0x00, 0x22, 0x00, 0x01, 0x00, 863 0x80, 0x22, 0x00, 0x01, 0x00, 0x80), 864 PHYREGS(0x08B4, 0x08B0, 0x08AC, 0x01D7, 0x01D7, 0x01D8), 865 }, 866 { .channel = 114, 867 .freq = 5570, /* MHz */ 868 .unk2 = 3713, 869 RADIOREGS(0x71, 0x2D, 0x02, 0x05, 0x34, 0x01, 0x04, 0x0A, 870 0x00, 0x82, 0x00, 0x00, 0x22, 0x00, 0x01, 0x00, 871 0x80, 0x22, 0x00, 0x01, 0x00, 0x80), 872 PHYREGS(0x08B8, 0x08B4, 0x08B0, 0x01D6, 0x01D7, 0x01D7), 873 }, 874 { .channel = 116, 875 .freq = 5580, /* MHz */ 876 .unk2 = 3720, 877 RADIOREGS(0x71, 0x2E, 0x02, 0x04, 0x2E, 0x01, 0x04, 0x0A, 878 0x00, 0x82, 0x00, 0x00, 0x22, 0x00, 0x01, 0x00, 879 0x80, 0x22, 0x00, 0x01, 0x00, 0x80), 880 PHYREGS(0x08BC, 0x08B8, 0x08B4, 0x01D5, 0x01D6, 0x01D7), 881 }, 882 { .channel = 118, 883 .freq = 5590, /* MHz */ 884 .unk2 = 3727, 885 RADIOREGS(0x71, 0x2F, 0x02, 0x04, 0x2E, 0x01, 0x04, 0x0A, 886 0x00, 0x82, 0x00, 0x00, 0x22, 0x00, 0x01, 0x00, 887 0x80, 0x22, 0x00, 0x01, 0x00, 0x80), 888 PHYREGS(0x08C0, 0x08BC, 0x08B8, 0x01D4, 0x01D5, 0x01D6), 889 }, 890 { .channel = 120, 891 .freq = 5600, /* MHz */ 892 .unk2 = 3733, 893 RADIOREGS(0x71, 0x30, 0x02, 0x04, 0x28, 0x01, 0x04, 0x0A, 894 0x00, 0x81, 0x00, 0x00, 0x11, 0x00, 0x01, 0x00, 895 0x80, 0x11, 0x00, 0x01, 0x00, 0x80), 896 PHYREGS(0x08C4, 0x08C0, 0x08BC, 0x01D3, 0x01D4, 0x01D5), 897 }, 898 { .channel = 122, 899 .freq = 5610, /* MHz */ 900 .unk2 = 3740, 901 RADIOREGS(0x71, 0x31, 0x02, 0x04, 0x28, 0x01, 0x04, 0x0A, 902 0x00, 0x81, 0x00, 0x00, 0x11, 0x00, 0x01, 0x00, 903 0x80, 0x11, 0x00, 0x01, 0x00, 0x80), 904 PHYREGS(0x08C8, 0x08C4, 0x08C0, 0x01D2, 0x01D3, 0x01D4), 905 }, 906 { .channel = 124, 907 .freq = 5620, /* MHz */ 908 .unk2 = 3747, 909 RADIOREGS(0x71, 0x32, 0x02, 0x04, 0x21, 0x01, 0x04, 0x0A, 910 0x00, 0x81, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 911 0x80, 0x11, 0x00, 0x00, 0x00, 0x80), 912 PHYREGS(0x08CC, 0x08C8, 0x08C4, 0x01D2, 0x01D2, 0x01D3), 913 }, 914 { .channel = 126, 915 .freq = 5630, /* MHz */ 916 .unk2 = 3753, 917 RADIOREGS(0x71, 0x33, 0x02, 0x04, 0x21, 0x01, 0x04, 0x0A, 918 0x00, 0x81, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 919 0x80, 0x11, 0x00, 0x00, 0x00, 0x80), 920 PHYREGS(0x08D0, 0x08CC, 0x08C8, 0x01D1, 0x01D2, 0x01D2), 921 }, 922 { .channel = 128, 923 .freq = 5640, /* MHz */ 924 .unk2 = 3760, 925 RADIOREGS(0x71, 0x34, 0x02, 0x03, 0x1C, 0x01, 0x04, 0x0A, 926 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 927 0x80, 0x00, 0x00, 0x00, 0x00, 0x80), 928 PHYREGS(0x08D4, 0x08D0, 0x08CC, 0x01D0, 0x01D1, 0x01D2), 929 }, 930 { .channel = 130, 931 .freq = 5650, /* MHz */ 932 .unk2 = 3767, 933 RADIOREGS(0x71, 0x35, 0x02, 0x03, 0x1C, 0x01, 0x04, 0x0A, 934 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 935 0x80, 0x00, 0x00, 0x00, 0x00, 0x80), 936 PHYREGS(0x08D8, 0x08D4, 0x08D0, 0x01CF, 0x01D0, 0x01D1), 937 }, 938 { .channel = 132, 939 .freq = 5660, /* MHz */ 940 .unk2 = 3773, 941 RADIOREGS(0x71, 0x36, 0x02, 0x03, 0x16, 0x01, 0x04, 0x0A, 942 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 943 0x80, 0x00, 0x00, 0x00, 0x00, 0x80), 944 PHYREGS(0x08DC, 0x08D8, 0x08D4, 0x01CE, 0x01CF, 0x01D0), 945 }, 946 { .channel = 134, 947 .freq = 5670, /* MHz */ 948 .unk2 = 3780, 949 RADIOREGS(0x71, 0x37, 0x02, 0x03, 0x16, 0x01, 0x04, 0x0A, 950 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 951 0x80, 0x00, 0x00, 0x00, 0x00, 0x80), 952 PHYREGS(0x08E0, 0x08DC, 0x08D8, 0x01CE, 0x01CE, 0x01CF), 953 }, 954 { .channel = 136, 955 .freq = 5680, /* MHz */ 956 .unk2 = 3787, 957 RADIOREGS(0x71, 0x38, 0x02, 0x03, 0x10, 0x01, 0x04, 0x0A, 958 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 959 0x80, 0x00, 0x00, 0x00, 0x00, 0x80), 960 PHYREGS(0x08E4, 0x08E0, 0x08DC, 0x01CD, 0x01CE, 0x01CE), 961 }, 962 { .channel = 138, 963 .freq = 5690, /* MHz */ 964 .unk2 = 3793, 965 RADIOREGS(0x71, 0x39, 0x02, 0x03, 0x10, 0x01, 0x04, 0x0A, 966 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 967 0x80, 0x00, 0x00, 0x00, 0x00, 0x80), 968 PHYREGS(0x08E8, 0x08E4, 0x08E0, 0x01CC, 0x01CD, 0x01CE), 969 }, 970 { .channel = 140, 971 .freq = 5700, /* MHz */ 972 .unk2 = 3800, 973 RADIOREGS(0x71, 0x3A, 0x02, 0x02, 0x0A, 0x01, 0x04, 0x0A, 974 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 975 0x80, 0x00, 0x00, 0x00, 0x00, 0x80), 976 PHYREGS(0x08EC, 0x08E8, 0x08E4, 0x01CB, 0x01CC, 0x01CD), 977 }, 978 { .channel = 142, 979 .freq = 5710, /* MHz */ 980 .unk2 = 3807, 981 RADIOREGS(0x71, 0x3B, 0x02, 0x02, 0x0A, 0x01, 0x04, 0x0A, 982 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 983 0x80, 0x00, 0x00, 0x00, 0x00, 0x80), 984 PHYREGS(0x08F0, 0x08EC, 0x08E8, 0x01CA, 0x01CB, 0x01CC), 985 }, 986 { .channel = 144, 987 .freq = 5720, /* MHz */ 988 .unk2 = 3813, 989 RADIOREGS(0x71, 0x3C, 0x02, 0x02, 0x0A, 0x01, 0x04, 0x0A, 990 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 991 0x80, 0x00, 0x00, 0x00, 0x00, 0x80), 992 PHYREGS(0x08F4, 0x08F0, 0x08EC, 0x01C9, 0x01CA, 0x01CB), 993 }, 994 { .channel = 145, 995 .freq = 5725, /* MHz */ 996 .unk2 = 3817, 997 RADIOREGS(0x72, 0x79, 0x04, 0x02, 0x03, 0x01, 0x03, 0x14, 998 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 999 0x80, 0x00, 0x00, 0x00, 0x00, 0x80), 1000 PHYREGS(0x08F6, 0x08F2, 0x08EE, 0x01C9, 0x01CA, 0x01CB), 1001 }, 1002 { .channel = 146, 1003 .freq = 5730, /* MHz */ 1004 .unk2 = 3820, 1005 RADIOREGS(0x71, 0x3D, 0x02, 0x02, 0x0A, 0x01, 0x04, 0x0A, 1006 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 1007 0x80, 0x00, 0x00, 0x00, 0x00, 0x80), 1008 PHYREGS(0x08F8, 0x08F4, 0x08F0, 0x01C9, 0x01C9, 0x01CA), 1009 }, 1010 { .channel = 147, 1011 .freq = 5735, /* MHz */ 1012 .unk2 = 3823, 1013 RADIOREGS(0x72, 0x7B, 0x04, 0x02, 0x03, 0x01, 0x03, 0x14, 1014 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 1015 0x80, 0x00, 0x00, 0x00, 0x00, 0x80), 1016 PHYREGS(0x08FA, 0x08F6, 0x08F2, 0x01C8, 0x01C9, 0x01CA), 1017 }, 1018 { .channel = 148, 1019 .freq = 5740, /* MHz */ 1020 .unk2 = 3827, 1021 RADIOREGS(0x71, 0x3E, 0x02, 0x02, 0x0A, 0x01, 0x04, 0x0A, 1022 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 1023 0x80, 0x00, 0x00, 0x00, 0x00, 0x80), 1024 PHYREGS(0x08FC, 0x08F8, 0x08F4, 0x01C8, 0x01C9, 0x01C9), 1025 }, 1026 { .channel = 149, 1027 .freq = 5745, /* MHz */ 1028 .unk2 = 3830, 1029 RADIOREGS(0x72, 0x7D, 0x04, 0x02, 0xFE, 0x00, 0x03, 0x14, 1030 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 1031 0x80, 0x00, 0x00, 0x00, 0x00, 0x80), 1032 PHYREGS(0x08FE, 0x08FA, 0x08F6, 0x01C8, 0x01C8, 0x01C9), 1033 }, 1034 { .channel = 150, 1035 .freq = 5750, /* MHz */ 1036 .unk2 = 3833, 1037 RADIOREGS(0x71, 0x3F, 0x02, 0x02, 0x0A, 0x01, 0x04, 0x0A, 1038 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 1039 0x80, 0x00, 0x00, 0x00, 0x00, 0x80), 1040 PHYREGS(0x0900, 0x08FC, 0x08F8, 0x01C7, 0x01C8, 0x01C9), 1041 }, 1042 { .channel = 151, 1043 .freq = 5755, /* MHz */ 1044 .unk2 = 3837, 1045 RADIOREGS(0x72, 0x7F, 0x04, 0x02, 0xFE, 0x00, 0x03, 0x14, 1046 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 1047 0x80, 0x00, 0x00, 0x00, 0x00, 0x80), 1048 PHYREGS(0x0902, 0x08FE, 0x08FA, 0x01C7, 0x01C8, 0x01C8), 1049 }, 1050 { .channel = 152, 1051 .freq = 5760, /* MHz */ 1052 .unk2 = 3840, 1053 RADIOREGS(0x71, 0x40, 0x02, 0x02, 0x0A, 0x01, 0x04, 0x0A, 1054 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 1055 0x80, 0x00, 0x00, 0x00, 0x00, 0x80), 1056 PHYREGS(0x0904, 0x0900, 0x08FC, 0x01C6, 0x01C7, 0x01C8), 1057 }, 1058 { .channel = 153, 1059 .freq = 5765, /* MHz */ 1060 .unk2 = 3843, 1061 RADIOREGS(0x72, 0x81, 0x04, 0x02, 0xF8, 0x00, 0x03, 0x14, 1062 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 1063 0x80, 0x00, 0x00, 0x00, 0x00, 0x80), 1064 PHYREGS(0x0906, 0x0902, 0x08FE, 0x01C6, 0x01C7, 0x01C8), 1065 }, 1066 { .channel = 154, 1067 .freq = 5770, /* MHz */ 1068 .unk2 = 3847, 1069 RADIOREGS(0x71, 0x41, 0x02, 0x02, 0x0A, 0x01, 0x04, 0x0A, 1070 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 1071 0x80, 0x00, 0x00, 0x00, 0x00, 0x80), 1072 PHYREGS(0x0908, 0x0904, 0x0900, 0x01C6, 0x01C6, 0x01C7), 1073 }, 1074 { .channel = 155, 1075 .freq = 5775, /* MHz */ 1076 .unk2 = 3850, 1077 RADIOREGS(0x72, 0x83, 0x04, 0x02, 0xF8, 0x00, 0x03, 0x14, 1078 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 1079 0x80, 0x00, 0x00, 0x00, 0x00, 0x80), 1080 PHYREGS(0x090A, 0x0906, 0x0902, 0x01C5, 0x01C6, 0x01C7), 1081 }, 1082 { .channel = 156, 1083 .freq = 5780, /* MHz */ 1084 .unk2 = 3853, 1085 RADIOREGS(0x71, 0x42, 0x02, 0x02, 0x0A, 0x01, 0x04, 0x0A, 1086 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 1087 0x80, 0x00, 0x00, 0x00, 0x00, 0x80), 1088 PHYREGS(0x090C, 0x0908, 0x0904, 0x01C5, 0x01C6, 0x01C6), 1089 }, 1090 { .channel = 157, 1091 .freq = 5785, /* MHz */ 1092 .unk2 = 3857, 1093 RADIOREGS(0x72, 0x85, 0x04, 0x02, 0xF2, 0x00, 0x03, 0x14, 1094 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 1095 0x80, 0x00, 0x00, 0x00, 0x00, 0x80), 1096 PHYREGS(0x090E, 0x090A, 0x0906, 0x01C4, 0x01C5, 0x01C6), 1097 }, 1098 { .channel = 158, 1099 .freq = 5790, /* MHz */ 1100 .unk2 = 3860, 1101 RADIOREGS(0x71, 0x43, 0x02, 0x02, 0x0A, 0x01, 0x04, 0x0A, 1102 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 1103 0x80, 0x00, 0x00, 0x00, 0x00, 0x80), 1104 PHYREGS(0x0910, 0x090C, 0x0908, 0x01C4, 0x01C5, 0x01C6), 1105 }, 1106 { .channel = 159, 1107 .freq = 5795, /* MHz */ 1108 .unk2 = 3863, 1109 RADIOREGS(0x72, 0x87, 0x04, 0x02, 0xF2, 0x00, 0x03, 0x14, 1110 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 1111 0x80, 0x00, 0x00, 0x00, 0x00, 0x80), 1112 PHYREGS(0x0912, 0x090E, 0x090A, 0x01C4, 0x01C4, 0x01C5), 1113 }, 1114 { .channel = 160, 1115 .freq = 5800, /* MHz */ 1116 .unk2 = 3867, 1117 RADIOREGS(0x71, 0x44, 0x02, 0x01, 0x0A, 0x01, 0x04, 0x0A, 1118 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 1119 0x80, 0x00, 0x00, 0x00, 0x00, 0x80), 1120 PHYREGS(0x0914, 0x0910, 0x090C, 0x01C3, 0x01C4, 0x01C5), 1121 }, 1122 { .channel = 161, 1123 .freq = 5805, /* MHz */ 1124 .unk2 = 3870, 1125 RADIOREGS(0x72, 0x89, 0x04, 0x01, 0xED, 0x00, 0x03, 0x14, 1126 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 1127 0x80, 0x00, 0x00, 0x00, 0x00, 0x80), 1128 PHYREGS(0x0916, 0x0912, 0x090E, 0x01C3, 0x01C4, 0x01C4), 1129 }, 1130 { .channel = 162, 1131 .freq = 5810, /* MHz */ 1132 .unk2 = 3873, 1133 RADIOREGS(0x71, 0x45, 0x02, 0x01, 0x0A, 0x01, 0x04, 0x0A, 1134 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 1135 0x80, 0x00, 0x00, 0x00, 0x00, 0x80), 1136 PHYREGS(0x0918, 0x0914, 0x0910, 0x01C2, 0x01C3, 0x01C4), 1137 }, 1138 { .channel = 163, 1139 .freq = 5815, /* MHz */ 1140 .unk2 = 3877, 1141 RADIOREGS(0x72, 0x8B, 0x04, 0x01, 0xED, 0x00, 0x03, 0x14, 1142 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 1143 0x80, 0x00, 0x00, 0x00, 0x00, 0x80), 1144 PHYREGS(0x091A, 0x0916, 0x0912, 0x01C2, 0x01C3, 0x01C4), 1145 }, 1146 { .channel = 164, 1147 .freq = 5820, /* MHz */ 1148 .unk2 = 3880, 1149 RADIOREGS(0x71, 0x46, 0x02, 0x01, 0x0A, 0x01, 0x04, 0x0A, 1150 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 1151 0x80, 0x00, 0x00, 0x00, 0x00, 0x80), 1152 PHYREGS(0x091C, 0x0918, 0x0914, 0x01C2, 0x01C2, 0x01C3), 1153 }, 1154 { .channel = 165, 1155 .freq = 5825, /* MHz */ 1156 .unk2 = 3883, 1157 RADIOREGS(0x72, 0x8D, 0x04, 0x01, 0xED, 0x00, 0x03, 0x14, 1158 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 1159 0x80, 0x00, 0x00, 0x00, 0x00, 0x80), 1160 PHYREGS(0x091E, 0x091A, 0x0916, 0x01C1, 0x01C2, 0x01C3), 1161 }, 1162 { .channel = 166, 1163 .freq = 5830, /* MHz */ 1164 .unk2 = 3887, 1165 RADIOREGS(0x71, 0x47, 0x02, 0x01, 0x0A, 0x01, 0x04, 0x0A, 1166 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 1167 0x80, 0x00, 0x00, 0x00, 0x00, 0x80), 1168 PHYREGS(0x0920, 0x091C, 0x0918, 0x01C1, 0x01C2, 0x01C2), 1169 }, 1170 { .channel = 168, 1171 .freq = 5840, /* MHz */ 1172 .unk2 = 3893, 1173 RADIOREGS(0x71, 0x48, 0x02, 0x01, 0x0A, 0x01, 0x04, 0x0A, 1174 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 1175 0x80, 0x00, 0x00, 0x00, 0x00, 0x80), 1176 PHYREGS(0x0924, 0x0920, 0x091C, 0x01C0, 0x01C1, 0x01C2), 1177 }, 1178 { .channel = 170, 1179 .freq = 5850, /* MHz */ 1180 .unk2 = 3900, 1181 RADIOREGS(0x71, 0x49, 0x02, 0x01, 0xE0, 0x00, 0x04, 0x0A, 1182 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 1183 0x80, 0x00, 0x00, 0x00, 0x00, 0x80), 1184 PHYREGS(0x0928, 0x0924, 0x0920, 0x01BF, 0x01C0, 0x01C1), 1185 }, 1186 { .channel = 172, 1187 .freq = 5860, /* MHz */ 1188 .unk2 = 3907, 1189 RADIOREGS(0x71, 0x4A, 0x02, 0x01, 0xDE, 0x00, 0x04, 0x0A, 1190 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 1191 0x80, 0x00, 0x00, 0x00, 0x00, 0x80), 1192 PHYREGS(0x092C, 0x0928, 0x0924, 0x01BF, 0x01BF, 0x01C0), 1193 }, 1194 { .channel = 174, 1195 .freq = 5870, /* MHz */ 1196 .unk2 = 3913, 1197 RADIOREGS(0x71, 0x4B, 0x02, 0x00, 0xDB, 0x00, 0x04, 0x0A, 1198 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 1199 0x80, 0x00, 0x00, 0x00, 0x00, 0x80), 1200 PHYREGS(0x0930, 0x092C, 0x0928, 0x01BE, 0x01BF, 0x01BF), 1201 }, 1202 { .channel = 176, 1203 .freq = 5880, /* MHz */ 1204 .unk2 = 3920, 1205 RADIOREGS(0x71, 0x4C, 0x02, 0x00, 0xD8, 0x00, 0x04, 0x0A, 1206 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 1207 0x80, 0x00, 0x00, 0x00, 0x00, 0x80), 1208 PHYREGS(0x0934, 0x0930, 0x092C, 0x01BD, 0x01BE, 0x01BF), 1209 }, 1210 { .channel = 178, 1211 .freq = 5890, /* MHz */ 1212 .unk2 = 3927, 1213 RADIOREGS(0x71, 0x4D, 0x02, 0x00, 0xD6, 0x00, 0x04, 0x0A, 1214 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 1215 0x80, 0x00, 0x00, 0x00, 0x00, 0x80), 1216 PHYREGS(0x0938, 0x0934, 0x0930, 0x01BC, 0x01BD, 0x01BE), 1217 }, 1218 { .channel = 180, 1219 .freq = 5900, /* MHz */ 1220 .unk2 = 3933, 1221 RADIOREGS(0x71, 0x4E, 0x02, 0x00, 0xD3, 0x00, 0x04, 0x0A, 1222 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 1223 0x80, 0x00, 0x00, 0x00, 0x00, 0x80), 1224 PHYREGS(0x093C, 0x0938, 0x0934, 0x01BC, 0x01BC, 0x01BD), 1225 }, 1226 { .channel = 182, 1227 .freq = 5910, /* MHz */ 1228 .unk2 = 3940, 1229 RADIOREGS(0x71, 0x4F, 0x02, 0x00, 0xD6, 0x00, 0x04, 0x0A, 1230 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 1231 0x80, 0x00, 0x00, 0x00, 0x00, 0x80), 1232 PHYREGS(0x0940, 0x093C, 0x0938, 0x01BB, 0x01BC, 0x01BC), 1233 }, 1234 { .channel = 1, 1235 .freq = 2412, /* MHz */ 1236 .unk2 = 3216, 1237 RADIOREGS(0x73, 0x6C, 0x09, 0x0F, 0x00, 0x01, 0x07, 0x15, 1238 0x01, 0x8F, 0xFF, 0xFF, 0xFF, 0x88, 0x0D, 0x0C, 1239 0x80, 0xFF, 0x88, 0x0D, 0x0C, 0x80), 1240 PHYREGS(0x03C9, 0x03C5, 0x03C1, 0x043A, 0x043F, 0x0443), 1241 }, 1242 { .channel = 2, 1243 .freq = 2417, /* MHz */ 1244 .unk2 = 3223, 1245 RADIOREGS(0x73, 0x71, 0x09, 0x0F, 0x00, 0x01, 0x07, 0x15, 1246 0x01, 0x8F, 0xFF, 0xFF, 0xFF, 0x88, 0x0C, 0x0B, 1247 0x80, 0xFF, 0x88, 0x0C, 0x0B, 0x80), 1248 PHYREGS(0x03CB, 0x03C7, 0x03C3, 0x0438, 0x043D, 0x0441), 1249 }, 1250 { .channel = 3, 1251 .freq = 2422, /* MHz */ 1252 .unk2 = 3229, 1253 RADIOREGS(0x73, 0x76, 0x09, 0x0F, 0x00, 0x01, 0x07, 0x15, 1254 0x01, 0x8F, 0xFF, 0xFF, 0xFF, 0x88, 0x0C, 0x0A, 1255 0x80, 0xFF, 0x88, 0x0C, 0x0A, 0x80), 1256 PHYREGS(0x03CD, 0x03C9, 0x03C5, 0x0436, 0x043A, 0x043F), 1257 }, 1258 { .channel = 4, 1259 .freq = 2427, /* MHz */ 1260 .unk2 = 3236, 1261 RADIOREGS(0x73, 0x7B, 0x09, 0x0F, 0x00, 0x01, 0x07, 0x15, 1262 0x01, 0x8F, 0xFF, 0xFF, 0xFF, 0x88, 0x0C, 0x0A, 1263 0x80, 0xFF, 0x88, 0x0C, 0x0A, 0x80), 1264 PHYREGS(0x03CF, 0x03CB, 0x03C7, 0x0434, 0x0438, 0x043D), 1265 }, 1266 { .channel = 5, 1267 .freq = 2432, /* MHz */ 1268 .unk2 = 3243, 1269 RADIOREGS(0x73, 0x80, 0x09, 0x0F, 0x00, 0x01, 0x07, 0x15, 1270 0x01, 0x8F, 0xFF, 0xFF, 0xFF, 0x88, 0x0C, 0x09, 1271 0x80, 0xFF, 0x88, 0x0C, 0x09, 0x80), 1272 PHYREGS(0x03D1, 0x03CD, 0x03C9, 0x0431, 0x0436, 0x043A), 1273 }, 1274 { .channel = 6, 1275 .freq = 2437, /* MHz */ 1276 .unk2 = 3249, 1277 RADIOREGS(0x73, 0x85, 0x09, 0x0F, 0x00, 0x01, 0x07, 0x15, 1278 0x01, 0x8F, 0xFF, 0xFF, 0xFF, 0x88, 0x0B, 0x08, 1279 0x80, 0xFF, 0x88, 0x0B, 0x08, 0x80), 1280 PHYREGS(0x03D3, 0x03CF, 0x03CB, 0x042F, 0x0434, 0x0438), 1281 }, 1282 { .channel = 7, 1283 .freq = 2442, /* MHz */ 1284 .unk2 = 3256, 1285 RADIOREGS(0x73, 0x8A, 0x09, 0x0F, 0x00, 0x01, 0x07, 0x15, 1286 0x01, 0x8F, 0xFF, 0xFF, 0xFF, 0x88, 0x0A, 0x07, 1287 0x80, 0xFF, 0x88, 0x0A, 0x07, 0x80), 1288 PHYREGS(0x03D5, 0x03D1, 0x03CD, 0x042D, 0x0431, 0x0436), 1289 }, 1290 { .channel = 8, 1291 .freq = 2447, /* MHz */ 1292 .unk2 = 3263, 1293 RADIOREGS(0x73, 0x8F, 0x09, 0x0F, 0x00, 0x01, 0x07, 0x15, 1294 0x01, 0x8F, 0xFF, 0xFF, 0xFF, 0x88, 0x0A, 0x06, 1295 0x80, 0xFF, 0x88, 0x0A, 0x06, 0x80), 1296 PHYREGS(0x03D7, 0x03D3, 0x03CF, 0x042B, 0x042F, 0x0434), 1297 }, 1298 { .channel = 9, 1299 .freq = 2452, /* MHz */ 1300 .unk2 = 3269, 1301 RADIOREGS(0x73, 0x94, 0x09, 0x0F, 0x00, 0x01, 0x07, 0x15, 1302 0x01, 0x8F, 0xFF, 0xFF, 0xFF, 0x88, 0x09, 0x06, 1303 0x80, 0xFF, 0x88, 0x09, 0x06, 0x80), 1304 PHYREGS(0x03D9, 0x03D5, 0x03D1, 0x0429, 0x042D, 0x0431), 1305 }, 1306 { .channel = 10, 1307 .freq = 2457, /* MHz */ 1308 .unk2 = 3276, 1309 RADIOREGS(0x73, 0x99, 0x09, 0x0F, 0x00, 0x01, 0x07, 0x15, 1310 0x01, 0x8F, 0xFF, 0xFF, 0xFF, 0x88, 0x08, 0x05, 1311 0x80, 0xFF, 0x88, 0x08, 0x05, 0x80), 1312 PHYREGS(0x03DB, 0x03D7, 0x03D3, 0x0427, 0x042B, 0x042F), 1313 }, 1314 { .channel = 11, 1315 .freq = 2462, /* MHz */ 1316 .unk2 = 3283, 1317 RADIOREGS(0x73, 0x9E, 0x09, 0x0F, 0x00, 0x01, 0x07, 0x15, 1318 0x01, 0x8F, 0xFF, 0xFF, 0xFF, 0x88, 0x08, 0x04, 1319 0x80, 0xFF, 0x88, 0x08, 0x04, 0x80), 1320 PHYREGS(0x03DD, 0x03D9, 0x03D5, 0x0424, 0x0429, 0x042D), 1321 }, 1322 { .channel = 12, 1323 .freq = 2467, /* MHz */ 1324 .unk2 = 3289, 1325 RADIOREGS(0x73, 0xA3, 0x09, 0x0F, 0x00, 0x01, 0x07, 0x15, 1326 0x01, 0x8F, 0xFF, 0xFF, 0xFF, 0x88, 0x08, 0x03, 1327 0x80, 0xFF, 0x88, 0x08, 0x03, 0x80), 1328 PHYREGS(0x03DF, 0x03DB, 0x03D7, 0x0422, 0x0427, 0x042B), 1329 }, 1330 { .channel = 13, 1331 .freq = 2472, /* MHz */ 1332 .unk2 = 3296, 1333 RADIOREGS(0x73, 0xA8, 0x09, 0x0F, 0x00, 0x01, 0x07, 0x15, 1334 0x01, 0x8F, 0xFF, 0xFF, 0xFF, 0x88, 0x07, 0x03, 1335 0x80, 0xFF, 0x88, 0x07, 0x03, 0x80), 1336 PHYREGS(0x03E1, 0x03DD, 0x03D9, 0x0420, 0x0424, 0x0429), 1337 }, 1338 { .channel = 14, 1339 .freq = 2484, /* MHz */ 1340 .unk2 = 3312, 1341 RADIOREGS(0x73, 0xB4, 0x09, 0x0F, 0xFF, 0x01, 0x07, 0x15, 1342 0x01, 0x8F, 0xFF, 0xFF, 0xFF, 0x88, 0x07, 0x01, 1343 0x80, 0xFF, 0x88, 0x07, 0x01, 0x80), 1344 PHYREGS(0x03E6, 0x03E2, 0x03DE, 0x041B, 0x041F, 0x0424), 1345 }, 1346}; 1347 1348void b2055_upload_inittab(struct bwn_mac *mac, 1349 bool ghz5, bool ignore_uploadflag) 1350{ 1351 const struct b2055_inittab_entry *e; 1352 unsigned int i, writes = 0; 1353 uint16_t value; 1354 1355 for (i = 0; i < nitems(b2055_inittab); i++) { 1356 e = &(b2055_inittab[i]); 1357 if (!(e->flags & B2055_INITTAB_ENTRY_OK)) 1358 continue; 1359 if ((e->flags & B2055_INITTAB_UPLOAD) || ignore_uploadflag) { 1360 if (ghz5) 1361 value = e->ghz5; 1362 else 1363 value = e->ghz2; 1364 BWN_RF_WRITE(mac, i, value); 1365 if (++writes % 4 == 0) 1366 BWN_READ_4(mac, BWN_MACCTL); /* flush */ 1367 } 1368 } 1369 /* One final flush */ 1370 BWN_READ_4(mac, BWN_MACCTL); 1371} 1372 1373const struct bwn_nphy_channeltab_entry_rev2 * 1374bwn_nphy_get_chantabent_rev2(struct bwn_mac *mac, uint8_t channel) 1375{ 1376 const struct bwn_nphy_channeltab_entry_rev2 *e; 1377 unsigned int i; 1378 1379 for (i = 0; i < nitems(bwn_nphy_channeltab_rev2); i++) { 1380 e = &(bwn_nphy_channeltab_rev2[i]); 1381 if (e->channel == channel) 1382 return e; 1383 } 1384 1385 return NULL; 1386} 1387