• Imre Deak's avatar
    drm/i915: Ensure proper HDA suspend/resume ordering with a device link · aef9f33b
    Imre Deak authored
    In order to ensure that our system suspend and resume callbacks are
    called in the correct order wrt. those of the HDA driver add a device
    link to the HDA driver during audio component binding time. With i915 as
    the supplier and HDA as the consumer the PM framework will guarantee
    the HDA->i915 suspend (and shutdown) and i915->HDA resume order.
    
    Atm, the lack of this ordering is not a problem, since all the i915
    suspend/resume steps that need to be ordered wrt. the HDA driver's
    suspend/resume steps are separated out to the i915
    suspend_late/resume_early hooks. That will change in a follow-up
    patchset where we'll need this ordering guarantee for steps that are in
    the i915 suspend/resume hooks (and which can't be moved to
    suspend_late/resume_early for other reasons). So this patch is a
    preparation for that follow-up patchset.
    
    The change also allows us to move towards removing the i915
    suspend_late/resume_early hooks alltogether.
    
    Since we only need to ensure the ordering during suspend/resume and not
    during driver probing create the link with DL_FLAG_STATELESS. Since the
    probe time ordering has to be optional we use the component framework
    for that.
    
    Similarly for runtime PM we depend on the audio driver getting/putting
    an i915 runtime PM reference whenever it needs it (along with the proper
    i915 display power domain) via the audio component ops get_power /
    put_power hooks. So we create the device link without
    DL_FLAG_PM_RUNTIME.
    
    v2: (Ville)
    - Add a note to the commit message about not using the device link
      runtime PM ordering.
    - Handle the error return from device_link_add().
    
    Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
    Cc: Takashi Iwai <tiwai@suse.de>
    Cc: Lukas Wunner <lukas@wunner.de>
    Signed-off-by: default avatarImre Deak <imre.deak@intel.com>
    Reviewed-by: default avatarVille Syrjälä <ville.syrjala@linux.intel.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/20181023144310.8272-1-imre.deak@intel.com
    aef9f33b
intel_audio.c 30.2 KB