Hi Morimoto-san, On Mon, Oct 16, 2017 at 7:28 AM, Kuninori Morimoto <kuninori.morimoto...@renesas.com> wrote: > From: Kuninori Morimoto <kuninori.morimoto...@renesas.com> > > SYS/RT/Audio DMAC have both TCR/TCRB register. > Its difference is transfer counter value of read (= TCR) > or write (= TCRB). The relationship is like below. > > TCR TCRB > [SOURCE] -> [DMAC] -> [DESTINATION] > > Thus, we want to read TCRB instead of TCR for residue. > Otherwise, Sound Capture has noise after PluseAudio support > (= 07b7acb51d2 ("ASoC: rsnd: update pointer more accurate")) > > Signed-off-by: Hiroyuki Yokoyama <hiroyuki.yokoyama...@renesas.com> > [Kuninori: added detail information in log] > Signed-off-by: Kuninori Morimoto <kuninori.morimoto...@renesas.com>
Thanks for your patch! > --- a/drivers/dma/sh/rcar-dmac.c > +++ b/drivers/dma/sh/rcar-dmac.c > @@ -1310,7 +1310,7 @@ static unsigned int rcar_dmac_chan_get_residue(struct > rcar_dmac_chan *chan, > } > > /* Add the residue for the current chunk. */ > - residue += rcar_dmac_chan_read(chan, RCAR_DMATCR) << desc->xfer_shift; > + residue += rcar_dmac_chan_read(chan, RCAR_DMATCRB) << > desc->xfer_shift; Indeed, TCR indicates the counter value used for reading, while TCRB indicates the counter value used for writing. However, shouldn't the register to use depend on the DMA direction? Gr{oetje,eeting}s, Geert -- Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- ge...@linux-m68k.org In personal conversations with technical people, I call myself a hacker. But when I'm talking to journalists I just say "programmer" or something like that. -- Linus Torvalds