diff options
| author | Mark Brown <broonie@opensource.wolfsonmicro.com> | 2009-07-31 18:26:51 +0100 |
|---|---|---|
| committer | Mark Brown <broonie@opensource.wolfsonmicro.com> | 2009-07-31 18:54:48 +0100 |
| commit | 77ee09c67e051a5ebd19a53ba3945dbdc8d21b3c (patch) | |
| tree | 4fa007a15bbdf43cd4bfae2bfbc44272faaf656b | |
| parent | a1daf67d721adfecc298132550bc2967c67f764f (diff) | |
| download | linux-77ee09c67e051a5ebd19a53ba3945dbdc8d21b3c.tar.gz linux-77ee09c67e051a5ebd19a53ba3945dbdc8d21b3c.zip | |
ASoC: Allow CODECs to flag invalid registers
This helps CODECs with sparse register maps work better with the
register cache display interface.
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
| -rw-r--r-- | include/sound/soc.h | 1 | ||||
| -rw-r--r-- | sound/soc/soc-core.c | 3 |
2 files changed, 4 insertions, 0 deletions
diff --git a/include/sound/soc.h b/include/sound/soc.h index 756fb59772d1..55b330937260 100644 --- a/include/sound/soc.h +++ b/include/sound/soc.h @@ -385,6 +385,7 @@ struct snd_soc_codec { int (*display_register)(struct snd_soc_codec *, char *, size_t, unsigned int); int (*volatile_register)(unsigned int); + int (*readable_register)(unsigned int); hw_write_t hw_write; hw_read_t hw_read; void *reg_cache; diff --git a/sound/soc/soc-core.c b/sound/soc/soc-core.c index 5eabb7117608..fb8d7a766155 100644 --- a/sound/soc/soc-core.c +++ b/sound/soc/soc-core.c @@ -1156,6 +1156,9 @@ static ssize_t soc_codec_reg_show(struct snd_soc_codec *codec, char *buf) count += sprintf(buf, "%s registers\n", codec->name); for (i = 0; i < codec->reg_cache_size; i += step) { + if (codec->readable_register && !codec->readable_register(i)) + continue; + count += sprintf(buf + count, "%2x: ", i); if (count >= PAGE_SIZE - 1) break; |
