We have a enet driver for a LAN911x chip. This chip is nice, as it has
several low power mode states. We have no issues with run state and the
suspend state (NDIS D3), but I've been trying to use a NDIS D2 state. The
chip is being programmed to a power state that will automatically wake up if
it detects a connection. My goal is to have a application that polls for the
LAN connection, if none found, it tells NDIS to go into D2 state.
When I try using the API functions to set NDIS into D2, I can see that the
chip does this, but then right away comes out of it, even with no cable
connected. Almost as if I need to UnBind the adaptor to make sure nothing
tries to talk to the driver so as to not for a wakeup from the lower power
state. I can easily use the SetPowerState() and BIND/UNBIND APIs to totally
power and power up the chip, but I want it to wake on it's own, if a
connection is detected. (The chip handles the wake-up of D2 state to D0
state)
The sample NDIS Power driver and NDIS UI is nice to look at for an example,
but they don't use any of the other power states of NDIS, like D1 and D2.
Only off and on.
Has anyone had any luck with this type of scenario? It's a really nice
feature, if possible since Enet chips typically require a good amount of
power in an embedded device.
Thanks for any comments or suggestions.
-Mike