diff options
author | Roger Liao <rogerliao@google.com> | 2021-10-08 04:29:50 +0000 |
---|---|---|
committer | Roger Liao <rogerliao@google.com> | 2021-10-08 04:29:50 +0000 |
commit | 94907e32aa7d0c53595a204495925cb307b31ab1 (patch) | |
tree | ceeace8624a525e78aa84815c2722ebab82ee303 | |
parent | aaad7003272facb3e7eb2c768520885390ccb963 (diff) | |
parent | a8b571edb296fef9866c339301a9f59be2c6d4e9 (diff) | |
download | amplifiers-94907e32aa7d0c53595a204495925cb307b31ab1.tar.gz |
Merge "Merge android12-gs-pixel-5.10-sc-qpr2 into android12-gs-pixel-5.10-sc-v2" into android12-gs-pixel-5.10-sc-v2
-rw-r--r-- | cs40l25/cs40l2x.c | 7 | ||||
-rw-r--r-- | cs40l25/include/linux/mfd/cs40l2x.h | 2 | ||||
-rw-r--r-- | cs40l25/snd-soc-codec-cs40l2x.c | 16 |
3 files changed, 10 insertions, 15 deletions
diff --git a/cs40l25/cs40l2x.c b/cs40l25/cs40l2x.c index 17d4ee2..1c65044 100644 --- a/cs40l25/cs40l2x.c +++ b/cs40l25/cs40l2x.c @@ -266,13 +266,14 @@ static int cs40l2x_write_pwle(struct cs40l2x_private *cs40l2x, void *buf, return dspmem_chunk_bytes(&ch); } -static void cs40l2x_set_state(struct cs40l2x_private *cs40l2x, bool state) +void cs40l2x_set_state(struct cs40l2x_private *cs40l2x, bool state) { if (cs40l2x->vibe_state != state) { cs40l2x->vibe_state = state; cs40l2x_sysfs_notify(cs40l2x, "vibe_state"); } } +EXPORT_SYMBOL(cs40l2x_set_state); static void cs40l2x_set_gpio_event(struct cs40l2x_private *cs40l2x, bool value) { @@ -6806,9 +6807,9 @@ static void cs40l2x_vibe_mode_worker(struct work_struct *work) dev_err(dev, "Failed to ground amplifier outputs\n"); goto err_exit; } - cs40l2x_set_state(cs40l2x, CS40L2X_VIBE_STATE_STOPPED); - cs40l2x_wl_relax(cs40l2x); } + cs40l2x_set_state(cs40l2x, CS40L2X_VIBE_STATE_STOPPED); + cs40l2x_wl_relax(cs40l2x); if (cs40l2x->dyn_f0_enable) { ret = cs40l2x_read_dyn_f0_table(cs40l2x); diff --git a/cs40l25/include/linux/mfd/cs40l2x.h b/cs40l25/include/linux/mfd/cs40l2x.h index d25919b..2c7d404 100644 --- a/cs40l25/include/linux/mfd/cs40l2x.h +++ b/cs40l25/include/linux/mfd/cs40l2x.h @@ -1535,6 +1535,8 @@ int cs40l2x_coeff_file_parse(struct cs40l2x_private *cs40l2x, int cs40l2x_ack_write(struct cs40l2x_private *cs40l2x, unsigned int reg, unsigned int write_val, unsigned int reset_val); +void cs40l2x_set_state(struct cs40l2x_private *cs40l2x, bool state); + struct cs40l2x_virtual_waveform { bool is_xm; unsigned int index; diff --git a/cs40l25/snd-soc-codec-cs40l2x.c b/cs40l25/snd-soc-codec-cs40l2x.c index ae694df..de4aff8 100644 --- a/cs40l25/snd-soc-codec-cs40l2x.c +++ b/cs40l25/snd-soc-codec-cs40l2x.c @@ -130,8 +130,7 @@ static int cs40l2x_swap_ext_clk(struct cs40l2x_codec *priv, { struct device *dev = priv->dev; struct regmap *regmap = priv->regmap; - struct cs40l2x_private *core = priv->core; - int clk_cfg, ret; + int clk_cfg; if (src == CS40L2X_32KHZ_CLK) clk_cfg = cs40l2x_get_clk_config(CS40L2X_MCLK_FREQ); @@ -143,11 +142,6 @@ static int cs40l2x_swap_ext_clk(struct cs40l2x_codec *priv, return -EINVAL; } - ret = cs40l2x_ack_write(core, CS40L2X_MBOX_POWERCONTROL, - CS40L2X_PWRCTL_FORCE_STBY, CS40L2X_PWRCTL_NONE); - if (ret) - return ret; - regmap_update_bits(regmap, CS40L2X_PLL_CLK_CTRL, CS40L2X_PLL_OPEN_LOOP_MASK, CS40L2X_PLL_OPEN_LOOP_MASK); @@ -173,8 +167,7 @@ static int cs40l2x_swap_ext_clk(struct cs40l2x_codec *priv, usleep_range(1000, 1500); - return cs40l2x_ack_write(core, CS40L2X_MBOX_POWERCONTROL, - CS40L2X_PWRCTL_WAKE, CS40L2X_PWRCTL_NONE); + return 0; } static int cs40l2x_clk_en(struct snd_soc_dapm_widget *w, @@ -191,11 +184,9 @@ static int cs40l2x_clk_en(struct snd_soc_dapm_widget *w, dev_info(dev, "%s: SND_SOC_DAPM_POST_PMU\n", __func__); mutex_lock(&core->lock); core->a2h_enable = true; + cs40l2x_set_state(core, CS40L2X_VIBE_STATE_RUNNING); mutex_unlock(&core->lock); - if (!completion_done(&core->hap_done)) - wait_for_completion(&core->hap_done); - ret = cs40l2x_swap_ext_clk(priv, CS40L2X_SCLK); if (ret) return ret; @@ -208,6 +199,7 @@ static int cs40l2x_clk_en(struct snd_soc_dapm_widget *w, mutex_lock(&core->lock); core->a2h_enable = false; + cs40l2x_set_state(core, CS40L2X_VIBE_STATE_STOPPED); mutex_unlock(&core->lock); break; default: |