[RFC] A PHY init rewrite

2007-11-04 Thread Stefano Brivio
Sync A PHY initialization code with specs, allowing further work on A PHY
support. Note: G PHY initialization is involved as well.

Signed-off-by: Stefano Brivio [EMAIL PROTECTED]
Signed-off-by: Michael Buesch [EMAIL PROTECTED]

---

Please test. This could break badly 802.11g devices. It will give two
warnings about unused functions - that's known.


Index: wireless-2.6/drivers/net/wireless/b43/Makefile
===
--- wireless-2.6.orig/drivers/net/wireless/b43/Makefile
+++ wireless-2.6/drivers/net/wireless/b43/Makefile
@@ -5,6 +5,7 @@ b43-y   += phy.o
 b43-y  += sysfs.o
 b43-y  += xmit.o
 b43-y  += lo.o
+b43-y  += wa.o
 # b43 RFKILL button support
 b43-$(CONFIG_B43_RFKILL)   += rfkill.o
 # b43 LED support
Index: wireless-2.6/drivers/net/wireless/b43/b43.h
===
--- wireless-2.6.orig/drivers/net/wireless/b43/b43.h
+++ wireless-2.6/drivers/net/wireless/b43/b43.h
@@ -542,6 +542,10 @@ struct b43_phy {
u16 lofcal;
 
u16 initval;//FIXME rename?
+
+   /* OFDM address read/write caching for hardware auto-increment. */
+   u16 ofdm_addr;
+   u8 ofdm_valid; /* 0: invalid, 1: read, 2: write */
 };
 
 /* Data structures for DMA transmission, per 80211 core. */
