These fields are initialized by bus or device driver code using used for controlling whether or not the device should use its system wakeup mechanism and for notifying the PM core of system wakeup events signaled by the device.
This object is only present for wakeup-capable devices (i.e. Whether or not a device is capable of issuing wakeup events is a hardware matter, and the kernel is responsible for keeping track of it.
Remote wakeup is a feature allowing devices in low-power states to trigger specific interrupts to signal conditions in which they should be put into the full-power state.
Not many people write subsystem-level drivers; most driver code is a “device driver” that builds on top of bus-specific framework code.
Some drivers can manage hardware wakeup events, which make the system leave the low-power state.
This feature may be enabled or disabled using the relevant Devices may also be put into low-power states while the system is running, independently of other power management activity in principle.
Most suspended devices will have quiesced all I/O: no more DMA or IRQs (except for wakeup events), no more data read or written, and requests from upstream drivers are no longer accepted.
A given bus or platform may have different requirements though.