]> git.hungrycats.org Git - linux/commitdiff
ASoC: ak4642: Enable cache usage to fix crashes on resume
authorMark Brown <broonie@kernel.org>
Wed, 18 May 2016 17:30:39 +0000 (18:30 +0100)
committerSasha Levin <sasha.levin@oracle.com>
Mon, 6 Jun 2016 23:12:28 +0000 (19:12 -0400)
[ Upstream commit d3030d11961a8c103cf07aed59905276ddfc06c2 ]

The ak4642 driver is using a regmap cache sync to restore the
configuration of the chip on resume but (as Peter observed) does not
actually define a register cache which means that the resume is never
going to work and we trigger asserts in regmap.  Fix this by enabling
caching.

Reported-by: Geert Uytterhoeven <geert@linux-m68k.org>
Reported-by: Peter Ujfalusi <peter.ujfalusi@ti.com>
Tested-by: Geert Uytterhoeven <geert+renesas@glider.be>
Signed-off-by: Mark Brown <broonie@kernel.org>
Cc: stable@vger.kernel.org
Signed-off-by: Sasha Levin <sasha.levin@oracle.com>
sound/soc/codecs/ak4642.c

index 1cb51372c17ac72e54ee5522b4d352a00f247137..8e9b76d03f819c799f95a04de0412127e53486b0 100644 (file)
@@ -550,6 +550,7 @@ static const struct regmap_config ak4642_regmap = {
        .max_register           = FIL1_3,
        .reg_defaults           = ak4642_reg,
        .num_reg_defaults       = NUM_AK4642_REG_DEFAULTS,
+       .cache_type             = REGCACHE_RBTREE,
 };
 
 static const struct regmap_config ak4643_regmap = {
@@ -558,6 +559,7 @@ static const struct regmap_config ak4643_regmap = {
        .max_register           = SPK_MS,
        .reg_defaults           = ak4643_reg,
        .num_reg_defaults       = ARRAY_SIZE(ak4643_reg),
+       .cache_type             = REGCACHE_RBTREE,
 };
 
 static const struct regmap_config ak4648_regmap = {
@@ -566,6 +568,7 @@ static const struct regmap_config ak4648_regmap = {
        .max_register           = EQ_FBEQE,
        .reg_defaults           = ak4648_reg,
        .num_reg_defaults       = ARRAY_SIZE(ak4648_reg),
+       .cache_type             = REGCACHE_RBTREE,
 };
 
 static const struct ak4642_drvdata ak4642_drvdata = {