diff options
Diffstat (limited to 'drivers/net/wireless/b43')
-rw-r--r-- | drivers/net/wireless/b43/Kconfig | 2 | ||||
-rw-r--r-- | drivers/net/wireless/b43/main.c | 6 | ||||
-rw-r--r-- | drivers/net/wireless/b43/phy_n.c | 207 | ||||
-rw-r--r-- | drivers/net/wireless/b43/tables_nphy.c | 1209 | ||||
-rw-r--r-- | drivers/net/wireless/b43/tables_nphy.h | 52 | ||||
-rw-r--r-- | drivers/net/wireless/b43/xmit.c | 75 | ||||
-rw-r--r-- | drivers/net/wireless/b43/xmit.h | 6 |
7 files changed, 1524 insertions, 33 deletions
diff --git a/drivers/net/wireless/b43/Kconfig b/drivers/net/wireless/b43/Kconfig index 47033f6a1c2b..480595f04411 100644 --- a/drivers/net/wireless/b43/Kconfig +++ b/drivers/net/wireless/b43/Kconfig | |||
@@ -92,7 +92,7 @@ config B43_PHY_N | |||
92 | ---help--- | 92 | ---help--- |
93 | Support for the N-PHY. | 93 | Support for the N-PHY. |
94 | 94 | ||
95 | This enables support for devices with N-PHY revision up to 2. | 95 | This enables support for devices with N-PHY. |
96 | 96 | ||
97 | Say N if you expect high stability and performance. Saying Y will not | 97 | Say N if you expect high stability and performance. Saying Y will not |
98 | affect other devices support and may provide support for basic needs. | 98 | affect other devices support and may provide support for basic needs. |
diff --git a/drivers/net/wireless/b43/main.c b/drivers/net/wireless/b43/main.c index 22bc9f17f634..57eb5b649730 100644 --- a/drivers/net/wireless/b43/main.c +++ b/drivers/net/wireless/b43/main.c | |||
@@ -3203,7 +3203,7 @@ static void b43_tx_work(struct work_struct *work) | |||
3203 | mutex_unlock(&wl->mutex); | 3203 | mutex_unlock(&wl->mutex); |
3204 | } | 3204 | } |
3205 | 3205 | ||
3206 | static int b43_op_tx(struct ieee80211_hw *hw, | 3206 | static void b43_op_tx(struct ieee80211_hw *hw, |
3207 | struct sk_buff *skb) | 3207 | struct sk_buff *skb) |
3208 | { | 3208 | { |
3209 | struct b43_wl *wl = hw_to_b43_wl(hw); | 3209 | struct b43_wl *wl = hw_to_b43_wl(hw); |
@@ -3211,14 +3211,12 @@ static int b43_op_tx(struct ieee80211_hw *hw, | |||
3211 | if (unlikely(skb->len < 2 + 2 + 6)) { | 3211 | if (unlikely(skb->len < 2 + 2 + 6)) { |
3212 | /* Too short, this can't be a valid frame. */ | 3212 | /* Too short, this can't be a valid frame. */ |
3213 | dev_kfree_skb_any(skb); | 3213 | dev_kfree_skb_any(skb); |
3214 | return NETDEV_TX_OK; | 3214 | return; |
3215 | } | 3215 | } |
3216 | B43_WARN_ON(skb_shinfo(skb)->nr_frags); | 3216 | B43_WARN_ON(skb_shinfo(skb)->nr_frags); |
3217 | 3217 | ||
3218 | skb_queue_tail(&wl->tx_queue, skb); | 3218 | skb_queue_tail(&wl->tx_queue, skb); |
3219 | ieee80211_queue_work(wl->hw, &wl->tx_work); | 3219 | ieee80211_queue_work(wl->hw, &wl->tx_work); |
3220 | |||
3221 | return NETDEV_TX_OK; | ||
3222 | } | 3220 | } |
3223 | 3221 | ||
3224 | static void b43_qos_params_upload(struct b43_wldev *dev, | 3222 | static void b43_qos_params_upload(struct b43_wldev *dev, |
diff --git a/drivers/net/wireless/b43/phy_n.c b/drivers/net/wireless/b43/phy_n.c index ab81ed8b19d7..8a00f9a95dbb 100644 --- a/drivers/net/wireless/b43/phy_n.c +++ b/drivers/net/wireless/b43/phy_n.c | |||
@@ -430,9 +430,9 @@ static void b43_radio_init2055_post(struct b43_wldev *dev) | |||
430 | bool workaround = false; | 430 | bool workaround = false; |
431 | 431 | ||
432 | if (sprom->revision < 4) | 432 | if (sprom->revision < 4) |
433 | workaround = (binfo->vendor != PCI_VENDOR_ID_BROADCOM || | 433 | workaround = (binfo->vendor != PCI_VENDOR_ID_BROADCOM && |
434 | binfo->type != 0x46D || | 434 | binfo->type == 0x46D && |
435 | binfo->rev < 0x41); | 435 | binfo->rev >= 0x41); |
436 | else | 436 | else |
437 | workaround = | 437 | workaround = |
438 | !(sprom->boardflags2_lo & B43_BFL2_RXBB_INT_REG_DIS); | 438 | !(sprom->boardflags2_lo & B43_BFL2_RXBB_INT_REG_DIS); |
@@ -1168,23 +1168,98 @@ static void b43_nphy_adjust_lna_gain_table(struct b43_wldev *dev) | |||
1168 | static void b43_nphy_gain_ctrl_workarounds(struct b43_wldev *dev) | 1168 | static void b43_nphy_gain_ctrl_workarounds(struct b43_wldev *dev) |
1169 | { | 1169 | { |
1170 | struct b43_phy_n *nphy = dev->phy.n; | 1170 | struct b43_phy_n *nphy = dev->phy.n; |
1171 | struct ssb_sprom *sprom = &(dev->dev->bus->sprom); | ||
1172 | |||
1173 | /* PHY rev 0, 1, 2 */ | ||
1171 | u8 i, j; | 1174 | u8 i, j; |
1172 | u8 code; | 1175 | u8 code; |
1173 | u16 tmp; | 1176 | u16 tmp; |
1177 | u8 rfseq_events[3] = { 6, 8, 7 }; | ||
1178 | u8 rfseq_delays[3] = { 10, 30, 1 }; | ||
1174 | 1179 | ||
1175 | /* TODO: for PHY >= 3 | 1180 | /* PHY rev >= 3 */ |
1176 | s8 *lna1_gain, *lna2_gain; | 1181 | bool ghz5; |
1177 | u8 *gain_db, *gain_bits; | 1182 | bool ext_lna; |
1178 | u16 *rfseq_init; | 1183 | u16 rssi_gain; |
1184 | struct nphy_gain_ctl_workaround_entry *e; | ||
1179 | u8 lpf_gain[6] = { 0x00, 0x06, 0x0C, 0x12, 0x12, 0x12 }; | 1185 | u8 lpf_gain[6] = { 0x00, 0x06, 0x0C, 0x12, 0x12, 0x12 }; |
1180 | u8 lpf_bits[6] = { 0, 1, 2, 3, 3, 3 }; | 1186 | u8 lpf_bits[6] = { 0, 1, 2, 3, 3, 3 }; |
1181 | */ | ||
1182 | |||
1183 | u8 rfseq_events[3] = { 6, 8, 7 }; | ||
1184 | u8 rfseq_delays[3] = { 10, 30, 1 }; | ||
1185 | 1187 | ||
1186 | if (dev->phy.rev >= 3) { | 1188 | if (dev->phy.rev >= 3) { |
1187 | /* TODO */ | 1189 | /* Prepare values */ |
1190 | ghz5 = b43_phy_read(dev, B43_NPHY_BANDCTL) | ||
1191 | & B43_NPHY_BANDCTL_5GHZ; | ||
1192 | ext_lna = sprom->boardflags_lo & B43_BFL_EXTLNA; | ||
1193 | e = b43_nphy_get_gain_ctl_workaround_ent(dev, ghz5, ext_lna); | ||
1194 | if (ghz5 && dev->phy.rev >= 5) | ||
1195 | rssi_gain = 0x90; | ||
1196 | else | ||
1197 | rssi_gain = 0x50; | ||
1198 | |||
1199 | b43_phy_set(dev, B43_NPHY_RXCTL, 0x0040); | ||
1200 | |||
1201 | /* Set Clip 2 detect */ | ||
1202 | b43_phy_set(dev, B43_NPHY_C1_CGAINI, | ||
1203 | B43_NPHY_C1_CGAINI_CL2DETECT); | ||
1204 | b43_phy_set(dev, B43_NPHY_C2_CGAINI, | ||
1205 | B43_NPHY_C2_CGAINI_CL2DETECT); | ||
1206 | |||
1207 | b43_radio_write(dev, B2056_RX0 | B2056_RX_BIASPOLE_LNAG1_IDAC, | ||
1208 | 0x17); | ||
1209 | b43_radio_write(dev, B2056_RX1 | B2056_RX_BIASPOLE_LNAG1_IDAC, | ||
1210 | 0x17); | ||
1211 | b43_radio_write(dev, B2056_RX0 | B2056_RX_LNAG2_IDAC, 0xF0); | ||
1212 | b43_radio_write(dev, B2056_RX1 | B2056_RX_LNAG2_IDAC, 0xF0); | ||
1213 | b43_radio_write(dev, B2056_RX0 | B2056_RX_RSSI_POLE, 0x00); | ||
1214 | b43_radio_write(dev, B2056_RX1 | B2056_RX_RSSI_POLE, 0x00); | ||
1215 | b43_radio_write(dev, B2056_RX0 | B2056_RX_RSSI_GAIN, | ||
1216 | rssi_gain); | ||
1217 | b43_radio_write(dev, B2056_RX1 | B2056_RX_RSSI_GAIN, | ||
1218 | rssi_gain); | ||
1219 | b43_radio_write(dev, B2056_RX0 | B2056_RX_BIASPOLE_LNAA1_IDAC, | ||
1220 | 0x17); | ||
1221 | b43_radio_write(dev, B2056_RX1 | B2056_RX_BIASPOLE_LNAA1_IDAC, | ||
1222 | 0x17); | ||
1223 | b43_radio_write(dev, B2056_RX0 | B2056_RX_LNAA2_IDAC, 0xFF); | ||
1224 | b43_radio_write(dev, B2056_RX1 | B2056_RX_LNAA2_IDAC, 0xFF); | ||
1225 | |||
1226 | b43_ntab_write_bulk(dev, B43_NTAB8(0, 8), 4, e->lna1_gain); | ||
1227 | b43_ntab_write_bulk(dev, B43_NTAB8(1, 8), 4, e->lna1_gain); | ||
1228 | b43_ntab_write_bulk(dev, B43_NTAB8(0, 16), 4, e->lna2_gain); | ||
1229 | b43_ntab_write_bulk(dev, B43_NTAB8(1, 16), 4, e->lna2_gain); | ||
1230 | b43_ntab_write_bulk(dev, B43_NTAB8(0, 32), 10, e->gain_db); | ||
1231 | b43_ntab_write_bulk(dev, B43_NTAB8(1, 32), 10, e->gain_db); | ||
1232 | b43_ntab_write_bulk(dev, B43_NTAB8(2, 32), 10, e->gain_bits); | ||
1233 | b43_ntab_write_bulk(dev, B43_NTAB8(3, 32), 10, e->gain_bits); | ||
1234 | b43_ntab_write_bulk(dev, B43_NTAB8(0, 0x40), 6, lpf_gain); | ||
1235 | b43_ntab_write_bulk(dev, B43_NTAB8(1, 0x40), 6, lpf_gain); | ||
1236 | b43_ntab_write_bulk(dev, B43_NTAB8(2, 0x40), 6, lpf_bits); | ||
1237 | b43_ntab_write_bulk(dev, B43_NTAB8(3, 0x40), 6, lpf_bits); | ||
1238 | |||
1239 | b43_phy_write(dev, B43_NPHY_C1_INITGAIN, e->init_gain); | ||
1240 | b43_phy_write(dev, 0x2A7, e->init_gain); | ||
1241 | b43_ntab_write_bulk(dev, B43_NTAB16(7, 0x106), 2, | ||
1242 | e->rfseq_init); | ||
1243 | b43_phy_write(dev, B43_NPHY_C1_INITGAIN, e->init_gain); | ||
1244 | |||
1245 | /* TODO: check defines. Do not match variables names */ | ||
1246 | b43_phy_write(dev, B43_NPHY_C1_CLIP1_MEDGAIN, e->cliphi_gain); | ||
1247 | b43_phy_write(dev, 0x2A9, e->cliphi_gain); | ||
1248 | b43_phy_write(dev, B43_NPHY_C1_CLIP2_GAIN, e->clipmd_gain); | ||
1249 | b43_phy_write(dev, 0x2AB, e->clipmd_gain); | ||
1250 | b43_phy_write(dev, B43_NPHY_C2_CLIP1_HIGAIN, e->cliplo_gain); | ||
1251 | b43_phy_write(dev, 0x2AD, e->cliplo_gain); | ||
1252 | |||
1253 | b43_phy_maskset(dev, 0x27D, 0xFF00, e->crsmin); | ||
1254 | b43_phy_maskset(dev, 0x280, 0xFF00, e->crsminl); | ||
1255 | b43_phy_maskset(dev, 0x283, 0xFF00, e->crsminu); | ||
1256 | b43_phy_write(dev, B43_NPHY_C1_NBCLIPTHRES, e->nbclip); | ||
1257 | b43_phy_write(dev, B43_NPHY_C2_NBCLIPTHRES, e->nbclip); | ||
1258 | b43_phy_maskset(dev, B43_NPHY_C1_CLIPWBTHRES, | ||
1259 | ~B43_NPHY_C1_CLIPWBTHRES_CLIP2, e->wlclip); | ||
1260 | b43_phy_maskset(dev, B43_NPHY_C2_CLIPWBTHRES, | ||
1261 | ~B43_NPHY_C2_CLIPWBTHRES_CLIP2, e->wlclip); | ||
1262 | b43_phy_write(dev, B43_NPHY_CCK_SHIFTB_REF, 0x809C); | ||
1188 | } else { | 1263 | } else { |
1189 | /* Set Clip 2 detect */ | 1264 | /* Set Clip 2 detect */ |
1190 | b43_phy_set(dev, B43_NPHY_C1_CGAINI, | 1265 | b43_phy_set(dev, B43_NPHY_C1_CGAINI, |
@@ -1281,17 +1356,17 @@ static void b43_nphy_gain_ctrl_workarounds(struct b43_wldev *dev) | |||
1281 | B43_NPHY_TABLE_DATALO, tmp); | 1356 | B43_NPHY_TABLE_DATALO, tmp); |
1282 | } | 1357 | } |
1283 | } | 1358 | } |
1359 | } | ||
1284 | 1360 | ||
1285 | b43_nphy_set_rf_sequence(dev, 5, | 1361 | b43_nphy_set_rf_sequence(dev, 5, |
1286 | rfseq_events, rfseq_delays, 3); | 1362 | rfseq_events, rfseq_delays, 3); |
1287 | b43_phy_maskset(dev, B43_NPHY_OVER_DGAIN1, | 1363 | b43_phy_maskset(dev, B43_NPHY_OVER_DGAIN1, |
1288 | ~B43_NPHY_OVER_DGAIN_CCKDGECV & 0xFFFF, | 1364 | ~B43_NPHY_OVER_DGAIN_CCKDGECV & 0xFFFF, |
1289 | 0x5A << B43_NPHY_OVER_DGAIN_CCKDGECV_SHIFT); | 1365 | 0x5A << B43_NPHY_OVER_DGAIN_CCKDGECV_SHIFT); |
1290 | 1366 | ||
1291 | if (b43_current_band(dev->wl) == IEEE80211_BAND_2GHZ) | 1367 | if (b43_current_band(dev->wl) == IEEE80211_BAND_2GHZ) |
1292 | b43_phy_maskset(dev, B43_PHY_N(0xC5D), | 1368 | b43_phy_maskset(dev, B43_PHY_N(0xC5D), |
1293 | 0xFF80, 4); | 1369 | 0xFF80, 4); |
1294 | } | ||
1295 | } | 1370 | } |
1296 | } | 1371 | } |
1297 | 1372 | ||
@@ -1308,6 +1383,9 @@ static void b43_nphy_workarounds(struct b43_wldev *dev) | |||
1308 | u8 events2[7] = { 0x0, 0x3, 0x5, 0x4, 0x2, 0x1, 0x8 }; | 1383 | u8 events2[7] = { 0x0, 0x3, 0x5, 0x4, 0x2, 0x1, 0x8 }; |
1309 | u8 delays2[7] = { 0x8, 0x6, 0x2, 0x4, 0x4, 0x6, 0x1 }; | 1384 | u8 delays2[7] = { 0x8, 0x6, 0x2, 0x4, 0x4, 0x6, 0x1 }; |
1310 | 1385 | ||
1386 | u16 tmp16; | ||
1387 | u32 tmp32; | ||
1388 | |||
1311 | if (b43_current_band(dev->wl) == IEEE80211_BAND_5GHZ) | 1389 | if (b43_current_band(dev->wl) == IEEE80211_BAND_5GHZ) |
1312 | b43_nphy_classifier(dev, 1, 0); | 1390 | b43_nphy_classifier(dev, 1, 0); |
1313 | else | 1391 | else |
@@ -1320,7 +1398,82 @@ static void b43_nphy_workarounds(struct b43_wldev *dev) | |||
1320 | B43_NPHY_IQFLIP_ADC1 | B43_NPHY_IQFLIP_ADC2); | 1398 | B43_NPHY_IQFLIP_ADC1 | B43_NPHY_IQFLIP_ADC2); |
1321 | 1399 | ||
1322 | if (dev->phy.rev >= 3) { | 1400 | if (dev->phy.rev >= 3) { |
1401 | tmp32 = b43_ntab_read(dev, B43_NTAB32(30, 0)); | ||
1402 | tmp32 &= 0xffffff; | ||
1403 | b43_ntab_write(dev, B43_NTAB32(30, 0), tmp32); | ||
1404 | |||
1405 | b43_phy_write(dev, B43_NPHY_PHASETR_A0, 0x0125); | ||
1406 | b43_phy_write(dev, B43_NPHY_PHASETR_A1, 0x01B3); | ||
1407 | b43_phy_write(dev, B43_NPHY_PHASETR_A2, 0x0105); | ||
1408 | b43_phy_write(dev, B43_NPHY_PHASETR_B0, 0x016E); | ||
1409 | b43_phy_write(dev, B43_NPHY_PHASETR_B1, 0x00CD); | ||
1410 | b43_phy_write(dev, B43_NPHY_PHASETR_B2, 0x0020); | ||
1411 | |||
1412 | b43_phy_write(dev, B43_NPHY_C2_CLIP1_MEDGAIN, 0x000C); | ||
1413 | b43_phy_write(dev, 0x2AE, 0x000C); | ||
1414 | |||
1323 | /* TODO */ | 1415 | /* TODO */ |
1416 | |||
1417 | tmp16 = (b43_current_band(dev->wl) == IEEE80211_BAND_2GHZ) ? | ||
1418 | 0x2 : 0x9C40; | ||
1419 | b43_phy_write(dev, B43_NPHY_ENDROP_TLEN, tmp16); | ||
1420 | |||
1421 | b43_phy_maskset(dev, 0x294, 0xF0FF, 0x0700); | ||
1422 | |||
1423 | b43_ntab_write(dev, B43_NTAB32(16, 3), 0x18D); | ||
1424 | b43_ntab_write(dev, B43_NTAB32(16, 127), 0x18D); | ||
1425 | |||
1426 | b43_nphy_gain_ctrl_workarounds(dev); | ||
1427 | |||
1428 | b43_ntab_write(dev, B43_NTAB32(8, 0), 2); | ||
1429 | b43_ntab_write(dev, B43_NTAB32(8, 16), 2); | ||
1430 | |||
1431 | /* TODO */ | ||
1432 | |||
1433 | b43_radio_write(dev, B2056_RX0 | B2056_RX_MIXA_MAST_BIAS, 0x00); | ||
1434 | b43_radio_write(dev, B2056_RX1 | B2056_RX_MIXA_MAST_BIAS, 0x00); | ||
1435 | b43_radio_write(dev, B2056_RX0 | B2056_RX_MIXA_BIAS_MAIN, 0x06); | ||
1436 | b43_radio_write(dev, B2056_RX1 | B2056_RX_MIXA_BIAS_MAIN, 0x06); | ||
1437 | b43_radio_write(dev, B2056_RX0 | B2056_RX_MIXA_BIAS_AUX, 0x07); | ||
1438 | b43_radio_write(dev, B2056_RX1 | B2056_RX_MIXA_BIAS_AUX, 0x07); | ||
1439 | b43_radio_write(dev, B2056_RX0 | B2056_RX_MIXA_LOB_BIAS, 0x88); | ||
1440 | b43_radio_write(dev, B2056_RX1 | B2056_RX_MIXA_LOB_BIAS, 0x88); | ||
1441 | b43_radio_write(dev, B2056_RX0 | B2056_RX_MIXG_CMFB_IDAC, 0x00); | ||
1442 | b43_radio_write(dev, B2056_RX1 | B2056_RX_MIXG_CMFB_IDAC, 0x00); | ||
1443 | |||
1444 | /* N PHY WAR TX Chain Update with hw_phytxchain as argument */ | ||
1445 | |||
1446 | if ((bus->sprom.boardflags2_lo & B43_BFL2_APLL_WAR && | ||
1447 | b43_current_band(dev->wl) == IEEE80211_BAND_5GHZ) || | ||
1448 | (bus->sprom.boardflags2_lo & B43_BFL2_GPLL_WAR && | ||
1449 | b43_current_band(dev->wl) == IEEE80211_BAND_2GHZ)) | ||
1450 | tmp32 = 0x00088888; | ||
1451 | else | ||
1452 | tmp32 = 0x88888888; | ||
1453 | b43_ntab_write(dev, B43_NTAB32(30, 1), tmp32); | ||
1454 | b43_ntab_write(dev, B43_NTAB32(30, 2), tmp32); | ||
1455 | b43_ntab_write(dev, B43_NTAB32(30, 3), tmp32); | ||
1456 | |||
1457 | if (dev->phy.rev == 4 && | ||
1458 | b43_current_band(dev->wl) == IEEE80211_BAND_5GHZ) { | ||
1459 | b43_radio_write(dev, B2056_TX0 | B2056_TX_GMBB_IDAC, | ||
1460 | 0x70); | ||
1461 | b43_radio_write(dev, B2056_TX1 | B2056_TX_GMBB_IDAC, | ||
1462 | 0x70); | ||
1463 | } | ||
1464 | |||
1465 | b43_phy_write(dev, 0x224, 0x039C); | ||
1466 | b43_phy_write(dev, 0x225, 0x0357); | ||
1467 | b43_phy_write(dev, 0x226, 0x0317); | ||
1468 | b43_phy_write(dev, 0x227, 0x02D7); | ||
1469 | b43_phy_write(dev, 0x228, 0x039C); | ||
1470 | b43_phy_write(dev, 0x229, 0x0357); | ||
1471 | b43_phy_write(dev, 0x22A, 0x0317); | ||
1472 | b43_phy_write(dev, 0x22B, 0x02D7); | ||
1473 | b43_phy_write(dev, 0x22C, 0x039C); | ||
1474 | b43_phy_write(dev, 0x22D, 0x0357); | ||
1475 | b43_phy_write(dev, 0x22E, 0x0317); | ||
1476 | b43_phy_write(dev, 0x22F, 0x02D7); | ||
1324 | } else { | 1477 | } else { |
1325 | if (b43_current_band(dev->wl) == IEEE80211_BAND_5GHZ && | 1478 | if (b43_current_band(dev->wl) == IEEE80211_BAND_5GHZ && |
1326 | nphy->band5g_pwrgain) { | 1479 | nphy->band5g_pwrgain) { |
@@ -2128,7 +2281,7 @@ static int b43_nphy_poll_rssi(struct b43_wldev *dev, u8 type, s32 *buf, | |||
2128 | save_regs_phy[5] = b43_phy_read(dev, B43_NPHY_AFECTL_OVER); | 2281 | save_regs_phy[5] = b43_phy_read(dev, B43_NPHY_AFECTL_OVER); |
2129 | save_regs_phy[6] = b43_phy_read(dev, B43_NPHY_TXF_40CO_B1S0); | 2282 | save_regs_phy[6] = b43_phy_read(dev, B43_NPHY_TXF_40CO_B1S0); |
2130 | save_regs_phy[7] = b43_phy_read(dev, B43_NPHY_TXF_40CO_B32S1); | 2283 | save_regs_phy[7] = b43_phy_read(dev, B43_NPHY_TXF_40CO_B32S1); |
2131 | } else if (dev->phy.rev == 2) { | 2284 | } else { |
2132 | save_regs_phy[0] = b43_phy_read(dev, B43_NPHY_AFECTL_C1); | 2285 | save_regs_phy[0] = b43_phy_read(dev, B43_NPHY_AFECTL_C1); |
2133 | save_regs_phy[1] = b43_phy_read(dev, B43_NPHY_AFECTL_C2); | 2286 | save_regs_phy[1] = b43_phy_read(dev, B43_NPHY_AFECTL_C2); |
2134 | save_regs_phy[2] = b43_phy_read(dev, B43_NPHY_AFECTL_OVER); | 2287 | save_regs_phy[2] = b43_phy_read(dev, B43_NPHY_AFECTL_OVER); |
@@ -2179,7 +2332,7 @@ static int b43_nphy_poll_rssi(struct b43_wldev *dev, u8 type, s32 *buf, | |||
2179 | b43_phy_write(dev, B43_NPHY_AFECTL_OVER, save_regs_phy[5]); | 2332 | b43_phy_write(dev, B43_NPHY_AFECTL_OVER, save_regs_phy[5]); |
2180 | b43_phy_write(dev, B43_NPHY_TXF_40CO_B1S0, save_regs_phy[6]); | 2333 | b43_phy_write(dev, B43_NPHY_TXF_40CO_B1S0, save_regs_phy[6]); |
2181 | b43_phy_write(dev, B43_NPHY_TXF_40CO_B32S1, save_regs_phy[7]); | 2334 | b43_phy_write(dev, B43_NPHY_TXF_40CO_B32S1, save_regs_phy[7]); |
2182 | } else if (dev->phy.rev == 2) { | 2335 | } else { |
2183 | b43_phy_write(dev, B43_NPHY_AFECTL_C1, save_regs_phy[0]); | 2336 | b43_phy_write(dev, B43_NPHY_AFECTL_C1, save_regs_phy[0]); |
2184 | b43_phy_write(dev, B43_NPHY_AFECTL_C2, save_regs_phy[1]); | 2337 | b43_phy_write(dev, B43_NPHY_AFECTL_C2, save_regs_phy[1]); |
2185 | b43_phy_write(dev, B43_NPHY_AFECTL_OVER, save_regs_phy[2]); | 2338 | b43_phy_write(dev, B43_NPHY_AFECTL_OVER, save_regs_phy[2]); |
@@ -3878,10 +4031,14 @@ static void b43_nphy_op_software_rfkill(struct b43_wldev *dev, | |||
3878 | } | 4031 | } |
3879 | } | 4032 | } |
3880 | 4033 | ||
4034 | /* http://bcm-v4.sipsolutions.net/802.11/PHY/Anacore */ | ||
3881 | static void b43_nphy_op_switch_analog(struct b43_wldev *dev, bool on) | 4035 | static void b43_nphy_op_switch_analog(struct b43_wldev *dev, bool on) |
3882 | { | 4036 | { |
3883 | b43_phy_write(dev, B43_NPHY_AFECTL_OVER, | 4037 | u16 val = on ? 0 : 0x7FFF; |
3884 | on ? 0 : 0x7FFF); | 4038 | |
4039 | if (dev->phy.rev >= 3) | ||
4040 | b43_phy_write(dev, B43_NPHY_AFECTL_OVER1, val); | ||
4041 | b43_phy_write(dev, B43_NPHY_AFECTL_OVER, val); | ||
3885 | } | 4042 | } |
3886 | 4043 | ||
3887 | static int b43_nphy_op_switch_channel(struct b43_wldev *dev, | 4044 | static int b43_nphy_op_switch_channel(struct b43_wldev *dev, |
diff --git a/drivers/net/wireless/b43/tables_nphy.c b/drivers/net/wireless/b43/tables_nphy.c index dc8ef09a8552..2de483b3d3ba 100644 --- a/drivers/net/wireless/b43/tables_nphy.c +++ b/drivers/net/wireless/b43/tables_nphy.c | |||
@@ -1097,6 +1097,1080 @@ static const u32 b43_ntab_tmap[] = { | |||
1097 | 0x00000000, 0x00000000, 0x00000000, 0x00000000, | 1097 | 0x00000000, 0x00000000, 0x00000000, 0x00000000, |
1098 | }; | 1098 | }; |
1099 | 1099 | ||
1100 | /* static tables, PHY revision >= 3 */ | ||
1101 | static const u32 b43_ntab_framestruct_r3[] = { | ||
1102 | 0x08004a04, 0x00100000, 0x01000a05, 0x00100020, | ||
1103 | 0x09804506, 0x00100030, 0x09804507, 0x00100030, | ||
1104 | 0x00000000, 0x00000000, 0x00000000, 0x00000000, | ||
1105 | 0x00000000, 0x00000000, 0x00000000, 0x00000000, | ||
1106 | 0x08004a0c, 0x00100004, 0x01000a0d, 0x00100024, | ||
1107 | 0x0980450e, 0x00100034, 0x0980450f, 0x00100034, | ||
1108 | 0x00000000, 0x00000000, 0x00000000, 0x00000000, | ||
1109 | 0x00000000, 0x00000000, 0x00000000, 0x00000000, | ||
1110 | 0x00000a04, 0x00100000, 0x11008a05, 0x00100020, | ||
1111 | 0x1980c506, 0x00100030, 0x21810506, 0x00100030, | ||
1112 | 0x21810506, 0x00100030, 0x01800504, 0x00100030, | ||
1113 | 0x11808505, 0x00100030, 0x29814507, 0x01100030, | ||
1114 | 0x00000a04, 0x00100000, 0x11008a05, 0x00100020, | ||
1115 | 0x21810506, 0x00100030, 0x21810506, 0x00100030, | ||
1116 | 0x29814507, 0x01100030, 0x00000000, 0x00000000, | ||
1117 | 0x00000000, 0x00000000, 0x00000000, 0x00000000, | ||
1118 | 0x00000a0c, 0x00100008, 0x11008a0d, 0x00100028, | ||
1119 | 0x1980c50e, 0x00100038, 0x2181050e, 0x00100038, | ||
1120 | 0x2181050e, 0x00100038, 0x0180050c, 0x00100038, | ||
1121 | 0x1180850d, 0x00100038, 0x2981450f, 0x01100038, | ||
1122 | 0x00000a0c, 0x00100008, 0x11008a0d, 0x00100028, | ||
1123 | 0x2181050e, 0x00100038, 0x2181050e, 0x00100038, | ||
1124 | 0x2981450f, 0x01100038, 0x00000000, 0x00000000, | ||
1125 | 0x00000000, 0x00000000, 0x00000000, 0x00000000, | ||
1126 | 0x08004a04, 0x00100000, 0x01000a05, 0x00100020, | ||
1127 | 0x1980c506, 0x00100030, 0x1980c506, 0x00100030, | ||
1128 | 0x11808504, 0x00100030, 0x3981ca05, 0x00100030, | ||
1129 | 0x29814507, 0x01100030, 0x00000000, 0x00000000, | ||
1130 | 0x10008a04, 0x00100000, 0x3981ca05, 0x00100030, | ||
1131 | 0x1980c506, 0x00100030, 0x29814507, 0x01100030, | ||
1132 | 0x00000000, 0x00000000, 0x00000000, 0x00000000, | ||
1133 | 0x00000000, 0x00000000, 0x00000000, 0x00000000, | ||
1134 | 0x08004a0c, 0x00100008, 0x01000a0d, 0x00100028, | ||
1135 | 0x1980c50e, 0x00100038, 0x1980c50e, 0x00100038, | ||
1136 | 0x1180850c, 0x00100038, 0x3981ca0d, 0x00100038, | ||
1137 | 0x2981450f, 0x01100038, 0x00000000, 0x00000000, | ||
1138 | 0x10008a0c, 0x00100008, 0x3981ca0d, 0x00100038, | ||
1139 | 0x1980c50e, 0x00100038, 0x2981450f, 0x01100038, | ||
1140 | 0x00000000, 0x00000000, 0x00000000, 0x00000000, | ||
1141 | 0x00000000, 0x00000000, 0x00000000, 0x00000000, | ||
1142 | 0x40021404, 0x00100000, 0x02001405, 0x00100040, | ||
1143 | 0x0b004a06, 0x01900060, 0x13008a06, 0x01900060, | ||
1144 | 0x13008a06, 0x01900060, 0x43020a04, 0x00100060, | ||
1145 | 0x1b00ca05, 0x00100060, 0x23010a07, 0x01500060, | ||
1146 | 0x40021404, 0x00100000, 0x1a00d405, 0x00100040, | ||
1147 | 0x13008a06, 0x01900060, 0x13008a06, 0x01900060, | ||
1148 | 0x23010a07, 0x01500060, 0x00000000, 0x00000000, | ||
1149 | 0x00000000, 0x00000000, 0x00000000, 0x00000000, | ||
1150 | 0x4002140c, 0x00100010, 0x0200140d, 0x00100050, | ||
1151 | 0x0b004a0e, 0x01900070, 0x13008a0e, 0x01900070, | ||
1152 | 0x13008a0e, 0x01900070, 0x43020a0c, 0x00100070, | ||
1153 | 0x1b00ca0d, 0x00100070, 0x23010a0f, 0x01500070, | ||
1154 | 0x4002140c, 0x00100010, 0x1a00d40d, 0x00100050, | ||
1155 | 0x13008a0e, 0x01900070, 0x13008a0e, 0x01900070, | ||
1156 | 0x23010a0f, 0x01500070, 0x00000000, 0x00000000, | ||
1157 | 0x00000000, 0x00000000, 0x00000000, 0x00000000, | ||
1158 | 0x50029404, 0x00100000, 0x32019405, 0x00100040, | ||
1159 | 0x0b004a06, 0x01900060, 0x0b004a06, 0x01900060, | ||
1160 | 0x5b02ca04, 0x00100060, 0x3b01d405, 0x00100060, | ||
1161 | 0x23010a07, 0x01500060, 0x00000000, 0x00000000, | ||
1162 | 0x5802d404, 0x00100000, 0x3b01d405, 0x00100060, | ||
1163 | 0x0b004a06, 0x01900060, 0x23010a07, 0x01500060, | ||
1164 | 0x00000000, 0x00000000, 0x00000000, 0x00000000, | ||
1165 | 0x00000000, 0x00000000, 0x00000000, 0x00000000, | ||
1166 | 0x5002940c, 0x00100010, 0x3201940d, 0x00100050, | ||
1167 | 0x0b004a0e, 0x01900070, 0x0b004a0e, 0x01900070, | ||
1168 | 0x5b02ca0c, 0x00100070, 0x3b01d40d, 0x00100070, | ||
1169 | 0x23010a0f, 0x01500070, 0x00000000, 0x00000000, | ||
1170 | 0x5802d40c, 0x00100010, 0x3b01d40d, 0x00100070, | ||
1171 | 0x0b004a0e, 0x01900070, 0x23010a0f, 0x01500070, | ||
1172 | 0x00000000, 0x00000000, 0x00000000, 0x00000000, | ||
1173 | 0x00000000, 0x00000000, 0x00000000, 0x00000000, | ||
1174 | 0x40021404, 0x000f4800, 0x62031405, 0x00100040, | ||
1175 | 0x53028a06, 0x01900060, 0x53028a07, 0x01900060, | ||
1176 | 0x00000000, 0x00000000, 0x00000000, 0x00000000, | ||
1177 | 0x00000000, 0x00000000, 0x00000000, 0x00000000, | ||
1178 | 0x4002140c, 0x000f4808, 0x6203140d, 0x00100048, | ||
1179 | 0x53028a0e, 0x01900068, 0x53028a0f, 0x01900068, | ||
1180 | 0x00000000, 0x00000000, 0x00000000, 0x00000000, | ||
1181 | 0x00000000, 0x00000000, 0x00000000, 0x00000000, | ||
1182 | 0x00000a0c, 0x00100004, 0x11008a0d, 0x00100024, | ||
1183 | 0x1980c50e, 0x00100034, 0x2181050e, 0x00100034, | ||
1184 | 0x2181050e, 0x00100034, 0x0180050c, 0x00100038, | ||
1185 | 0x1180850d, 0x00100038, 0x1181850d, 0x00100038, | ||
1186 | 0x2981450f, 0x01100038, 0x00000000, 0x00000000, | ||
1187 | 0x00000000, 0x00000000, 0x00000000, 0x00000000, | ||
1188 | 0x00000000, 0x00000000, 0x00000000, 0x00000000, | ||
1189 | 0x00000000, 0x00000000, 0x00000000, 0x00000000, | ||
1190 | 0x00000a0c, 0x00100008, 0x11008a0d, 0x00100028, | ||
1191 | 0x2181050e, 0x00100038, 0x2181050e, 0x00100038, | ||
1192 | 0x1181850d, 0x00100038, 0x2981450f, 0x01100038, | ||
1193 | 0x00000000, 0x00000000, 0x00000000, 0x00000000, | ||
1194 | 0x00000000, 0x00000000, 0x00000000, 0x00000000, | ||
1195 | 0x00000000, 0x00000000, 0x00000000, 0x00000000, | ||
1196 | 0x00000000, 0x00000000, 0x00000000, 0x00000000, | ||
1197 | 0x00000000, 0x00000000, 0x00000000, 0x00000000, | ||
1198 | 0x08004a04, 0x00100000, 0x01000a05, 0x00100020, | ||
1199 | 0x0180c506, 0x00100030, 0x0180c506, 0x00100030, | ||
1200 | 0x2180c50c, 0x00100030, 0x49820a0d, 0x0016a130, | ||
1201 | 0x41824a0d, 0x0016a130, 0x2981450f, 0x01100030, | ||
1202 | 0x00000000, 0x00000000, 0x00000000, 0x00000000, | ||
1203 | 0x00000000, 0x00000000, 0x00000000, 0x00000000, | ||
1204 | 0x00000000, 0x00000000, 0x00000000, 0x00000000, | ||
1205 | 0x00000000, 0x00000000, 0x00000000, 0x00000000, | ||
1206 | 0x2000ca0c, 0x00100000, 0x49820a0d, 0x0016a130, | ||
1207 | 0x1980c50e, 0x00100030, 0x41824a0d, 0x0016a130, | ||
1208 | 0x2981450f, 0x01100030, 0x00000000, 0x00000000, | ||
1209 | 0x00000000, 0x00000000, 0x00000000, 0x00000000, | ||
1210 | 0x00000000, 0x00000000, 0x00000000, 0x00000000, | ||
1211 | 0x00000000, 0x00000000, 0x00000000, 0x00000000, | ||
1212 | 0x00000000, 0x00000000, 0x00000000, 0x00000000, | ||
1213 | 0x00000000, 0x00000000, 0x00000000, 0x00000000, | ||
1214 | 0x4002140c, 0x00100008, 0x0200140d, 0x00100048, | ||
1215 | 0x0b004a0e, 0x01900068, 0x13008a0e, 0x01900068, | ||
1216 | 0x13008a0e, 0x01900068, 0x43020a0c, 0x00100070, | ||
1217 | 0x1b00ca0d, 0x00100070, 0x1b014a0d, 0x00100070, | ||
1218 | 0x23010a0f, 0x01500070, 0x00000000, 0x00000000, | ||
1219 | 0x00000000, 0x00000000, 0x00000000, 0x00000000, | ||
1220 | 0x00000000, 0x00000000, 0x00000000, 0x00000000, | ||
1221 | 0x00000000, 0x00000000, 0x00000000, 0x00000000, | ||
1222 | 0x4002140c, 0x00100010, 0x1a00d40d, 0x00100050, | ||
1223 | 0x13008a0e, 0x01900070, 0x13008a0e, 0x01900070, | ||
1224 | 0x1b014a0d, 0x00100070, 0x23010a0f, 0x01500070, | ||
1225 | 0x00000000, 0x00000000, 0x00000000, 0x00000000, | ||
1226 | 0x00000000, 0x00000000, 0x00000000, 0x00000000, | ||
1227 | 0x00000000, 0x00000000, 0x00000000, 0x00000000, | ||
1228 | 0x00000000, 0x00000000, 0x00000000, 0x00000000, | ||
1229 | 0x00000000, 0x00000000, 0x00000000, 0x00000000, | ||
1230 | 0x50029404, 0x00100000, 0x32019405, 0x00100040, | ||
1231 | 0x03004a06, 0x01900060, 0x03004a06, 0x01900060, | ||
1232 | 0x6b030a0c, 0x00100060, 0x4b02140d, 0x0016a160, | ||
1233 | 0x4302540d, 0x0016a160, 0x23010a0f, 0x01500060, | ||
1234 | 0x00000000, 0x00000000, 0x00000000, 0x00000000, | ||
1235 | 0x00000000, 0x00000000, 0x00000000, 0x00000000, | ||
1236 | 0x00000000, 0x00000000, 0x00000000, 0x00000000, | ||
1237 | 0x00000000, 0x00000000, 0x00000000, 0x00000000, | ||
1238 | 0x6b03140c, 0x00100060, 0x4b02140d, 0x0016a160, | ||
1239 | 0x0b004a0e, 0x01900060, 0x4302540d, 0x0016a160, | ||
1240 | 0x23010a0f, 0x01500060, 0x00000000, 0x00000000, | ||
1241 | 0x00000000, 0x00000000, 0x00000000, 0x00000000, | ||
1242 | 0x00000000, 0x00000000, 0x00000000, 0x00000000, | ||
1243 | 0x00000000, 0x00000000, 0x00000000, 0x00000000, | ||
1244 | 0x00000000, 0x00000000, 0x00000000, 0x00000000, | ||
1245 | 0x00000000, 0x00000000, 0x00000000, 0x00000000, | ||
1246 | 0x40021404, 0x00100000, 0x1a00d405, 0x00100040, | ||
1247 | 0x53028a06, 0x01900060, 0x5b02ca06, 0x01900060, | ||
1248 | 0x5b02ca06, 0x01900060, 0x43020a04, 0x00100060, | ||
1249 | 0x1b00ca05, 0x00100060, 0x53028a07, 0x0190c060, | ||
1250 | 0x00000000, 0x00000000, 0x00000000, 0x00000000, | ||
1251 | 0x00000000, 0x00000000, 0x00000000, 0x00000000, | ||
1252 | 0x00000000, 0x00000000, 0x00000000, 0x00000000, | ||
1253 | 0x00000000, 0x00000000, 0x00000000, 0x00000000, | ||
1254 | 0x4002140c, 0x00100010, 0x1a00d40d, 0x00100050, | ||
1255 | 0x53028a0e, 0x01900070, 0x5b02ca0e, 0x01900070, | ||
1256 | 0x5b02ca0e, 0x01900070, 0x43020a0c, 0x00100070, | ||
1257 | 0x1b00ca0d, 0x00100070, 0x53028a0f, 0x0190c070, | ||
1258 | 0x00000000, 0x00000000, 0x00000000, 0x00000000, | ||
1259 | 0x00000000, 0x00000000, 0x00000000, 0x00000000, | ||
1260 | 0x00000000, 0x00000000, 0x00000000, 0x00000000, | ||
1261 | 0x00000000, 0x00000000, 0x00000000, 0x00000000, | ||
1262 | 0x40021404, 0x00100000, 0x1a00d405, 0x00100040, | ||
1263 | 0x5b02ca06, 0x01900060, 0x5b02ca06, 0x01900060, | ||
1264 | 0x53028a07, 0x0190c060, 0x00000000, 0x00000000, | ||
1265 | 0x00000000, 0x00000000, 0x00000000, 0x00000000, | ||
1266 | 0x00000000, 0x00000000, 0x00000000, 0x00000000, | ||
1267 | 0x00000000, 0x00000000, 0x00000000, 0x00000000, | ||
1268 | 0x00000000, 0x00000000, 0x00000000, 0x00000000, | ||
1269 | 0x00000000, 0x00000000, 0x00000000, 0x00000000, | ||
1270 | 0x4002140c, 0x00100010, 0x1a00d40d, 0x00100050, | ||
1271 | 0x5b02ca0e, 0x01900070, 0x5b02ca0e, 0x01900070, | ||
1272 | 0x53028a0f, 0x0190c070, 0x00000000, 0x00000000, | ||
1273 | 0x00000000, 0x00000000, 0x00000000, 0x00000000, | ||
1274 | 0x00000000, 0x00000000, 0x00000000, 0x00000000, | ||
1275 | 0x00000000, 0x00000000, 0x00000000, 0x00000000, | ||
1276 | 0x00000000, 0x00000000, 0x00000000, 0x00000000, | ||
1277 | 0x00000000, 0x00000000, 0x00000000, 0x00000000, | ||
1278 | 0x00000000, 0x00000000, 0x00000000, 0x00000000, | ||
1279 | 0x00000000, 0x00000000, 0x00000000, 0x00000000, | ||
1280 | 0x00000000, 0x00000000, 0x00000000, 0x00000000, | ||
1281 | 0x00000000, 0x00000000, 0x00000000, 0x00000000, | ||
1282 | 0x00000000, 0x00000000, 0x00000000, 0x00000000, | ||
1283 | 0x00000000, 0x00000000, 0x00000000, 0x00000000, | ||
1284 | 0x00000000, 0x00000000, 0x00000000, 0x00000000, | ||
1285 | 0x00000000, 0x00000000, 0x00000000, 0x00000000, | ||
1286 | 0x00000000, 0x00000000, 0x00000000, 0x00000000, | ||
1287 | 0x00000000, 0x00000000, 0x00000000, 0x00000000, | ||
1288 | 0x00000000, 0x00000000, 0x00000000, 0x00000000, | ||
1289 | 0x00000000, 0x00000000, 0x00000000, 0x00000000, | ||
1290 | 0x00000000, 0x00000000, 0x00000000, 0x00000000, | ||
1291 | 0x00000000, 0x00000000, 0x00000000, 0x00000000, | ||
1292 | 0x00000000, 0x00000000, 0x00000000, 0x00000000, | ||
1293 | 0x00000000, 0x00000000, 0x00000000, 0x00000000, | ||
1294 | 0x00000000, 0x00000000, 0x00000000, 0x00000000, | ||
1295 | 0x00000000, 0x00000000, 0x00000000, 0x00000000, | ||
1296 | 0x00000000, 0x00000000, 0x00000000, 0x00000000, | ||
1297 | 0x00000000, 0x00000000, 0x00000000, 0x00000000, | ||
1298 | 0x00000000, 0x00000000, 0x00000000, 0x00000000, | ||
1299 | 0x00000000, 0x00000000, 0x00000000, 0x00000000, | ||
1300 | 0x00000000, 0x00000000, 0x00000000, 0x00000000, | ||
1301 | 0x00000000, 0x00000000, 0x00000000, 0x00000000, | ||
1302 | 0x00000000, 0x00000000, 0x00000000, 0x00000000, | ||
1303 | 0x00000000, 0x00000000, 0x00000000, 0x00000000, | ||
1304 | 0x00000000, 0x00000000, 0x00000000, 0x00000000, | ||
1305 | 0x00000000, 0x00000000, 0x00000000, 0x00000000, | ||
1306 | 0x00000000, 0x00000000, 0x00000000, 0x00000000, | ||
1307 | 0x00000000, 0x00000000, 0x00000000, 0x00000000, | ||
1308 | 0x00000000, 0x00000000, 0x00000000, 0x00000000, | ||
1309 | 0x00000000, 0x00000000, 0x00000000, 0x00000000, | ||
1310 | }; | ||
1311 | |||
1312 | static const u16 b43_ntab_pilot_r3[] = { | ||
1313 | 0xff08, 0xff08, 0xff08, 0xff08, 0xff08, 0xff08, | ||
1314 | 0xff08, 0xff08, 0x80d5, 0x80d5, 0x80d5, 0x80d5, | ||
1315 | 0x80d5, 0x80d5, 0x80d5, 0x80d5, 0xff0a, 0xff82, | ||
1316 | 0xffa0, 0xff28, 0xffff, 0xffff, 0xffff, 0xffff, | ||
1317 | 0xff82, 0xffa0, 0xff28, 0xff0a, 0xffff, 0xffff, | ||
1318 | 0xffff, 0xffff, 0xf83f, 0xfa1f, 0xfa97, 0xfab5, | ||
1319 | 0xf2bd, 0xf0bf, 0xffff, 0xffff, 0xf017, 0xf815, | ||
1320 | 0xf215, 0xf095, 0xf035, 0xf01d, 0xffff, 0xffff, | ||
1321 | 0xff08, 0xff02, 0xff80, 0xff20, 0xff08, 0xff02, | ||
1322 | 0xff80, 0xff20, 0xf01f, 0xf817, 0xfa15, 0xf295, | ||
1323 | 0xf0b5, 0xf03d, 0xffff, 0xffff, 0xf82a, 0xfa0a, | ||
1324 | 0xfa82, 0xfaa0, 0xf2a8, 0xf0aa, 0xffff, 0xffff, | ||
1325 | 0xf002, 0xf800, 0xf200, 0xf080, 0xf020, 0xf008, | ||
1326 | 0xffff, 0xffff, 0xf00a, 0xf802, 0xfa00, 0xf280, | ||
1327 | 0xf0a0, 0xf028, 0xffff, 0xffff, | ||
1328 | }; | ||
1329 | |||
1330 | static const u32 b43_ntab_tmap_r3[] = { | ||
1331 | 0x8a88aa80, 0x8aaaaa8a, 0x8a8a8aa8, 0x00000888, | ||
1332 | 0x88000000, 0x8a8a88aa, 0x8aa88888, 0x8888a8a8, | ||
1333 | 0xf1111110, 0x11111111, 0x11f11111, 0x00000111, | ||
1334 | 0x11000000, 0x1111f111, 0x11111111, 0x111111f1, | ||
1335 | 0x8a88aa80, 0x8aaaaa8a, 0x8a8a8aa8, 0x000aa888, | ||
1336 | 0x88880000, 0x8a8a88aa, 0x8aa88888, 0x8888a8a8, | ||
1337 | 0xa1111110, 0x11111111, 0x11c11111, 0x00000111, | ||
1338 | 0x11000000, 0x1111a111, 0x11111111, 0x111111a1, | ||
1339 | 0xa2222220, 0x22222222, 0x22c22222, 0x00000222, | ||
1340 | 0x22000000, 0x2222a222, 0x22222222, 0x222222a2, | ||
1341 | 0xf1111110, 0x11111111, 0x11f11111, 0x00011111, | ||
1342 | 0x11110000, 0x1111f111, 0x11111111, 0x111111f1, | ||
1343 | 0xa8aa88a0, 0xa88888a8, 0xa8a8a88a, 0x00088aaa, | ||
1344 | 0xaaaa0000, 0xa8a8aa88, 0xa88aaaaa, 0xaaaa8a8a, | ||
1345 | 0xaaa8aaa0, 0x8aaa8aaa, 0xaa8a8a8a, 0x000aaa88, | ||
1346 | 0x8aaa0000, 0xaaa8a888, 0x8aa88a8a, 0x8a88a888, | ||
1347 | 0x08080a00, 0x0a08080a, 0x080a0a08, 0x00080808, | ||
1348 | 0x080a0000, 0x080a0808, 0x080a0808, 0x0a0a0a08, | ||
1349 | 0xa0a0a0a0, 0x80a0a080, 0x8080a0a0, 0x00008080, | ||
1350 | 0x80a00000, 0x80a080a0, 0xa080a0a0, 0x8080a0a0, | ||
1351 | 0x00000000, 0x00000000, 0x00000000, 0x00000000, | ||
1352 | 0x00000000, 0x00000000, 0x00000000, 0x00000000, | ||
1353 | 0x00000000, 0x00000000, 0x00000000, 0x00000000, | ||
1354 | 0x00000000, 0x00000000, 0x00000000, 0x00000000, | ||
1355 | 0x00000000, 0x00000000, 0x00000000, 0x00000000, | ||
1356 | 0x00000000, 0x00000000, 0x00000000, 0x00000000, | ||
1357 | 0x00000000, 0x00000000, 0x00000000, 0x00000000, | ||
1358 | 0x00000000, 0x00000000, 0x00000000, 0x00000000, | ||
1359 | 0x00000000, 0x00000000, 0x00000000, 0x00000000, | ||
1360 | 0x00000000, 0x00000000, 0x00000000, 0x00000000, | ||
1361 | 0x00000000, 0x00000000, 0x00000000, 0x00000000, | ||
1362 | 0x00000000, 0x00000000, 0x00000000, 0x00000000, | ||
1363 | 0x99999000, 0x9b9b99bb, 0x9bb99999, 0x9999b9b9, | ||
1364 | 0x9b99bb90, 0x9bbbbb9b, 0x9b9b9bb9, 0x00000999, | ||
1365 | 0x88000000, 0x8a8a88aa, 0x8aa88888, 0x8888a8a8, | ||
1366 | 0x8a88aa80, 0x8aaaaa8a, 0x8a8a8aa8, 0x00aaa888, | ||
1367 | 0x22000000, 0x2222b222, 0x22222222, 0x222222b2, | ||
1368 | 0xb2222220, 0x22222222, 0x22d22222, 0x00000222, | ||
1369 | 0x11000000, 0x1111a111, 0x11111111, 0x111111a1, | ||
1370 | 0xa1111110, 0x11111111, 0x11c11111, 0x00000111, | ||
1371 | 0x33000000, 0x3333b333, 0x33333333, 0x333333b3, | ||
1372 | 0xb3333330, 0x33333333, 0x33d33333, 0x00000333, | ||
1373 | 0x22000000, 0x2222a222, 0x22222222, 0x222222a2, | ||
1374 | 0xa2222220, 0x22222222, 0x22c22222, 0x00000222, | ||
1375 | 0x99b99b00, 0x9b9b99bb, 0x9bb99999, 0x9999b9b9, | ||
1376 | 0x9b99bb99, 0x9bbbbb9b, 0x9b9b9bb9, 0x00000999, | ||
1377 | 0x88000000, 0x8a8a88aa, 0x8aa88888, 0x8888a8a8, | ||
1378 | 0x8a88aa88, 0x8aaaaa8a, 0x8a8a8aa8, 0x08aaa888, | ||
1379 | 0x22222200, 0x2222f222, 0x22222222, 0x222222f2, | ||
1380 | 0x22222222, 0x22222222, 0x22f22222, 0x00000222, | ||
1381 | 0x11000000, 0x1111f111, 0x11111111, 0x11111111, | ||
1382 | 0xf1111111, 0x11111111, 0x11f11111, 0x01111111, | ||
1383 | 0xbb9bb900, 0xb9b9bb99, 0xb99bbbbb, 0xbbbb9b9b, | ||
1384 | 0xb9bb99bb, 0xb99999b9, 0xb9b9b99b, 0x00000bbb, | ||
1385 | 0xaa000000, 0xa8a8aa88, 0xa88aaaaa, 0xaaaa8a8a, | ||
1386 | 0xa8aa88aa, 0xa88888a8, 0xa8a8a88a, 0x0a888aaa, | ||
1387 | 0xaa000000, 0xa8a8aa88, 0xa88aaaaa, 0xaaaa8a8a, | ||
1388 | 0xa8aa88a0, 0xa88888a8, 0xa8a8a88a, 0x00000aaa, | ||
1389 | 0x88000000, 0x8a8a88aa, 0x8aa88888, 0x8888a8a8, | ||
1390 | 0x8a88aa80, 0x8aaaaa8a, 0x8a8a8aa8, 0x00000888, | ||
1391 | 0xbbbbbb00, 0x999bbbbb, 0x9bb99b9b, 0xb9b9b9bb, | ||
1392 | 0xb9b99bbb, 0xb9b9b9bb, 0xb9bb9b99, 0x00000999, | ||
1393 | 0x8a000000, 0xaa88a888, 0xa88888aa, 0xa88a8a88, | ||
1394 | 0xa88aa88a, 0x88a8aaaa, 0xa8aa8aaa, 0x0888a88a, | ||
1395 | 0x0b0b0b00, 0x090b0b0b, 0x0b090b0b, 0x0909090b, | ||
1396 | 0x09090b0b, 0x09090b0b, 0x09090b09, 0x00000909, | ||
1397 | 0x0a000000, 0x0a080808, 0x080a080a, 0x080a0a08, | ||
1398 | 0x080a080a, 0x0808080a, 0x0a0a0a08, 0x0808080a, | ||
1399 | 0xb0b0b000, 0x9090b0b0, 0x90b09090, 0xb0b0b090, | ||
1400 | 0xb0b090b0, 0x90b0b0b0, 0xb0b09090, 0x00000090, | ||
1401 | 0x80000000, 0xa080a080, 0xa08080a0, 0xa0808080, | ||
1402 | 0xa080a080, 0x80a0a0a0, 0xa0a080a0, 0x00a0a0a0, | ||
1403 | 0x22000000, 0x2222f222, 0x22222222, 0x222222f2, | ||
1404 | 0xf2222220, 0x22222222, 0x22f22222, 0x00000222, | ||
1405 | 0x11000000, 0x1111f111, 0x11111111, 0x111111f1, | ||
1406 | 0xf1111110, 0x11111111, 0x11f11111, 0x00000111, | ||
1407 | 0x33000000, 0x3333f333, 0x33333333, 0x333333f3, | ||
1408 | 0xf3333330, 0x33333333, 0x33f33333, 0x00000333, | ||
1409 | 0x22000000, 0x2222f222, 0x22222222, 0x222222f2, | ||
1410 | 0xf2222220, 0x22222222, 0x22f22222, 0x00000222, | ||
1411 | 0x99000000, 0x9b9b99bb, 0x9bb99999, 0x9999b9b9, | ||
1412 | 0x9b99bb90, 0x9bbbbb9b, 0x9b9b9bb9, 0x00000999, | ||
1413 | 0x88000000, 0x8a8a88aa, 0x8aa88888, 0x8888a8a8, | ||
1414 | 0x8a88aa80, 0x8aaaaa8a, 0x8a8a8aa8, 0x00000888, | ||
1415 | 0x88888000, 0x8a8a88aa, 0x8aa88888, 0x8888a8a8, | ||
1416 | 0x8a88aa80, 0x8aaaaa8a, 0x8a8a8aa8, 0x00000888, | ||
1417 | 0x88000000, 0x8a8a88aa, 0x8aa88888, 0x8888a8a8, | ||
1418 | 0x8a88aa80, 0x8aaaaa8a, 0x8a8a8aa8, 0x00aaa888, | ||
1419 | 0x88a88a00, 0x8a8a88aa, 0x8aa88888, 0x8888a8a8, | ||
1420 | 0x8a88aa88, 0x8aaaaa8a, 0x8a8a8aa8, 0x00000888, | ||
1421 | 0x88000000, 0x8a8a88aa, 0x8aa88888, 0x8888a8a8, | ||
1422 | 0x8a88aa88, 0x8aaaaa8a, 0x8a8a8aa8, 0x08aaa888, | ||
1423 | 0x11000000, 0x1111a111, 0x11111111, 0x111111a1, | ||
1424 | 0xa1111110, 0x11111111, 0x11c11111, 0x00000111, | ||
1425 | 0x11000000, 0x1111a111, 0x11111111, 0x111111a1, | ||
1426 | 0xa1111110, 0x11111111, 0x11c11111, 0x00000111, | ||
1427 | 0x88000000, 0x8a8a88aa, 0x8aa88888, 0x8888a8a8, | ||
1428 | 0x8a88aa80, 0x8aaaaa8a, 0x8a8a8aa8, 0x00000888, | ||
1429 | 0x88000000, 0x8a8a88aa, 0x8aa88888, 0x8888a8a8, | ||
1430 | 0x8a88aa80, 0x8aaaaa8a, 0x8a8a8aa8, 0x00000888, | ||
1431 | 0x00000000, 0x00000000, 0x00000000, 0x00000000, | ||
1432 | 0x00000000, 0x00000000, 0x00000000, 0x00000000, | ||
1433 | 0x00000000, 0x00000000, 0x00000000, 0x00000000, | ||
1434 | 0x00000000, 0x00000000, 0x00000000, 0x00000000, | ||
1435 | 0x00000000, 0x00000000, 0x00000000, 0x00000000, | ||
1436 | 0x00000000, 0x00000000, 0x00000000, 0x00000000, | ||
1437 | 0x00000000, 0x00000000, 0x00000000, 0x00000000, | ||
1438 | 0x00000000, 0x00000000, 0x00000000, 0x00000000, | ||
1439 | 0x00000000, 0x00000000, 0x00000000, 0x00000000, | ||
1440 | 0x00000000, 0x00000000, 0x00000000, 0x00000000, | ||
1441 | 0x00000000, 0x00000000, 0x00000000, 0x00000000, | ||
1442 | 0x00000000, 0x00000000, 0x00000000, 0x00000000, | ||
1443 | }; | ||
1444 | |||
1445 | static const u32 b43_ntab_intlevel_r3[] = { | ||
1446 | 0x00802070, 0x0671188d, 0x0a60192c, 0x0a300e46, | ||
1447 | 0x00c1188d, 0x080024d2, 0x00000070, | ||
1448 | }; | ||
1449 | |||
1450 | static const u32 b43_ntab_tdtrn_r3[] = { | ||
1451 | 0x061c061c, 0x0050ee68, 0xf592fe36, 0xfe5212f6, | ||
1452 | 0x00000c38, 0xfe5212f6, 0xf592fe36, 0x0050ee68, | ||
1453 | 0x061c061c, 0xee680050, 0xfe36f592, 0x12f6fe52, | ||
1454 | 0x0c380000, 0x12f6fe52, 0xfe36f592, 0xee680050, | ||
1455 | 0x061c061c, 0x0050ee68, 0xf592fe36, 0xfe5212f6, | ||
1456 | 0x00000c38, 0xfe5212f6, 0xf592fe36, 0x0050ee68, | ||
1457 | 0x061c061c, 0xee680050, 0xfe36f592, 0x12f6fe52, | ||
1458 | 0x0c380000, 0x12f6fe52, 0xfe36f592, 0xee680050, | ||
1459 | 0x05e305e3, 0x004def0c, 0xf5f3fe47, 0xfe611246, | ||
1460 | 0x00000bc7, 0xfe611246, 0xf5f3fe47, 0x004def0c, | ||
1461 | 0x05e305e3, 0xef0c004d, 0xfe47f5f3, 0x1246fe61, | ||
1462 | 0x0bc70000, 0x1246fe61, 0xfe47f5f3, 0xef0c004d, | ||
1463 | 0x05e305e3, 0x004def0c, 0xf5f3fe47, 0xfe611246, | ||
1464 | 0x00000bc7, 0xfe611246, 0xf5f3fe47, 0x004def0c, | ||
1465 | 0x05e305e3, 0xef0c004d, 0xfe47f5f3, 0x1246fe61, | ||
1466 | 0x0bc70000, 0x1246fe61, 0xfe47f5f3, 0xef0c004d, | ||
1467 | 0xfa58fa58, 0xf895043b, 0xff4c09c0, 0xfbc6ffa8, | ||
1468 | 0xfb84f384, 0x0798f6f9, 0x05760122, 0x058409f6, | ||
1469 | 0x0b500000, 0x05b7f542, 0x08860432, 0x06ddfee7, | ||
1470 | 0xfb84f384, 0xf9d90664, 0xf7e8025c, 0x00fff7bd, | ||
1471 | 0x05a805a8, 0xf7bd00ff, 0x025cf7e8, 0x0664f9d9, | ||
1472 | 0xf384fb84, 0xfee706dd, 0x04320886, 0xf54205b7, | ||
1473 | 0x00000b50, 0x09f60584, 0x01220576, 0xf6f90798, | ||
1474 | 0xf384fb84, 0xffa8fbc6, 0x09c0ff4c, 0x043bf895, | ||
1475 | 0x02d402d4, 0x07de0270, 0xfc96079c, 0xf90afe94, | ||
1476 | 0xfe00ff2c, 0x02d4065d, 0x092a0096, 0x0014fbb8, | ||
1477 | 0xfd2cfd2c, 0x076afb3c, 0x0096f752, 0xf991fd87, | ||
1478 | 0xfb2c0200, 0xfeb8f960, 0x08e0fc96, 0x049802a8, | ||
1479 | 0xfd2cfd2c, 0x02a80498, 0xfc9608e0, 0xf960feb8, | ||
1480 | 0x0200fb2c, 0xfd87f991, 0xf7520096, 0xfb3c076a, | ||
1481 | 0xfd2cfd2c, 0xfbb80014, 0x0096092a, 0x065d02d4, | ||
1482 | 0xff2cfe00, 0xfe94f90a, 0x079cfc96, 0x027007de, | ||
1483 | 0x02d402d4, 0x027007de, 0x079cfc96, 0xfe94f90a, | ||
1484 | 0xff2cfe00, 0x065d02d4, 0x0096092a, 0xfbb80014, | ||
1485 | 0xfd2cfd2c, 0xfb3c076a, 0xf7520096, 0xfd87f991, | ||
1486 | 0x0200fb2c, 0xf960feb8, 0xfc9608e0, 0x02a80498, | ||
1487 | 0xfd2cfd2c, 0x049802a8, 0x08e0fc96, 0xfeb8f960, | ||
1488 | 0xfb2c0200, 0xf991fd87, 0x0096f752, 0x076afb3c, | ||
1489 | 0xfd2cfd2c, 0x0014fbb8, 0x092a0096, 0x02d4065d, | ||
1490 | 0xfe00ff2c, 0xf90afe94, 0xfc96079c, 0x07de0270, | ||
1491 | 0x00000000, 0x00000000, 0x00000000, 0x00000000, | ||
1492 | 0x00000000, 0x00000000, 0x00000000, 0x00000000, | ||
1493 | 0x00000000, 0x00000000, 0x00000000, 0x00000000, | ||
1494 | 0x00000000, 0x00000000, 0x00000000, 0x00000000, | ||
1495 | 0x00000000, 0x00000000, 0x00000000, 0x00000000, | ||
1496 | 0x00000000, 0x00000000, 0x00000000, 0x00000000, | ||
1497 | 0x00000000, 0x00000000, 0x00000000, 0x00000000, | ||
1498 | 0x00000000, 0x00000000, 0x00000000, 0x00000000, | ||
1499 | 0x00000000, 0x00000000, 0x00000000, 0x00000000, | ||
1500 | 0x00000000, 0x00000000, 0x00000000, 0x00000000, | ||
1501 | 0x00000000, 0x00000000, 0x00000000, 0x00000000, | ||
1502 | 0x00000000, 0x00000000, 0x00000000, 0x00000000, | ||
1503 | 0x00000000, 0x00000000, 0x00000000, 0x00000000, | ||
1504 | 0x00000000, 0x00000000, 0x00000000, 0x00000000, | ||
1505 | 0x00000000, 0x00000000, 0x00000000, 0x00000000, | ||
1506 | 0x00000000, 0x00000000, 0x00000000, 0x00000000, | ||
1507 | 0x00000000, 0x00000000, 0x00000000, 0x00000000, | ||
1508 | 0x00000000, 0x00000000, 0x00000000, 0x00000000, | ||
1509 | 0x00000000, 0x00000000, 0x00000000, 0x00000000, | ||
1510 | 0x00000000, 0x00000000, 0x00000000, 0x00000000, | ||
1511 | 0x00000000, 0x00000000, 0x00000000, 0x00000000, | ||
1512 | 0x00000000, 0x00000000, 0x00000000, 0x00000000, | ||
1513 | 0x00000000, 0x00000000, 0x00000000, 0x00000000, | ||
1514 | 0x00000000, 0x00000000, 0x00000000, 0x00000000, | ||
1515 | 0x062a0000, 0xfefa0759, 0x08b80908, 0xf396fc2d, | ||
1516 | 0xf9d6045c, 0xfc4ef608, 0xf748f596, 0x07b207bf, | ||
1517 | 0x062a062a, 0xf84ef841, 0xf748f596, 0x03b209f8, | ||
1518 | 0xf9d6045c, 0x0c6a03d3, 0x08b80908, 0x0106f8a7, | ||
1519 | 0x062a0000, 0xfefaf8a7, 0x08b8f6f8, 0xf39603d3, | ||
1520 | 0xf9d6fba4, 0xfc4e09f8, 0xf7480a6a, 0x07b2f841, | ||
1521 | 0x062af9d6, 0xf84e07bf, 0xf7480a6a, 0x03b2f608, | ||
1522 | 0xf9d6fba4, 0x0c6afc2d, 0x08b8f6f8, 0x01060759, | ||
1523 | 0x062a0000, 0xfefa0759, 0x08b80908, 0xf396fc2d, | ||
1524 | 0xf9d6045c, 0xfc4ef608, 0xf748f596, 0x07b207bf, | ||
1525 | 0x062a062a, 0xf84ef841, 0xf748f596, 0x03b209f8, | ||
1526 | 0xf9d6045c, 0x0c6a03d3, 0x08b80908, 0x0106f8a7, | ||
1527 | 0x062a0000, 0xfefaf8a7, 0x08b8f6f8, 0xf39603d3, | ||
1528 | 0xf9d6fba4, 0xfc4e09f8, 0xf7480a6a, 0x07b2f841, | ||
1529 | 0x062af9d6, 0xf84e07bf, 0xf7480a6a, 0x03b2f608, | ||
1530 | 0xf9d6fba4, 0x0c6afc2d, 0x08b8f6f8, 0x01060759, | ||
1531 | 0x061c061c, 0xff30009d, 0xffb21141, 0xfd87fb54, | ||
1532 | 0xf65dfe59, 0x02eef99e, 0x0166f03c, 0xfff809b6, | ||
1533 | 0x000008a4, 0x000af42b, 0x00eff577, 0xfa840bf2, | ||
1534 | 0xfc02ff51, 0x08260f67, 0xfff0036f, 0x0842f9c3, | ||
1535 | 0x00000000, 0x063df7be, 0xfc910010, 0xf099f7da, | ||
1536 | 0x00af03fe, 0xf40e057c, 0x0a89ff11, 0x0bd5fff6, | ||
1537 | 0xf75c0000, 0xf64a0008, 0x0fc4fe9a, 0x0662fd12, | ||
1538 | 0x01a709a3, 0x04ac0279, 0xeebf004e, 0xff6300d0, | ||
1539 | 0xf9e4f9e4, 0x00d0ff63, 0x004eeebf, 0x027904ac, | ||
1540 | 0x09a301a7, 0xfd120662, 0xfe9a0fc4, 0x0008f64a, | ||
1541 | 0x0000f75c, 0xfff60bd5, 0xff110a89, 0x057cf40e, | ||
1542 | 0x03fe00af, 0xf7daf099, 0x0010fc91, 0xf7be063d, | ||
1543 | 0x00000000, 0xf9c30842, 0x036ffff0, 0x0f670826, | ||
1544 | 0xff51fc02, 0x0bf2fa84, 0xf57700ef, 0xf42b000a, | ||
1545 | 0x08a40000, 0x09b6fff8, 0xf03c0166, 0xf99e02ee, | ||
1546 | 0xfe59f65d, 0xfb54fd87, 0x1141ffb2, 0x009dff30, | ||
1547 | 0x05e30000, 0xff060705, 0x085408a0, 0xf425fc59, | ||
1548 | 0xfa1d042a, 0xfc78f67a, 0xf7acf60e, 0x075a0766, | ||
1549 | 0x05e305e3, 0xf8a6f89a, 0xf7acf60e, 0x03880986, | ||
1550 | 0xfa1d042a, 0x0bdb03a7, 0x085408a0, 0x00faf8fb, | ||
1551 | 0x05e30000, 0xff06f8fb, 0x0854f760, 0xf42503a7, | ||
1552 | 0xfa1dfbd6, 0xfc780986, 0xf7ac09f2, 0x075af89a, | ||
1553 | 0x05e3fa1d, 0xf8a60766, 0xf7ac09f2, 0x0388f67a, | ||
1554 | 0xfa1dfbd6, 0x0bdbfc59, 0x0854f760, 0x00fa0705, | ||
1555 | 0x05e30000, 0xff060705, 0x085408a0, 0xf425fc59, | ||
1556 | 0xfa1d042a, 0xfc78f67a, 0xf7acf60e, 0x075a0766, | ||
1557 | 0x05e305e3, 0xf8a6f89a, 0xf7acf60e, 0x03880986, | ||
1558 | 0xfa1d042a, 0x0bdb03a7, 0x085408a0, 0x00faf8fb, | ||
1559 | 0x05e30000, 0xff06f8fb, 0x0854f760, 0xf42503a7, | ||
1560 | 0xfa1dfbd6, 0xfc780986, 0xf7ac09f2, 0x075af89a, | ||
1561 | 0x05e3fa1d, 0xf8a60766, 0xf7ac09f2, 0x0388f67a, | ||
1562 | 0xfa1dfbd6, 0x0bdbfc59, 0x0854f760, 0x00fa0705, | ||
1563 | 0xfa58fa58, 0xf8f0fe00, 0x0448073d, 0xfdc9fe46, | ||
1564 | 0xf9910258, 0x089d0407, 0xfd5cf71a, 0x02affde0, | ||
1565 | 0x083e0496, 0xff5a0740, 0xff7afd97, 0x00fe01f1, | ||
1566 | 0x0009082e, 0xfa94ff75, 0xfecdf8ea, 0xffb0f693, | ||
1567 | 0xfd2cfa58, 0x0433ff16, 0xfba405dd, 0xfa610341, | ||
1568 | 0x06a606cb, 0x0039fd2d, 0x0677fa97, 0x01fa05e0, | ||
1569 | 0xf896003e, 0x075a068b, 0x012cfc3e, 0xfa23f98d, | ||
1570 | 0xfc7cfd43, 0xff90fc0d, 0x01c10982, 0x00c601d6, | ||
1571 | 0xfd2cfd2c, 0x01d600c6, 0x098201c1, 0xfc0dff90, | ||
1572 | 0xfd43fc7c, 0xf98dfa23, 0xfc3e012c, 0x068b075a, | ||
1573 | 0x003ef896, 0x05e001fa, 0xfa970677, 0xfd2d0039, | ||
1574 | 0x06cb06a6, 0x0341fa61, 0x05ddfba4, 0xff160433, | ||
1575 | 0xfa58fd2c, 0xf693ffb0, 0xf8eafecd, 0xff75fa94, | ||
1576 | 0x082e0009, 0x01f100fe, 0xfd97ff7a, 0x0740ff5a, | ||
1577 | 0x0496083e, 0xfde002af, 0xf71afd5c, 0x0407089d, | ||
1578 | 0x0258f991, 0xfe46fdc9, 0x073d0448, 0xfe00f8f0, | ||
1579 | 0xfd2cfd2c, 0xfce00500, 0xfc09fddc, 0xfe680157, | ||
1580 | 0x04c70571, 0xfc3aff21, 0xfcd70228, 0x056d0277, | ||
1581 | 0x0200fe00, 0x0022f927, 0xfe3c032b, 0xfc44ff3c, | ||
1582 | 0x03e9fbdb, 0x04570313, 0x04c9ff5c, 0x000d03b8, | ||
1583 | 0xfa580000, 0xfbe900d2, 0xf9d0fe0b, 0x0125fdf9, | ||
1584 | 0x042501bf, 0x0328fa2b, 0xffa902f0, 0xfa250157, | ||
1585 | 0x0200fe00, 0x03740438, 0xff0405fd, 0x030cfe52, | ||
1586 | 0x0037fb39, 0xff6904c5, 0x04f8fd23, 0xfd31fc1b, | ||
1587 | 0xfd2cfd2c, 0xfc1bfd31, 0xfd2304f8, 0x04c5ff69, | ||
1588 | 0xfb390037, 0xfe52030c, 0x05fdff04, 0x04380374, | ||
1589 | 0xfe000200, 0x0157fa25, 0x02f0ffa9, 0xfa2b0328, | ||
1590 | 0x01bf0425, 0xfdf90125, 0xfe0bf9d0, 0x00d2fbe9, | ||
1591 | 0x0000fa58, 0x03b8000d, 0xff5c04c9, 0x03130457, | ||
1592 | 0xfbdb03e9, 0xff3cfc44, 0x032bfe3c, 0xf9270022, | ||
1593 | 0xfe000200, 0x0277056d, 0x0228fcd7, 0xff21fc3a, | ||
1594 | 0x057104c7, 0x0157fe68, 0xfddcfc09, 0x0500fce0, | ||
1595 | 0xfd2cfd2c, 0x0500fce0, 0xfddcfc09, 0x0157fe68, | ||
1596 | 0x057104c7, 0xff21fc3a, 0x0228fcd7, 0x0277056d, | ||
1597 | 0xfe000200, 0xf9270022, 0x032bfe3c, 0xff3cfc44, | ||
1598 | 0xfbdb03e9, 0x03130457, 0xff5c04c9, 0x03b8000d, | ||
1599 | 0x0000fa58, 0x00d2fbe9, 0xfe0bf9d0, 0xfdf90125, | ||
1600 | 0x01bf0425, 0xfa2b0328, 0x02f0ffa9, 0x0157fa25, | ||
1601 | 0xfe000200, 0x04380374, 0x05fdff04, 0xfe52030c, | ||
1602 | 0xfb390037, 0x04c5ff69, 0xfd2304f8, 0xfc1bfd31, | ||
1603 | 0xfd2cfd2c, 0xfd31fc1b, 0x04f8fd23, 0xff6904c5, | ||
1604 | 0x0037fb39, 0x030cfe52, 0xff0405fd, 0x03740438, | ||
1605 | 0x0200fe00, 0xfa250157, 0xffa902f0, 0x0328fa2b, | ||
1606 | 0x042501bf, 0x0125fdf9, 0xf9d0fe0b, 0xfbe900d2, | ||
1607 | 0xfa580000, 0x000d03b8, 0x04c9ff5c, 0x04570313, | ||
1608 | 0x03e9fbdb, 0xfc44ff3c, 0xfe3c032b, 0x0022f927, | ||
1609 | 0x0200fe00, 0x056d0277, 0xfcd70228, 0xfc3aff21, | ||
1610 | 0x04c70571, 0xfe680157, 0xfc09fddc, 0xfce00500, | ||
1611 | 0x05a80000, 0xff1006be, 0x0800084a, 0xf49cfc7e, | ||
1612 | 0xfa580400, 0xfc9cf6da, 0xf800f672, 0x0710071c, | ||
1613 | 0x05a805a8, 0xf8f0f8e4, 0xf800f672, 0x03640926, | ||
1614 | 0xfa580400, 0x0b640382, 0x0800084a, 0x00f0f942, | ||
1615 | 0x05a80000, 0xff10f942, 0x0800f7b6, 0xf49c0382, | ||
1616 | 0xfa58fc00, 0xfc9c0926, 0xf800098e, 0x0710f8e4, | ||
1617 | 0x05a8fa58, 0xf8f0071c, 0xf800098e, 0x0364f6da, | ||
1618 | 0xfa58fc00, 0x0b64fc7e, 0x0800f7b6, 0x00f006be, | ||
1619 | 0x05a80000, 0xff1006be, 0x0800084a, 0xf49cfc7e, | ||
1620 | 0xfa580400, 0xfc9cf6da, 0xf800f672, 0x0710071c, | ||
1621 | 0x05a805a8, 0xf8f0f8e4, 0xf800f672, 0x03640926, | ||
1622 | 0xfa580400, 0x0b640382, 0x0800084a, 0x00f0f942, | ||
1623 | 0x05a80000, 0xff10f942, 0x0800f7b6, 0xf49c0382, | ||
1624 | 0xfa58fc00, 0xfc9c0926, 0xf800098e, 0x0710f8e4, | ||
1625 | 0x05a8fa58, 0xf8f0071c, 0xf800098e, 0x0364f6da, | ||
1626 | 0xfa58fc00, 0x0b64fc7e, 0x0800f7b6, 0x00f006be, | ||
1627 | }; | ||
1628 | |||
1629 | static const u32 b43_ntab_noisevar0_r3[] = { | ||
1630 | 0x02110211, 0x0000014d, 0x02110211, 0x0000014d, | ||
1631 | 0x02110211, 0x0000014d, 0x02110211, 0x0000014d, | ||
1632 | 0x02110211, 0x0000014d, 0x02110211, 0x0000014d, | ||
1633 | 0x02110211, 0x0000014d, 0x02110211, 0x0000014d, | ||
1634 | 0x02110211, 0x0000014d, 0x02110211, 0x0000014d, | ||
1635 | 0x02110211, 0x0000014d, 0x02110211, 0x0000014d, | ||
1636 | 0x02110211, 0x0000014d, 0x02110211, 0x0000014d, | ||
1637 | 0x02110211, 0x0000014d, 0x02110211, 0x0000014d, | ||
1638 | 0x02110211, 0x0000014d, 0x02110211, 0x0000014d, | ||
1639 | 0x02110211, 0x0000014d, 0x02110211, 0x0000014d, | ||
1640 | 0x02110211, 0x0000014d, 0x02110211, 0x0000014d, | ||
1641 | 0x02110211, 0x0000014d, 0x02110211, 0x0000014d, | ||
1642 | 0x02110211, 0x0000014d, 0x02110211, 0x0000014d, | ||
1643 | 0x02110211, 0x0000014d, 0x02110211, 0x0000014d, | ||
1644 | 0x02110211, 0x0000014d, 0x02110211, 0x0000014d, | ||
1645 | 0x02110211, 0x0000014d, 0x02110211, 0x0000014d, | ||
1646 | 0x02110211, 0x0000014d, 0x02110211, 0x0000014d, | ||
1647 | 0x02110211, 0x0000014d, 0x02110211, 0x0000014d, | ||
1648 | 0x02110211, 0x0000014d, 0x02110211, 0x0000014d, | ||
1649 | 0x02110211, 0x0000014d, 0x02110211, 0x0000014d, | ||
1650 | 0x02110211, 0x0000014d, 0x02110211, 0x0000014d, | ||
1651 | 0x02110211, 0x0000014d, 0x02110211, 0x0000014d, | ||
1652 | 0x02110211, 0x0000014d, 0x02110211, 0x0000014d, | ||
1653 | 0x02110211, 0x0000014d, 0x02110211, 0x0000014d, | ||
1654 | 0x02110211, 0x0000014d, 0x02110211, 0x0000014d, | ||
1655 | 0x02110211, 0x0000014d, 0x02110211, 0x0000014d, | ||
1656 | 0x02110211, 0x0000014d, 0x02110211, 0x0000014d, | ||
1657 | 0x02110211, 0x0000014d, 0x02110211, 0x0000014d, | ||
1658 | 0x02110211, 0x0000014d, 0x02110211, 0x0000014d, | ||
1659 | 0x02110211, 0x0000014d, 0x02110211, 0x0000014d, | ||
1660 | 0x02110211, 0x0000014d, 0x02110211, 0x0000014d, | ||
1661 | 0x02110211, 0x0000014d, 0x02110211, 0x0000014d, | ||
1662 | 0x02110211, 0x0000014d, 0x02110211, 0x0000014d, | ||
1663 | 0x02110211, 0x0000014d, 0x02110211, 0x0000014d, | ||
1664 | 0x02110211, 0x0000014d, 0x02110211, 0x0000014d, | ||
1665 | 0x02110211, 0x0000014d, 0x02110211, 0x0000014d, | ||
1666 | 0x02110211, 0x0000014d, 0x02110211, 0x0000014d, | ||
1667 | 0x02110211, 0x0000014d, 0x02110211, 0x0000014d, | ||
1668 | 0x02110211, 0x0000014d, 0x02110211, 0x0000014d, | ||
1669 | 0x02110211, 0x0000014d, 0x02110211, 0x0000014d, | ||
1670 | 0x02110211, 0x0000014d, 0x02110211, 0x0000014d, | ||
1671 | 0x02110211, 0x0000014d, 0x02110211, 0x0000014d, | ||
1672 | 0x02110211, 0x0000014d, 0x02110211, 0x0000014d, | ||
1673 | 0x02110211, 0x0000014d, 0x02110211, 0x0000014d, | ||
1674 | 0x02110211, 0x0000014d, 0x02110211, 0x0000014d, | ||
1675 | 0x02110211, 0x0000014d, 0x02110211, 0x0000014d, | ||
1676 | 0x02110211, 0x0000014d, 0x02110211, 0x0000014d, | ||
1677 | 0x02110211, 0x0000014d, 0x02110211, 0x0000014d, | ||
1678 | 0x02110211, 0x0000014d, 0x02110211, 0x0000014d, | ||
1679 | 0x02110211, 0x0000014d, 0x02110211, 0x0000014d, | ||
1680 | 0x02110211, 0x0000014d, 0x02110211, 0x0000014d, | ||
1681 | 0x02110211, 0x0000014d, 0x02110211, 0x0000014d, | ||
1682 | 0x02110211, 0x0000014d, 0x02110211, 0x0000014d, | ||
1683 | 0x02110211, 0x0000014d, 0x02110211, 0x0000014d, | ||
1684 | 0x02110211, 0x0000014d, 0x02110211, 0x0000014d, | ||
1685 | 0x02110211, 0x0000014d, 0x02110211, 0x0000014d, | ||
1686 | 0x02110211, 0x0000014d, 0x02110211, 0x0000014d, | ||
1687 | 0x02110211, 0x0000014d, 0x02110211, 0x0000014d, | ||
1688 | 0x02110211, 0x0000014d, 0x02110211, 0x0000014d, | ||
1689 | 0x02110211, 0x0000014d, 0x02110211, 0x0000014d, | ||
1690 | 0x02110211, 0x0000014d, 0x02110211, 0x0000014d, | ||
1691 | 0x02110211, 0x0000014d, 0x02110211, 0x0000014d, | ||
1692 | 0x02110211, 0x0000014d, 0x02110211, 0x0000014d, | ||
1693 | 0x02110211, 0x0000014d, 0x02110211, 0x0000014d, | ||
1694 | }; | ||
1695 | |||
1696 | static const u32 b43_ntab_noisevar1_r3[] = { | ||
1697 | 0x02110211, 0x0000014d, 0x02110211, 0x0000014d, | ||
1698 | 0x02110211, 0x0000014d, 0x02110211, 0x0000014d, | ||
1699 | 0x02110211, 0x0000014d, 0x02110211, 0x0000014d, | ||
1700 | 0x02110211, 0x0000014d, 0x02110211, 0x0000014d, | ||
1701 | 0x02110211, 0x0000014d, 0x02110211, 0x0000014d, | ||
1702 | 0x02110211, 0x0000014d, 0x02110211, 0x0000014d, | ||
1703 | 0x02110211, 0x0000014d, 0x02110211, 0x0000014d, | ||
1704 | 0x02110211, 0x0000014d, 0x02110211, 0x0000014d, | ||
1705 | 0x02110211, 0x0000014d, 0x02110211, 0x0000014d, | ||
1706 | 0x02110211, 0x0000014d, 0x02110211, 0x0000014d, | ||
1707 | 0x02110211, 0x0000014d, 0x02110211, 0x0000014d, | ||
1708 | 0x02110211, 0x0000014d, 0x02110211, 0x0000014d, | ||
1709 | 0x02110211, 0x0000014d, 0x02110211, 0x0000014d, | ||
1710 | 0x02110211, 0x0000014d, 0x02110211, 0x0000014d, | ||
1711 | 0x02110211, 0x0000014d, 0x02110211, 0x0000014d, | ||
1712 | 0x02110211, 0x0000014d, 0x02110211, 0x0000014d, | ||
1713 | 0x02110211, 0x0000014d, 0x02110211, 0x0000014d, | ||
1714 | 0x02110211, 0x0000014d, 0x02110211, 0x0000014d, | ||
1715 | 0x02110211, 0x0000014d, 0x02110211, 0x0000014d, | ||
1716 | 0x02110211, 0x0000014d, 0x02110211, 0x0000014d, | ||
1717 | 0x02110211, 0x0000014d, 0x02110211, 0x0000014d, | ||
1718 | 0x02110211, 0x0000014d, 0x02110211, 0x0000014d, | ||
1719 | 0x02110211, 0x0000014d, 0x02110211, 0x0000014d, | ||
1720 | 0x02110211, 0x0000014d, 0x02110211, 0x0000014d, | ||
1721 | 0x02110211, 0x0000014d, 0x02110211, 0x0000014d, | ||
1722 | 0x02110211, 0x0000014d, 0x02110211, 0x0000014d, | ||
1723 | 0x02110211, 0x0000014d, 0x02110211, 0x0000014d, | ||
1724 | 0x02110211, 0x0000014d, 0x02110211, 0x0000014d, | ||
1725 | 0x02110211, 0x0000014d, 0x02110211, 0x0000014d, | ||
1726 | 0x02110211, 0x0000014d, 0x02110211, 0x0000014d, | ||
1727 | 0x02110211, 0x0000014d, 0x02110211, 0x0000014d, | ||
1728 | 0x02110211, 0x0000014d, 0x02110211, 0x0000014d, | ||
1729 | 0x02110211, 0x0000014d, 0x02110211, 0x0000014d, | ||
1730 | 0x02110211, 0x0000014d, 0x02110211, 0x0000014d, | ||
1731 | 0x02110211, 0x0000014d, 0x02110211, 0x0000014d, | ||
1732 | 0x02110211, 0x0000014d, 0x02110211, 0x0000014d, | ||
1733 | 0x02110211, 0x0000014d, 0x02110211, 0x0000014d, | ||
1734 | 0x02110211, 0x0000014d, 0x02110211, 0x0000014d, | ||
1735 | 0x02110211, 0x0000014d, 0x02110211, 0x0000014d, | ||
1736 | 0x02110211, 0x0000014d, 0x02110211, 0x0000014d, | ||
1737 | 0x02110211, 0x0000014d, 0x02110211, 0x0000014d, | ||
1738 | 0x02110211, 0x0000014d, 0x02110211, 0x0000014d, | ||
1739 | 0x02110211, 0x0000014d, 0x02110211, 0x0000014d, | ||
1740 | 0x02110211, 0x0000014d, 0x02110211, 0x0000014d, | ||
1741 | 0x02110211, 0x0000014d, 0x02110211, 0x0000014d, | ||
1742 | 0x02110211, 0x0000014d, 0x02110211, 0x0000014d, | ||
1743 | 0x02110211, 0x0000014d, 0x02110211, 0x0000014d, | ||
1744 | 0x02110211, 0x0000014d, 0x02110211, 0x0000014d, | ||
1745 | 0x02110211, 0x0000014d, 0x02110211, 0x0000014d, | ||
1746 | 0x02110211, 0x0000014d, 0x02110211, 0x0000014d, | ||
1747 | 0x02110211, 0x0000014d, 0x02110211, 0x0000014d, | ||
1748 | 0x02110211, 0x0000014d, 0x02110211, 0x0000014d, | ||
1749 | 0x02110211, 0x0000014d, 0x02110211, 0x0000014d, | ||
1750 | 0x02110211, 0x0000014d, 0x02110211, 0x0000014d, | ||
1751 | 0x02110211, 0x0000014d, 0x02110211, 0x0000014d, | ||
1752 | 0x02110211, 0x0000014d, 0x02110211, 0x0000014d, | ||
1753 | 0x02110211, 0x0000014d, 0x02110211, 0x0000014d, | ||
1754 | 0x02110211, 0x0000014d, 0x02110211, 0x0000014d, | ||
1755 | 0x02110211, 0x0000014d, 0x02110211, 0x0000014d, | ||
1756 | 0x02110211, 0x0000014d, 0x02110211, 0x0000014d, | ||
1757 | 0x02110211, 0x0000014d, 0x02110211, 0x0000014d, | ||
1758 | 0x02110211, 0x0000014d, 0x02110211, 0x0000014d, | ||
1759 | 0x02110211, 0x0000014d, 0x02110211, 0x0000014d, | ||
1760 | 0x02110211, 0x0000014d, 0x02110211, 0x0000014d, | ||
1761 | }; | ||
1762 | |||
1763 | static const u16 b43_ntab_mcs_r3[] = { | ||
1764 | 0x0000, 0x0008, 0x000a, 0x0010, 0x0012, 0x0019, | ||
1765 | 0x001a, 0x001c, 0x0080, 0x0088, 0x008a, 0x0090, | ||
1766 | 0x0092, 0x0099, 0x009a, 0x009c, 0x0100, 0x0108, | ||
1767 | 0x010a, 0x0110, 0x0112, 0x0119, 0x011a, 0x011c, | ||
1768 | 0x0180, 0x0188, 0x018a, 0x0190, 0x0192, 0x0199, | ||
1769 | 0x019a, 0x019c, 0x0000, 0x0098, 0x00a0, 0x00a8, | ||
1770 | 0x009a, 0x00a2, 0x00aa, 0x0120, 0x0128, 0x0128, | ||
1771 | 0x0130, 0x0138, 0x0138, 0x0140, 0x0122, 0x012a, | ||
1772 | 0x012a, 0x0132, 0x013a, 0x013a, 0x0142, 0x01a8, | ||
1773 | 0x01b0, 0x01b8, 0x01b0, 0x01b8, 0x01c0, 0x01c8, | ||
1774 | 0x01c0, 0x01c8, 0x01d0, 0x01d0, 0x01d8, 0x01aa, | ||
1775 | 0x01b2, 0x01ba, 0x01b2, 0x01ba, 0x01c2, 0x01ca, | ||
1776 | 0x01c2, 0x01ca, 0x01d2, 0x01d2, 0x01da, 0x0001, | ||
1777 | 0x0002, 0x0004, 0x0009, 0x000c, 0x0011, 0x0014, | ||
1778 | 0x0018, 0x0020, 0x0021, 0x0022, 0x0024, 0x0081, | ||
1779 | 0x0082, 0x0084, 0x0089, 0x008c, 0x0091, 0x0094, | ||
1780 | 0x0098, 0x00a0, 0x00a1, 0x00a2, 0x00a4, 0x0007, | ||
1781 | 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, | ||
1782 | 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, | ||
1783 | 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, | ||
1784 | 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, 0x0007, | ||
1785 | 0x0007, 0x0007, | ||
1786 | }; | ||
1787 | |||
1788 | static const u32 b43_ntab_tdi20a0_r3[] = { | ||
1789 | 0x00091226, 0x000a1429, 0x000b56ad, 0x000c58b0, | ||
1790 | 0x000d5ab3, 0x000e9cb6, 0x000f9eba, 0x0000c13d, | ||
1791 | 0x00020301, 0x00030504, 0x00040708, 0x0005090b, | ||
1792 | 0x00064b8e, 0x00095291, 0x000a5494, 0x000b9718, | ||
1793 | 0x000c9927, 0x000d9b2a, 0x000edd2e, 0x000fdf31, | ||
1794 | 0x000101b4, 0x000243b7, 0x000345bb, 0x000447be, | ||
1795 | 0x00058982, 0x00068c05, 0x00099309, 0x000a950c, | ||
1796 | 0x000bd78f, 0x000cd992, 0x000ddb96, 0x000f1d99, | ||
1797 | 0x00005fa8, 0x0001422c, 0x0002842f, 0x00038632, | ||
1798 | 0x00048835, 0x0005ca38, 0x0006ccbc, 0x0009d3bf, | ||
1799 | 0x000b1603, 0x000c1806, 0x000d1a0a, 0x000e1c0d, | ||
1800 | 0x000f5e10, 0x00008093, 0x00018297, 0x0002c49a, | ||
1801 | 0x0003c680, 0x0004c880, 0x00060b00, 0x00070d00, | ||
1802 | 0x00000000, 0x00000000, 0x00000000, | ||
1803 | }; | ||
1804 | |||
1805 | static const u32 b43_ntab_tdi20a1_r3[] = { | ||
1806 | 0x00014b26, 0x00028d29, 0x000393ad, 0x00049630, | ||
1807 | 0x0005d833, 0x0006da36, 0x00099c3a, 0x000a9e3d, | ||
1808 | 0x000bc081, 0x000cc284, 0x000dc488, 0x000f068b, | ||
1809 | 0x0000488e, 0x00018b91, 0x0002d214, 0x0003d418, | ||
1810 | 0x0004d6a7, 0x000618aa, 0x00071aae, 0x0009dcb1, | ||
1811 | 0x000b1eb4, 0x000c0137, 0x000d033b, 0x000e053e, | ||
1812 | 0x000f4702, 0x00008905, 0x00020c09, 0x0003128c, | ||
1813 | 0x0004148f, 0x00051712, 0x00065916, 0x00091b19, | ||
1814 | 0x000a1d28, 0x000b5f2c, 0x000c41af, 0x000d43b2, | ||
1815 | 0x000e85b5, 0x000f87b8, 0x0000c9bc, 0x00024cbf, | ||
1816 | 0x00035303, 0x00045506, 0x0005978a, 0x0006998d, | ||
1817 | 0x00095b90, 0x000a5d93, 0x000b9f97, 0x000c821a, | ||
1818 | 0x000d8400, 0x000ec600, 0x000fc800, 0x00010a00, | ||
1819 | 0x00000000, 0x00000000, 0x00000000, | ||
1820 | }; | ||
1821 | |||
1822 | static const u32 b43_ntab_tdi40a0_r3[] = { | ||
1823 | 0x0011a346, 0x00136ccf, 0x0014f5d9, 0x001641e2, | ||
1824 | 0x0017cb6b, 0x00195475, 0x001b2383, 0x001cad0c, | ||
1825 | 0x001e7616, 0x0000821f, 0x00020ba8, 0x0003d4b2, | ||
1826 | 0x00056447, 0x00072dd0, 0x0008b6da, 0x000a02e3, | ||
1827 | 0x000b8c6c, 0x000d15f6, 0x0011e484, 0x0013ae0d, | ||
1828 | 0x00153717, 0x00168320, 0x00180ca9, 0x00199633, | ||
1829 | 0x001b6548, 0x001ceed1, 0x001eb7db, 0x0000c3e4, | ||
1830 | 0x00024d6d, 0x000416f7, 0x0005a585, 0x00076f0f, | ||
1831 | 0x0008f818, 0x000a4421, 0x000bcdab, 0x000d9734, | ||
1832 | 0x00122649, 0x0013efd2, 0x001578dc, 0x0016c4e5, | ||
1833 | 0x00184e6e, 0x001a17f8, 0x001ba686, 0x001d3010, | ||
1834 | 0x001ef999, 0x00010522, 0x00028eac, 0x00045835, | ||
1835 | 0x0005e74a, 0x0007b0d3, 0x00093a5d, 0x000a85e6, | ||
1836 | 0x000c0f6f, 0x000dd8f9, 0x00126787, 0x00143111, | ||
1837 | 0x0015ba9a, 0x00170623, 0x00188fad, 0x001a5936, | ||
1838 | 0x001be84b, 0x001db1d4, 0x001f3b5e, 0x000146e7, | ||
1839 | 0x00031070, 0x000499fa, 0x00062888, 0x0007f212, | ||
1840 | 0x00097b9b, 0x000ac7a4, 0x000c50ae, 0x000e1a37, | ||
1841 | 0x0012a94c, 0x001472d5, 0x0015fc5f, 0x00174868, | ||
1842 | 0x0018d171, 0x001a9afb, 0x001c2989, 0x001df313, | ||
1843 | 0x001f7c9c, 0x000188a5, 0x000351af, 0x0004db38, | ||
1844 | 0x0006aa4d, 0x000833d7, 0x0009bd60, 0x000b0969, | ||
1845 | 0x000c9273, 0x000e5bfc, 0x00132a8a, 0x0014b414, | ||
1846 | 0x00163d9d, 0x001789a6, 0x001912b0, 0x001adc39, | ||
1847 | 0x001c6bce, 0x001e34d8, 0x001fbe61, 0x0001ca6a, | ||
1848 | 0x00039374, 0x00051cfd, 0x0006ec0b, 0x00087515, | ||
1849 | 0x0009fe9e, 0x000b4aa7, 0x000cd3b1, 0x000e9d3a, | ||
1850 | 0x00000000, 0x00000000, | ||
1851 | }; | ||
1852 | |||
1853 | static const u32 b43_ntab_tdi40a1_r3[] = { | ||
1854 | 0x001edb36, 0x000129ca, 0x0002b353, 0x00047cdd, | ||
1855 | 0x0005c8e6, 0x000791ef, 0x00091bf9, 0x000aaa07, | ||
1856 | 0x000c3391, 0x000dfd1a, 0x00120923, 0x0013d22d, | ||
1857 | 0x00155c37, 0x0016eacb, 0x00187454, 0x001a3dde, | ||
1858 | 0x001b89e7, 0x001d12f0, 0x001f1cfa, 0x00016b88, | ||
1859 | 0x00033492, 0x0004be1b, 0x00060a24, 0x0007d32e, | ||
1860 | 0x00095d38, 0x000aec4c, 0x000c7555, 0x000e3edf, | ||
1861 | 0x00124ae8, 0x001413f1, 0x0015a37b, 0x00172c89, | ||
1862 | 0x0018b593, 0x001a419c, 0x001bcb25, 0x001d942f, | ||
1863 | 0x001f63b9, 0x0001ad4d, 0x00037657, 0x0004c260, | ||
1864 | 0x00068be9, 0x000814f3, 0x0009a47c, 0x000b2d8a, | ||
1865 | 0x000cb694, 0x000e429d, 0x00128c26, 0x001455b0, | ||
1866 | 0x0015e4ba, 0x00176e4e, 0x0018f758, 0x001a8361, | ||
1867 | 0x001c0cea, 0x001dd674, 0x001fa57d, 0x0001ee8b, | ||
1868 | 0x0003b795, 0x0005039e, 0x0006cd27, 0x000856b1, | ||
1869 | 0x0009e5c6, 0x000b6f4f, 0x000cf859, 0x000e8462, | ||
1870 | 0x00130deb, 0x00149775, 0x00162603, 0x0017af8c, | ||
1871 | 0x00193896, 0x001ac49f, 0x001c4e28, 0x001e17b2, | ||
1872 | 0x0000a6c7, 0x00023050, 0x0003f9da, 0x00054563, | ||
1873 | 0x00070eec, 0x00089876, 0x000a2704, 0x000bb08d, | ||
1874 | 0x000d3a17, 0x001185a0, 0x00134f29, 0x0014d8b3, | ||
1875 | 0x001667c8, 0x0017f151, 0x00197adb, 0x001b0664, | ||
1876 | 0x001c8fed, 0x001e5977, 0x0000e805, 0x0002718f, | ||
1877 | 0x00043b18, 0x000586a1, 0x0007502b, 0x0008d9b4, | ||
1878 | 0x000a68c9, 0x000bf252, 0x000dbbdc, 0x0011c7e5, | ||
1879 | 0x001390ee, 0x00151a78, 0x0016a906, 0x00183290, | ||
1880 | 0x0019bc19, 0x001b4822, 0x001cd12c, 0x001e9ab5, | ||
1881 | 0x00000000, 0x00000000, | ||
1882 | }; | ||
1883 | |||
1884 | static const u32 b43_ntab_pilotlt_r3[] = { | ||
1885 | 0x76540213, 0x62407351, 0x76543210, 0x76540213, | ||
1886 | 0x76540213, 0x76430521, | ||
1887 | }; | ||
1888 | |||
1889 | static const u32 b43_ntab_channelest_r3[] = { | ||
1890 | 0x44444444, 0x44444444, 0x44444444, 0x44444444, | ||
1891 | 0x44444444, 0x44444444, 0x44444444, 0x44444444, | ||
1892 | 0x10101010, 0x10101010, 0x10101010, 0x10101010, | ||
1893 | 0x10101010, 0x10101010, 0x10101010, 0x10101010, | ||
1894 | 0x44444444, 0x44444444, 0x44444444, 0x44444444, | ||
1895 | 0x44444444, 0x44444444, 0x44444444, 0x44444444, | ||
1896 | 0x10101010, 0x10101010, 0x10101010, 0x10101010, | ||
1897 | 0x10101010, 0x10101010, 0x10101010, 0x10101010, | ||
1898 | 0x44444444, 0x44444444, 0x44444444, 0x44444444, | ||
1899 | 0x44444444, 0x44444444, 0x44444444, 0x44444444, | ||
1900 | 0x44444444, 0x44444444, 0x44444444, 0x44444444, | ||
1901 | 0x44444444, 0x44444444, 0x44444444, 0x44444444, | ||
1902 | 0x10101010, 0x10101010, 0x10101010, 0x10101010, | ||
1903 | 0x10101010, 0x10101010, 0x10101010, 0x10101010, | ||
1904 | 0x10101010, 0x10101010, 0x10101010, 0x10101010, | ||
1905 | 0x10101010, 0x10101010, 0x10101010, 0x10101010, | ||
1906 | 0x44444444, 0x44444444, 0x44444444, 0x44444444, | ||
1907 | 0x44444444, 0x44444444, 0x44444444, 0x44444444, | ||
1908 | 0x44444444, 0x44444444, 0x44444444, 0x44444444, | ||
1909 | 0x44444444, 0x44444444, 0x44444444, 0x44444444, | ||
1910 | 0x10101010, 0x10101010, 0x10101010, 0x10101010, | ||
1911 | 0x10101010, 0x10101010, 0x10101010, 0x10101010, | ||
1912 | 0x10101010, 0x10101010, 0x10101010, 0x10101010, | ||
1913 | 0x10101010, 0x10101010, 0x10101010, 0x10101010, | ||
1914 | }; | ||
1915 | |||
1916 | static const u8 b43_ntab_framelookup_r3[] = { | ||
1917 | 0x02, 0x04, 0x14, 0x14, 0x03, 0x05, 0x16, 0x16, | ||
1918 | 0x0a, 0x0c, 0x1c, 0x1c, 0x0b, 0x0d, 0x1e, 0x1e, | ||
1919 | 0x06, 0x08, 0x18, 0x18, 0x07, 0x09, 0x1a, 0x1a, | ||
1920 | 0x0e, 0x10, 0x20, 0x28, 0x0f, 0x11, 0x22, 0x2a, | ||
1921 | }; | ||
1922 | |||
1923 | static const u8 b43_ntab_estimatepowerlt0_r3[] = { | ||
1924 | 0x55, 0x54, 0x54, 0x53, 0x52, 0x52, 0x51, 0x51, | ||
1925 | 0x50, 0x4f, 0x4f, 0x4e, 0x4e, 0x4d, 0x4c, 0x4c, | ||
1926 | 0x4b, 0x4a, 0x49, 0x49, 0x48, 0x47, 0x46, 0x46, | ||
1927 | 0x45, 0x44, 0x43, 0x42, 0x41, 0x40, 0x40, 0x3f, | ||
1928 | 0x3e, 0x3d, 0x3c, 0x3a, 0x39, 0x38, 0x37, 0x36, | ||
1929 | 0x35, 0x33, 0x32, 0x31, 0x2f, 0x2e, 0x2c, 0x2b, | ||
1930 | 0x29, 0x27, 0x25, 0x23, 0x21, 0x1f, 0x1d, 0x1a, | ||
1931 | 0x18, 0x15, 0x12, 0x0e, 0x0b, 0x07, 0x02, 0xfd, | ||
1932 | }; | ||
1933 | |||
1934 | static const u8 b43_ntab_estimatepowerlt1_r3[] = { | ||
1935 | 0x55, 0x54, 0x54, 0x53, 0x52, 0x52, 0x51, 0x51, | ||
1936 | 0x50, 0x4f, 0x4f, 0x4e, 0x4e, 0x4d, 0x4c, 0x4c, | ||
1937 | 0x4b, 0x4a, 0x49, 0x49, 0x48, 0x47, 0x46, 0x46, | ||
1938 | 0x45, 0x44, 0x43, 0x42, 0x41, 0x40, 0x40, 0x3f, | ||
1939 | 0x3e, 0x3d, 0x3c, 0x3a, 0x39, 0x38, 0x37, 0x36, | ||
1940 | 0x35, 0x33, 0x32, 0x31, 0x2f, 0x2e, 0x2c, 0x2b, | ||
1941 | 0x29, 0x27, 0x25, 0x23, 0x21, 0x1f, 0x1d, 0x1a, | ||
1942 | 0x18, 0x15, 0x12, 0x0e, 0x0b, 0x07, 0x02, 0xfd, | ||
1943 | }; | ||
1944 | |||
1945 | static const u8 b43_ntab_adjustpower0_r3[] = { | ||
1946 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
1947 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
1948 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
1949 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
1950 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
1951 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
1952 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
1953 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
1954 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
1955 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
1956 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
1957 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
1958 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
1959 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
1960 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
1961 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
1962 | }; | ||
1963 | |||
1964 | static const u8 b43_ntab_adjustpower1_r3[] = { | ||
1965 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
1966 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
1967 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
1968 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
1969 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
1970 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
1971 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
1972 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
1973 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
1974 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
1975 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
1976 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
1977 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
1978 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
1979 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
1980 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||
1981 | }; | ||
1982 | |||
1983 | static const u32 b43_ntab_gainctl0_r3[] = { | ||
1984 | 0x5bf70044, 0x5bf70042, 0x5bf70040, 0x5bf7003e, | ||
1985 | 0x5bf7003c, 0x5bf7003b, 0x5bf70039, 0x5bf70037, | ||
1986 | 0x5bf70036, 0x5bf70034, 0x5bf70033, 0x5bf70031, | ||
1987 | 0x5bf70030, 0x5ba70044, 0x5ba70042, 0x5ba70040, | ||
1988 | 0x5ba7003e, 0x5ba7003c, 0x5ba7003b, 0x5ba70039, | ||
1989 | 0x5ba70037, 0x5ba70036, 0x5ba70034, 0x5ba70033, | ||
1990 | 0x5b770044, 0x5b770042, 0x5b770040, 0x5b77003e, | ||
1991 | 0x5b77003c, 0x5b77003b, 0x5b770039, 0x5b770037, | ||
1992 | 0x5b770036, 0x5b770034, 0x5b770033, 0x5b770031, | ||
1993 | 0x5b770030, 0x5b77002f, 0x5b77002d, 0x5b77002c, | ||
1994 | 0x5b470044, 0x5b470042, 0x5b470040, 0x5b47003e, | ||
1995 | 0x5b47003c, 0x5b47003b, 0x5b470039, 0x5b470037, | ||
1996 | 0x5b470036, 0x5b470034, 0x5b470033, 0x5b470031, | ||
1997 | 0x5b470030, 0x5b47002f, 0x5b47002d, 0x5b47002c, | ||
1998 | 0x5b47002b, 0x5b47002a, 0x5b270044, 0x5b270042, | ||
1999 | 0x5b270040, 0x5b27003e, 0x5b27003c, 0x5b27003b, | ||
2000 | 0x5b270039, 0x5b270037, 0x5b270036, 0x5b270034, | ||
2001 | 0x5b270033, 0x5b270031, 0x5b270030, 0x5b27002f, | ||
2002 | 0x5b170044, 0x5b170042, 0x5b170040, 0x5b17003e, | ||
2003 | 0x5b17003c, 0x5b17003b, 0x5b170039, 0x5b170037, | ||
2004 | 0x5b170036, 0x5b170034, 0x5b170033, 0x5b170031, | ||
2005 | 0x5b170030, 0x5b17002f, 0x5b17002d, 0x5b17002c, | ||
2006 | 0x5b17002b, 0x5b17002a, 0x5b170028, 0x5b170027, | ||
2007 | 0x5b170026, 0x5b170025, 0x5b170024, 0x5b170023, | ||
2008 | 0x5b070044, 0x5b070042, 0x5b070040, 0x5b07003e, | ||
2009 | 0x5b07003c, 0x5b07003b, 0x5b070039, 0x5b070037, | ||
2010 | 0x5b070036, 0x5b070034, 0x5b070033, 0x5b070031, | ||
2011 | 0x5b070030, 0x5b07002f, 0x5b07002d, 0x5b07002c, | ||
2012 | 0x5b07002b, 0x5b07002a, 0x5b070028, 0x5b070027, | ||
2013 | 0x5b070026, 0x5b070025, 0x5b070024, 0x5b070023, | ||
2014 | 0x5b070022, 0x5b070021, 0x5b070020, 0x5b07001f, | ||
2015 | 0x5b07001e, 0x5b07001d, 0x5b07001d, 0x5b07001c, | ||
2016 | }; | ||
2017 | |||
2018 | static const u32 b43_ntab_gainctl1_r3[] = { | ||
2019 | 0x5bf70044, 0x5bf70042, 0x5bf70040, 0x5bf7003e, | ||
2020 | 0x5bf7003c, 0x5bf7003b, 0x5bf70039, 0x5bf70037, | ||
2021 | 0x5bf70036, 0x5bf70034, 0x5bf70033, 0x5bf70031, | ||
2022 | 0x5bf70030, 0x5ba70044, 0x5ba70042, 0x5ba70040, | ||
2023 | 0x5ba7003e, 0x5ba7003c, 0x5ba7003b, 0x5ba70039, | ||
2024 | 0x5ba70037, 0x5ba70036, 0x5ba70034, 0x5ba70033, | ||
2025 | 0x5b770044, 0x5b770042, 0x5b770040, 0x5b77003e, | ||
2026 | 0x5b77003c, 0x5b77003b, 0x5b770039, 0x5b770037, | ||
2027 | 0x5b770036, 0x5b770034, 0x5b770033, 0x5b770031, | ||
2028 | 0x5b770030, 0x5b77002f, 0x5b77002d, 0x5b77002c, | ||
2029 | 0x5b470044, 0x5b470042, 0x5b470040, 0x5b47003e, | ||
2030 | 0x5b47003c, 0x5b47003b, 0x5b470039, 0x5b470037, | ||
2031 | 0x5b470036, 0x5b470034, 0x5b470033, 0x5b470031, | ||
2032 | 0x5b470030, 0x5b47002f, 0x5b47002d, 0x5b47002c, | ||
2033 | 0x5b47002b, 0x5b47002a, 0x5b270044, 0x5b270042, | ||
2034 | 0x5b270040, 0x5b27003e, 0x5b27003c, 0x5b27003b, | ||
2035 | 0x5b270039, 0x5b270037, 0x5b270036, 0x5b270034, | ||
2036 | 0x5b270033, 0x5b270031, 0x5b270030, 0x5b27002f, | ||
2037 | 0x5b170044, 0x5b170042, 0x5b170040, 0x5b17003e, | ||
2038 | 0x5b17003c, 0x5b17003b, 0x5b170039, 0x5b170037, | ||
2039 | 0x5b170036, 0x5b170034, 0x5b170033, 0x5b170031, | ||
2040 | 0x5b170030, 0x5b17002f, 0x5b17002d, 0x5b17002c, | ||
2041 | 0x5b17002b, 0x5b17002a, 0x5b170028, 0x5b170027, | ||
2042 | 0x5b170026, 0x5b170025, 0x5b170024, 0x5b170023, | ||
2043 | 0x5b070044, 0x5b070042, 0x5b070040, 0x5b07003e, | ||
2044 | 0x5b07003c, 0x5b07003b, 0x5b070039, 0x5b070037, | ||
2045 | 0x5b070036, 0x5b070034, 0x5b070033, 0x5b070031, | ||
2046 | 0x5b070030, 0x5b07002f, 0x5b07002d, 0x5b07002c, | ||
2047 | 0x5b07002b, 0x5b07002a, 0x5b070028, 0x5b070027, | ||
2048 | 0x5b070026, 0x5b070025, 0x5b070024, 0x5b070023, | ||
2049 | 0x5b070022, 0x5b070021, 0x5b070020, 0x5b07001f, | ||
2050 | 0x5b07001e, 0x5b07001d, 0x5b07001d, 0x5b07001c, | ||
2051 | }; | ||
2052 | |||
2053 | static const u32 b43_ntab_iqlt0_r3[] = { | ||
2054 | 0x00000000, 0x00000000, 0x00000000, 0x00000000, | ||
2055 | 0x00000000, 0x00000000, 0x00000000, 0x00000000, | ||
2056 | 0x00000000, 0x00000000, 0x00000000, 0x00000000, | ||
2057 | 0x00000000, 0x00000000, 0x00000000, 0x00000000, | ||
2058 | 0x00000000, 0x00000000, 0x00000000, 0x00000000, | ||
2059 | 0x00000000, 0x00000000, 0x00000000, 0x00000000, | ||
2060 | 0x00000000, 0x00000000, 0x00000000, 0x00000000, | ||
2061 | 0x00000000, 0x00000000, 0x00000000, 0x00000000, | ||
2062 | 0x00000000, 0x00000000, 0x00000000, 0x00000000, | ||
2063 | 0x00000000, 0x00000000, 0x00000000, 0x00000000, | ||
2064 | 0x00000000, 0x00000000, 0x00000000, 0x00000000, | ||
2065 | 0x00000000, 0x00000000, 0x00000000, 0x00000000, | ||
2066 | 0x00000000, 0x00000000, 0x00000000, 0x00000000, | ||
2067 | 0x00000000, 0x00000000, 0x00000000, 0x00000000, | ||
2068 | 0x00000000, 0x00000000, 0x00000000, 0x00000000, | ||
2069 | 0x00000000, 0x00000000, 0x00000000, 0x00000000, | ||
2070 | 0x00000000, 0x00000000, 0x00000000, 0x00000000, | ||
2071 | 0x00000000, 0x00000000, 0x00000000, 0x00000000, | ||
2072 | 0x00000000, 0x00000000, 0x00000000, 0x00000000, | ||
2073 | 0x00000000, 0x00000000, 0x00000000, 0x00000000, | ||
2074 | 0x00000000, 0x00000000, 0x00000000, 0x00000000, | ||
2075 | 0x00000000, 0x00000000, 0x00000000, 0x00000000, | ||
2076 | 0x00000000, 0x00000000, 0x00000000, 0x00000000, | ||
2077 | 0x00000000, 0x00000000, 0x00000000, 0x00000000, | ||
2078 | 0x00000000, 0x00000000, 0x00000000, 0x00000000, | ||
2079 | 0x00000000, 0x00000000, 0x00000000, 0x00000000, | ||
2080 | 0x00000000, 0x00000000, 0x00000000, 0x00000000, | ||
2081 | 0x00000000, 0x00000000, 0x00000000, 0x00000000, | ||
2082 | 0x00000000, 0x00000000, 0x00000000, 0x00000000, | ||
2083 | 0x00000000, 0x00000000, 0x00000000, 0x00000000, | ||
2084 | 0x00000000, 0x00000000, 0x00000000, 0x00000000, | ||
2085 | 0x00000000, 0x00000000, 0x00000000, 0x00000000, | ||
2086 | }; | ||
2087 | |||
2088 | static const u32 b43_ntab_iqlt1_r3[] = { | ||
2089 | 0x00000000, 0x00000000, 0x00000000, 0x00000000, | ||
2090 | 0x00000000, 0x00000000, 0x00000000, 0x00000000, | ||
2091 | 0x00000000, 0x00000000, 0x00000000, 0x00000000, | ||
2092 | 0x00000000, 0x00000000, 0x00000000, 0x00000000, | ||
2093 | 0x00000000, 0x00000000, 0x00000000, 0x00000000, | ||
2094 | 0x00000000, 0x00000000, 0x00000000, 0x00000000, | ||
2095 | 0x00000000, 0x00000000, 0x00000000, 0x00000000, | ||
2096 | 0x00000000, 0x00000000, 0x00000000, 0x00000000, | ||
2097 | 0x00000000, 0x00000000, 0x00000000, 0x00000000, | ||
2098 | 0x00000000, 0x00000000, 0x00000000, 0x00000000, | ||
2099 | 0x00000000, 0x00000000, 0x00000000, 0x00000000, | ||
2100 | 0x00000000, 0x00000000, 0x00000000, 0x00000000, | ||
2101 | 0x00000000, 0x00000000, 0x00000000, 0x00000000, | ||
2102 | 0x00000000, 0x00000000, 0x00000000, 0x00000000, | ||
2103 | 0x00000000, 0x00000000, 0x00000000, 0x00000000, | ||
2104 | 0x00000000, 0x00000000, 0x00000000, 0x00000000, | ||
2105 | 0x00000000, 0x00000000, 0x00000000, 0x00000000, | ||
2106 | 0x00000000, 0x00000000, 0x00000000, 0x00000000, | ||
2107 | 0x00000000, 0x00000000, 0x00000000, 0x00000000, | ||
2108 | 0x00000000, 0x00000000, 0x00000000, 0x00000000, | ||
2109 | 0x00000000, 0x00000000, 0x00000000, 0x00000000, | ||
2110 | 0x00000000, 0x00000000, 0x00000000, 0x00000000, | ||
2111 | 0x00000000, 0x00000000, 0x00000000, 0x00000000, | ||
2112 | 0x00000000, 0x00000000, 0x00000000, 0x00000000, | ||
2113 | 0x00000000, 0x00000000, 0x00000000, 0x00000000, | ||
2114 | 0x00000000, 0x00000000, 0x00000000, 0x00000000, | ||
2115 | 0x00000000, 0x00000000, 0x00000000, 0x00000000, | ||
2116 | 0x00000000, 0x00000000, 0x00000000, 0x00000000, | ||
2117 | 0x00000000, 0x00000000, 0x00000000, 0x00000000, | ||
2118 | 0x00000000, 0x00000000, 0x00000000, 0x00000000, | ||
2119 | 0x00000000, 0x00000000, 0x00000000, 0x00000000, | ||
2120 | 0x00000000, 0x00000000, 0x00000000, 0x00000000, | ||
2121 | }; | ||
2122 | |||
2123 | static const u16 b43_ntab_loftlt0_r3[] = { | ||
2124 | 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, | ||
2125 | 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, | ||
2126 | 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, | ||
2127 | 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, | ||
2128 | 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, | ||
2129 | 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, | ||
2130 | 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, | ||
2131 | 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, | ||
2132 | 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, | ||
2133 | 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, | ||
2134 | 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, | ||
2135 | 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, | ||
2136 | 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, | ||
2137 | 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, | ||
2138 | 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, | ||
2139 | 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, | ||
2140 | 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, | ||
2141 | 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, | ||
2142 | 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, | ||
2143 | 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, | ||
2144 | 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, | ||
2145 | 0x0000, 0x0000, | ||
2146 | }; | ||
2147 | |||
2148 | static const u16 b43_ntab_loftlt1_r3[] = { | ||
2149 | 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, | ||
2150 | 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, | ||
2151 | 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, | ||
2152 | 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, | ||
2153 | 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, | ||
2154 | 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, | ||
2155 | 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, | ||
2156 | 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, | ||
2157 | 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, | ||
2158 | 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, | ||
2159 | 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, | ||
2160 | 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, | ||
2161 | 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, | ||
2162 | 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, | ||
2163 | 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, | ||
2164 | 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, | ||
2165 | 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, | ||
2166 | 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, | ||
2167 | 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, | ||
2168 | 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, | ||
2169 | 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, | ||
2170 | 0x0000, 0x0000, | ||
2171 | }; | ||
2172 | |||
2173 | /* TX gain tables */ | ||
1100 | const u32 b43_ntab_tx_gain_rev0_1_2[] = { | 2174 | const u32 b43_ntab_tx_gain_rev0_1_2[] = { |
1101 | 0x03cc2b44, 0x03cc2b42, 0x03cc2a44, 0x03cc2a42, | 2175 | 0x03cc2b44, 0x03cc2b42, 0x03cc2a44, 0x03cc2a42, |
1102 | 0x03cc2944, 0x03c82b44, 0x03c82b42, 0x03c82a44, | 2176 | 0x03cc2944, 0x03c82b44, 0x03c82b42, 0x03c82a44, |
@@ -1635,6 +2709,79 @@ const struct nphy_rf_control_override_rev3 tbl_rf_control_override_rev3[] = { | |||
1635 | { 0x00C0, 6, 0xE7, 0xF9, 0xEC, 0xFB } /* field == 0x4000 (fls 15) */ | 2709 | { 0x00C0, 6, 0xE7, 0xF9, 0xEC, 0xFB } /* field == 0x4000 (fls 15) */ |
1636 | }; | 2710 | }; |
1637 | 2711 | ||
2712 | struct nphy_gain_ctl_workaround_entry nphy_gain_ctl_workaround[2][3] = { | ||
2713 | { /* 2GHz */ | ||
2714 | { /* PHY rev 3 */ | ||
2715 | { 7, 11, 16, 23 }, | ||
2716 | { -5, 6, 10, 14 }, | ||
2717 | { 0xA, 0xA, 0xA, 0xA, 0xA, 0xA, 0xA, 0xA, 0xA, 0xA }, | ||
2718 | { 3, 3, 3, 3, 3, 3, 3, 3, 3, 3 }, | ||
2719 | 0x627E, | ||
2720 | { 0x613F, 0x613F, 0x613F, 0x613F }, | ||
2721 | 0x107E, 0x0066, 0x0074, | ||
2722 | 0x18, 0x18, 0x18, | ||
2723 | 0x020D, 0x5, | ||
2724 | }, | ||
2725 | { /* PHY rev 4 */ | ||
2726 | { 8, 12, 17, 25 }, | ||
2727 | { -5, 6, 10, 14 }, | ||
2728 | { 0xA, 0xA, 0xA, 0xA, 0xA, 0xA, 0xA, 0xA, 0xA, 0xA }, | ||
2729 | { 3, 3, 3, 3, 3, 3, 3, 3, 3, 3 }, | ||
2730 | 0x527E, | ||
2731 | { 0x513F, 0x513F, 0x513F, 0x513F }, | ||
2732 | 0x007E, 0x0066, 0x0074, | ||
2733 | 0x18, 0x18, 0x18, | ||
2734 | 0x01A1, 0x5, | ||
2735 | }, | ||
2736 | { /* PHY rev 5+ */ | ||
2737 | { 9, 13, 18, 26 }, | ||
2738 | { -3, 7, 11, 16 }, | ||
2739 | { 0xA, 0xA, 0xA, 0xA, 0xA, 0xA, 0xA, 0xA, 0xA, 0xA }, | ||
2740 | { 3, 3, 3, 3, 3, 3, 3, 3, 3, 3 }, | ||
2741 | 0x427E, /* invalid for external LNA! */ | ||
2742 | { 0x413F, 0x413F, 0x413F, 0x413F }, /* invalid for external LNA! */ | ||
2743 | 0x1076, 0x0066, 0x106A, | ||
2744 | 0xC, 0xC, 0xC, | ||
2745 | 0x01D0, 0x5, | ||
2746 | }, | ||
2747 | }, | ||
2748 | { /* 5GHz */ | ||
2749 | { /* PHY rev 3 */ | ||
2750 | { 7, 11, 17, 23 }, | ||
2751 | { -6, 2, 6, 10 }, | ||
2752 | { 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13 }, | ||
2753 | { 6, 6, 6, 6, 6, 6, 6, 6, 6, 6 }, | ||
2754 | 0x52DE, | ||
2755 | { 0x516F, 0x516F, 0x516F, 0x516F }, | ||
2756 | 0x00DE, 0x00CA, 0x00CC, | ||
2757 | 0x1E, 0x1E, 0x1E, | ||
2758 | 0x01A1, 25, | ||
2759 | }, | ||
2760 | { /* PHY rev 4 */ | ||
2761 | { 8, 12, 18, 23 }, | ||
2762 | { -5, 2, 6, 10 }, | ||
2763 | { 0xD, 0xD, 0xD, 0xD, 0xD, 0xD, 0xD, 0xD, 0xD, 0xD }, | ||
2764 | { 4, 4, 4, 4, 4, 4, 4, 4, 4, 4 }, | ||
2765 | 0x629E, | ||
2766 | { 0x614F, 0x614F, 0x614F, 0x614F }, | ||
2767 | 0x029E, 0x1084, 0x0086, | ||
2768 | 0x24, 0x24, 0x24, | ||
2769 | 0x0107, 25, | ||
2770 | }, | ||
2771 | { /* PHY rev 5+ */ | ||
2772 | { 6, 10, 16, 21 }, | ||
2773 | { -7, 0, 4, 8 }, | ||
2774 | { 0xD, 0xD, 0xD, 0xD, 0xD, 0xD, 0xD, 0xD, 0xD, 0xD }, | ||
2775 | { 4, 4, 4, 4, 4, 4, 4, 4, 4, 4 }, | ||
2776 | 0x729E, | ||
2777 | { 0x714F, 0x714F, 0x714F, 0x714F }, | ||
2778 | 0x029E, 0x2084, 0x2086, | ||
2779 | 0x24, 0x24, 0x24, | ||
2780 | 0x00A9, 25, | ||
2781 | }, | ||
2782 | }, | ||
2783 | }; | ||
2784 | |||
1638 | static inline void assert_ntab_array_sizes(void) | 2785 | static inline void assert_ntab_array_sizes(void) |
1639 | { | 2786 | { |
1640 | #undef check | 2787 | #undef check |
@@ -1813,7 +2960,6 @@ void b43_ntab_write_bulk(struct b43_wldev *dev, u32 offset, | |||
1813 | #define ntab_upload(dev, offset, data) do { \ | 2960 | #define ntab_upload(dev, offset, data) do { \ |
1814 | b43_ntab_write_bulk(dev, offset, offset##_SIZE, data); \ | 2961 | b43_ntab_write_bulk(dev, offset, offset##_SIZE, data); \ |
1815 | } while (0) | 2962 | } while (0) |
1816 | |||
1817 | void b43_nphy_rev0_1_2_tables_init(struct b43_wldev *dev) | 2963 | void b43_nphy_rev0_1_2_tables_init(struct b43_wldev *dev) |
1818 | { | 2964 | { |
1819 | /* Static tables */ | 2965 | /* Static tables */ |
@@ -1847,11 +2993,70 @@ void b43_nphy_rev0_1_2_tables_init(struct b43_wldev *dev) | |||
1847 | ntab_upload(dev, B43_NTAB_C1_LOFEEDTH, b43_ntab_loftlt1); | 2993 | ntab_upload(dev, B43_NTAB_C1_LOFEEDTH, b43_ntab_loftlt1); |
1848 | } | 2994 | } |
1849 | 2995 | ||
2996 | #define ntab_upload_r3(dev, offset, data) do { \ | ||
2997 | b43_ntab_write_bulk(dev, offset, ARRAY_SIZE(data), data); \ | ||
2998 | } while (0) | ||
1850 | void b43_nphy_rev3plus_tables_init(struct b43_wldev *dev) | 2999 | void b43_nphy_rev3plus_tables_init(struct b43_wldev *dev) |
1851 | { | 3000 | { |
1852 | /* Static tables */ | 3001 | /* Static tables */ |
1853 | /* TODO */ | 3002 | ntab_upload_r3(dev, B43_NTAB_FRAMESTRUCT_R3, b43_ntab_framestruct_r3); |
3003 | ntab_upload_r3(dev, B43_NTAB_PILOT_R3, b43_ntab_pilot_r3); | ||
3004 | ntab_upload_r3(dev, B43_NTAB_TMAP_R3, b43_ntab_tmap_r3); | ||
3005 | ntab_upload_r3(dev, B43_NTAB_INTLEVEL_R3, b43_ntab_intlevel_r3); | ||
3006 | ntab_upload_r3(dev, B43_NTAB_TDTRN_R3, b43_ntab_tdtrn_r3); | ||
3007 | ntab_upload_r3(dev, B43_NTAB_NOISEVAR0_R3, b43_ntab_noisevar0_r3); | ||
3008 | ntab_upload_r3(dev, B43_NTAB_NOISEVAR1_R3, b43_ntab_noisevar1_r3); | ||
3009 | ntab_upload_r3(dev, B43_NTAB_MCS_R3, b43_ntab_mcs_r3); | ||
3010 | ntab_upload_r3(dev, B43_NTAB_TDI20A0_R3, b43_ntab_tdi20a0_r3); | ||
3011 | ntab_upload_r3(dev, B43_NTAB_TDI20A1_R3, b43_ntab_tdi20a1_r3); | ||
3012 | ntab_upload_r3(dev, B43_NTAB_TDI40A0_R3, b43_ntab_tdi40a0_r3); | ||
3013 | ntab_upload_r3(dev, B43_NTAB_TDI40A1_R3, b43_ntab_tdi40a1_r3); | ||
3014 | ntab_upload_r3(dev, B43_NTAB_PILOTLT_R3, b43_ntab_pilotlt_r3); | ||
3015 | ntab_upload_r3(dev, B43_NTAB_CHANEST_R3, b43_ntab_channelest_r3); | ||
3016 | ntab_upload_r3(dev, B43_NTAB_FRAMELT_R3, b43_ntab_framelookup_r3); | ||
3017 | ntab_upload_r3(dev, B43_NTAB_C0_ESTPLT_R3, | ||
3018 | b43_ntab_estimatepowerlt0_r3); | ||
3019 | ntab_upload_r3(dev, B43_NTAB_C1_ESTPLT_R3, | ||
3020 | b43_ntab_estimatepowerlt1_r3); | ||
3021 | ntab_upload_r3(dev, B43_NTAB_C0_ADJPLT_R3, b43_ntab_adjustpower0_r3); | ||
3022 | ntab_upload_r3(dev, B43_NTAB_C1_ADJPLT_R3, b43_ntab_adjustpower1_r3); | ||
3023 | ntab_upload_r3(dev, B43_NTAB_C0_GAINCTL_R3, b43_ntab_gainctl0_r3); | ||
3024 | ntab_upload_r3(dev, B43_NTAB_C1_GAINCTL_R3, b43_ntab_gainctl1_r3); | ||
3025 | ntab_upload_r3(dev, B43_NTAB_C0_IQLT_R3, b43_ntab_iqlt0_r3); | ||
3026 | ntab_upload_r3(dev, B43_NTAB_C1_IQLT_R3, b43_ntab_iqlt1_r3); | ||
3027 | ntab_upload_r3(dev, B43_NTAB_C0_LOFEEDTH_R3, b43_ntab_loftlt0_r3); | ||
3028 | ntab_upload_r3(dev, B43_NTAB_C1_LOFEEDTH_R3, b43_ntab_loftlt1_r3); | ||
1854 | 3029 | ||
1855 | /* Volatile tables */ | 3030 | /* Volatile tables */ |
1856 | /* TODO */ | 3031 | /* TODO */ |
1857 | } | 3032 | } |
3033 | |||
3034 | struct nphy_gain_ctl_workaround_entry *b43_nphy_get_gain_ctl_workaround_ent( | ||
3035 | struct b43_wldev *dev, bool ghz5, bool ext_lna) | ||
3036 | { | ||
3037 | struct nphy_gain_ctl_workaround_entry *e; | ||
3038 | u8 phy_idx; | ||
3039 | |||
3040 | B43_WARN_ON(dev->phy.rev < 3); | ||
3041 | if (dev->phy.rev >= 5) | ||
3042 | phy_idx = 2; | ||
3043 | else if (dev->phy.rev == 4) | ||
3044 | phy_idx = 1; | ||
3045 | else | ||
3046 | phy_idx = 0; | ||
3047 | |||
3048 | e = &nphy_gain_ctl_workaround[ghz5][phy_idx]; | ||
3049 | |||
3050 | /* Only one entry differs for external LNA, so instead making whole | ||
3051 | * table 2 times bigger, hack is here | ||
3052 | */ | ||
3053 | if (!ghz5 && dev->phy.rev >= 5 && ext_lna) { | ||
3054 | e->rfseq_init[0] &= 0x0FFF; | ||
3055 | e->rfseq_init[1] &= 0x0FFF; | ||
3056 | e->rfseq_init[2] &= 0x0FFF; | ||
3057 | e->rfseq_init[3] &= 0x0FFF; | ||
3058 | e->init_gain &= 0x0FFF; | ||
3059 | } | ||
3060 | |||
3061 | return e; | ||
3062 | } | ||
diff --git a/drivers/net/wireless/b43/tables_nphy.h b/drivers/net/wireless/b43/tables_nphy.h index 4ec593ba3eef..18569367ce43 100644 --- a/drivers/net/wireless/b43/tables_nphy.h +++ b/drivers/net/wireless/b43/tables_nphy.h | |||
@@ -35,6 +35,31 @@ struct nphy_rf_control_override_rev3 { | |||
35 | u8 val_addr1; | 35 | u8 val_addr1; |
36 | }; | 36 | }; |
37 | 37 | ||
38 | struct nphy_gain_ctl_workaround_entry { | ||
39 | s8 lna1_gain[4]; | ||
40 | s8 lna2_gain[4]; | ||
41 | u8 gain_db[10]; | ||
42 | u8 gain_bits[10]; | ||
43 | |||
44 | u16 init_gain; | ||
45 | u16 rfseq_init[4]; | ||
46 | |||
47 | u16 cliphi_gain; | ||
48 | u16 clipmd_gain; | ||
49 | u16 cliplo_gain; | ||
50 | |||
51 | u16 crsmin; | ||
52 | u16 crsminl; | ||
53 | u16 crsminu; | ||
54 | |||
55 | u16 nbclip; | ||
56 | u16 wlclip; | ||
57 | }; | ||
58 | |||
59 | /* Get entry with workaround values for gain ctl. Does not return NULL. */ | ||
60 | struct nphy_gain_ctl_workaround_entry *b43_nphy_get_gain_ctl_workaround_ent( | ||
61 | struct b43_wldev *dev, bool ghz5, bool ext_lna); | ||
62 | |||
38 | /* Get the NPHY Channel Switch Table entry for a channel. | 63 | /* Get the NPHY Channel Switch Table entry for a channel. |
39 | * Returns NULL on failure to find an entry. */ | 64 | * Returns NULL on failure to find an entry. */ |
40 | const struct b43_nphy_channeltab_entry_rev2 * | 65 | const struct b43_nphy_channeltab_entry_rev2 * |
@@ -109,6 +134,33 @@ b43_nphy_get_chantabent_rev3(struct b43_wldev *dev, u16 freq); | |||
109 | #define B43_NTAB_C1_LOFEEDTH B43_NTAB16(0x1B, 0x1C0) /* Local Oscillator Feed Through Lookup Table Core 1 */ | 134 | #define B43_NTAB_C1_LOFEEDTH B43_NTAB16(0x1B, 0x1C0) /* Local Oscillator Feed Through Lookup Table Core 1 */ |
110 | #define B43_NTAB_C1_LOFEEDTH_SIZE 128 | 135 | #define B43_NTAB_C1_LOFEEDTH_SIZE 128 |
111 | 136 | ||
137 | /* Static N-PHY tables, PHY revision >= 3 */ | ||
138 | #define B43_NTAB_FRAMESTRUCT_R3 B43_NTAB32(10, 000) /* frame struct */ | ||
139 | #define B43_NTAB_PILOT_R3 B43_NTAB16(11, 000) /* pilot */ | ||
140 | #define B43_NTAB_TMAP_R3 B43_NTAB32(12, 000) /* TM AP */ | ||
141 | #define B43_NTAB_INTLEVEL_R3 B43_NTAB32(13, 000) /* INT LV */ | ||
142 | #define B43_NTAB_TDTRN_R3 B43_NTAB32(14, 000) /* TD TRN */ | ||
143 | #define B43_NTAB_NOISEVAR0_R3 B43_NTAB32(16, 000) /* noise variance 0 */ | ||
144 | #define B43_NTAB_NOISEVAR1_R3 B43_NTAB32(16, 128) /* noise variance 1 */ | ||
145 | #define B43_NTAB_MCS_R3 B43_NTAB16(18, 000) /* MCS */ | ||
146 | #define B43_NTAB_TDI20A0_R3 B43_NTAB32(19, 128) /* TDI 20/0 */ | ||
147 | #define B43_NTAB_TDI20A1_R3 B43_NTAB32(19, 256) /* TDI 20/1 */ | ||
148 | #define B43_NTAB_TDI40A0_R3 B43_NTAB32(19, 640) /* TDI 40/0 */ | ||
149 | #define B43_NTAB_TDI40A1_R3 B43_NTAB32(19, 768) /* TDI 40/1 */ | ||
150 | #define B43_NTAB_PILOTLT_R3 B43_NTAB32(20, 000) /* PLT lookup */ | ||
151 | #define B43_NTAB_CHANEST_R3 B43_NTAB32(22, 000) /* channel estimate */ | ||
152 | #define B43_NTAB_FRAMELT_R3 B43_NTAB8 (24, 000) /* frame lookup */ | ||
153 | #define B43_NTAB_C0_ESTPLT_R3 B43_NTAB8 (26, 000) /* estimated power lookup 0 */ | ||
154 | #define B43_NTAB_C1_ESTPLT_R3 B43_NTAB8 (27, 000) /* estimated power lookup 1 */ | ||
155 | #define B43_NTAB_C0_ADJPLT_R3 B43_NTAB8 (26, 064) /* adjusted power lookup 0 */ | ||
156 | #define B43_NTAB_C1_ADJPLT_R3 B43_NTAB8 (27, 064) /* adjusted power lookup 1 */ | ||
157 | #define B43_NTAB_C0_GAINCTL_R3 B43_NTAB32(26, 192) /* gain control lookup 0 */ | ||
158 | #define B43_NTAB_C1_GAINCTL_R3 B43_NTAB32(27, 192) /* gain control lookup 1 */ | ||
159 | #define B43_NTAB_C0_IQLT_R3 B43_NTAB32(26, 320) /* I/Q lookup 0 */ | ||
160 | #define B43_NTAB_C1_IQLT_R3 B43_NTAB32(27, 320) /* I/Q lookup 1 */ | ||
161 | #define B43_NTAB_C0_LOFEEDTH_R3 B43_NTAB16(26, 448) /* Local Oscillator Feed Through lookup 0 */ | ||
162 | #define B43_NTAB_C1_LOFEEDTH_R3 B43_NTAB16(27, 448) /* Local Oscillator Feed Through lookup 1 */ | ||
163 | |||
112 | #define B43_NTAB_TX_IQLO_CAL_LOFT_LADDER_40_SIZE 18 | 164 | #define B43_NTAB_TX_IQLO_CAL_LOFT_LADDER_40_SIZE 18 |
113 | #define B43_NTAB_TX_IQLO_CAL_LOFT_LADDER_20_SIZE 18 | 165 | #define B43_NTAB_TX_IQLO_CAL_LOFT_LADDER_20_SIZE 18 |
114 | #define B43_NTAB_TX_IQLO_CAL_IQIMB_LADDER_40_SIZE 18 | 166 | #define B43_NTAB_TX_IQLO_CAL_IQIMB_LADDER_40_SIZE 18 |
diff --git a/drivers/net/wireless/b43/xmit.c b/drivers/net/wireless/b43/xmit.c index e6b0528f3b52..e5be381c17bc 100644 --- a/drivers/net/wireless/b43/xmit.c +++ b/drivers/net/wireless/b43/xmit.c | |||
@@ -32,6 +32,36 @@ | |||
32 | #include "dma.h" | 32 | #include "dma.h" |
33 | #include "pio.h" | 33 | #include "pio.h" |
34 | 34 | ||
35 | static const struct b43_tx_legacy_rate_phy_ctl_entry b43_tx_legacy_rate_phy_ctl[] = { | ||
36 | { B43_CCK_RATE_1MB, 0x0, 0x0 }, | ||
37 | { B43_CCK_RATE_2MB, 0x0, 0x1 }, | ||
38 | { B43_CCK_RATE_5MB, 0x0, 0x2 }, | ||
39 | { B43_CCK_RATE_11MB, 0x0, 0x3 }, | ||
40 | { B43_OFDM_RATE_6MB, B43_TXH_PHY1_CRATE_1_2, B43_TXH_PHY1_MODUL_BPSK }, | ||
41 | { B43_OFDM_RATE_9MB, B43_TXH_PHY1_CRATE_3_4, B43_TXH_PHY1_MODUL_BPSK }, | ||
42 | { B43_OFDM_RATE_12MB, B43_TXH_PHY1_CRATE_1_2, B43_TXH_PHY1_MODUL_QPSK }, | ||
43 | { B43_OFDM_RATE_18MB, B43_TXH_PHY1_CRATE_3_4, B43_TXH_PHY1_MODUL_QPSK }, | ||
44 | { B43_OFDM_RATE_24MB, B43_TXH_PHY1_CRATE_1_2, B43_TXH_PHY1_MODUL_QAM16 }, | ||
45 | { B43_OFDM_RATE_36MB, B43_TXH_PHY1_CRATE_3_4, B43_TXH_PHY1_MODUL_QAM16 }, | ||
46 | { B43_OFDM_RATE_48MB, B43_TXH_PHY1_CRATE_2_3, B43_TXH_PHY1_MODUL_QAM64 }, | ||
47 | { B43_OFDM_RATE_54MB, B43_TXH_PHY1_CRATE_3_4, B43_TXH_PHY1_MODUL_QAM64 }, | ||
48 | }; | ||
49 | |||
50 | static const struct b43_tx_legacy_rate_phy_ctl_entry * | ||
51 | b43_tx_legacy_rate_phy_ctl_ent(u8 bitrate) | ||
52 | { | ||
53 | const struct b43_tx_legacy_rate_phy_ctl_entry *e; | ||
54 | unsigned int i; | ||
55 | |||
56 | for (i = 0; i < ARRAY_SIZE(b43_tx_legacy_rate_phy_ctl); i++) { | ||
57 | e = &(b43_tx_legacy_rate_phy_ctl[i]); | ||
58 | if (e->bitrate == bitrate) | ||
59 | return e; | ||
60 | } | ||
61 | |||
62 | B43_WARN_ON(1); | ||
63 | return NULL; | ||
64 | } | ||
35 | 65 | ||
36 | /* Extract the bitrate index out of a CCK PLCP header. */ | 66 | /* Extract the bitrate index out of a CCK PLCP header. */ |
37 | static int b43_plcp_get_bitrate_idx_cck(struct b43_plcp_hdr6 *plcp) | 67 | static int b43_plcp_get_bitrate_idx_cck(struct b43_plcp_hdr6 *plcp) |
@@ -145,6 +175,34 @@ void b43_generate_plcp_hdr(struct b43_plcp_hdr4 *plcp, | |||
145 | } | 175 | } |
146 | } | 176 | } |
147 | 177 | ||
178 | static u16 b43_generate_tx_phy_ctl1(struct b43_wldev *dev, u8 bitrate) | ||
179 | { | ||
180 | const struct b43_phy *phy = &dev->phy; | ||
181 | const struct b43_tx_legacy_rate_phy_ctl_entry *e; | ||
182 | u16 control = 0; | ||
183 | u16 bw; | ||
184 | |||
185 | if (phy->type == B43_PHYTYPE_LP) | ||
186 | bw = B43_TXH_PHY1_BW_20; | ||
187 | else /* FIXME */ | ||
188 | bw = B43_TXH_PHY1_BW_20; | ||
189 | |||
190 | if (0) { /* FIXME: MIMO */ | ||
191 | } else if (b43_is_cck_rate(bitrate) && phy->type != B43_PHYTYPE_LP) { | ||
192 | control = bw; | ||
193 | } else { | ||
194 | control = bw; | ||
195 | e = b43_tx_legacy_rate_phy_ctl_ent(bitrate); | ||
196 | if (e) { | ||
197 | control |= e->coding_rate; | ||
198 | control |= e->modulation; | ||
199 | } | ||
200 | control |= B43_TXH_PHY1_MODE_SISO; | ||
201 | } | ||
202 | |||
203 | return control; | ||
204 | } | ||
205 | |||
148 | static u8 b43_calc_fallback_rate(u8 bitrate) | 206 | static u8 b43_calc_fallback_rate(u8 bitrate) |
149 | { | 207 | { |
150 | switch (bitrate) { | 208 | switch (bitrate) { |
@@ -437,6 +495,14 @@ int b43_generate_txhdr(struct b43_wldev *dev, | |||
437 | extra_ft |= B43_TXH_EFT_RTSFB_OFDM; | 495 | extra_ft |= B43_TXH_EFT_RTSFB_OFDM; |
438 | else | 496 | else |
439 | extra_ft |= B43_TXH_EFT_RTSFB_CCK; | 497 | extra_ft |= B43_TXH_EFT_RTSFB_CCK; |
498 | |||
499 | if (rates[0].flags & IEEE80211_TX_RC_USE_RTS_CTS && | ||
500 | phy->type == B43_PHYTYPE_N) { | ||
501 | txhdr->phy_ctl1_rts = cpu_to_le16( | ||
502 | b43_generate_tx_phy_ctl1(dev, rts_rate)); | ||
503 | txhdr->phy_ctl1_rts_fb = cpu_to_le16( | ||
504 | b43_generate_tx_phy_ctl1(dev, rts_rate_fb)); | ||
505 | } | ||
440 | } | 506 | } |
441 | 507 | ||
442 | /* Magic cookie */ | 508 | /* Magic cookie */ |
@@ -445,6 +511,13 @@ int b43_generate_txhdr(struct b43_wldev *dev, | |||
445 | else | 511 | else |
446 | txhdr->new_format.cookie = cpu_to_le16(cookie); | 512 | txhdr->new_format.cookie = cpu_to_le16(cookie); |
447 | 513 | ||
514 | if (phy->type == B43_PHYTYPE_N) { | ||
515 | txhdr->phy_ctl1 = | ||
516 | cpu_to_le16(b43_generate_tx_phy_ctl1(dev, rate)); | ||
517 | txhdr->phy_ctl1_fb = | ||
518 | cpu_to_le16(b43_generate_tx_phy_ctl1(dev, rate_fb)); | ||
519 | } | ||
520 | |||
448 | /* Apply the bitfields */ | 521 | /* Apply the bitfields */ |
449 | txhdr->mac_ctl = cpu_to_le32(mac_ctl); | 522 | txhdr->mac_ctl = cpu_to_le32(mac_ctl); |
450 | txhdr->phy_ctl = cpu_to_le16(phy_ctl); | 523 | txhdr->phy_ctl = cpu_to_le16(phy_ctl); |
@@ -652,7 +725,7 @@ void b43_rx(struct b43_wldev *dev, struct sk_buff *skb, const void *_rxhdr) | |||
652 | status.mactime += mactime; | 725 | status.mactime += mactime; |
653 | if (low_mactime_now <= mactime) | 726 | if (low_mactime_now <= mactime) |
654 | status.mactime -= 0x10000; | 727 | status.mactime -= 0x10000; |
655 | status.flag |= RX_FLAG_TSFT; | 728 | status.flag |= RX_FLAG_MACTIME_MPDU; |
656 | } | 729 | } |
657 | 730 | ||
658 | chanid = (chanstat & B43_RX_CHAN_ID) >> B43_RX_CHAN_ID_SHIFT; | 731 | chanid = (chanstat & B43_RX_CHAN_ID) >> B43_RX_CHAN_ID_SHIFT; |
diff --git a/drivers/net/wireless/b43/xmit.h b/drivers/net/wireless/b43/xmit.h index d4cf9b390af3..42debb5cd6fa 100644 --- a/drivers/net/wireless/b43/xmit.h +++ b/drivers/net/wireless/b43/xmit.h | |||
@@ -73,6 +73,12 @@ struct b43_txhdr { | |||
73 | } __packed; | 73 | } __packed; |
74 | } __packed; | 74 | } __packed; |
75 | 75 | ||
76 | struct b43_tx_legacy_rate_phy_ctl_entry { | ||
77 | u8 bitrate; | ||
78 | u16 coding_rate; | ||
79 | u16 modulation; | ||
80 | }; | ||
81 | |||
76 | /* MAC TX control */ | 82 | /* MAC TX control */ |
77 | #define B43_TXH_MAC_USEFBR 0x10000000 /* Use fallback rate for this AMPDU */ | 83 | #define B43_TXH_MAC_USEFBR 0x10000000 /* Use fallback rate for this AMPDU */ |
78 | #define B43_TXH_MAC_KEYIDX 0x0FF00000 /* Security key index */ | 84 | #define B43_TXH_MAC_KEYIDX 0x0FF00000 /* Security key index */ |