USB_CREATE_PM_COMPONENTS(9F)                    Kernel Functions for Drivers
NAME
       usb_create_pm_components - Create power management components for USB
       devices
SYNOPSIS
       #include <sys/usb/usba.h>       
int usb_create_pm_components(
dev_info_t *dip, 
uint_t *pwrstates);
INTERFACE LEVEL
       illumos DDI specific (illumos DDI)
PARAMETERS
       dip                    Pointer to the device's 
dev_info structure.       
pwrstates                    Address into which a mask which lists power states
                    capable by device is returned. This is a bitmask
                    containing zero or more of the following values:       
USB_DEV_PWRMASK_D0                             Corresponds to USB_DEV_OS_PWR_3 or full power.       
USB_DEV_PWRMASK_D1                             Corresponds to USB_DEV_OS_PWR_2.       
USB_DEV_PWRMASK_D2                             Corresponds to USB_DEV_OS_PWR_1.       
USB_DEV_PWRMASK_D3                             Corresponds to USB_DEV_OS_PWR_0 or no power.
DESCRIPTION
       The 
usb_create_pm_components() function creates pm component
       properties that assume the standard USB D0-D3 powerlevels
       (USB_DEV_PWR_D0 - USB_DEV_PWR_D3). See the device's relevant USB
       descriptor to determine the device's power management capabilities
       and account for bus-powered devices. The 
usb_create_pm_components()       function also updates the pm-components property in the device's
       dev_info structure.
       Note that these USB power levels are inverse of OS power levels. For
       example, USB_DEV_OS_PWR_0 and USB_DEV_PWR_D3 are equivalent levels
       corresponding to powered-down.
RETURN VALUES
       USB_SUCCESS                      Power management facilities in device are recognized
                      by system.       
USB_FAILURE                      An error occurred.
CONTEXT
       May be called from user or kernel context.
EXAMPLES
            uint_t *pwrstates;
             /* Hook into device's power management.  Enable remote wakeup. */
             if (usb_create_pm_components(dip, pwrstates) == USB_SUCCESS) {
                     usb_handle_remote_wakeup(dip,USB_REMOTE_WAKEUP_ENABLE);
             }
ATTRIBUTES
       See 
attributes(7) for descriptions of the following attributes:
       +--------------------+-------------------+
       |  ATTRIBUTE TYPE    |  ATTRIBUTE VALUE  |
       +--------------------+-------------------+
       |Architecture        | PCI-based systems |
       +--------------------+-------------------+
       |Interface stability | Committed         |
       +--------------------+-------------------+
SEE ALSO
       attributes(7), 
pm_busy_component(9F), 
pm_idle_component(9F),       
pm_lower_power(9F), 
pm_raise_power(9F), 
usb_clr_feature(9F),       
usb_get_cfg(9F), 
usb_get_dev_data(9F), 
usb_handle_remote_wakeup(9F),       
usb_register_hotplug_cbs(9F), 
usb_cfg_descr(9S)                               January 5, 2004  USB_CREATE_PM_COMPONENTS(9F)