pm-components(9P)




NAME

     pm-components - Power Management device property


DESCRIPTION

     A device is power manageable if the power consumption of the
     device  can  be reduced when it is idle. In general, a power
     manageable device consists of a number of  power  manageable
     hardware   units   called   components.  Each  component  is
     separately controllable and has its own set of power parame-
     ters.

     An example of a one-component power manageable device  is  a
     disk  whose  spindle motor can be stopped to save power when
     the disk is  idle.  An  example  of  a  two-component  power
     manageable  device  is  a frame buffer card with a connected
     monitor. The frame buffer electronics (with power  that  can
     be  reduced  when not in use) comprises the first component.
     The second component is the monitor, which can  enter  in  a
     lower  power  mode when not in use. The combination of frame
     buffer electronics and monitor is considered as  one  device
     by the system.

     In the Power Management framework, all components  are  con-
     sidered  equal  and completely independent of each other. If
     this is not true for a particular device, the device  driver
     must  ensure  that  undesirable  state  combinations  do not
     occur.

     The pm-components property describes  the  Power  Management
     model  of a device driver to the Power Management framework.
     It lists each power manageable component by name  and  lists
     the  power  level  supported  by each component by numerical
     value and name. Its syntax and interpretation  is  described
     below.

     This property is only interpreted by the system  immediately
     after  the  device  has  successfully  attached, or upon the
     first call into Power Management framework, whichever  comes
     first.  Changes in the property made by the driver after the
     property has been interpreted will not be recognized.

     pm-components is a string array property. The  existence  of
     the  pm-components  property  indicates that a device imple-
     ments power manageable components and  describes  the  Power
     Management  model  implemented  by  the  device  driver. The
     existence of pm-components also indicates to  the  framework
     that  device is ready for Power Management if automatic dev-
     ice Power Management is enabled. See power.conf(4).

     The pm-component property syntax is:

     pm-components="NAME=component name", "numeric power level=power level name",
       "numeric power level=power level name"
       [, "numeric power level=power level name" ...]
       [, "NAME=component name", "numeric power level=power level name",
       "numeric power level=power level name"
       [, "numeric power level=power level name"...]...];

     The start of each new component is represented by  a  string
     consisting  of  NAME= followed by the name of the component.
     This should be a short name that  a  user  would  recognize,
     such  as  "Monitor"  or "Spindle Motor." The succeeding ele-
     ments in the string array must be strings consisting of  the
     numeric value (can be decimal or 0x <hexadecimal number>) of
     a power level the component supports, followed by  an  equal
     sign  followed  by  a  short descriptive name for that power
     level. Again, the names should be descriptive, such as "On,"
     "Off," "Suspend," "Standby," etc. The next component contin-
     ues the array in the same manner, with a string that  starts
     out  NAME=, specifying the beginning of a new component (and
     its name), followed by specifications of  the  power  levels
     the component supports.

     The components must be listed in increasing order  according
     to  the  component  number  as  interpreted  by the driver's
     power(9E) routine.  (Components  are  numbered  sequentially
     from 0). The power levels must be listed in increasing order
     of power consumption. Each component must support  at  least
     two  power  levels, or there is no possiblity of power level
     transitions. If a power level value of 0 is used, it must be
     the  first  one  listed  for  that component.  A power level
     value of 0 has a special meaning (off) to the Power  Manage-
     ment framework.


EXAMPLES

     An example of a pm-components entry from the .conf file of a
     driver  which  implements  a  single power managed component
     consisting of a disk spindle motor is shown below.  This  is
     component  0  and it supports 2 power level, which represent
     spindle stopped or full speed.

     pm-components="NAME=Spindle Motor", "0=Stopped", "1=Full Speed";
     ...

     Below is an example of how the above entry would  be  imple-
     mented in the  attach(9E) function of the driver.

     static char *pmcomps[] = {
       "NAME=Spindle Motor",
          "0=Stopped",
          "1=Full Speed"
     };

     ...

     xxattach(dev_info_t *dip, ddi_attach_cmd_t cmd)
     {
     ...
          if (ddi_prop_update_string_array(DDI_DEV_T_NONE, dip, "pm-components",
              &pmcomp[0], sizeof (pmcomps) / sizeof (char *)) != DDI_PROP_SUCCESS)
               goto failed;
     }

     Below is an example for a frame buffer which implements  two
     components.   Component  0  is  the frame buffer electronics
     which supports four  different  power  levels.  Component  1
     represents  the  state  of  Power Management of the attached
     monitor.

     pm-components="NAME=Frame Buffer", "0=Off"
          "1=Suspend", "2=Standby", "3=On",
               "NAME=Monitor", "0=Off", "1=Suspend", "2=Standby,"
               "3=On;


ATTRIBUTES

     See attributes(5) for descriptions of the  following  attri-
     butes:

     ____________________________________________________________
    |       ATTRIBUTE TYPE        |       ATTRIBUTE VALUE       |
    |_____________________________|_____________________________|
    | Interface stability         | Evolving                    |
    |_____________________________|_____________________________|


SEE ALSO

     power.conf(4),     pm(7D),     attach(9E),       detach(9E),
     ddi_prop_update_string_array(9F)      pm_busy_component(9F),
     pm_create_components(9F),         pm_destroy_components(9F),
     pm_idle_component(9F)

     Writing Device Drivers


Man(1) output converted with man2html