History log of /src/sys/dev/cardbus/if_atw_cardbus.c |
Revision | | Date | Author | Comments |
1.37 |
| 25-Sep-2022 |
thorpej | Remove unnecessary include of <sys/malloc.h>.
|
1.36 |
| 01-Aug-2011 |
drochner | remove some bloat: -cardbus doesn't use multiple interrupt lines like PCI, and it doesn't use machanisms like interrupt line register and swizzling -- no need to carry around dummy information, this is all dealt with by the bridge (I'm asking myself how "rbus_ppb" can work -- a bridge attached to cardbus just can't work like a normal PCI bridge as far as interrupts are concerned. I thing that should be a hardware specific driver because behavior is not covered by a standard.) -cardbus always uses 3.3V -- no need for a variable to keep track of the voltage
|
1.35 |
| 26-Jul-2011 |
dyoung | Replace anonymous constants, 0x10, 0x14, ..., with PCI_BAR(0), PCI_BAR(1), .... There was no change in the generated assembly. I used this semantic patch:
@ mapsit @ identifier bar; expression pact; @@
( pci_mapreg_map | Cardbus_mapreg_map )(pact, bar, ...)
@ depends on mapsit @ identifier mapsit.bar; @@ ( - #define bar 0x10 + #define bar PCI_BAR(0) | - #define bar 0x14 + #define bar PCI_BAR(1) | - #define bar 0x18 + #define bar PCI_BAR(2) | - #define bar 0x1C + #define bar PCI_BAR(3) | - #define bar 0x20 + #define bar PCI_BAR(4) )
|
1.34 |
| 04-Mar-2010 |
dyoung | This is *always* compiled with #define rbus 1, so get rid of the conditional compilation.
|
1.33 |
| 02-Mar-2010 |
dyoung | Simplify interrupt (dis)establishment by two source transformations:
- cardbus_intr_disestablish(cc, cf, ih); + Cardbus_intr_disestablish(ct, ih);
- ih = cardbus_intr_establish(cc, cf, ...); + ih = Cardbus_intr_establish(ct, ...);
Tested with ath & atw units on a Soekris net4521.
|
1.32 |
| 25-Feb-2010 |
dyoung | Make fxp at cardbus detach during shutdown.
Stop calling (*cardbus_ctrl) to enable bus mastering, I/O and memory spaces on the CardBus bridge. cbb(4) always enables that stuff, anyway. In the process, avoid remembering what BAR we mapped by writing CARDBUS_{IO,MEM}_ENABLE to sc_cben or sc_cbenable, and record the BAR in use sc_bar, instead.
Replace more CARDBUS_ constants with PCI_ constants.
Compile-tested, only.
|
1.31 |
| 24-Feb-2010 |
dyoung | Start to tuck Cardbus under the PCI abstraction. Step #1, textual substitution: for all practical purposes, pcitag_t and cardbustag_t are interchangeable, so just use pcitag_t. Ditto pcireg_t and cardbusreg_t.
Poison new uses of cardbusreg_t and cardbustag_t by deleting the type definitions.
|
1.30 |
| 24-Feb-2010 |
dyoung | A pointer typedef entails trading too much flexibility to declare const and non-const types, and the kernel uses both const and non-const PMF qualifiers and device suspensors, so change the pmf_qual_t and device_suspensor_t typedefs from "pointers to const" to non-pointer, non-const types.
|
1.29 |
| 18-Jan-2010 |
pooka | branches: 1.29.2; Remove conditional inclusion of unused bpf.h
|
1.28 |
| 08-Jan-2010 |
dyoung | Expand PMF_FN_* macros.
|
1.27 |
| 16-Sep-2009 |
dyoung | In pmf(9), improve the implementation of device self-suspension and make suspension by self, by drvctl(8), and by ACPI system sleep play nice together. Start solidifying some temporary API changes.
1. Extract a new header file, <sys/device_if.h>, from <sys/device.h> and #include it from <sys/pmf.h> instead of <sys/device.h> to break the circular dependency between <sys/device.h> and <sys/pmf.h>.
2. Introduce pmf_qual_t, an aggregate of qualifications on a PMF suspend/resume call. Start to replace instances of PMF_FN_PROTO, PMF_FN_ARGS, et cetera, with a pmf_qual_t.
3. Introduce the notion of a "suspensor," an entity that holds a device in suspension. More than one suspensor may hold a device at once. A device stays suspended as long as at least one suspensor holds it. A device resumes when the last suspensor releases it.
Currently, the kernel defines three suspensors,
3a the system-suspensor: for system suspension, initiated by 'sysctl -w machdep.sleep_state=3', by lid closure, by power-button press, et cetera,
3b the drvctl-suspensor: for device suspension by /dev/drvctl ioctl, e.g., drvctl -S sip0.
3c the system self-suspensor: for device drivers that suspend themselves and their children. Several drivers for network interfaces put the network device to sleep while it is not administratively up, that is, after the kernel calls if_stop(, 1). The self-suspensor should not be used directly. See the description of suspensor delegates, below.
A suspensor can have one or more "delegates". A suspensor can release devices that its delegates hold suspended. Right now, only the system self-suspensor has delegates. For each device that a self-suspending driver attaches, it creates the device's self-suspensor, a delegate of the system self-suspensor.
Suspensors stop a system-wide suspend/resume cycle from waking devices that the operator put to sleep with drvctl before the cycle. They also help self-suspension to work more simply, safely, and in accord with expectations.
4. Add the notion of device activation level, devact_level_t, and a routine for checking the current activation level, device_activation(). Current activation levels are DEVACT_LEVEL_BUS, DEVACT_LEVEL_DRIVER, and DEVACT_LEVEL_CLASS, which respectively indicate that the device's bus is active, that the bus and device are active, and that the bus, device, and the functions of the device's class (network, audio) are active.
Suspend/resume calls can be qualified with a devact_level_t. The power-management framework treats a devact_level_t that qualifies a device suspension as the device's current activation level; it only runs hooks to reduce the activation level from the presumed current level to the fully suspended state. The framework treats a devact_level_t qualifying device resumption as the target activation level; it only runs hooks to raise the activation level to the target.
5. Use pmf_qual_t, devact_level_t, and self-suspensors in several drivers.
6. Temporarily add an unused power-management workqueue that I will remove or replace, soon.
|
1.26 |
| 02-Apr-2009 |
dyoung | During shutdown, detach devices in an orderly fashion.
Call the detach routine for every device in the device tree, starting with the leaves and moving toward the root, expecting that each (pseudo-)device driver will use the opportunity to gracefully commit outstandings transactions to the underlying (pseudo-)device and to relinquish control of the hardware to the system BIOS.
Detaching devices is not suitable for every shutdown: in an emergency, or if the system state is inconsistent, we should resort to a fast, simple shutdown that uses only the pmf(9) shutdown hooks and the (deprecated) shutdownhooks. For now, if the flag RB_NOSYNC is set in boothowto, opt for the fast, simple shutdown.
Add a device flag, DVF_DETACH_SHUTDOWN, that indicates by its presence that it is safe to detach a device during shutdown. Introduce macros CFATTACH_DECL3() and CFATTACH_DECL3_NEW() for creating autoconf attachments with default device flags. Add DVF_DETACH_SHUTDOWN to configuration attachments for atabus(4), atw(4) at cardbus(4), cardbus(4), cardslot(4), com(4) at isa(4), elanpar(4), elanpex(4), elansc(4), gpio(4), npx(4) at isa(4), nsphyter(4), pci(4), pcib(4), pcmcia(4), ppb(4), sip(4), wd(4), and wdc(4) at isa(4).
Add a device-detachment "reason" flag, DETACH_SHUTDOWN, that tells the autoconf code and a device driver that the reason for detachment is system shutdown.
Add a sysctl, kern.detachall, that tells the system to try to detach every device at shutdown, regardless of any device's DVF_DETACH_SHUTDOWN flag. The default for kern.detachall is 0. SET IT TO 1, PLEASE, TO HELP TEST AND DEBUG DEVICE DETACHMENT AT SHUTDOWN.
This is a work in progress. In future work, I aim to treat pseudo-devices more thoroughly, and to gracefully tear down a stack of (pseudo-)disk drivers and filesystems, including cgd(4), vnd(4), and raid(4) instances at shutdown.
Also commit some changes that are not easily untangled from the rest:
(1) begin to simplify device_t locking: rename struct pmf_private to device_lock, and incorporate device_lock into struct device.
(2) #include <sys/device.h> in sys/pmf.h in order to get some definitions that it needs. Stop unnecessarily #including <sys/device.h> in sys/arch/x86/include/pic.h to keep the amd64, xen, and i386 releases building.
|
1.25 |
| 06-Feb-2009 |
dyoung | branches: 1.25.2; Disable and acknowledge Function Events, and stop installing a handler for them.
Don't override the latency timer set for us by the CardBus code.
Add a bit of debug code for the Function Event Registers, #if 0'd out for now.
Cosmetic: remove gratuitous parenthesization of return statements. Change the indentation of the struct atw_pci_softc definition. Use a more meaningful variable name, et cetera.
|
1.24 |
| 09-Jul-2008 |
joerg | branches: 1.24.2; - device/softc split
|
1.23 |
| 24-Jun-2008 |
drochner | branches: 1.23.2; clean up the cardbus interrupt stuff: There were cardbus_intr_line_t and cardbus_intr_handle_t used intermixed for the same variable, and that variable is pretty much useless because cardbus doesn't follow the PCI interrupt swizzling etc scheme. Useless interrupt numbers were printed on cardbus device attach. So as a first step to sanity, kill cardbus_intr_handle_t and poison cardbus_intr_line_t to discourage printing it as a %d. Use cardbus_intr_line_t consistently throughout the code. Remove the "interrupting at foo" messages because the information is misleading. We could come up with a better interrupt vector information, but because cardbus interrupts are mediated by pccbb it would still be misleading.
|
1.22 |
| 28-Apr-2008 |
martin | branches: 1.22.2; 1.22.4; Remove clause 3 and 4 from TNF licenses
|
1.21 |
| 06-Apr-2008 |
cegger | branches: 1.21.2; 1.21.4; use aprint_*_dev and device_xname
|
1.20 |
| 07-Mar-2008 |
dyoung | Use device_t and accessors. Use PMF instead of legacy power management. Establish the shutdown hook using PMF.
|
1.19 |
| 09-Dec-2007 |
jmcneill | branches: 1.19.6; 1.19.10; Merge jmcneill-pm branch.
|
1.18 |
| 19-Oct-2007 |
ad | branches: 1.18.4; 1.18.6; machine/{bus,cpu,intr}.h -> sys/{bus,cpu,intr}.h
|
1.17 |
| 16-Nov-2006 |
christos | branches: 1.17.8; 1.17.22; 1.17.24; 1.17.28; __unused removal on arguments; approved by core.
|
1.16 |
| 12-Oct-2006 |
christos | - sprinkle __unused on function decls. - fix a couple of unused bugs - no more -Wno-unused for i386
|
1.15 |
| 07-Sep-2006 |
dogcow | branches: 1.15.2; 1.15.4; remove more vestiges of CCITT, LLC, HDLC, NS, and NSIP.
|
1.14 |
| 29-Mar-2006 |
thorpej | Use device_private().
|
1.13 |
| 11-Dec-2005 |
christos | branches: 1.13.4; 1.13.6; 1.13.8; 1.13.10; 1.13.12; merge ktrace-lwp.
|
1.12 |
| 22-Jun-2005 |
dyoung | branches: 1.12.2; Resolve conflicts in importation of 18-May-2005 ath(4) / net80211(9) from FreeBSD. Introduce compatibility shims (sys/dev/ic/ath_netbsd.[ch], sys/net80211/ieee80211_netbsd.[ch]). Update drivers (an, atu, atw, awi, ipw, iwi, rtw, wi) for the new net80211(9) API.
|
1.11 |
| 27-Feb-2005 |
perry | nuke trailing whitespace
|
1.10 |
| 02-Aug-2004 |
mycroft | branches: 1.10.2; 1.10.6; 1.10.8; cardbusdevs -> pcidevs
|
1.9 |
| 23-Jul-2004 |
dyoung | Print and store Cardbus/PCI revision number.
Begin conditioning device configuration on revision number. Four revisions are known:
1.1/1.5 -> ADM8211A, 2.0 -> ADM8211B, 3.0 -> ADM8211C.
The B and C parts, which are not supported yet, have AP capability.
|
1.8 |
| 22-Jul-2004 |
mycroft | Program BARs before enabling memory or I/O access.
|
1.7 |
| 08-May-2004 |
christos | Cleanup and remove suplicate copies of the incorrect power setup code. Thanks to mycroft for suggesting this. XXX: This is a copy of the pci code; another reason cardbus needs to die.
|
1.6 |
| 17-Feb-2004 |
dyoung | Move the RF Microdevices RF3000 & Silicon Laboratories SI4126/SI4136 register sets into their own header files for re-use by future drivers.
|
1.5 |
| 29-Jan-2004 |
dyoung | Get rid of __P.
|
1.4 |
| 29-Jan-2004 |
dyoung | The MII headers are not necessary, so don't include them.
|
1.3 |
| 16-Nov-2003 |
dyoung | Add data-link type DLT_IEEE802_11_RADIO to wi and atw. DLT_IEEE802_11_RADIO lets you monitor radio stats like received signal strength, which diversity antenna was used, channel/frequency, modulation, and data rate.
|
1.2 |
| 13-Oct-2003 |
dyoung | Adapt atw(4) to the new 802.11 layer.
Simplify atw_start, atw_newstate.
Synchronize access to atw_start by bracketing the call to ieee80211_next_scan in atw_next_scan with splnet()/splx().
|
1.1 |
| 06-Jul-2003 |
dyoung | Oops. Add the atw(4) sources, too.
|
1.10.8.1 |
| 19-Mar-2005 |
yamt | sync with head. xen and whitespace. xen part is not finished.
|
1.10.6.1 |
| 29-Apr-2005 |
kent | sync with -current
|
1.10.2.7 |
| 10-Nov-2005 |
skrll | Sync with HEAD. Here we go again...
|
1.10.2.6 |
| 04-Mar-2005 |
skrll | Sync with HEAD.
Hi Perry!
|
1.10.2.5 |
| 21-Sep-2004 |
skrll | Fix the sync with head I botched.
|
1.10.2.4 |
| 18-Sep-2004 |
skrll | Sync with HEAD.
|
1.10.2.3 |
| 12-Aug-2004 |
skrll | Sync with HEAD.
|
1.10.2.2 |
| 03-Aug-2004 |
skrll | Sync with HEAD
|
1.10.2.1 |
| 02-Aug-2004 |
skrll | file if_atw_cardbus.c was added on branch ktrace-lwp on 2004-08-03 10:45:47 +0000
|
1.12.2.5 |
| 17-Mar-2008 |
yamt | sync with head.
|
1.12.2.4 |
| 21-Jan-2008 |
yamt | sync with head
|
1.12.2.3 |
| 27-Oct-2007 |
yamt | sync with head.
|
1.12.2.2 |
| 30-Dec-2006 |
yamt | sync with head.
|
1.12.2.1 |
| 21-Jun-2006 |
yamt | sync with head.
|
1.13.12.1 |
| 31-Mar-2006 |
tron | Merge 2006-03-31 NetBSD-current into the "peter-altq" branch.
|
1.13.10.1 |
| 19-Apr-2006 |
elad | sync with head.
|
1.13.8.2 |
| 14-Sep-2006 |
yamt | sync with head.
|
1.13.8.1 |
| 01-Apr-2006 |
yamt | sync with head.
|
1.13.6.1 |
| 22-Apr-2006 |
simonb | Sync with head.
|
1.13.4.1 |
| 09-Sep-2006 |
rpaulo | sync with head
|
1.15.4.2 |
| 10-Dec-2006 |
yamt | sync with head.
|
1.15.4.1 |
| 22-Oct-2006 |
yamt | sync with head
|
1.15.2.1 |
| 18-Nov-2006 |
ad | Sync with head.
|
1.17.28.1 |
| 25-Oct-2007 |
bouyer | Sync with HEAD.
|
1.17.24.3 |
| 23-Mar-2008 |
matt | sync with HEAD
|
1.17.24.2 |
| 09-Jan-2008 |
matt | sync with HEAD
|
1.17.24.1 |
| 06-Nov-2007 |
matt | sync with HEAD
|
1.17.22.2 |
| 26-Oct-2007 |
joerg | Sync with HEAD.
Follow the merge of pmap.c on i386 and amd64 and move pmap_init_tmp_pgtbl into arch/x86/x86/pmap.c. Modify the ACPI wakeup code to restore CR4 before jumping back into kernel space as the large page option might cover that.
|
1.17.22.1 |
| 23-Aug-2007 |
joerg | Provide cardbus_{set,get}_powerstate instead of the former cardbus_powerstate / cardbus_setpowerstate. Provide cardbus_conf_{capture,restore} and cardbus_net_generic_power.
In general: reduce diff to PCI.
|
1.17.8.1 |
| 23-Oct-2007 |
ad | Sync with head.
|
1.18.6.1 |
| 11-Dec-2007 |
yamt | sync with head.
|
1.18.4.1 |
| 26-Dec-2007 |
ad | Sync with head.
|
1.19.10.4 |
| 28-Sep-2008 |
mjf | Sync with HEAD.
|
1.19.10.3 |
| 29-Jun-2008 |
mjf | Sync with HEAD.
|
1.19.10.2 |
| 02-Jun-2008 |
mjf | Sync with HEAD.
|
1.19.10.1 |
| 03-Apr-2008 |
mjf | Sync with HEAD.
|
1.19.6.1 |
| 24-Mar-2008 |
keiichi | sync with head.
|
1.21.4.3 |
| 11-Mar-2010 |
yamt | sync with head
|
1.21.4.2 |
| 04-May-2009 |
yamt | sync with head.
|
1.21.4.1 |
| 16-May-2008 |
yamt | sync with head.
|
1.21.2.1 |
| 18-May-2008 |
yamt | sync with head.
|
1.22.4.2 |
| 18-Jul-2008 |
simonb | Sync with head.
|
1.22.4.1 |
| 27-Jun-2008 |
simonb | Sync with head.
|
1.22.2.1 |
| 18-Sep-2008 |
wrstuden | Sync with wrstuden-revivesa-base-2.
|
1.23.2.1 |
| 19-Oct-2008 |
haad | Sync with HEAD.
|
1.24.2.2 |
| 28-Apr-2009 |
skrll | Sync with HEAD.
|
1.24.2.1 |
| 03-Mar-2009 |
skrll | Sync with HEAD.
|
1.25.2.1 |
| 13-May-2009 |
jym | Sync with HEAD.
Commit is split, to avoid a "too many arguments" protocol error.
|
1.29.2.1 |
| 30-Apr-2010 |
uebayasi | Sync with HEAD.
|