Cleanup. Signed-off-by: Michael Buesch <[EMAIL PROTECTED]>
Index: wireless-dev/drivers/net/wireless/bcm43xx-mac80211/bcm43xx.h =================================================================== --- wireless-dev.orig/drivers/net/wireless/bcm43xx-mac80211/bcm43xx.h 2007-08-08 22:17:10.000000000 +0200 +++ wireless-dev/drivers/net/wireless/bcm43xx-mac80211/bcm43xx.h 2007-08-08 22:17:20.000000000 +0200 @@ -1,20 +1,11 @@ #ifndef BCM43xx_H_ #define BCM43xx_H_ -#include <linux/hw_random.h> #include <linux/kernel.h> #include <linux/spinlock.h> #include <linux/interrupt.h> -#include <linux/stringify.h> -#include <linux/netdevice.h> -#include <linux/pci.h> -#include <asm/atomic.h> -#include <asm/io.h> - +#include <linux/hw_random.h> #include <linux/ssb/ssb.h> -#include <linux/ssb/ssb_driver_chipcommon.h> - -#include <linux/wireless.h> #include <net/mac80211.h> #include "bcm43xx_debugfs.h" @@ -30,10 +21,6 @@ #endif -#define BCM43xx_IRQWAIT_MAX_RETRIES 50 - -#define BCM43xx_IO_SIZE 8192 - #define BCM43xx_RX_MAX_SSI 60 /* MMIO offsets */ @@ -50,7 +37,6 @@ #define BCM43xx_MMIO_DMA5_REASON 0x48 #define BCM43xx_MMIO_DMA5_IRQ_MASK 0x4C #define BCM43xx_MMIO_MACCTL 0x120 -#define BCM43xx_MMIO_STATUS_BITFIELD 0x120//TODO replace all instances by MACCTL #define BCM43xx_MMIO_STATUS2_BITFIELD 0x124 #define BCM43xx_MMIO_GEN_IRQ_REASON 0x128 #define BCM43xx_MMIO_GEN_IRQ_MASK 0x12C @@ -336,25 +322,6 @@ enum { #define BCM43xx_MACCTL_DISCPMQ 0x40000000 /* Discard Power Management Queue */ #define BCM43xx_MACCTL_GMODE 0x80000000 /* G Mode */ -/* StatusBitField *///FIXME rename these all -#define BCM43xx_SBF_MAC_ENABLED 0x00000001 -#define BCM43xx_SBF_2 0x00000002 /*FIXME: fix name*/ -#define BCM43xx_SBF_CORE_READY 0x00000004 -#define BCM43xx_SBF_400 0x00000400 /*FIXME: fix name*/ -#define BCM43xx_SBF_4000 0x00004000 /*FIXME: fix name*/ -#define BCM43xx_SBF_8000 0x00008000 /*FIXME: fix name*/ -#define BCM43xx_SBF_XFER_REG_BYTESWAP 0x00010000 -#define BCM43xx_SBF_MODE_NOTADHOC 0x00020000 -#define BCM43xx_SBF_MODE_AP 0x00040000 -#define BCM43xx_SBF_RADIOREG_LOCK 0x00080000 -#define BCM43xx_SBF_MODE_MONITOR 0x00400000 -#define BCM43xx_SBF_MODE_PROMISC 0x01000000 -#define BCM43xx_SBF_PS1 0x02000000 -#define BCM43xx_SBF_PS2 0x04000000 -#define BCM43xx_SBF_NO_SSID_BCAST 0x08000000 -#define BCM43xx_SBF_TIME_UPDATE 0x10000000 -#define BCM43xx_SBF_80000000 0x80000000 /*FIXME: fix name*/ - /* 802.11 core specific TM State Low flags */ #define BCM43xx_TMSLOW_GMODE 0x20000000 /* G Mode Enable */ #define BCM43xx_TMSLOW_PLLREFSEL 0x00200000 /* PLL Frequency Reference Select */ @@ -441,8 +408,6 @@ enum { }; -struct net_device; -struct pci_dev; struct bcm43xx_dmaring; struct bcm43xx_pioqueue; Index: wireless-dev/drivers/net/wireless/bcm43xx-mac80211/bcm43xx_main.c =================================================================== --- wireless-dev.orig/drivers/net/wireless/bcm43xx-mac80211/bcm43xx_main.c 2007-08-08 22:17:10.000000000 +0200 +++ wireless-dev/drivers/net/wireless/bcm43xx-mac80211/bcm43xx_main.c 2007-08-08 22:17:20.000000000 +0200 @@ -263,12 +263,12 @@ void bcmdbg(struct bcm43xx_wl *wl, const static void bcm43xx_ram_write(struct bcm43xx_wldev *dev, u16 offset, u32 val) { - u32 status; + u32 macctl; BCM43xx_WARN_ON(offset % 4 != 0); - status = bcm43xx_read32(dev, BCM43xx_MMIO_STATUS_BITFIELD); - if (status & BCM43xx_SBF_XFER_REG_BYTESWAP) + macctl = bcm43xx_read32(dev, BCM43xx_MMIO_MACCTL); + if (macctl & BCM43xx_MACCTL_BE) val = swab32(val); bcm43xx_write32(dev, BCM43xx_MMIO_RAM_CONTROL, offset); @@ -462,21 +462,24 @@ void bcm43xx_tsf_read(struct bcm43xx_wld static void bcm43xx_time_lock(struct bcm43xx_wldev *dev) { - u32 status; + u32 macctl; - status = bcm43xx_read32(dev, BCM43xx_MMIO_STATUS_BITFIELD); - status |= BCM43xx_SBF_TIME_UPDATE; - bcm43xx_write32(dev, BCM43xx_MMIO_STATUS_BITFIELD, status); - mmiowb(); + macctl = bcm43xx_read32(dev, BCM43xx_MMIO_MACCTL); + macctl |= BCM43xx_MACCTL_TBTTHOLD; + bcm43xx_write32(dev, BCM43xx_MMIO_MACCTL, macctl); + /* Commit the write */ + bcm43xx_read32(dev, BCM43xx_MMIO_MACCTL); } static void bcm43xx_time_unlock(struct bcm43xx_wldev *dev) { - u32 status; + u32 macctl; - status = bcm43xx_read32(dev, BCM43xx_MMIO_STATUS_BITFIELD); - status &= ~BCM43xx_SBF_TIME_UPDATE; - bcm43xx_write32(dev, BCM43xx_MMIO_STATUS_BITFIELD, status); + macctl = bcm43xx_read32(dev, BCM43xx_MMIO_MACCTL); + macctl &= ~BCM43xx_MACCTL_TBTTHOLD; + bcm43xx_write32(dev, BCM43xx_MMIO_MACCTL, macctl); + /* Commit the write */ + bcm43xx_read32(dev, BCM43xx_MMIO_MACCTL); } static void bcm43xx_tsf_write_locked(struct bcm43xx_wldev *dev, u64 tsf) @@ -674,7 +677,8 @@ void bcm43xx_dummy_transmission(struct b for (i = 0; i < 5; i++) bcm43xx_ram_write(dev, i * 4, buffer[i]); - bcm43xx_read32(dev, BCM43xx_MMIO_STATUS_BITFIELD); /* dummy read */ + /* Commit writes */ + bcm43xx_read32(dev, BCM43xx_MMIO_MACCTL); bcm43xx_write16(dev, 0x0568, 0x0000); bcm43xx_write16(dev, 0x07C0, 0x0000); @@ -1722,7 +1726,10 @@ static int bcm43xx_upload_microcode(stru } bcm43xx_write32(dev, BCM43xx_MMIO_GEN_IRQ_REASON, BCM43xx_IRQ_ALL); - bcm43xx_write32(dev, BCM43xx_MMIO_STATUS_BITFIELD, 0x00020402); + bcm43xx_write32(dev, BCM43xx_MMIO_MACCTL, + BCM43xx_MACCTL_PSM_RUN | + BCM43xx_MACCTL_IHR_ENABLED | + BCM43xx_MACCTL_INFRA); /* Wait for the microcode to load and respond */ i = 0; @@ -1731,7 +1738,7 @@ static int bcm43xx_upload_microcode(stru if (tmp == BCM43xx_IRQ_MAC_SUSPENDED) break; i++; - if (i >= BCM43xx_IRQWAIT_MAX_RETRIES) { + if (i >= 50) { bcmerr(dev->wl, "Microcode not responding\n"); err = -ENODEV; goto out; @@ -1754,7 +1761,7 @@ static int bcm43xx_upload_microcode(stru bcmerr(dev->wl, "YOUR FIRMWARE IS TOO OLD. Firmware from " "binary drivers older than version 4.x is unsupported. " "You must upgrade your firmware files.\n"); - bcm43xx_write32(dev, BCM43xx_MMIO_STATUS_BITFIELD, 0); + bcm43xx_write32(dev, BCM43xx_MMIO_MACCTL, 0); err = -EOPNOTSUPP; goto out; } @@ -1831,9 +1838,9 @@ static int bcm43xx_gpio_init(struct bcm4 struct ssb_device *gpiodev, *pcidev = NULL; u32 mask, set; - bcm43xx_write32(dev, BCM43xx_MMIO_STATUS_BITFIELD, - bcm43xx_read32(dev, BCM43xx_MMIO_STATUS_BITFIELD) - & 0xFFFF3FFF); + bcm43xx_write32(dev, BCM43xx_MMIO_MACCTL, + bcm43xx_read32(dev, BCM43xx_MMIO_MACCTL) + & ~BCM43xx_MACCTL_GPOUTSMSK); bcm43xx_leds_switch_all(dev, 0); bcm43xx_write16(dev, BCM43xx_MMIO_GPIO_MASK, @@ -1897,13 +1904,14 @@ void bcm43xx_mac_enable(struct bcm43xx_w dev->mac_suspended--; BCM43xx_WARN_ON(dev->mac_suspended < 0); if (dev->mac_suspended == 0) { - bcm43xx_write32(dev, BCM43xx_MMIO_STATUS_BITFIELD, - bcm43xx_read32(dev, BCM43xx_MMIO_STATUS_BITFIELD) - | BCM43xx_SBF_MAC_ENABLED); + bcm43xx_write32(dev, BCM43xx_MMIO_MACCTL, + bcm43xx_read32(dev, BCM43xx_MMIO_MACCTL) + | BCM43xx_MACCTL_ENABLED); bcm43xx_write32(dev, BCM43xx_MMIO_GEN_IRQ_REASON, BCM43xx_IRQ_MAC_SUSPENDED); - bcm43xx_read32(dev, BCM43xx_MMIO_STATUS_BITFIELD); /* dummy read */ - bcm43xx_read32(dev, BCM43xx_MMIO_GEN_IRQ_REASON); /* dummy read */ + /* Commit writes */ + bcm43xx_read32(dev, BCM43xx_MMIO_MACCTL); + bcm43xx_read32(dev, BCM43xx_MMIO_GEN_IRQ_REASON); bcm43xx_power_saving_ctl_bits(dev, -1, -1); } } @@ -1917,11 +1925,11 @@ void bcm43xx_mac_suspend(struct bcm43xx_ BCM43xx_WARN_ON(dev->mac_suspended < 0); if (dev->mac_suspended == 0) { bcm43xx_power_saving_ctl_bits(dev, -1, 1); - bcm43xx_write32(dev, BCM43xx_MMIO_STATUS_BITFIELD, - bcm43xx_read32(dev, BCM43xx_MMIO_STATUS_BITFIELD) - & ~BCM43xx_SBF_MAC_ENABLED); + bcm43xx_write32(dev, BCM43xx_MMIO_MACCTL, + bcm43xx_read32(dev, BCM43xx_MMIO_MACCTL) + & ~BCM43xx_MACCTL_ENABLED); /* force pci to flush the write */ - bcm43xx_read32(dev, BCM43xx_MMIO_STATUS_BITFIELD); + bcm43xx_read32(dev, BCM43xx_MMIO_MACCTL); for (i = 10000; i; i--) { tmp = bcm43xx_read32(dev, BCM43xx_MMIO_GEN_IRQ_REASON); if (tmp & BCM43xx_IRQ_MAC_SUSPENDED) @@ -2100,9 +2108,9 @@ static int bcm43xx_chip_init(struct bcm4 u32 value32; u16 value16; - bcm43xx_write32(dev, BCM43xx_MMIO_STATUS_BITFIELD, - BCM43xx_SBF_CORE_READY - | BCM43xx_SBF_400); + bcm43xx_write32(dev, BCM43xx_MMIO_MACCTL, + BCM43xx_MACCTL_PSM_JMP0 | + BCM43xx_MACCTL_IHR_ENABLED); err = bcm43xx_request_firmware(dev); if (err) @@ -2144,16 +2152,16 @@ static int bcm43xx_chip_init(struct bcm4 if (dev->dev->id.revision < 5) bcm43xx_write32(dev, 0x010C, 0x01000000); - value32 = bcm43xx_read32(dev, BCM43xx_MMIO_STATUS_BITFIELD); - value32 &= ~ BCM43xx_SBF_MODE_NOTADHOC; - bcm43xx_write32(dev, BCM43xx_MMIO_STATUS_BITFIELD, value32); - value32 = bcm43xx_read32(dev, BCM43xx_MMIO_STATUS_BITFIELD); - value32 |= BCM43xx_SBF_MODE_NOTADHOC; - bcm43xx_write32(dev, BCM43xx_MMIO_STATUS_BITFIELD, value32); - - value32 = bcm43xx_read32(dev, BCM43xx_MMIO_STATUS_BITFIELD); - value32 |= 0x100000; - bcm43xx_write32(dev, BCM43xx_MMIO_STATUS_BITFIELD, value32); + bcm43xx_write32(dev, BCM43xx_MMIO_MACCTL, + bcm43xx_read32(dev, BCM43xx_MMIO_MACCTL) + & ~BCM43xx_MACCTL_INFRA); + bcm43xx_write32(dev, BCM43xx_MMIO_MACCTL, + bcm43xx_read32(dev, BCM43xx_MMIO_MACCTL) + | BCM43xx_MACCTL_INFRA); + /* Let beacons come through */ + bcm43xx_write32(dev, BCM43xx_MMIO_MACCTL, + bcm43xx_read32(dev, BCM43xx_MMIO_MACCTL) + | BCM43xx_MACCTL_BEACPROMISC); if (bcm43xx_using_pio(dev)) { bcm43xx_write32(dev, 0x0210, 0x00000100); @@ -2776,13 +2784,13 @@ static int bcm43xx_dev_config(struct iee /* Hide/Show the SSID (AP mode only). */ if (conf->flags & IEEE80211_CONF_SSID_HIDDEN) { - bcm43xx_write32(dev, BCM43xx_MMIO_STATUS_BITFIELD, - bcm43xx_read32(dev, BCM43xx_MMIO_STATUS_BITFIELD) - | BCM43xx_SBF_NO_SSID_BCAST); + bcm43xx_write32(dev, BCM43xx_MMIO_MACCTL, + bcm43xx_read32(dev, BCM43xx_MMIO_MACCTL) + | BCM43xx_MACCTL_CLOSEDNET); } else { - bcm43xx_write32(dev, BCM43xx_MMIO_STATUS_BITFIELD, - bcm43xx_read32(dev, BCM43xx_MMIO_STATUS_BITFIELD) - & ~BCM43xx_SBF_NO_SSID_BCAST); + bcm43xx_write32(dev, BCM43xx_MMIO_MACCTL, + bcm43xx_read32(dev, BCM43xx_MMIO_MACCTL) + & ~BCM43xx_MACCTL_CLOSEDNET); } /* Antennas for RX and management frame TX. */ Index: wireless-dev/drivers/net/wireless/bcm43xx-mac80211/bcm43xx_phy.c =================================================================== --- wireless-dev.orig/drivers/net/wireless/bcm43xx-mac80211/bcm43xx_phy.c 2007-08-08 22:17:10.000000000 +0200 +++ wireless-dev/drivers/net/wireless/bcm43xx-mac80211/bcm43xx_phy.c 2007-08-08 22:17:20.000000000 +0200 @@ -232,10 +232,12 @@ void bcm43xx_raw_phy_lock(struct bcm43xx struct bcm43xx_phy *phy = &dev->phy; BCM43xx_WARN_ON(!irqs_disabled()); - if (bcm43xx_read32(dev, BCM43xx_MMIO_STATUS_BITFIELD) == 0) { - phy->locked = 0; - return; - } + + /* We had a check for MACCTL==0 here, but I think that doesn't + * make sense, as MACCTL is never 0 when this is called. + * --mb */ + BCM43xx_WARN_ON(bcm43xx_read32(dev, BCM43xx_MMIO_MACCTL) == 0); + if (dev->dev->id.revision < 3) { bcm43xx_mac_suspend(dev); spin_lock(&phy->lock); @@ -494,7 +496,9 @@ void bcm43xx_phy_early_init(struct bcm43 default_radio_attenuation(dev, &phy->rfatt); phy->tx_control = (default_tx_control(dev) << 4); - bcm43xx_read32(dev, BCM43xx_MMIO_STATUS_BITFIELD); /* Dummy read. */ + /* Commit previous writes */ + bcm43xx_read32(dev, BCM43xx_MMIO_MACCTL); + if (phy->type == BCM43xx_PHYTYPE_B || phy->type == BCM43xx_PHYTYPE_G) { generate_rfatt_list(dev, &lo->rfatt_list); @@ -2445,24 +2449,27 @@ u16 channel2freq_a(u8 channel) void bcm43xx_radio_lock(struct bcm43xx_wldev *dev) { - u32 status; + u32 macctl; - status = bcm43xx_read32(dev, BCM43xx_MMIO_STATUS_BITFIELD); - status |= BCM43xx_SBF_RADIOREG_LOCK; - bcm43xx_write32(dev, BCM43xx_MMIO_STATUS_BITFIELD, status); - mmiowb(); + macctl = bcm43xx_read32(dev, BCM43xx_MMIO_MACCTL); + macctl |= BCM43xx_MACCTL_RADIOLOCK; + bcm43xx_write32(dev, BCM43xx_MMIO_MACCTL, macctl); + /* Commit the write and wait for the device + * to exit any radio register access. */ + bcm43xx_read32(dev, BCM43xx_MMIO_MACCTL); udelay(10); } void bcm43xx_radio_unlock(struct bcm43xx_wldev *dev) { - u32 status; + u32 macctl; - bcm43xx_read16(dev, BCM43xx_MMIO_PHY_VER); /* dummy read */ - status = bcm43xx_read32(dev, BCM43xx_MMIO_STATUS_BITFIELD); - status &= ~BCM43xx_SBF_RADIOREG_LOCK; - bcm43xx_write32(dev, BCM43xx_MMIO_STATUS_BITFIELD, status); - mmiowb(); + /* Commit any write */ + bcm43xx_read16(dev, BCM43xx_MMIO_PHY_VER); + /* unlock */ + macctl = bcm43xx_read32(dev, BCM43xx_MMIO_MACCTL); + macctl &= ~BCM43xx_MACCTL_RADIOLOCK; + bcm43xx_write32(dev, BCM43xx_MMIO_MACCTL, macctl); } u16 bcm43xx_radio_read16(struct bcm43xx_wldev *dev, u16 offset) Index: wireless-dev/drivers/net/wireless/bcm43xx-mac80211/bcm43xx_pio.c =================================================================== --- wireless-dev.orig/drivers/net/wireless/bcm43xx-mac80211/bcm43xx_pio.c 2007-08-08 22:17:10.000000000 +0200 +++ wireless-dev/drivers/net/wireless/bcm43xx-mac80211/bcm43xx_pio.c 2007-08-08 22:17:20.000000000 +0200 @@ -312,7 +312,6 @@ struct bcm43xx_pioqueue * bcm43xx_setup_ u16 pio_mmio_base) { struct bcm43xx_pioqueue *queue; - u32 value; u16 qsize; queue = kzalloc(sizeof(*queue), GFP_KERNEL); @@ -329,9 +328,9 @@ struct bcm43xx_pioqueue * bcm43xx_setup_ tasklet_init(&queue->txtask, tx_tasklet, (unsigned long)queue); - value = bcm43xx_read32(dev, BCM43xx_MMIO_STATUS_BITFIELD); - value &= ~BCM43xx_SBF_XFER_REG_BYTESWAP; - bcm43xx_write32(dev, BCM43xx_MMIO_STATUS_BITFIELD, value); + bcm43xx_write32(dev, BCM43xx_MMIO_MACCTL, + bcm43xx_read32(dev, BCM43xx_MMIO_MACCTL) + & ~BCM43xx_MACCTL_BE); qsize = bcm43xx_read16(dev, queue->mmio_base + BCM43xx_PIO_TXQBUFSIZE); if (qsize == 0) { Index: wireless-dev/drivers/net/wireless/bcm43xx-mac80211/bcm43xx_power.c =================================================================== --- wireless-dev.orig/drivers/net/wireless/bcm43xx-mac80211/bcm43xx_power.c 2007-08-08 22:09:47.000000000 +0200 +++ wireless-dev/drivers/net/wireless/bcm43xx-mac80211/bcm43xx_power.c 2007-08-08 22:17:20.000000000 +0200 @@ -47,7 +47,7 @@ void bcm43xx_power_saving_ctl_bits(struc int bit25, int bit26) { int i; - u32 status; + u32 macctl; //FIXME: Force 25 to off and 26 to on for now: bit25 = 0; @@ -62,16 +62,16 @@ bit26 = 1; // or we are associated, or FIXME, or the latest PS-Poll packet sent was // successful, set bit26 } - status = bcm43xx_read32(dev, BCM43xx_MMIO_STATUS_BITFIELD); + macctl = bcm43xx_read32(dev, BCM43xx_MMIO_MACCTL); if (bit25) - status |= BCM43xx_SBF_PS1; + macctl |= BCM43xx_MACCTL_HWPS; else - status &= ~BCM43xx_SBF_PS1; + macctl &= ~BCM43xx_MACCTL_HWPS; if (bit26) - status |= BCM43xx_SBF_PS2; + macctl |= BCM43xx_MACCTL_AWAKE; else - status &= ~BCM43xx_SBF_PS2; - bcm43xx_write32(dev, BCM43xx_MMIO_STATUS_BITFIELD, status); + macctl &= ~BCM43xx_MACCTL_AWAKE; + bcm43xx_write32(dev, BCM43xx_MMIO_MACCTL, macctl); if (bit26 && dev->dev->id.revision >= 5) { for (i = 0; i < 100; i++) { if (bcm43xx_shm_read32(dev, BCM43xx_SHM_SHARED, 0x0040) != 4) -- _______________________________________________ Bcm43xx-dev mailing list Bcm43xx-dev@lists.berlios.de https://lists.berlios.de/mailman/listinfo/bcm43xx-dev