It's my first patch that tries to do something. Could you review this, please? Did I write it correctly? Did I use correct registers names (like B43_NPHY_TXF_*)?
Also I need some help with:
//TODO: Set bit 0x40 in the Chip Control register (0x28)
could someone let me know how can I write to chip control register? Is
following correct?
tmp = b43_read16(dev, 0x28);
b43_write16(dev, 0x28, tmp | 0x40);
I see there are read/write for PHY, radio and "just b43" (like above). Did I
use correct one?
diff --git a/drivers/net/wireless/b43/phy_n.c b/drivers/net/wireless/b43/phy_n.c
index a662ced..d503cb7 100644
--- a/drivers/net/wireless/b43/phy_n.c
+++ b/drivers/net/wireless/b43/phy_n.c
@@ -390,18 +390,38 @@ static void b43_nphy_rssi_cal(struct b43_wldev *dev, u8
type)
int b43_phy_initn(struct b43_wldev *dev)
{
+ struct ssb_bus *bus = dev->dev->bus;
struct b43_phy *phy = &dev->phy;
+ struct b43_phy_n *nphy = phy->n;
u16 tmp;
+ u16 clip[2];
+
+ nphy->do_cal = 0;
+ if ((dev->phy.rev >= 3) &&
+ (bus->sprom.boardflags_lo & B43_BFL_EXTLNA) &&
+ (b43_current_band(dev->wl) == IEEE80211_BAND_2GHZ)) {
+ //TODO: Set bit 0x40 in the Chip Control register (0x28)
+ }
+ nphy->deaf_count = 0;
- //TODO: Spectral management
b43_nphy_tables_init(dev);
/* Clear all overrides */
- b43_phy_write(dev, B43_NPHY_RFCTL_OVER, 0);
+ if (dev->phy.rev >= 3) {
+ b43_phy_write(dev, B43_NPHY_TXF_40CO_B1S1, 0);
+ b43_phy_write(dev, B43_NPHY_RFCTL_OVER, 0);
+ b43_phy_write(dev, B43_NPHY_TXF_40CO_B1S0, 0);
+ b43_phy_write(dev, B43_NPHY_TXF_40CO_B32S1, 0);
+ }
+ else {
+ b43_phy_write(dev, B43_NPHY_RFCTL_OVER, 0);
+ }
b43_phy_write(dev, B43_NPHY_RFCTL_INTC1, 0);
b43_phy_write(dev, B43_NPHY_RFCTL_INTC2, 0);
- b43_phy_write(dev, B43_NPHY_RFCTL_INTC3, 0);
- b43_phy_write(dev, B43_NPHY_RFCTL_INTC4, 0);
+ if (dev->phy.rev < 6) {
+ b43_phy_write(dev, B43_NPHY_RFCTL_INTC3, 0);
+ b43_phy_write(dev, B43_NPHY_RFCTL_INTC4, 0);
+ }
b43_phy_mask(dev, B43_NPHY_RFSEQMODE,
~(B43_NPHY_RFSEQMODE_CAOVER |
B43_NPHY_RFSEQMODE_TROVER));
diff --git a/drivers/net/wireless/b43/phy_n.h b/drivers/net/wireless/b43/phy_n.h
index 1749aef..58fdd4c 100644
--- a/drivers/net/wireless/b43/phy_n.h
+++ b/drivers/net/wireless/b43/phy_n.h
@@ -920,6 +920,9 @@
struct b43_wldev;
struct b43_phy_n {
+ u8 do_cal;
+ u8 deaf_count;
+
//TODO lots of missing stuff
};
N-PHY-RFC.patch
Description: Binary data
_______________________________________________ Bcm43xx-dev mailing list [email protected] https://lists.berlios.de/mailman/listinfo/bcm43xx-dev
