Commit 03d2ec46 authored by Charles Keepax's avatar Charles Keepax Committed by Mark Brown

ASoC: cs42xx8: Mark chip ID as volatile and remove cache bypass

Rather than manually enabling cache bypass when reading the ID registers
simply remove the default which will cause the first read to go to the
hardware. The old code worked this is simply the more standard way to
implement this. There is a comment included in the code that claims the
chip ID register also contains the right input volume, however this is
clearly not the case from the rest of the driver. Further investigation
reveals exactly the same comment in the wm8962 driver, where this is the
case, so this is almost certainly a copy and paste error from when the
driver was created.
Signed-off-by: default avatarCharles Keepax <ckeepax@opensource.wolfsonmicro.com>
Acked-by: default avatarBrian Austin <brian.austin@cirrus.com>
Signed-off-by: default avatarMark Brown <broonie@kernel.org>
parent 1001354c
...@@ -321,7 +321,6 @@ static struct snd_soc_dai_driver cs42xx8_dai = { ...@@ -321,7 +321,6 @@ static struct snd_soc_dai_driver cs42xx8_dai = {
}; };
static const struct reg_default cs42xx8_reg[] = { static const struct reg_default cs42xx8_reg[] = {
{ 0x01, 0x01 }, /* Chip I.D. and Revision Register */
{ 0x02, 0x00 }, /* Power Control */ { 0x02, 0x00 }, /* Power Control */
{ 0x03, 0xF0 }, /* Functional Mode */ { 0x03, 0xF0 }, /* Functional Mode */
{ 0x04, 0x46 }, /* Interface Formats */ { 0x04, 0x46 }, /* Interface Formats */
...@@ -498,13 +497,6 @@ int cs42xx8_probe(struct device *dev, struct regmap *regmap) ...@@ -498,13 +497,6 @@ int cs42xx8_probe(struct device *dev, struct regmap *regmap)
/* Make sure hardware reset done */ /* Make sure hardware reset done */
msleep(5); msleep(5);
/*
* We haven't marked the chip revision as volatile due to
* sharing a register with the right input volume; explicitly
* bypass the cache to read it.
*/
regcache_cache_bypass(cs42xx8->regmap, true);
/* Validate the chip ID */ /* Validate the chip ID */
ret = regmap_read(cs42xx8->regmap, CS42XX8_CHIPID, &val); ret = regmap_read(cs42xx8->regmap, CS42XX8_CHIPID, &val);
if (ret < 0) { if (ret < 0) {
...@@ -523,8 +515,6 @@ int cs42xx8_probe(struct device *dev, struct regmap *regmap) ...@@ -523,8 +515,6 @@ int cs42xx8_probe(struct device *dev, struct regmap *regmap)
dev_info(dev, "found device, revision %X\n", dev_info(dev, "found device, revision %X\n",
val & CS42XX8_CHIPID_REV_ID_MASK); val & CS42XX8_CHIPID_REV_ID_MASK);
regcache_cache_bypass(cs42xx8->regmap, false);
cs42xx8_dai.name = cs42xx8->drvdata->name; cs42xx8_dai.name = cs42xx8->drvdata->name;
/* Each adc supports stereo input */ /* Each adc supports stereo input */
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment