提交 b5058348 编写于 作者: R Rafał Miłecki 提交者: John W. Linville

b43: HT-PHY: init: init BPHY and upload 0x1a table

Signed-off-by: NRafał Miłecki <zajec5@gmail.com>
Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
上级 19240f36
...@@ -169,6 +169,24 @@ static void b43_phy_ht_zero_extg(struct b43_wldev *dev) ...@@ -169,6 +169,24 @@ static void b43_phy_ht_zero_extg(struct b43_wldev *dev)
b43_phy_write(dev, B43_PHY_EXTG(base[i] + 0xc), 0); b43_phy_write(dev, B43_PHY_EXTG(base[i] + 0xc), 0);
} }
static void b43_phy_ht_bphy_init(struct b43_wldev *dev)
{
unsigned int i;
u16 val;
val = 0x1E1F;
for (i = 0; i < 16; i++) {
b43_phy_write(dev, B43_PHY_N_BMODE(0x88 + i), val);
val -= 0x202;
}
val = 0x3E3F;
for (i = 0; i < 16; i++) {
b43_phy_write(dev, B43_PHY_N_BMODE(0x98 + i), val);
val -= 0x202;
}
b43_phy_write(dev, B43_PHY_N_BMODE(0x38), 0x668);
}
/************************************************** /**************************************************
* Channel switching ops. * Channel switching ops.
**************************************************/ **************************************************/
...@@ -322,6 +340,14 @@ static int b43_phy_ht_op_init(struct b43_wldev *dev) ...@@ -322,6 +340,14 @@ static int b43_phy_ht_op_init(struct b43_wldev *dev)
b43_mac_phy_clock_set(dev, true); b43_mac_phy_clock_set(dev, true);
/* TODO: Some ops here */
if (b43_current_band(dev->wl) == IEEE80211_BAND_2GHZ)
b43_phy_ht_bphy_init(dev);
b43_httab_write_bulk(dev, B43_HTTAB32(0x1a, 0xc0),
B43_HTTAB_1A_C0_LATE_SIZE, b43_httab_0x1a_0xc0_late);
return 0; return 0;
} }
......
...@@ -574,6 +574,42 @@ static const u32 b43_httab_0x24[] = { ...@@ -574,6 +574,42 @@ static const u32 b43_httab_0x24[] = {
0x005d0582, 0x005805d6, 0x0053062e, 0x004e068c, 0x005d0582, 0x005805d6, 0x0053062e, 0x004e068c,
}; };
/* Some late-init table */
const u32 b43_httab_0x1a_0xc0_late[] = {
0x10f90040, 0x10e10040, 0x10e1003c, 0x10c9003d,
0x10b9003c, 0x10a9003d, 0x10a1003c, 0x1099003b,
0x1091003b, 0x1089003a, 0x1081003a, 0x10790039,
0x10710039, 0x1069003a, 0x1061003b, 0x1059003d,
0x1051003f, 0x10490042, 0x1049003e, 0x1049003b,
0x1041003e, 0x1041003b, 0x1039003e, 0x1039003b,
0x10390038, 0x10390035, 0x1031003a, 0x10310036,
0x10310033, 0x1029003a, 0x10290037, 0x10290034,
0x10290031, 0x10210039, 0x10210036, 0x10210033,
0x10210030, 0x1019003c, 0x10190039, 0x10190036,
0x10190033, 0x10190030, 0x1019002d, 0x1019002b,
0x10190028, 0x1011003a, 0x10110036, 0x10110033,
0x10110030, 0x1011002e, 0x1011002b, 0x10110029,
0x10110027, 0x10110024, 0x10110022, 0x10110020,
0x1011001f, 0x1011001d, 0x1009003a, 0x10090037,
0x10090034, 0x10090031, 0x1009002e, 0x1009002c,
0x10090029, 0x10090027, 0x10090025, 0x10090023,
0x10090021, 0x1009001f, 0x1009001d, 0x1009001b,
0x1009001a, 0x10090018, 0x10090017, 0x10090016,
0x10090015, 0x10090013, 0x10090012, 0x10090011,
0x10090010, 0x1009000f, 0x1009000f, 0x1009000e,
0x1009000d, 0x1009000c, 0x1009000c, 0x1009000b,
0x1009000a, 0x1009000a, 0x10090009, 0x10090009,
0x10090008, 0x10090008, 0x10090007, 0x10090007,
0x10090007, 0x10090006, 0x10090006, 0x10090005,
0x10090005, 0x10090005, 0x10090005, 0x10090004,
0x10090004, 0x10090004, 0x10090004, 0x10090003,
0x10090003, 0x10090003, 0x10090003, 0x10090003,
0x10090003, 0x10090002, 0x10090002, 0x10090002,
0x10090002, 0x10090002, 0x10090002, 0x10090002,
0x10090002, 0x10090002, 0x10090001, 0x10090001,
0x10090001, 0x10090001, 0x10090001, 0x10090001,
};
/************************************************** /**************************************************
* R/W ops. * R/W ops.
**************************************************/ **************************************************/
...@@ -723,6 +759,9 @@ void b43_httab_write_bulk(struct b43_wldev *dev, u32 offset, ...@@ -723,6 +759,9 @@ void b43_httab_write_bulk(struct b43_wldev *dev, u32 offset,
} while (0) } while (0)
void b43_phy_ht_tables_init(struct b43_wldev *dev) void b43_phy_ht_tables_init(struct b43_wldev *dev)
{ {
BUILD_BUG_ON(ARRAY_SIZE(b43_httab_0x1a_0xc0_late) !=
B43_HTTAB_1A_C0_LATE_SIZE);
httab_upload(dev, B43_HTTAB16(0x12, 0), b43_httab_0x12); httab_upload(dev, B43_HTTAB16(0x12, 0), b43_httab_0x12);
httab_upload(dev, B43_HTTAB16(0x27, 0), b43_httab_0x27); httab_upload(dev, B43_HTTAB16(0x27, 0), b43_httab_0x27);
httab_upload(dev, B43_HTTAB16(0x26, 0), b43_httab_0x26); httab_upload(dev, B43_HTTAB16(0x26, 0), b43_httab_0x26);
......
...@@ -19,4 +19,7 @@ void b43_httab_write_bulk(struct b43_wldev *dev, u32 offset, ...@@ -19,4 +19,7 @@ void b43_httab_write_bulk(struct b43_wldev *dev, u32 offset,
void b43_phy_ht_tables_init(struct b43_wldev *dev); void b43_phy_ht_tables_init(struct b43_wldev *dev);
#define B43_HTTAB_1A_C0_LATE_SIZE 128
extern const u32 b43_httab_0x1a_0xc0_late[];
#endif /* B43_TABLES_PHY_HT_H_ */ #endif /* B43_TABLES_PHY_HT_H_ */
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册