Subject: CVS commit: [jmcneill-pm] src/sys
To: None <source-changes@NetBSD.org>
From: Joerg Sonnenberger <joerg@netbsd.org>
List: source-changes
Date: 10/01/2007 05:38:10
Module Name: src
Committed By: joerg
Date: Mon Oct 1 05:38:10 UTC 2007
Modified Files:
src/sys/arch/x86/pci [jmcneill-pm]: ichlpcib.c
src/sys/dev/ic [jmcneill-pm]: ath.c athvar.h vga.c vgavar.h
src/sys/dev/pci [jmcneill-pm]: agp.c agp_i810.c agp_intel.c agpvar.h
ahcisata_pci.c auich.c azalia.c ehci_pci.c if_an_pci.c if_ath_pci.c
if_bge.c if_bgereg.h if_iwi.c if_iwivar.h if_wi_pci.c if_wm.c
if_wpi.c if_wpivar.h ohci_pci.c pci.c pcireg.h pcivar.h piixide.c
ppb.c uhci_pci.c vga_pci.c
src/sys/dev/usb [jmcneill-pm]: ehci.c ehcivar.h ohci.c ohcivar.h uhci.c
uhcivar.h
src/sys/kern [jmcneill-pm]: subr_autoconf.c
src/sys/sys [jmcneill-pm]: device.h
Log Message:
Extend device API by device_power_private and device_power_set_private.
The latter is a temporary mean until the pnp_register API itself is
overhault. This functions allow a generic power handler to store its
state independent of the driver.
Use this and revamp the PCI power handling. Pretty much all PCI devices
had power handlers that did the same thing, generalize this in
pci_generic_power_register/deregister and the handler. This interface
offers callbacks for the drivers to save and restore state on
transistions. After a long discussion with jmcneill@ it was considered
to be powerful enough until evidence is shown that devices can handle
D1/D2 with less code and higher speed than without the full
save/restore. The generic code is carefully written to handle device
without PCI-PM support and ensure that the correct registers are written
to when D3 loses all state.
Reimplement the generic PCI network device handling on
top of PCI generic power handling.
Introduce pci_disable_retry as used and implemented locally at least by
ath(4) and iwi(4). Use it in this drivers to restore behaviour from
before the introduction of generic PCI network handling.
Convert all PCI drivers that were using pnp_register to the new
framework. The only exception is vga(4) as it is commonly used as
console device. Add a note therein that this should be fixed later.
To generate a diff of this commit:
cvs rdiff -r1.4.6.12 -r1.4.6.13 src/sys/arch/x86/pci/ichlpcib.c
cvs rdiff -r1.84.6.2 -r1.84.6.3 src/sys/dev/ic/ath.c
cvs rdiff -r1.21.6.1 -r1.21.6.2 src/sys/dev/ic/athvar.h
cvs rdiff -r1.95.4.2 -r1.95.4.3 src/sys/dev/ic/vga.c
cvs rdiff -r1.26.14.1 -r1.26.14.2 src/sys/dev/ic/vgavar.h
cvs rdiff -r1.46.14.5 -r1.46.14.6 src/sys/dev/pci/agp.c
cvs rdiff -r1.41.6.6 -r1.41.6.7 src/sys/dev/pci/agp_i810.c
cvs rdiff -r1.22.8.1 -r1.22.8.2 src/sys/dev/pci/agp_intel.c \
src/sys/dev/pci/if_an_pci.c
cvs rdiff -r1.14.14.2 -r1.14.14.3 src/sys/dev/pci/agpvar.h
cvs rdiff -r1.1.12.1 -r1.1.12.2 src/sys/dev/pci/ahcisata_pci.c
cvs rdiff -r1.117.14.2 -r1.117.14.3 src/sys/dev/pci/auich.c
cvs rdiff -r1.50.6.2 -r1.50.6.3 src/sys/dev/pci/azalia.c
cvs rdiff -r1.29.2.3 -r1.29.2.4 src/sys/dev/pci/ehci_pci.c
cvs rdiff -r1.21.6.1 -r1.21.6.2 src/sys/dev/pci/if_ath_pci.c
cvs rdiff -r1.132.6.5 -r1.132.6.6 src/sys/dev/pci/if_bge.c
cvs rdiff -r1.42.6.2 -r1.42.6.3 src/sys/dev/pci/if_bgereg.h
cvs rdiff -r1.62.14.3 -r1.62.14.4 src/sys/dev/pci/if_iwi.c
cvs rdiff -r1.13.18.1 -r1.13.18.2 src/sys/dev/pci/if_iwivar.h
cvs rdiff -r1.41.22.1 -r1.41.22.2 src/sys/dev/pci/if_wi_pci.c
cvs rdiff -r1.142.6.6 -r1.142.6.7 src/sys/dev/pci/if_wm.c
cvs rdiff -r1.17.4.6 -r1.17.4.7 src/sys/dev/pci/if_wpi.c
cvs rdiff -r1.6.6.4 -r1.6.6.5 src/sys/dev/pci/if_wpivar.h
cvs rdiff -r1.31.24.1 -r1.31.24.2 src/sys/dev/pci/ohci_pci.c
cvs rdiff -r1.103.22.6 -r1.103.22.7 src/sys/dev/pci/pci.c
cvs rdiff -r1.54 -r1.54.6.1 src/sys/dev/pci/pcireg.h
cvs rdiff -r1.74.14.2 -r1.74.14.3 src/sys/dev/pci/pcivar.h
cvs rdiff -r1.37.14.2 -r1.37.14.3 src/sys/dev/pci/piixide.c
cvs rdiff -r1.34.22.4 -r1.34.22.5 src/sys/dev/pci/ppb.c
cvs rdiff -r1.36.2.1 -r1.36.2.2 src/sys/dev/pci/uhci_pci.c
cvs rdiff -r1.32.8.2 -r1.32.8.3 src/sys/dev/pci/vga_pci.c
cvs rdiff -r1.123.18.3 -r1.123.18.4 src/sys/dev/usb/ehci.c
cvs rdiff -r1.24.20.1 -r1.24.20.2 src/sys/dev/usb/ehcivar.h
cvs rdiff -r1.182.18.2 -r1.182.18.3 src/sys/dev/usb/ohci.c
cvs rdiff -r1.39.46.1 -r1.39.46.2 src/sys/dev/usb/ohcivar.h
cvs rdiff -r1.209.2.2 -r1.209.2.3 src/sys/dev/usb/uhci.c
cvs rdiff -r1.40.46.1 -r1.40.46.2 src/sys/dev/usb/uhcivar.h
cvs rdiff -r1.119.4.1 -r1.119.4.2 src/sys/kern/subr_autoconf.c
cvs rdiff -r1.96.6.2 -r1.96.6.3 src/sys/sys/device.h
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.