mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-10 06:09:23 -04:00
cs35l41: workaround for fixing speaker low volume issue
- once cirrus new 96k firmware is ready, revert this - not sending mailbox command to firmware, instead of mute/unmute command Mot-CRs-fixed: (CR) (CR) Change-Id: I22b6d368499edd99da5238f0e7393eb8d5c79fcc Signed-off-by: huangys <huangys@motorola.com> Reviewed-on: https://gerrit.mot.com/1241093 SLTApproved: Slta Waiver SME-Granted: SME Approvals Granted Tested-by: Jira Key Reviewed-by: Master Yoda Reviewed-by: Guobin Zhang <zhanggb@motorola.com> Submit-Approved: Jira Key
This commit is contained in:
parent
86c7f835b1
commit
9830e98ff4
3 changed files with 26 additions and 1 deletions
|
|
@ -61,6 +61,7 @@ struct cs35l41_private {
|
|||
int extclk_freq;
|
||||
int extclk_cfg;
|
||||
int sclk;
|
||||
unsigned int cspl_cmd_reg;
|
||||
unsigned int cspl_cmd;
|
||||
bool tdm_mode;
|
||||
bool i2s_mode;
|
||||
|
|
|
|||
|
|
@ -44,6 +44,8 @@
|
|||
#include "cs35l41.h"
|
||||
#include <sound/cs35l41.h>
|
||||
|
||||
#define WORKAROUND_CSPL_VOLUME
|
||||
|
||||
static const char * const cs35l41_supplies[] = {
|
||||
"VA",
|
||||
"VP",
|
||||
|
|
@ -174,6 +176,14 @@ static int cs35l41_dsp_load_ev(struct snd_soc_dapm_widget *w,
|
|||
wm_halo_event(w, kcontrol, event);
|
||||
cs35l41->halo_booted = true;
|
||||
}
|
||||
regmap_write(cs35l41->regmap, cs35l41->cspl_cmd_reg,
|
||||
CS35L41_CSPL_CMD_UNMUTE);
|
||||
return 0;
|
||||
|
||||
case SND_SOC_DAPM_PRE_PMD:
|
||||
regmap_write(cs35l41->regmap, cs35l41->cspl_cmd_reg,
|
||||
CS35L41_CSPL_CMD_MUTE);
|
||||
|
||||
default:
|
||||
return 0;
|
||||
}
|
||||
|
|
@ -257,6 +267,10 @@ static int cs35l41_set_csplmboxcmd(struct cs35l41_private *cs35l41,
|
|||
int ret;
|
||||
unsigned int sts;
|
||||
|
||||
#ifdef WORKAROUND_CSPL_VOLUME
|
||||
pr_info("%s: workaround cspl volume\n", __func__);
|
||||
return 0;
|
||||
#endif
|
||||
/* Reset DSP sticky bit */
|
||||
regmap_write(cs35l41->regmap, CS35L41_IRQ2_STATUS2,
|
||||
1 << CS35L41_CSPL_MBOX_CMD_DRV_SHIFT);
|
||||
|
|
@ -831,7 +845,8 @@ static const struct snd_soc_dapm_widget cs35l41_dapm_widgets[] = {
|
|||
SND_SOC_NOPM, 0, 0, cs35l41_dsp_power_ev,
|
||||
SND_SOC_DAPM_PRE_PMU | SND_SOC_DAPM_PRE_PMD),
|
||||
SND_SOC_DAPM_OUT_DRV_E("DSP1", SND_SOC_NOPM, 0, 0, NULL, 0,
|
||||
cs35l41_dsp_load_ev, SND_SOC_DAPM_POST_PMU),
|
||||
cs35l41_dsp_load_ev,
|
||||
SND_SOC_DAPM_POST_PMU | SND_SOC_DAPM_PRE_PMD),
|
||||
SND_SOC_DAPM_OUTPUT("SPK"),
|
||||
|
||||
SND_SOC_DAPM_SWITCH("AMP Enable", SND_SOC_NOPM, 0, 1, &_enable_ctrl),
|
||||
|
|
@ -1919,9 +1934,11 @@ int cs35l41_probe(struct cs35l41_private *cs35l41,
|
|||
"Failed to apply A0 errata patch %d\n", ret);
|
||||
goto err;
|
||||
}
|
||||
cs35l41->cspl_cmd_reg = CS35L41_CSPL_COMMAND_REV_A0;
|
||||
break;
|
||||
case CS35L41_REVID_B0:
|
||||
regmap_write(cs35l41->regmap, CS35L41_BSTCVRT_DCM_CTRL, 0x51);
|
||||
cs35l41->cspl_cmd_reg = CS35L41_CSPL_COMMAND_REV_B0;
|
||||
break;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -733,6 +733,13 @@ extern const struct cs35l41_otp_map_element_t
|
|||
#define CS35L41_REGSTRIDE 4
|
||||
#define CS35L41_MBOXWAIT 100
|
||||
|
||||
#define CS35L41_CSPL_CMD_NONE 0
|
||||
#define CS35L41_CSPL_CMD_MUTE 1
|
||||
#define CS35L41_CSPL_CMD_UNMUTE 2
|
||||
#define CS35L41_CSPL_CMD_REINIT 3
|
||||
#define CS35L41_CSPL_COMMAND_REV_A0 0x02800210
|
||||
#define CS35L41_CSPL_COMMAND_REV_B0 0x02800234
|
||||
|
||||
#define CS35L41_DSP_VIRT1_MBOX_SHIFT 20
|
||||
#define CS35L41_DSP_VIRT2_MBOX_SHIFT 21
|
||||
#define CS35L41_CSPL_MBOX_STS CS35L41_DSP_MBOX_2
|
||||
|
|
|
|||
Loading…
Reference in a new issue