mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-12 15:49:17 -04:00
Merge "soc: swr: avoid SSR state when switching between 44.1 and 48k family"
This commit is contained in:
commit
ab0a45b0db
2 changed files with 11 additions and 21 deletions
|
|
@ -1147,18 +1147,6 @@ static int rx_macro_mclk_event(struct snd_soc_dapm_widget *w,
|
|||
dev_dbg(rx_dev, "%s: event = %d\n", __func__, event);
|
||||
switch (event) {
|
||||
case SND_SOC_DAPM_PRE_PMU:
|
||||
/* if swr_clk_users > 0, call device down */
|
||||
if (rx_priv->swr_clk_users > 0) {
|
||||
if ((rx_priv->clk_id == rx_priv->default_clk_id &&
|
||||
rx_priv->is_native_on) ||
|
||||
(rx_priv->clk_id == RX_CORE_CLK &&
|
||||
!rx_priv->is_native_on)) {
|
||||
if (rx_priv->swr_ctrl_data)
|
||||
swrm_wcd_notify(
|
||||
rx_priv->swr_ctrl_data[0].rx_swr_pdev,
|
||||
SWR_DEVICE_DOWN, NULL);
|
||||
}
|
||||
}
|
||||
if (rx_priv->is_native_on)
|
||||
mclk_freq = MCLK_FREQ_NATIVE;
|
||||
if (rx_priv->swr_ctrl_data)
|
||||
|
|
|
|||
|
|
@ -2480,6 +2480,8 @@ static int swrm_runtime_resume(struct device *dev)
|
|||
swr_master_write(swrm, SWRM_COMP_SW_RESET, 0x01);
|
||||
swr_master_write(swrm, SWRM_COMP_SW_RESET, 0x01);
|
||||
swrm_master_init(swrm);
|
||||
/* wait for hw enumeration to complete */
|
||||
usleep_range(100, 105);
|
||||
swrm_cmd_fifo_wr_cmd(swrm, 0x4, 0xF, 0x0,
|
||||
SWRS_SCP_INT_STATUS_MASK_1);
|
||||
if (swrm->state == SWR_MSTR_SSR) {
|
||||
|
|
@ -2621,22 +2623,14 @@ static int swrm_device_down(struct device *dev)
|
|||
{
|
||||
struct platform_device *pdev = to_platform_device(dev);
|
||||
struct swr_mstr_ctrl *swrm = platform_get_drvdata(pdev);
|
||||
int ret = 0;
|
||||
|
||||
dev_dbg(dev, "%s: swrm state: %d\n", __func__, swrm->state);
|
||||
|
||||
mutex_lock(&swrm->force_down_lock);
|
||||
swrm->state = SWR_MSTR_SSR;
|
||||
mutex_unlock(&swrm->force_down_lock);
|
||||
if (!pm_runtime_enabled(dev) || !pm_runtime_suspended(dev)) {
|
||||
ret = swrm_runtime_suspend(dev);
|
||||
if (!ret) {
|
||||
pm_runtime_disable(dev);
|
||||
pm_runtime_set_suspended(dev);
|
||||
pm_runtime_enable(dev);
|
||||
}
|
||||
}
|
||||
|
||||
swrm_device_suspend(dev);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
@ -2770,6 +2764,14 @@ int swrm_wcd_notify(struct platform_device *pdev, u32 id, void *data)
|
|||
ret = -EINVAL;
|
||||
} else {
|
||||
mutex_lock(&swrm->mlock);
|
||||
if (swrm->mclk_freq != *(int *)data) {
|
||||
dev_dbg(swrm->dev, "%s: freq change: force mstr down\n", __func__);
|
||||
if (swrm->state == SWR_MSTR_DOWN)
|
||||
dev_dbg(swrm->dev, "%s:SWR master is already Down:%d\n",
|
||||
__func__, swrm->state);
|
||||
else
|
||||
swrm_device_suspend(&pdev->dev);
|
||||
}
|
||||
swrm->mclk_freq = *(int *)data;
|
||||
mutex_unlock(&swrm->mlock);
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue