• Ranjani Sridharan's avatar
    ASoC: SOF: Move DSP power state transitions to platform-specific ops · 61e285ca
    Ranjani Sridharan authored
    The DSP device substates such as D0I0/D0I3
    are platform-specific. Therefore, the d0_substate
    field of struct snd_sof_dev is replaced
    with the dsp_power_state field which represents the current
    state of the DSP. This field holds both the device state
    and the platform-specific substate values.
    
    With the DSP device substates being platform-specific,
    the DSP power state transitions need to be performed in
    the platform-specific suspend/resume ops as well.
    
    In order to achieve this, the ops signature has to be
    modified to pass the target device state as an
    argument. The target substate will be determined by
    the platform-specific ops before performing the transition.
    For example, in the case of the system suspending to S0IX,
    the top-level SOF device suspend callback needs to
    only determine if the DSP will be entering
    D3 or remain in D0. The target substate in case the device
    needs to remain in D0 (D0I0 or D0I3) will be determined
    by the platform-specific suspend op.
    
    With the addition of the extended set of power states for the DSP,
    the set_power_state op for HDA platforms has to be extended
    to handle only the appropriate state transitions. So, the
    implementation for the Intel HDA platforms is also modified.
    Signed-off-by: default avatarRanjani Sridharan <ranjani.sridharan@linux.intel.com>
    Signed-off-by: default avatarPierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
    Link: https://lore.kernel.org/r/20200129220726.31792-6-pierre-louis.bossart@linux.intel.comSigned-off-by: default avatarMark Brown <broonie@kernel.org>
    61e285ca
pm.c 7.47 KB