diff options
author | Peter Denison <openwrt@marshadder.org> | 2007-06-21 20:45:45 +0000 |
---|---|---|
committer | Peter Denison <openwrt@marshadder.org> | 2007-06-21 20:45:45 +0000 |
commit | 0737a3d4a5185bced2e24fae37477b7cbbbade10 (patch) | |
tree | 3a5b1376d7cf2c0a74a5213dfa316f42db553604 /package/bcm43xx-mac80211/src/bcm43xx/bcm43xx_power.c | |
parent | 4fdb427ff0b1dbc4f325b18bc0b664101af91dc5 (diff) | |
download | master-187ad058-0737a3d4a5185bced2e24fae37477b7cbbbade10.tar.gz master-187ad058-0737a3d4a5185bced2e24fae37477b7cbbbade10.tar.bz2 master-187ad058-0737a3d4a5185bced2e24fae37477b7cbbbade10.zip |
New: mac80211-based bcm43xx driver from the wireless-dev tree
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@7693 3c298f89-4303-0410-b956-a3cf2f4a3e73
Diffstat (limited to 'package/bcm43xx-mac80211/src/bcm43xx/bcm43xx_power.c')
-rw-r--r-- | package/bcm43xx-mac80211/src/bcm43xx/bcm43xx_power.c | 82 |
1 files changed, 82 insertions, 0 deletions
diff --git a/package/bcm43xx-mac80211/src/bcm43xx/bcm43xx_power.c b/package/bcm43xx-mac80211/src/bcm43xx/bcm43xx_power.c new file mode 100644 index 0000000000..b17995a772 --- /dev/null +++ b/package/bcm43xx-mac80211/src/bcm43xx/bcm43xx_power.c @@ -0,0 +1,82 @@ +/* + + Broadcom BCM43xx wireless driver + + Copyright (c) 2005 Martin Langer <martin-langer@gmx.de>, + Stefano Brivio <st3@riseup.net> + Michael Buesch <mb@bu3sch.de> + Danny van Dyk <kugelfang@gentoo.org> + Andreas Jaggi <andreas.jaggi@waterwave.ch> + + Some parts of the code in this file are derived from the ipw2200 + driver Copyright(c) 2003 - 2004 Intel Corporation. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; see the file COPYING. If not, write to + the Free Software Foundation, Inc., 51 Franklin Steet, Fifth Floor, + Boston, MA 02110-1301, USA. + +*/ + +#include <linux/delay.h> + +#include "bcm43xx.h" +#include "bcm43xx_power.h" +#include "bcm43xx_main.h" + + +//TODO Kill this file. + +/* Set the PowerSavingControlBits. + * Bitvalues: + * 0 => unset the bit + * 1 => set the bit + * -1 => calculate the bit + */ +void bcm43xx_power_saving_ctl_bits(struct bcm43xx_wldev *dev, + int bit25, int bit26) +{ + int i; + u32 status; + +//FIXME: Force 25 to off and 26 to on for now: +bit25 = 0; +bit26 = 1; + + if (bit25 == -1) { + //TODO: If powersave is not off and FIXME is not set and we are not in adhoc + // and thus is not an AP and we are associated, set bit 25 + } + if (bit26 == -1) { + //TODO: If the device is awake or this is an AP, or we are scanning, or FIXME, + // 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); + if (bit25) + status |= BCM43xx_SBF_PS1; + else + status &= ~BCM43xx_SBF_PS1; + if (bit26) + status |= BCM43xx_SBF_PS2; + else + status &= ~BCM43xx_SBF_PS2; + bcm43xx_write32(dev, BCM43xx_MMIO_STATUS_BITFIELD, status); + if (bit26 && dev->dev->id.revision >= 5) { + for (i = 0; i < 100; i++) { + if (bcm43xx_shm_read32(dev, BCM43xx_SHM_SHARED, 0x0040) != 4) + break; + udelay(10); + } + } +} |