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