• Mengdong Lin's avatar
    ALSA: hda - add runtime PM support · b8dfc462
    Mengdong Lin authored
    Runtime PM can bring more power saving:
    - When the controller is suspended, its parent device will also have a chance
      to suspend.
    - PCI subsystem can choose the lowest power state the controller can signal
      wake up from. This state can be D3cold on platforms with ACPI PM support.
    And runtime PM can provide a gerneral sysfs interface for a system policy
    manager.
    
    Runtime PM support is based on current HDA power saving implementation. The user
    can enable runtime PM on platfroms that provide acceptable latency on transition
    from D3 to D0.
    
    Details:
    - When both power saving and runtime PM are enabled:
      -- If a codec supports 'stop-clock' in D3, it will request suspending the
         controller after it enters D3 and request resuming the controller before
         back to D0. Thus the controller will be suspended only when all codecs are
         suspended and support stop-clock in D3.
      -- User IO operations and HW wakeup signal can resume the controller back to
         D0.
    - If runtime PM is disabled, power saving just works as before.
    - If power saving is disabled, the controller won't be suspended because the
      power usage counter can never be 0.
    
    More about 'stop-clock' feature:
    If a codec can support targeted pass-through operations in D3 state when there
    is no BCLK present on the link, it will set CLKSTOP flag in the supported power
    states and report PS-ClkStopOk when entering D3 state. Please refer to HDA spec
    section 7.3.3.10 Power state and 7.3.4.12 Supported Power State.
    
    [Fixed CONFIG_PM_RUNTIME dependency in hda_intel.c by tiwai]
    Signed-off-by: default avatarMengdong Lin <mengdong.lin@intel.com>
    Signed-off-by: default avatarTakashi Iwai <tiwai@suse.de>
    b8dfc462
hda_intel.c 97 KB