Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 00b317a4 authored by Stephen Warren's avatar Stephen Warren Committed by Mark Brown
Browse files

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: default avatarStephen Warren <swarren@nvidia.com>
Signed-off-by: default avatarMark Brown <broonie@opensource.wolfsonmicro.com>
parent 1b4610eb
Loading
Loading
Loading
Loading
+4 −4
Original line number Original line Diff line number Diff line
@@ -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;