|
@@ -2171,6 +2171,48 @@ static const u16 b43_ntab_loftlt1_r3[] = {
|
|
|
0x0000, 0x0000,
|
|
|
};
|
|
|
|
|
|
+/* volatile tables, PHY revision >= 3 */
|
|
|
+
|
|
|
+/* indexed by antswctl2g */
|
|
|
+static const u16 b43_ntab_antswctl2g_r3[4][32] = {
|
|
|
+ {
|
|
|
+ 0x0082, 0x0082, 0x0211, 0x0222, 0x0328,
|
|
|
+ 0x0000, 0x0000, 0x0000, 0x0144, 0x0000,
|
|
|
+ 0x0000, 0x0000, 0x0188, 0x0000, 0x0000,
|
|
|
+ 0x0000, 0x0082, 0x0082, 0x0211, 0x0222,
|
|
|
+ 0x0328, 0x0000, 0x0000, 0x0000, 0x0144,
|
|
|
+ 0x0000, 0x0000, 0x0000, 0x0188, 0x0000,
|
|
|
+ 0x0000, 0x0000,
|
|
|
+ },
|
|
|
+ {
|
|
|
+ 0x0022, 0x0022, 0x0011, 0x0022, 0x0022,
|
|
|
+ 0x0000, 0x0000, 0x0000, 0x0011, 0x0000,
|
|
|
+ 0x0000, 0x0000, 0x0022, 0x0000, 0x0000,
|
|
|
+ 0x0000, 0x0022, 0x0022, 0x0011, 0x0022,
|
|
|
+ 0x0022, 0x0000, 0x0000, 0x0000, 0x0011,
|
|
|
+ 0x0000, 0x0000, 0x0000, 0x0022, 0x0000,
|
|
|
+ 0x0000, 0x0000,
|
|
|
+ },
|
|
|
+ {
|
|
|
+ 0x0088, 0x0088, 0x0044, 0x0088, 0x0088,
|
|
|
+ 0x0000, 0x0000, 0x0000, 0x0044, 0x0000,
|
|
|
+ 0x0000, 0x0000, 0x0088, 0x0000, 0x0000,
|
|
|
+ 0x0000, 0x0088, 0x0088, 0x0044, 0x0088,
|
|
|
+ 0x0088, 0x0000, 0x0000, 0x0000, 0x0044,
|
|
|
+ 0x0000, 0x0000, 0x0000, 0x0088, 0x0000,
|
|
|
+ 0x0000, 0x0000,
|
|
|
+ },
|
|
|
+ {
|
|
|
+ 0x0022, 0x0022, 0x0011, 0x0022, 0x0000,
|
|
|
+ 0x0000, 0x0000, 0x0000, 0x0011, 0x0000,
|
|
|
+ 0x0000, 0x0000, 0x0022, 0x0000, 0x0000,
|
|
|
+ 0x03cc, 0x0022, 0x0022, 0x0011, 0x0022,
|
|
|
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0011,
|
|
|
+ 0x0000, 0x0000, 0x0000, 0x0022, 0x0000,
|
|
|
+ 0x0000, 0x03cc,
|
|
|
+ }
|
|
|
+};
|
|
|
+
|
|
|
/* TX gain tables */
|
|
|
const u32 b43_ntab_tx_gain_rev0_1_2[] = {
|
|
|
0x03cc2b44, 0x03cc2b42, 0x03cc2a44, 0x03cc2a42,
|
|
@@ -3006,6 +3048,8 @@ void b43_nphy_rev0_1_2_tables_init(struct b43_wldev *dev)
|
|
|
} while (0)
|
|
|
void b43_nphy_rev3plus_tables_init(struct b43_wldev *dev)
|
|
|
{
|
|
|
+ struct ssb_sprom *sprom = dev->dev->bus_sprom;
|
|
|
+
|
|
|
/* Static tables */
|
|
|
ntab_upload_r3(dev, B43_NTAB_FRAMESTRUCT_R3, b43_ntab_framestruct_r3);
|
|
|
ntab_upload_r3(dev, B43_NTAB_PILOT_R3, b43_ntab_pilot_r3);
|
|
@@ -3036,7 +3080,11 @@ void b43_nphy_rev3plus_tables_init(struct b43_wldev *dev)
|
|
|
ntab_upload_r3(dev, B43_NTAB_C1_LOFEEDTH_R3, b43_ntab_loftlt1_r3);
|
|
|
|
|
|
/* Volatile tables */
|
|
|
- /* TODO */
|
|
|
+ if (sprom->fem.ghz2.antswlut < ARRAY_SIZE(b43_ntab_antswctl2g_r3))
|
|
|
+ ntab_upload_r3(dev, B43_NTAB_ANT_SW_CTL_R3,
|
|
|
+ b43_ntab_antswctl2g_r3[sprom->fem.ghz2.antswlut]);
|
|
|
+ else
|
|
|
+ B43_WARN_ON(1);
|
|
|
}
|
|
|
|
|
|
struct nphy_gain_ctl_workaround_entry *b43_nphy_get_gain_ctl_workaround_ent(
|