Index: wireless-2.6/drivers/net/wireless/b43/main.c
===
--- wireless-2.6.orig/drivers/net/wireless/b43/main.c
+++ wireless-2.6/drivers/net/wireless/b43/main.c
@@ -2264,6 +2264,9 @@ static int b43_chip_init(struct b43_wlde
b43_write16(dev, B43_MMIO_POWERUP_DELAY,
dev-dev-bus-chipco.fast_pwrup_delay);
 
+   /* OFDM address caching. */
+   phy-ofdm_valid = 0;
+
err = 0;
b43dbg(dev-wl, Chip initialized\n);
 out:
Index: wireless-2.6/drivers/net/wireless/b43/phy.c
===
--- wireless-2.6.orig/drivers/net/wireless/b43/phy.c
+++ wireless-2.6/drivers/net/wireless/b43/phy.c
@@ -34,6 +34,8 @@
 #include main.h
 #include tables.h
 #include lo.h
+#include wa.h
+
 
 static const s8 b43_tssi2dbm_b_table[] = {
0x4D, 0x4C, 0x4B, 0x4A,
@@ -303,7 +305,7 @@ void b43_phy_write(struct b43_wldev *dev
b43_write16(dev, B43_MMIO_PHY_DATA, val);
 }
 
-static void b43_radio_set_txpower_a(struct b43_wldev *dev, u16 txpower);
+static void b43_set_txpower_a(struct b43_wldev *dev, u16 txpower);
 
 /* Adjust the transmission power output (G-PHY) */
 void b43_set_txpower_g(struct b43_wldev *dev,
@@ -763,214 +765,6 @@ static void b43_phy_init_pctl(struct b43
b43_shm_clear_tssi(dev);
 }
 
-static void b43_phy_agcsetup(struct b43_wldev *dev)
-{
-   struct b43_phy *phy = dev-phy;
-   u16 offset = 0x;
-
-   if (phy-rev == 1)
-   offset = 0x4C00;
-
-   b43_ofdmtab_write16(dev, offset, 0, 0x00FE);
-   b43_ofdmtab_write16(dev, offset, 1, 0x000D);
-   b43_ofdmtab_write16(dev, offset, 2, 0x0013);
-   b43_ofdmtab_write16(dev, offset, 3, 0x0019);
-
-   if (phy-rev == 1) {
-   b43_ofdmtab_write16(dev, 0x1800, 0, 0x2710);
-   b43_ofdmtab_write16(dev, 0x1801, 0, 0x9B83);
-   b43_ofdmtab_write16(dev, 0x1802, 0, 0x9B83);
-   b43_ofdmtab_write16(dev, 0x1803, 0, 0x0F8D);
-   b43_phy_write(dev, 0x0455, 0x0004);
-   }
-
-   b43_phy_write(dev, 0x04A5, (b43_phy_read(dev, 0x04A5)
-0x00FF) | 0x5700);
-   b43_phy_write(dev, 0x041A, (b43_phy_read(dev, 0x041A)
-0xFF80) | 0x000F);
-   b43_phy_write(dev, 0x041A, (b43_phy_read(dev, 0x041A)
-0xC07F) | 0x2B80);
-   b43_phy_write(dev, 0x048C, (b43_phy_read(dev, 0x048C)
-0xF0FF) | 0x0300);
-
-   b43_radio_write16(dev, 0x007A, b43_radio_read16(dev, 0x007A)
- | 0x0008);
-
-   b43_phy_write(dev, 0x04A0, (b43_phy_read(dev, 0x04A0)
-0xFFF0) | 0x0008);
-   b43_phy_write(dev, 0x04A1, (b43_phy_read(dev, 0x04A1)
-0xF0FF) | 0x0600);
-   b43_phy_write(dev, 0x04A2, (b43_phy_read(dev, 0x04A2)
-0xF0FF) | 0x0700);
-   b43_phy_write(dev, 0x04A0, (b43_phy_read(dev, 0x04A0)
-0xF0FF) | 0x0100);
-
-   if (phy-rev == 1) {
-   b43_phy_write(dev, 0x04A2, (b43_phy_read(dev, 0x04A2)
-0xFFF0) | 0x0007);
-   }
-
-   b43_phy_write(dev, 0x0488, (b43_phy_read(dev, 0x0488)
-0xFF00) | 0x001C);
-   b43_phy_write(dev, 0x0488, (b43_phy_read(dev, 0x0488)
-

Re: [RFC] A PHY init rewrite

2007-11-04 Thread Stefano Brivio
On Sun, 4 Nov 2007 18:25:05 +0100
Stefano Brivio [EMAIL PROTECTED] wrote:

 Signed-off-by: Stefano Brivio [EMAIL PROTECTED]
 Signed-off-by: Michael Buesch [EMAIL PROTECTED]

Cc: Michael Busch [EMAIL PROTECTED] instead, sorry. :)


-- 
Ciao
Stefano
___
Bcm43xx-dev mailing list
Bcm43xx-dev@lists.berlios.de
https://lists.berlios.de/mailman/listinfo/bcm43xx-dev


Re: [RFC] A PHY init rewrite

2007-11-04 Thread Michael Buesch
On Sunday 04 November 2007 18:36:26 Stefano Brivio wrote:
 On Sun, 4 Nov 2007 18:25:05 +0100
 Stefano Brivio [EMAIL PROTECTED] wrote:
 
  Signed-off-by: Stefano Brivio [EMAIL PROTECTED]
  Signed-off-by: Michael Buesch [EMAIL PROTECTED]
 
 Cc: Michael Busch [EMAIL PROTECTED] instead, sorry. :)

:)

I tested this on a 4318 and and 4306.
So you can add an
Acked-by: Michael Buesch [EMAIL PROTECTED]
for the G-PHY parts.

-- 
Greetings Michael.
___
Bcm43xx-dev mailing list
Bcm43xx-dev@lists.berlios.de
https://lists.berlios.de/mailman/listinfo/bcm43xx-dev


Re: [RFC] A PHY init rewrite

2007-11-04 Thread Larry Finger
Michael Buesch wrote:
 On Sunday 04 November 2007 18:36:26 Stefano Brivio wrote:
 On Sun, 4 Nov 2007 18:25:05 +0100
 Stefano Brivio [EMAIL PROTECTED] wrote:

 Signed-off-by: Stefano Brivio [EMAIL PROTECTED]
 Signed-off-by: Michael Buesch [EMAIL PROTECTED]
 Cc: Michael Busch [EMAIL PROTECTED] instead, sorry. :)
 
 :)
 
 I tested this on a 4318 and and 4306.
 So you can add an
 Acked-by: Michael Buesch [EMAIL PROTECTED]
 for the G-PHY parts.
 

It also works for the BCM4311.

Larry

___
Bcm43xx-dev mailing list
Bcm43xx-dev@lists.berlios.de
https://lists.berlios.de/mailman/listinfo/bcm43xx-dev