At Thu, 31 Jul 2008 21:41:48 -0400, Jon Smirl wrote:
Mark, I see this patch is already in your tree. I have rewritten it a little differently to ensure that too many results can't be returned. This is in my system and tested. I had a bug too so I know the limiting it to pagesize code works.
Mark's patch was already applied. Could you re-generated your change based on that?
thanks,
Takashi
Signed-off-by: Jon Smirl jonsmirl@gmail.com
include/sound/soc.h | 1 + sound/soc/soc-core.c | 19 +++++++++++++------ 2 files changed, 14 insertions(+), 6 deletions(-)
diff --git a/include/sound/soc.h b/include/sound/soc.h index 1890d87..b95c0c2 100644 --- a/include/sound/soc.h +++ b/include/sound/soc.h @@ -410,6 +410,7 @@ struct snd_soc_codec { void *control_data; /* codec control (i2c/3wire) data */ unsigned int (*read)(struct snd_soc_codec *, unsigned int); int (*write)(struct snd_soc_codec *, unsigned int, unsigned int);
- int (*display_register)(struct snd_soc_codec *, char *, unsigned
int, 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 83f1190..55f7559 100644 --- a/sound/soc/soc-core.c +++ b/sound/soc/soc-core.c @@ -961,7 +961,7 @@ static ssize_t codec_reg_show(struct device *dev, { struct snd_soc_device *devdata = dev_get_drvdata(dev); struct snd_soc_codec *codec = devdata->codec;
- int i, step = 1, count = 0;
int i, step = 1, count;
if (!codec->reg_cache_size) return 0;
@@ -969,11 +969,18 @@ static ssize_t codec_reg_show(struct device *dev, if (codec->reg_cache_step) step = codec->reg_cache_step;
- count += sprintf(buf, "%s registers\n", codec->name);
- for (i = 0; i < codec->reg_cache_size; i += step)
count += sprintf(buf + count, "%2x: %4x\n", i,
codec->read(codec, i));
- count = sprintf(buf, "%s registers\n", codec->name);
- for (i = 0; i < codec->reg_cache_size; i += step) {
if (codec->display_register)
count += codec->display_register(codec,
buf + count, PAGE_SIZE - count, i);
else {
count += snprintf(buf + count, PAGE_SIZE - count, "%2x: ", i);
count += snprintf(buf + count, PAGE_SIZE - count, "%4x",
codec->read(codec, i));
count += snprintf(buf + count, PAGE_SIZE - count, "\n");
}
- } return count;
} static DEVICE_ATTR(codec_reg, 0444, codec_reg_show, NULL);
-- Jon Smirl jonsmirl@gmail.com