From 56f9ee3a80fd7a87f36b28f2899c16ac20677dbd Mon Sep 17 00:00:00 2001 From: David Rhodes Date: Wed, 15 Aug 2018 10:23:24 -0500 Subject: [PATCH] ASoC: cs35l41: Make Stream Arbiter highest priority Workaround for race conditions due to shutdown sequence. Mot-Crs-fixed:(CR) Change-Id: I306ddd7a0fb39302132d134e67ee8b5b0a900e40 Signed-off-by: David Rhodes Reviewed-on: https://gerrit.mot.com/1253046 SLTApproved: Slta Waiver SME-Granted: SME Approvals Granted Tested-by: Jira Key Reviewed-by: Guobin Zhang Submit-Approved: Jira Key Reviewed-on: https://gerrit.mot.com/1253076 Reviewed-by: Rav(CR) Vembu Reviewed-by: Yuesheng Huang --- sound/soc/codecs/cs35l41.c | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/sound/soc/codecs/cs35l41.c b/sound/soc/codecs/cs35l41.c index 3e7c4cf66fcf..0e5883771fdb 100644 --- a/sound/soc/codecs/cs35l41.c +++ b/sound/soc/codecs/cs35l41.c @@ -1741,6 +1741,18 @@ static const struct reg_sequence cs35l41_reva0_errata_patch[] = { {0x00000054, 0x00000004}, {CS35L41_IRQ1_DB3, 0x00000000}, {CS35L41_IRQ2_DB3, 0x00000000}, + {CS35L41_DSP1_YM_ACCEL_PL0_PRI, 0x00000000}, + {CS35L41_DSP1_XM_ACCEL_PL0_PRI, 0x00000000}, + {0x00000040, 0x0000CCCC}, + {0x00000040, 0x00003333}, +}; + +static const struct reg_sequence cs35l41_revb0_errata_patch[] = { + {0x00000040, 0x00005555}, + {0x00000040, 0x0000AAAA}, + {CS35L41_BSTCVRT_DCM_CTRL, 0x00000051}, + {CS35L41_DSP1_YM_ACCEL_PL0_PRI, 0x00000000}, + {CS35L41_DSP1_XM_ACCEL_PL0_PRI, 0x00000000}, {0x00000040, 0x0000CCCC}, {0x00000040, 0x00003333}, }; @@ -1925,7 +1937,14 @@ int cs35l41_probe(struct cs35l41_private *cs35l41, } break; case CS35L41_REVID_B0: - regmap_write(cs35l41->regmap, CS35L41_BSTCVRT_DCM_CTRL, 0x51); + ret = regmap_multi_reg_write(cs35l41->regmap, + cs35l41_revb0_errata_patch, + ARRAY_SIZE(cs35l41_revb0_errata_patch)); + if (ret < 0) { + dev_err(cs35l41->dev, + "Failed to apply B0 errata patch %d\n", ret); + goto err; + } break; }