ASoC: format_register_str: Don't clip register values
wordsize is used as the textual width of a register address. regsize is used as the textual width of a register value. The assignments to these values were swapped. In the case of WM8903, which has 8-bit register addresses and 16-bit register values, this caused the register values to be clipped to 2 digits instead of the full 4. Signed-off-by: Stephen Warren <swarren@nvidia.com> Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
This commit is contained in:
parent
1b4610ebf3
commit
00b317a41c
|
@ -92,8 +92,8 @@ static int min_bytes_needed(unsigned long val)
|
||||||
static int format_register_str(struct snd_soc_codec *codec,
|
static int format_register_str(struct snd_soc_codec *codec,
|
||||||
unsigned int reg, char *buf, size_t len)
|
unsigned int reg, char *buf, size_t len)
|
||||||
{
|
{
|
||||||
int wordsize = codec->driver->reg_word_size * 2;
|
int wordsize = min_bytes_needed(codec->driver->reg_cache_size) * 2;
|
||||||
int regsize = min_bytes_needed(codec->driver->reg_cache_size) * 2;
|
int regsize = codec->driver->reg_word_size * 2;
|
||||||
int ret;
|
int ret;
|
||||||
char tmpbuf[len + 1];
|
char tmpbuf[len + 1];
|
||||||
char regbuf[regsize + 1];
|
char regbuf[regsize + 1];
|
||||||
|
@ -132,8 +132,8 @@ static ssize_t soc_codec_reg_show(struct snd_soc_codec *codec, char *buf,
|
||||||
size_t total = 0;
|
size_t total = 0;
|
||||||
loff_t p = 0;
|
loff_t p = 0;
|
||||||
|
|
||||||
wordsize = codec->driver->reg_word_size * 2;
|
wordsize = min_bytes_needed(codec->driver->reg_cache_size) * 2;
|
||||||
regsize = min_bytes_needed(codec->driver->reg_cache_size) * 2;
|
regsize = codec->driver->reg_word_size * 2;
|
||||||
|
|
||||||
len = wordsize + regsize + 2 + 1;
|
len = wordsize + regsize + 2 + 1;
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue