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
 };

Attachment: N-PHY-RFC.patch
Description: Binary data

_______________________________________________
Bcm43xx-dev mailing list
[email protected]
https://lists.berlios.de/mailman/listinfo/bcm43xx-dev

Reply via email to