mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-11 07:03:09 -04:00
asoc: codecs: Add system sleep ops for macro drivers
Add system sleep ops and invoke force runtime suspend for all the macro drivers in bolero in order to synchronize system suspend and runtime suspend callbacks. Use freezable delayed work queues instead of normal delayed workqueues in order to avoid contention with pm suspend callflow. Change-Id: Ibb0d35ad80c09e7f2a7032b4daef53c359056dfd Signed-off-by: Aditya Bavanari <abavanar@codeaurora.org>
This commit is contained in:
parent
68f58b0d09
commit
e2f52ea5c0
5 changed files with 26 additions and 6 deletions
|
|
@ -1199,6 +1199,7 @@ static int bolero_remove(struct platform_device *pdev)
|
|||
return 0;
|
||||
}
|
||||
|
||||
#ifdef CONFIG_PM
|
||||
int bolero_runtime_resume(struct device *dev)
|
||||
{
|
||||
struct bolero_priv *priv = dev_get_drvdata(dev->parent);
|
||||
|
|
@ -1272,6 +1273,7 @@ int bolero_runtime_suspend(struct device *dev)
|
|||
return 0;
|
||||
}
|
||||
EXPORT_SYMBOL(bolero_runtime_suspend);
|
||||
#endif /* CONFIG_PM */
|
||||
|
||||
bool bolero_check_core_votes(struct device *dev)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -4154,6 +4154,10 @@ static const struct of_device_id rx_macro_dt_match[] = {
|
|||
};
|
||||
|
||||
static const struct dev_pm_ops bolero_dev_pm_ops = {
|
||||
SET_SYSTEM_SLEEP_PM_OPS(
|
||||
pm_runtime_force_suspend,
|
||||
pm_runtime_force_resume
|
||||
)
|
||||
SET_RUNTIME_PM_OPS(
|
||||
bolero_runtime_suspend,
|
||||
bolero_runtime_resume,
|
||||
|
|
|
|||
|
|
@ -967,11 +967,12 @@ static int tx_macro_enable_dec(struct snd_soc_dapm_widget *w,
|
|||
if (tx_unmute_delay < unmute_delay)
|
||||
tx_unmute_delay = unmute_delay;
|
||||
/* schedule work queue to Remove Mute */
|
||||
schedule_delayed_work(&tx_priv->tx_mute_dwork[decimator].dwork,
|
||||
msecs_to_jiffies(tx_unmute_delay));
|
||||
queue_delayed_work(system_freezable_wq,
|
||||
&tx_priv->tx_mute_dwork[decimator].dwork,
|
||||
msecs_to_jiffies(tx_unmute_delay));
|
||||
if (tx_priv->tx_hpf_work[decimator].hpf_cut_off_freq !=
|
||||
CF_MIN_3DB_150HZ) {
|
||||
schedule_delayed_work(
|
||||
queue_delayed_work(system_freezable_wq,
|
||||
&tx_priv->tx_hpf_work[decimator].dwork,
|
||||
msecs_to_jiffies(hpf_delay));
|
||||
snd_soc_component_update_bits(component,
|
||||
|
|
@ -3279,6 +3280,10 @@ static const struct of_device_id tx_macro_dt_match[] = {
|
|||
};
|
||||
|
||||
static const struct dev_pm_ops bolero_dev_pm_ops = {
|
||||
SET_SYSTEM_SLEEP_PM_OPS(
|
||||
pm_runtime_force_suspend,
|
||||
pm_runtime_force_resume
|
||||
)
|
||||
SET_RUNTIME_PM_OPS(
|
||||
bolero_runtime_suspend,
|
||||
bolero_runtime_resume,
|
||||
|
|
|
|||
|
|
@ -1142,11 +1142,12 @@ static int va_macro_enable_dec(struct snd_soc_dapm_widget *w,
|
|||
*/
|
||||
usleep_range(6000, 6010);
|
||||
/* schedule work queue to Remove Mute */
|
||||
schedule_delayed_work(&va_priv->va_mute_dwork[decimator].dwork,
|
||||
msecs_to_jiffies(va_tx_unmute_delay));
|
||||
queue_delayed_work(system_freezable_wq,
|
||||
&va_priv->va_mute_dwork[decimator].dwork,
|
||||
msecs_to_jiffies(va_tx_unmute_delay));
|
||||
if (va_priv->va_hpf_work[decimator].hpf_cut_off_freq !=
|
||||
CF_MIN_3DB_150HZ)
|
||||
schedule_delayed_work(
|
||||
queue_delayed_work(system_freezable_wq,
|
||||
&va_priv->va_hpf_work[decimator].dwork,
|
||||
msecs_to_jiffies(hpf_delay));
|
||||
/* apply gain after decimator is enabled */
|
||||
|
|
@ -3039,6 +3040,10 @@ static const struct of_device_id va_macro_dt_match[] = {
|
|||
};
|
||||
|
||||
static const struct dev_pm_ops bolero_dev_pm_ops = {
|
||||
SET_SYSTEM_SLEEP_PM_OPS(
|
||||
pm_runtime_force_suspend,
|
||||
pm_runtime_force_resume
|
||||
)
|
||||
SET_RUNTIME_PM_OPS(
|
||||
bolero_runtime_suspend,
|
||||
bolero_runtime_resume,
|
||||
|
|
|
|||
|
|
@ -3239,6 +3239,10 @@ static const struct of_device_id wsa_macro_dt_match[] = {
|
|||
};
|
||||
|
||||
static const struct dev_pm_ops bolero_dev_pm_ops = {
|
||||
SET_SYSTEM_SLEEP_PM_OPS(
|
||||
pm_runtime_force_suspend,
|
||||
pm_runtime_force_resume
|
||||
)
|
||||
SET_RUNTIME_PM_OPS(
|
||||
bolero_runtime_suspend,
|
||||
bolero_runtime_resume,
|
||||
|
|
|
|||
Loading…
Reference in a new issue