[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
On Tue, Mar 09, 2010 at 09:41:16PM +0900, SAITOH Masanobu wrote:
> From: David Young <dyoung%pobox.com@localhost>
> > How will this interact with pmf(9)?
> static bool
> wm_suspend(device_t self, const pmf_qual_t *qual)
> struct wm_softc *sc = device_private(self);
> wm_release_manageability(sc); /*
> * Tell the firmware to take over
> * the manageability from the OS.
Is that the host firmware or the NIC firmware?
> wm_enable_wakeup(sc); /*
> * 1) Tell the wakeup capability to the
> * system, 2) set the APM wakeup, 3) set
> * the power management function in the
> * Ethernet controller, it will keep
> * the power of the PHY on, 4) set PME
> * function in PCI spec.
In this step, I think that wm(4) needs to cooperate with PMF:
1 When wm_suspend() is called, PMF has already suspended all of the wm's
children (PHYs). PMF needs information that it should not suspend the
wm's children. Resetting the PHYs
2 A driver should probably not enable PME# itself. Instead, it should
let pci_child_suspend() enable PME#.
3 PMF needs to enable a PME# input to wake the system. In a system with
ACPI BIOS, you call some method on some ACPI node to do that. (See
the hw.wake.* sysctl nodes.) BTW, I have a Dell desktop with two
nodes for PCI, hw.wake.PCI0 and hw.wake.PCI1. I think that PME# on my
wm(4) add-on card is wired to one or the other, but not both.
David Young OJC Technologies
dyoung%ojctech.com@localhost Urbana, IL * (217) 278-3933
Main Index |
Thread Index |