Lines Matching refs:dev
33 static void b43_wa_papd(struct b43_wldev *dev) in b43_wa_papd() argument
37 backup = b43_ofdmtab_read16(dev, B43_OFDMTAB_PWRDYN2, 0); in b43_wa_papd()
38 b43_ofdmtab_write16(dev, B43_OFDMTAB_PWRDYN2, 0, 7); in b43_wa_papd()
39 b43_ofdmtab_write16(dev, B43_OFDMTAB_UNKNOWN_APHY, 0, 0); in b43_wa_papd()
40 b43_dummy_transmission(dev, true, true); in b43_wa_papd()
41 b43_ofdmtab_write16(dev, B43_OFDMTAB_PWRDYN2, 0, backup); in b43_wa_papd()
44 static void b43_wa_auxclipthr(struct b43_wldev *dev) in b43_wa_auxclipthr() argument
46 b43_phy_write(dev, B43_PHY_OFDM(0x8E), 0x3800); in b43_wa_auxclipthr()
49 static void b43_wa_afcdac(struct b43_wldev *dev) in b43_wa_afcdac() argument
51 b43_phy_write(dev, 0x0035, 0x03FF); in b43_wa_afcdac()
52 b43_phy_write(dev, 0x0036, 0x0400); in b43_wa_afcdac()
55 static void b43_wa_txdc_offset(struct b43_wldev *dev) in b43_wa_txdc_offset() argument
57 b43_ofdmtab_write16(dev, B43_OFDMTAB_DC, 0, 0x0051); in b43_wa_txdc_offset()
60 void b43_wa_initgains(struct b43_wldev *dev) in b43_wa_initgains() argument
62 struct b43_phy *phy = &dev->phy; in b43_wa_initgains()
64 b43_phy_write(dev, B43_PHY_LNAHPFCTL, 0x1FF9); in b43_wa_initgains()
65 b43_phy_mask(dev, B43_PHY_LPFGAINCTL, 0xFF0F); in b43_wa_initgains()
67 b43_ofdmtab_write16(dev, B43_OFDMTAB_LPFGAIN, 0, 0x1FBF); in b43_wa_initgains()
68 b43_radio_write16(dev, 0x0002, 0x1FBF); in b43_wa_initgains()
70 b43_phy_write(dev, 0x0024, 0x4680); in b43_wa_initgains()
71 b43_phy_write(dev, 0x0020, 0x0003); in b43_wa_initgains()
72 b43_phy_write(dev, 0x001D, 0x0F40); in b43_wa_initgains()
73 b43_phy_write(dev, 0x001F, 0x1C00); in b43_wa_initgains()
75 b43_phy_maskset(dev, 0x002A, 0x00FF, 0x0400); in b43_wa_initgains()
77 b43_phy_maskset(dev, 0x002A, 0x00FF, 0x1A00); in b43_wa_initgains()
78 b43_phy_write(dev, 0x00CC, 0x2121); in b43_wa_initgains()
81 b43_phy_write(dev, 0x00BA, 0x3ED5); in b43_wa_initgains()
84 static void b43_wa_divider(struct b43_wldev *dev) in b43_wa_divider() argument
86 b43_phy_mask(dev, 0x002B, ~0x0100); in b43_wa_divider()
87 b43_phy_write(dev, 0x008E, 0x58C1); in b43_wa_divider()
90 static void b43_wa_gt(struct b43_wldev *dev) /* Gain table. */ in b43_wa_gt() argument
92 if (dev->phy.rev <= 2) { in b43_wa_gt()
93 b43_ofdmtab_write16(dev, B43_OFDMTAB_GAIN2, 0, 15); in b43_wa_gt()
94 b43_ofdmtab_write16(dev, B43_OFDMTAB_GAIN2, 1, 31); in b43_wa_gt()
95 b43_ofdmtab_write16(dev, B43_OFDMTAB_GAIN2, 2, 42); in b43_wa_gt()
96 b43_ofdmtab_write16(dev, B43_OFDMTAB_GAIN2, 3, 48); in b43_wa_gt()
97 b43_ofdmtab_write16(dev, B43_OFDMTAB_GAIN2, 4, 58); in b43_wa_gt()
98 b43_ofdmtab_write16(dev, B43_OFDMTAB_GAIN0, 0, 19); in b43_wa_gt()
99 b43_ofdmtab_write16(dev, B43_OFDMTAB_GAIN0, 1, 19); in b43_wa_gt()
100 b43_ofdmtab_write16(dev, B43_OFDMTAB_GAIN0, 2, 19); in b43_wa_gt()
101 b43_ofdmtab_write16(dev, B43_OFDMTAB_GAIN0, 3, 19); in b43_wa_gt()
102 b43_ofdmtab_write16(dev, B43_OFDMTAB_GAIN0, 4, 21); in b43_wa_gt()
103 b43_ofdmtab_write16(dev, B43_OFDMTAB_GAIN0, 5, 21); in b43_wa_gt()
104 b43_ofdmtab_write16(dev, B43_OFDMTAB_GAIN0, 6, 25); in b43_wa_gt()
105 b43_ofdmtab_write16(dev, B43_OFDMTAB_GAIN1, 0, 3); in b43_wa_gt()
106 b43_ofdmtab_write16(dev, B43_OFDMTAB_GAIN1, 1, 3); in b43_wa_gt()
107 b43_ofdmtab_write16(dev, B43_OFDMTAB_GAIN1, 2, 7); in b43_wa_gt()
109 b43_ofdmtab_write16(dev, B43_OFDMTAB_GAIN0, 0, 19); in b43_wa_gt()
110 b43_ofdmtab_write16(dev, B43_OFDMTAB_GAIN0, 1, 19); in b43_wa_gt()
111 b43_ofdmtab_write16(dev, B43_OFDMTAB_GAIN0, 2, 19); in b43_wa_gt()
112 b43_ofdmtab_write16(dev, B43_OFDMTAB_GAIN0, 3, 19); in b43_wa_gt()
113 b43_ofdmtab_write16(dev, B43_OFDMTAB_GAIN0, 4, 21); in b43_wa_gt()
114 b43_ofdmtab_write16(dev, B43_OFDMTAB_GAIN0, 5, 21); in b43_wa_gt()
115 b43_ofdmtab_write16(dev, B43_OFDMTAB_GAIN0, 6, 25); in b43_wa_gt()
119 static void b43_wa_rssi_lt(struct b43_wldev *dev) /* RSSI lookup table */ in b43_wa_rssi_lt() argument
125 b43_ofdmtab_write16(dev, B43_OFDMTAB_RSSI, i, i + 8); in b43_wa_rssi_lt()
127 b43_ofdmtab_write16(dev, B43_OFDMTAB_RSSI, i, i - 8); in b43_wa_rssi_lt()
130 b43_ofdmtab_write16(dev, B43_OFDMTAB_RSSI, i, i); in b43_wa_rssi_lt()
134 static void b43_wa_analog(struct b43_wldev *dev) in b43_wa_analog() argument
136 struct b43_phy *phy = &dev->phy; in b43_wa_analog()
139 ofdmrev = b43_phy_read(dev, B43_PHY_VERSION_OFDM) & B43_PHYVER_VERSION; in b43_wa_analog()
142 b43_phy_write(dev, B43_PHY_PWRDOWN, 0x1808); in b43_wa_analog()
144 b43_phy_write(dev, B43_PHY_PWRDOWN, 0x1000); in b43_wa_analog()
146 b43_ofdmtab_write16(dev, B43_OFDMTAB_DAC, 3, 0x1044); in b43_wa_analog()
147 b43_ofdmtab_write16(dev, B43_OFDMTAB_DAC, 4, 0x7201); in b43_wa_analog()
148 b43_ofdmtab_write16(dev, B43_OFDMTAB_DAC, 6, 0x0040); in b43_wa_analog()
152 static void b43_wa_dac(struct b43_wldev *dev) in b43_wa_dac() argument
154 if (dev->phy.analog == 1) in b43_wa_dac()
155 b43_ofdmtab_write16(dev, B43_OFDMTAB_DAC, 1, in b43_wa_dac()
156 (b43_ofdmtab_read16(dev, B43_OFDMTAB_DAC, 1) & ~0x0034) | 0x0008); in b43_wa_dac()
158 b43_ofdmtab_write16(dev, B43_OFDMTAB_DAC, 1, in b43_wa_dac()
159 (b43_ofdmtab_read16(dev, B43_OFDMTAB_DAC, 1) & ~0x0078) | 0x0010); in b43_wa_dac()
162 static void b43_wa_fft(struct b43_wldev *dev) /* Fine frequency table */ in b43_wa_fft() argument
166 if (dev->phy.type == B43_PHYTYPE_A) in b43_wa_fft()
168 b43_ofdmtab_write16(dev, B43_OFDMTAB_DACRFPABB, i, b43_tab_finefreqa[i]); in b43_wa_fft()
171 b43_ofdmtab_write16(dev, B43_OFDMTAB_DACRFPABB, i, b43_tab_finefreqg[i]); in b43_wa_fft()
174 static void b43_wa_nft(struct b43_wldev *dev) /* Noise figure table */ in b43_wa_nft() argument
176 struct b43_phy *phy = &dev->phy; in b43_wa_nft()
182 b43_ofdmtab_write16(dev, B43_OFDMTAB_AGC2, i, b43_tab_noisea2[i]); in b43_wa_nft()
185 b43_ofdmtab_write16(dev, B43_OFDMTAB_AGC2, i, b43_tab_noisea3[i]); in b43_wa_nft()
189 b43_ofdmtab_write16(dev, B43_OFDMTAB_AGC2, i, b43_tab_noiseg1[i]); in b43_wa_nft()
192 b43_ofdmtab_write16(dev, B43_OFDMTAB_AGC2, i, b43_tab_noiseg2[i]); in b43_wa_nft()
196 static void b43_wa_rt(struct b43_wldev *dev) /* Rotor table */ in b43_wa_rt() argument
201 b43_ofdmtab_write32(dev, B43_OFDMTAB_ROTOR, i, b43_tab_rotor[i]); in b43_wa_rt()
204 static void b43_write_null_nst(struct b43_wldev *dev) in b43_write_null_nst() argument
209 b43_ofdmtab_write16(dev, B43_OFDMTAB_NOISESCALE, i, 0); in b43_write_null_nst()
212 static void b43_write_nst(struct b43_wldev *dev, const u16 *nst) in b43_write_nst() argument
217 b43_ofdmtab_write16(dev, B43_OFDMTAB_NOISESCALE, i, nst[i]); in b43_write_nst()
220 static void b43_wa_nst(struct b43_wldev *dev) /* Noise scale table */ in b43_wa_nst() argument
222 struct b43_phy *phy = &dev->phy; in b43_wa_nst()
226 b43_write_null_nst(dev); in b43_wa_nst()
228 b43_write_nst(dev, b43_tab_noisescalea2); in b43_wa_nst()
230 b43_write_nst(dev, b43_tab_noisescalea3); in b43_wa_nst()
232 b43_write_nst(dev, b43_tab_noisescaleg3); in b43_wa_nst()
235 if (b43_phy_read(dev, B43_PHY_ENCORE) & B43_PHY_ENCORE_EN) in b43_wa_nst()
236 b43_write_nst(dev, b43_tab_noisescaleg3); in b43_wa_nst()
238 b43_write_nst(dev, b43_tab_noisescaleg2); in b43_wa_nst()
240 b43_write_nst(dev, b43_tab_noisescaleg1); in b43_wa_nst()
245 static void b43_wa_art(struct b43_wldev *dev) /* ADV retard table */ in b43_wa_art() argument
250 b43_ofdmtab_write32(dev, B43_OFDMTAB_ADVRETARD, in b43_wa_art()
254 static void b43_wa_txlna_gain(struct b43_wldev *dev) in b43_wa_txlna_gain() argument
256 b43_ofdmtab_write16(dev, B43_OFDMTAB_DC, 13, 0x0000); in b43_wa_txlna_gain()
259 static void b43_wa_crs_reset(struct b43_wldev *dev) in b43_wa_crs_reset() argument
261 b43_phy_write(dev, 0x002C, 0x0064); in b43_wa_crs_reset()
264 static void b43_wa_2060txlna_gain(struct b43_wldev *dev) in b43_wa_2060txlna_gain() argument
266 b43_hf_write(dev, b43_hf_read(dev) | in b43_wa_2060txlna_gain()
270 static void b43_wa_lms(struct b43_wldev *dev) in b43_wa_lms() argument
272 b43_phy_maskset(dev, 0x0055, 0xFFC0, 0x0004); in b43_wa_lms()
275 static void b43_wa_mixedsignal(struct b43_wldev *dev) in b43_wa_mixedsignal() argument
277 b43_ofdmtab_write16(dev, B43_OFDMTAB_DAC, 1, 3); in b43_wa_mixedsignal()
280 static void b43_wa_msst(struct b43_wldev *dev) /* Min sigma square table */ in b43_wa_msst() argument
282 struct b43_phy *phy = &dev->phy; in b43_wa_msst()
296 b43_ofdmtab_write16(dev, B43_OFDMTAB_MINSIGSQ, in b43_wa_msst()
301 static void b43_wa_iqadc(struct b43_wldev *dev) in b43_wa_iqadc() argument
303 if (dev->phy.analog == 4) in b43_wa_iqadc()
304 b43_ofdmtab_write16(dev, B43_OFDMTAB_DAC, 0, in b43_wa_iqadc()
305 b43_ofdmtab_read16(dev, B43_OFDMTAB_DAC, 0) & ~0xF000); in b43_wa_iqadc()
308 static void b43_wa_crs_ed(struct b43_wldev *dev) in b43_wa_crs_ed() argument
310 struct b43_phy *phy = &dev->phy; in b43_wa_crs_ed()
313 b43_phy_write(dev, B43_PHY_CRSTHRES1_R1, 0x4F19); in b43_wa_crs_ed()
315 b43_phy_write(dev, B43_PHY_CRSTHRES1, 0x1861); in b43_wa_crs_ed()
316 b43_phy_write(dev, B43_PHY_CRSTHRES2, 0x0271); in b43_wa_crs_ed()
317 b43_phy_set(dev, B43_PHY_ANTDWELL, 0x0800); in b43_wa_crs_ed()
319 b43_phy_write(dev, B43_PHY_CRSTHRES1, 0x0098); in b43_wa_crs_ed()
320 b43_phy_write(dev, B43_PHY_CRSTHRES2, 0x0070); in b43_wa_crs_ed()
321 b43_phy_write(dev, B43_PHY_OFDM(0xC9), 0x0080); in b43_wa_crs_ed()
322 b43_phy_set(dev, B43_PHY_ANTDWELL, 0x0800); in b43_wa_crs_ed()
326 static void b43_wa_crs_thr(struct b43_wldev *dev) in b43_wa_crs_thr() argument
328 b43_phy_maskset(dev, B43_PHY_CRS0, ~0x03C0, 0xD000); in b43_wa_crs_thr()
331 static void b43_wa_crs_blank(struct b43_wldev *dev) in b43_wa_crs_blank() argument
333 b43_phy_write(dev, B43_PHY_OFDM(0x2C), 0x005A); in b43_wa_crs_blank()
336 static void b43_wa_cck_shiftbits(struct b43_wldev *dev) in b43_wa_cck_shiftbits() argument
338 b43_phy_write(dev, B43_PHY_CCKSHIFTBITS, 0x0026); in b43_wa_cck_shiftbits()
341 static void b43_wa_wrssi_offset(struct b43_wldev *dev) in b43_wa_wrssi_offset() argument
345 if (dev->phy.rev == 1) { in b43_wa_wrssi_offset()
347 b43_ofdmtab_write16(dev, B43_OFDMTAB_WRSSI_R1, in b43_wa_wrssi_offset()
352 b43_ofdmtab_write16(dev, B43_OFDMTAB_WRSSI, in b43_wa_wrssi_offset()
358 static void b43_wa_txpuoff_rxpuon(struct b43_wldev *dev) in b43_wa_txpuoff_rxpuon() argument
360 b43_ofdmtab_write16(dev, B43_OFDMTAB_UNKNOWN_0F, 2, 15); in b43_wa_txpuoff_rxpuon()
361 b43_ofdmtab_write16(dev, B43_OFDMTAB_UNKNOWN_0F, 3, 20); in b43_wa_txpuoff_rxpuon()
364 static void b43_wa_altagc(struct b43_wldev *dev) in b43_wa_altagc() argument
366 struct b43_phy *phy = &dev->phy; in b43_wa_altagc()
369 b43_ofdmtab_write16(dev, B43_OFDMTAB_AGC1_R1, 0, 254); in b43_wa_altagc()
370 b43_ofdmtab_write16(dev, B43_OFDMTAB_AGC1_R1, 1, 13); in b43_wa_altagc()
371 b43_ofdmtab_write16(dev, B43_OFDMTAB_AGC1_R1, 2, 19); in b43_wa_altagc()
372 b43_ofdmtab_write16(dev, B43_OFDMTAB_AGC1_R1, 3, 25); in b43_wa_altagc()
373 b43_ofdmtab_write16(dev, B43_OFDMTAB_AGC2, 0, 0x2710); in b43_wa_altagc()
374 b43_ofdmtab_write16(dev, B43_OFDMTAB_AGC2, 1, 0x9B83); in b43_wa_altagc()
375 b43_ofdmtab_write16(dev, B43_OFDMTAB_AGC2, 2, 0x9B83); in b43_wa_altagc()
376 b43_ofdmtab_write16(dev, B43_OFDMTAB_AGC2, 3, 0x0F8D); in b43_wa_altagc()
377 b43_phy_write(dev, B43_PHY_LMS, 4); in b43_wa_altagc()
379 b43_ofdmtab_write16(dev, B43_OFDMTAB_AGC1, 0, 254); in b43_wa_altagc()
380 b43_ofdmtab_write16(dev, B43_OFDMTAB_AGC1, 1, 13); in b43_wa_altagc()
381 b43_ofdmtab_write16(dev, B43_OFDMTAB_AGC1, 2, 19); in b43_wa_altagc()
382 b43_ofdmtab_write16(dev, B43_OFDMTAB_AGC1, 3, 25); in b43_wa_altagc()
385 b43_phy_maskset(dev, B43_PHY_CCKSHIFTBITS_WA, 0x00FF, 0x5700); in b43_wa_altagc()
386 b43_phy_maskset(dev, B43_PHY_OFDM(0x1A), ~0x007F, 0x000F); in b43_wa_altagc()
387 b43_phy_maskset(dev, B43_PHY_OFDM(0x1A), ~0x3F80, 0x2B80); in b43_wa_altagc()
388 b43_phy_maskset(dev, B43_PHY_ANTWRSETT, 0xF0FF, 0x0300); in b43_wa_altagc()
389 b43_radio_set(dev, 0x7A, 0x0008); in b43_wa_altagc()
390 b43_phy_maskset(dev, B43_PHY_N1P1GAIN, ~0x000F, 0x0008); in b43_wa_altagc()
391 b43_phy_maskset(dev, B43_PHY_P1P2GAIN, ~0x0F00, 0x0600); in b43_wa_altagc()
392 b43_phy_maskset(dev, B43_PHY_N1N2GAIN, ~0x0F00, 0x0700); in b43_wa_altagc()
393 b43_phy_maskset(dev, B43_PHY_N1P1GAIN, ~0x0F00, 0x0100); in b43_wa_altagc()
395 b43_phy_maskset(dev, B43_PHY_N1N2GAIN, ~0x000F, 0x0007); in b43_wa_altagc()
397 b43_phy_maskset(dev, B43_PHY_OFDM(0x88), ~0x00FF, 0x001C); in b43_wa_altagc()
398 b43_phy_maskset(dev, B43_PHY_OFDM(0x88), ~0x3F00, 0x0200); in b43_wa_altagc()
399 b43_phy_maskset(dev, B43_PHY_OFDM(0x96), ~0x00FF, 0x001C); in b43_wa_altagc()
400 b43_phy_maskset(dev, B43_PHY_OFDM(0x89), ~0x00FF, 0x0020); in b43_wa_altagc()
401 b43_phy_maskset(dev, B43_PHY_OFDM(0x89), ~0x3F00, 0x0200); in b43_wa_altagc()
402 b43_phy_maskset(dev, B43_PHY_OFDM(0x82), ~0x00FF, 0x002E); in b43_wa_altagc()
403 b43_phy_maskset(dev, B43_PHY_OFDM(0x96), 0x00FF, 0x1A00); in b43_wa_altagc()
404 b43_phy_maskset(dev, B43_PHY_OFDM(0x81), ~0x00FF, 0x0028); in b43_wa_altagc()
405 b43_phy_maskset(dev, B43_PHY_OFDM(0x81), 0x00FF, 0x2C00); in b43_wa_altagc()
407 b43_phy_write(dev, B43_PHY_PEAK_COUNT, 0x092B); in b43_wa_altagc()
408 b43_phy_maskset(dev, B43_PHY_OFDM(0x1B), ~0x001E, 0x0002); in b43_wa_altagc()
410 b43_phy_mask(dev, B43_PHY_OFDM(0x1B), ~0x001E); in b43_wa_altagc()
411 b43_phy_write(dev, B43_PHY_OFDM(0x1F), 0x287A); in b43_wa_altagc()
412 b43_phy_maskset(dev, B43_PHY_LPFGAINCTL, ~0x000F, 0x0004); in b43_wa_altagc()
414 b43_phy_write(dev, B43_PHY_OFDM(0x22), 0x287A); in b43_wa_altagc()
415 b43_phy_maskset(dev, B43_PHY_LPFGAINCTL, 0x0FFF, 0x3000); in b43_wa_altagc()
418 b43_phy_maskset(dev, B43_PHY_DIVSRCHIDX, 0x8080, 0x7874); in b43_wa_altagc()
419 b43_phy_write(dev, B43_PHY_OFDM(0x8E), 0x1C00); in b43_wa_altagc()
421 b43_phy_maskset(dev, B43_PHY_DIVP1P2GAIN, ~0x0F00, 0x0600); in b43_wa_altagc()
422 b43_phy_write(dev, B43_PHY_OFDM(0x8B), 0x005E); in b43_wa_altagc()
423 b43_phy_maskset(dev, B43_PHY_ANTWRSETT, ~0x00FF, 0x001E); in b43_wa_altagc()
424 b43_phy_write(dev, B43_PHY_OFDM(0x8D), 0x0002); in b43_wa_altagc()
425 b43_ofdmtab_write16(dev, B43_OFDMTAB_AGC3_R1, 0, 0); in b43_wa_altagc()
426 b43_ofdmtab_write16(dev, B43_OFDMTAB_AGC3_R1, 1, 7); in b43_wa_altagc()
427 b43_ofdmtab_write16(dev, B43_OFDMTAB_AGC3_R1, 2, 16); in b43_wa_altagc()
428 b43_ofdmtab_write16(dev, B43_OFDMTAB_AGC3_R1, 3, 28); in b43_wa_altagc()
430 b43_ofdmtab_write16(dev, B43_OFDMTAB_AGC3, 0, 0); in b43_wa_altagc()
431 b43_ofdmtab_write16(dev, B43_OFDMTAB_AGC3, 1, 7); in b43_wa_altagc()
432 b43_ofdmtab_write16(dev, B43_OFDMTAB_AGC3, 2, 16); in b43_wa_altagc()
433 b43_ofdmtab_write16(dev, B43_OFDMTAB_AGC3, 3, 28); in b43_wa_altagc()
436 b43_phy_mask(dev, B43_PHY_OFDM(0x26), ~0x0003); in b43_wa_altagc()
437 b43_phy_mask(dev, B43_PHY_OFDM(0x26), ~0x1000); in b43_wa_altagc()
439 b43_phy_read(dev, B43_PHY_VERSION_OFDM); /* Dummy read */ in b43_wa_altagc()
442 static void b43_wa_tr_ltov(struct b43_wldev *dev) /* TR Lookup Table Original Values */ in b43_wa_tr_ltov() argument
444 b43_gtab_write(dev, B43_GTAB_ORIGTR, 0, 0x7654); in b43_wa_tr_ltov()
447 static void b43_wa_cpll_nonpilot(struct b43_wldev *dev) in b43_wa_cpll_nonpilot() argument
449 b43_ofdmtab_write16(dev, B43_OFDMTAB_UNKNOWN_11, 0, 0); in b43_wa_cpll_nonpilot()
450 b43_ofdmtab_write16(dev, B43_OFDMTAB_UNKNOWN_11, 1, 0); in b43_wa_cpll_nonpilot()
453 static void b43_wa_rssi_adc(struct b43_wldev *dev) in b43_wa_rssi_adc() argument
455 if (dev->phy.analog == 4) in b43_wa_rssi_adc()
456 b43_phy_write(dev, 0x00DC, 0x7454); in b43_wa_rssi_adc()
459 static void b43_wa_boards_a(struct b43_wldev *dev) in b43_wa_boards_a() argument
461 if (dev->dev->board_vendor == SSB_BOARDVENDOR_BCM && in b43_wa_boards_a()
462 dev->dev->board_type == SSB_BOARD_BU4306 && in b43_wa_boards_a()
463 dev->dev->board_rev < 0x30) { in b43_wa_boards_a()
464 b43_phy_write(dev, 0x0010, 0xE000); in b43_wa_boards_a()
465 b43_phy_write(dev, 0x0013, 0x0140); in b43_wa_boards_a()
466 b43_phy_write(dev, 0x0014, 0x0280); in b43_wa_boards_a()
468 if (dev->dev->board_type == SSB_BOARD_MP4318 && in b43_wa_boards_a()
469 dev->dev->board_rev < 0x20) { in b43_wa_boards_a()
470 b43_phy_write(dev, 0x0013, 0x0210); in b43_wa_boards_a()
471 b43_phy_write(dev, 0x0014, 0x0840); in b43_wa_boards_a()
473 b43_phy_write(dev, 0x0013, 0x0140); in b43_wa_boards_a()
474 b43_phy_write(dev, 0x0014, 0x0280); in b43_wa_boards_a()
476 if (dev->phy.rev <= 4) in b43_wa_boards_a()
477 b43_phy_write(dev, 0x0010, 0xE000); in b43_wa_boards_a()
479 b43_phy_write(dev, 0x0010, 0x2000); in b43_wa_boards_a()
480 b43_ofdmtab_write16(dev, B43_OFDMTAB_DC, 1, 0x0039); in b43_wa_boards_a()
481 b43_ofdmtab_write16(dev, B43_OFDMTAB_UNKNOWN_APHY, 7, 0x0040); in b43_wa_boards_a()
485 static void b43_wa_boards_g(struct b43_wldev *dev) in b43_wa_boards_g() argument
487 struct ssb_sprom *sprom = dev->dev->bus_sprom; in b43_wa_boards_g()
488 struct b43_phy *phy = &dev->phy; in b43_wa_boards_g()
490 if (dev->dev->board_vendor != SSB_BOARDVENDOR_BCM || in b43_wa_boards_g()
491 dev->dev->board_type != SSB_BOARD_BU4306 || in b43_wa_boards_g()
492 dev->dev->board_rev != 0x17) { in b43_wa_boards_g()
494 b43_ofdmtab_write16(dev, B43_OFDMTAB_GAINX_R1, 1, 0x0002); in b43_wa_boards_g()
495 b43_ofdmtab_write16(dev, B43_OFDMTAB_GAINX_R1, 2, 0x0001); in b43_wa_boards_g()
497 b43_ofdmtab_write16(dev, B43_OFDMTAB_GAINX, 1, 0x0002); in b43_wa_boards_g()
498 b43_ofdmtab_write16(dev, B43_OFDMTAB_GAINX, 2, 0x0001); in b43_wa_boards_g()
501 b43_phy_mask(dev, B43_PHY_EXTG(0x11), 0xF7FF); in b43_wa_boards_g()
502 b43_ofdmtab_write16(dev, B43_OFDMTAB_GAINX, 0x0020, 0x0001); in b43_wa_boards_g()
503 b43_ofdmtab_write16(dev, B43_OFDMTAB_GAINX, 0x0021, 0x0001); in b43_wa_boards_g()
504 b43_ofdmtab_write16(dev, B43_OFDMTAB_GAINX, 0x0022, 0x0001); in b43_wa_boards_g()
505 b43_ofdmtab_write16(dev, B43_OFDMTAB_GAINX, 0x0023, 0x0000); in b43_wa_boards_g()
506 b43_ofdmtab_write16(dev, B43_OFDMTAB_GAINX, 0x0000, 0x0000); in b43_wa_boards_g()
507 b43_ofdmtab_write16(dev, B43_OFDMTAB_GAINX, 0x0003, 0x0002); in b43_wa_boards_g()
512 b43_phy_write(dev, B43_PHY_GTABCTL, 0x3120); in b43_wa_boards_g()
513 b43_phy_write(dev, B43_PHY_GTABDATA, 0xC480); in b43_wa_boards_g()
517 void b43_wa_all(struct b43_wldev *dev) in b43_wa_all() argument
519 struct b43_phy *phy = &dev->phy; in b43_wa_all()
524 b43_wa_papd(dev); in b43_wa_all()
525 b43_wa_auxclipthr(dev); in b43_wa_all()
526 b43_wa_afcdac(dev); in b43_wa_all()
527 b43_wa_txdc_offset(dev); in b43_wa_all()
528 b43_wa_initgains(dev); in b43_wa_all()
529 b43_wa_divider(dev); in b43_wa_all()
530 b43_wa_gt(dev); in b43_wa_all()
531 b43_wa_rssi_lt(dev); in b43_wa_all()
532 b43_wa_analog(dev); in b43_wa_all()
533 b43_wa_dac(dev); in b43_wa_all()
534 b43_wa_fft(dev); in b43_wa_all()
535 b43_wa_nft(dev); in b43_wa_all()
536 b43_wa_rt(dev); in b43_wa_all()
537 b43_wa_nst(dev); in b43_wa_all()
538 b43_wa_art(dev); in b43_wa_all()
539 b43_wa_txlna_gain(dev); in b43_wa_all()
540 b43_wa_crs_reset(dev); in b43_wa_all()
541 b43_wa_2060txlna_gain(dev); in b43_wa_all()
542 b43_wa_lms(dev); in b43_wa_all()
545 b43_wa_papd(dev); in b43_wa_all()
546 b43_wa_mixedsignal(dev); in b43_wa_all()
547 b43_wa_rssi_lt(dev); in b43_wa_all()
548 b43_wa_txdc_offset(dev); in b43_wa_all()
549 b43_wa_initgains(dev); in b43_wa_all()
550 b43_wa_dac(dev); in b43_wa_all()
551 b43_wa_nft(dev); in b43_wa_all()
552 b43_wa_nst(dev); in b43_wa_all()
553 b43_wa_msst(dev); in b43_wa_all()
554 b43_wa_analog(dev); in b43_wa_all()
555 b43_wa_gt(dev); in b43_wa_all()
556 b43_wa_txpuoff_rxpuon(dev); in b43_wa_all()
557 b43_wa_txlna_gain(dev); in b43_wa_all()
560 b43_wa_iqadc(dev); in b43_wa_all()
562 b43_wa_papd(dev); in b43_wa_all()
563 b43_wa_rssi_lt(dev); in b43_wa_all()
564 b43_wa_txdc_offset(dev); in b43_wa_all()
565 b43_wa_initgains(dev); in b43_wa_all()
566 b43_wa_dac(dev); in b43_wa_all()
567 b43_wa_nft(dev); in b43_wa_all()
568 b43_wa_nst(dev); in b43_wa_all()
569 b43_wa_msst(dev); in b43_wa_all()
570 b43_wa_analog(dev); in b43_wa_all()
571 b43_wa_gt(dev); in b43_wa_all()
572 b43_wa_txpuoff_rxpuon(dev); in b43_wa_all()
573 b43_wa_txlna_gain(dev); in b43_wa_all()
576 b43_wa_iqadc(dev); in b43_wa_all()
577 b43_wa_papd(dev); in b43_wa_all()
578 b43_wa_rssi_lt(dev); in b43_wa_all()
579 b43_wa_txdc_offset(dev); in b43_wa_all()
580 b43_wa_initgains(dev); in b43_wa_all()
581 b43_wa_dac(dev); in b43_wa_all()
582 b43_wa_nft(dev); in b43_wa_all()
583 b43_wa_nst(dev); in b43_wa_all()
584 b43_wa_msst(dev); in b43_wa_all()
585 b43_wa_analog(dev); in b43_wa_all()
586 b43_wa_gt(dev); in b43_wa_all()
587 b43_wa_txpuoff_rxpuon(dev); in b43_wa_all()
588 b43_wa_txlna_gain(dev); in b43_wa_all()
589 b43_wa_rssi_adc(dev); in b43_wa_all()
593 b43_wa_boards_a(dev); in b43_wa_all()
597 b43_wa_crs_ed(dev); in b43_wa_all()
598 b43_wa_crs_thr(dev); in b43_wa_all()
599 b43_wa_crs_blank(dev); in b43_wa_all()
600 b43_wa_cck_shiftbits(dev); in b43_wa_all()
601 b43_wa_fft(dev); in b43_wa_all()
602 b43_wa_nft(dev); in b43_wa_all()
603 b43_wa_rt(dev); in b43_wa_all()
604 b43_wa_nst(dev); in b43_wa_all()
605 b43_wa_art(dev); in b43_wa_all()
606 b43_wa_wrssi_offset(dev); in b43_wa_all()
607 b43_wa_altagc(dev); in b43_wa_all()
614 b43_wa_tr_ltov(dev); in b43_wa_all()
615 b43_wa_crs_ed(dev); in b43_wa_all()
616 b43_wa_rssi_lt(dev); in b43_wa_all()
617 b43_wa_nft(dev); in b43_wa_all()
618 b43_wa_nst(dev); in b43_wa_all()
619 b43_wa_msst(dev); in b43_wa_all()
620 b43_wa_wrssi_offset(dev); in b43_wa_all()
621 b43_wa_altagc(dev); in b43_wa_all()
622 b43_wa_analog(dev); in b43_wa_all()
623 b43_wa_txpuoff_rxpuon(dev); in b43_wa_all()
628 b43_wa_boards_g(dev); in b43_wa_all()
633 b43_wa_cpll_nonpilot(dev); in b43_wa_all()