At Fri, 1 Aug 2008 10:50:37 -0400, Jon Smirl wrote: > > On 8/1/08, Mark Brown <broonie@xxxxxxxxxxxxxxxxxxxxxxxxxxx> wrote: > > On Fri, Aug 01, 2008 at 11:42:28AM +0200, Takashi Iwai wrote: > > > 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? > > > > > > In general it's easiest if ASoC patches are generated against Takashi's > > master branch - that's where ASoC gets merged and usually the diff > > between the two trees is very small. > > > > This is against Takashi's tree. I handled PAGE_LIMIT differently, > instead of breaking from the loop I just let the loop finished and > told snprintf it had zero bytes. > > Allow external display_register()'s to skip sparse registers. > > Signed-off-by: Jon Smirl <jonsmirl@xxxxxxxxx> > > --- > > include/sound/soc.h | 3 +-- > sound/soc/soc-core.c | 33 ++++++++++----------------------- > 2 files changed, 11 insertions(+), 25 deletions(-) > > diff --git a/include/sound/soc.h b/include/sound/soc.h > index a1e0357..1f4a9a2 100644 > --- a/include/sound/soc.h > +++ b/include/sound/soc.h > @@ -416,8 +416,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 *, > - size_t, unsigned int); > + int (*display_register)(struct snd_soc_codec *, char *, unsigned > int, unsigned int); This change is backward. > @@ -969,31 +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); > + count = sprintf(buf, "%s registers\n", codec->name); > for (i = 0; i < codec->reg_cache_size; i += step) { > - count += sprintf(buf + count, "%2x: ", i); > - if (count >= PAGE_SIZE - 1) > - break; > - > if (codec->display_register) > - count += codec->display_register(codec, buf + count, > - PAGE_SIZE - count, i); > - else > - count += snprintf(buf + count, PAGE_SIZE - count, > - "%4x", codec->read(codec, i)); > - > - if (count >= PAGE_SIZE - 1) > - break; > - > - count += snprintf(buf + count, PAGE_SIZE - count, "\n"); > - if (count >= PAGE_SIZE - 1) > - break; > + count += codec->display_register(codec, > + buf + count, PAGE_SIZE - count, i); Please make it fit in 80 chars like the original code. > + 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"); These can be a single snprintf(). You should add the loop break condition (count >= PAGE_SIZE - 1) somewhere, too. > + } > } > - > - /* Truncate count; min() would cause a warning */ > - if (count >= PAGE_SIZE) > - count = PAGE_SIZE - 1; > - Really safe to remove this? thanks, Takashi _______________________________________________ Alsa-devel mailing list Alsa-devel@xxxxxxxxxxxxxxxx http://mailman.alsa-project.org/mailman/listinfo/alsa-devel