Prev: MmAllocateContiguousMemory and non-paged pool size
Next: SetupDiOpenDeviceInfo - adding devices based on wildcard chars
From: Zhou on 3 Mar 2010 04:30 Dear all, I'm developing a set of WDF-based drivers for a specific bus like USB. This bus has several levels. Each level node works as "hub", except the terminal leaf device. In order to save power, all devices, hubs and terminal leaf devices, can enter D2 while system is still S0. Only the terminal leaf device has remote wakeup capability. When a terminal leaf device sends remote wakeup signal to root, we need to wake up all hubs between root and the terminal leaf device? From WDK document, we learned WdfDeviceIndicateWakeStatus is useful. My question is: If we call this function directly for the terminal leaf device, does WDF framework wake up all hubs on the path automatically? Alternately, does each hub need to call this function to wake up its child device only, and level by level, until the terminal leaf device. Thanks. Zhou
From: Doron Holan [MSFT] on 3 Mar 2010 18:27 > If we call this function directly for the terminal leaf device, does > WDF framework wake up all hubs on the path automatically? yes and no. by indicating wake, the leaf device's FDO (Assuming it is KMDF) will then ask for a D0 irp. that D0 irp will go to the PDO. The PDO will see that the parent is in D2 and the parent will ask for its own D0 irp. this will continue up the levels in the tree until a PDO is in D0 and then the D0 irps will complete back up the tree to the leaf node. > Alternately, does each hub need to call this function to wake up its > child device only, and level by level, until the terminal leaf device. you need to indicate wake status at the deepest part of the tree where you want the subtree to be aware of the wake condition. if only the leaf node cares, indicate wake there. if you need the root hub to care, indicate there. d -- This posting is provided "AS IS" with no warranties, and confers no rights. "Zhou" <czzhou(a)gmail.com> wrote in message news:2ef5438d-aa7c-41a6-83bd-a1f508459c43(a)e19g2000prn.googlegroups.com... > Dear all, > > I'm developing a set of WDF-based drivers for a specific bus like USB. > This bus has several levels. Each level node works as "hub", except > the terminal leaf device. > > In order to save power, all devices, hubs and terminal leaf devices, > can enter D2 while system is still S0. Only the terminal leaf device > has remote wakeup capability. > > When a terminal leaf device sends remote wakeup signal to root, we > need to wake up all hubs between root and the terminal leaf device? > > From WDK document, we learned WdfDeviceIndicateWakeStatus is useful. > My question is: > If we call this function directly for the terminal leaf device, does > WDF framework wake up all hubs on the path automatically? > Alternately, does each hub need to call this function to wake up its > child device only, and level by level, until the terminal leaf device. > > Thanks. > > Zhou
From: Zhou on 3 Mar 2010 21:01
Dear Doron Holan, Thank you very much! Zhou |