* possible problem in s3c24xx-pcm.c in git-devel branch
@ 2008-11-13 14:57 christian pellegrin
2008-11-13 15:17 ` Mark Brown
2008-11-13 15:44 ` David Anders
0 siblings, 2 replies; 9+ messages in thread
From: christian pellegrin @ 2008-11-13 14:57 UTC (permalink / raw)
To: alsa-devel, Ben Dooks
Hi,
during the porting the uda134x driver to the git devel branch of ALSA
SOC I noticed a possible problem in s3c24xx-pcm.c. s3c24xx_pcm_enqueue
gained a new parameter that specifies the maximum number of periods
that can be enqueued. In s3c24xx_pcm_prepare, which is called on
play/capture start, this is limited to 1. Unfortunately on the 2410
the result of this change is that the DMA is stopped because the
autoload of the next DMA descriptor doesn't work. I copied a log at
the end of this email. Look for DMT==00 after the irq signaling the
end of the first period and the subsequent fail of DMA loading since
the channel is stopped.
Now I fixed with:
--- a/sound/soc/s3c24xx/s3c24xx-pcm.c
+++ b/sound/soc/s3c24xx/s3c24xx-pcm.c
@@ -253,7 +253,7 @@ static int s3c24xx_pcm_prepare(struct
snd_pcm_substream *substream)
prtd->dma_pos = prtd->dma_start;
/* enqueue dma buffers */
- s3c24xx_pcm_enqueue(substream, 1);
+ s3c24xx_pcm_enqueue(substream, 2);
return ret;
}
but this really could be "playing with DMA" since I'm not sure why
there is a 1 (since min_period is 2 I would guess 2 is the right
value). Anyway with this change play and capture work well.
# /opt/arm/alsa/bin/aplay /mp3z/prova.wav
s3c24xx-pcm: Entered s3c24xx_pcm_open
s3c24xx_uda134x_startup 0
31250, 132031, 66015, 44010, 33007, 26406, 22005, 18861, 16503,
14670, 13203, 12002, 11002, 10156, 9430, 8802, 8251, 7766, 7335, 6949,
6601, 6287, 6001, 5740, 5501, 5281, 5078, 4890, 4715, 4552, 4401,
4259, 4125, 46875, 198046, 99023, 66015, 49511, 39609, 33007, 28292,
24755, 22005, 19804, 18004, 16503, 15234, 14146, 13203, 12377, 11649,
11002, 10423, 9902, 9430, 9002, 8610, 8251, 7921, 7617, 7335, 7073,
6829, 6601, 6388, 6188,
Playing WAVE '/mp3z/prova.wav' : Signed 16 bit Little Endian, Rate 8000 Hz, Mono
s3c24xx_uda134x_hw_params desired rate 8000, 58
s3c24xx_uda134x_hw_params will use: 256FS PCLK 24 sysclk 2048000 err 79
uda134x_set_dai_fmt fmt: 00003000
s3c24xx-i2s: Entered s3c24xx_i2s_set_fmt
s3c24xx-i2s: hw_params r: IISMOD: 9
s3c24xx-i2s: hw_params w: IISMOD: 9
s3c24xx-i2s: Entered s3c24xx_i2s_set_sysclk
s3c24xx-i2s: Entered s3c24xx_i2s_set_clkdiv
s3c24xx-i2s: Entered s3c24xx_i2s_set_clkdiv
s3c24xx-i2s: Entered s3c24xx_i2s_set_clkdiv
uda134x_set_dai_sysclk clk_id: 0, freq: 2048000, dir: 1
uda134x_hw_params sysclk: 2048000, rate:8000
uda134x_hw_params dai_fmt: 12288, params_format:2
uda134x_write reg: 08, value:20
s3c24xx-i2s: Entered s3c24xx_i2s_hw_params
s3c24xx-i2s: hw_params r: IISMOD: 9
s3c24xx-i2s: hw_params w: IISMOD: 9
s3c24xx-pcm: Entered s3c24xx_pcm_hw_params
s3c24xx-pcm: params bf0673f4, client bf067404, channel 10
dma10: s3c2410_request_dma: client=I2S PCM Stereo out, dev=00000000
mapped channel 10 to 2
dma2: s3c2410_dma_request:755: ls=0, cur=c326b020, 00000000 c326b020
dma2: s3c2410_dma_request:755: DCSRC=332a05c4, DISRC=332a0000,
DSTAT=00000000 DMT=04, DCON=a0d00000
dma10: s3c2410_dma_request : requesting irq 35
s3c2410_dma_request: channel initialised, c044fdd4
s3c2410_dma_set_buffdone_fn: chan=c044fdd4, callback rtn=bf05d108
s3c24xx-pcm: Entered s3c24xx_pcm_mmap
s3c24xx-pcm: Entered s3c24xx_pcm_prepare
s3c2410_dma_devconfig: source=1, hwcfg=00000003, devaddr=55000010
s3c2410_dma_devconfig: mem source, devaddr=55000010, hwcfg=3
s3c2410_dma_config: chan=10, xfer_unit=2, dcon=80000000
s3c2410_dma_config: Initial dcon is 80000000
s3c2410_dma_config: New dcon is 80000000
s3c2410_dma_config: dcon now a0900000
s3c2410_dma_flush: chan c044fdd4 (2)
dma2: s3c2410_dma_flush:912: ls=0, cur=c326b020, 00000000 c326b020
dma2: s3c2410_dma_flush:912: DCSRC=332a05c4, DISRC=332a0000,
DSTAT=00000000 DMT=04, DCON=a0d00000
s3c2410_dma_flush: free buffer c326b020, next 00000000
s3c24xx-pcm: Entered s3c24xx_audio_buffdone
dma2: s3c2410_dma_flush:939: DCSRC=332a05c4, DISRC=332a0000,
DSTAT=00000000 DMT=04, DCON=a0d00000
dma2: s3c2410_dma_flush:954: DCSRC=332a05c4, DISRC=332a0000,
DSTAT=00000000 DMT=04, DCON=a0d00000
s3c24xx-pcm: Entered s3c24xx_pcm_enqueue dma_max 1
s3c24xx-pcm: dma_loaded: 0 pos: 332a0000 len: 4096 dma_max: 1 dma_end: 332a3e80
s3c2410_dma_enqueue: id=c31fa300, data=332a0000, size=4096
s3c2410_dma_enqueue: buffer c326b020 queued onto empty channel
s3c24xx-pcm: ret 0 period 4096
uda134x_mute mute: 0
uda134x_write reg: 0C, value:80
s3c24xx-pcm: Entered s3c24xx_pcm_trigger
s3c2410_start_dma: channel=2
s3c2410_chan_loadbuffer: loading buff c326b020 (0x332a0000,0x001000)
load_state is none, checking for noreload (next=00000000)
dma2: s3c2410_dma_start:366: ls=1, cur=c326b020, 00000000 c326b020
dma2: s3c2410_dma_start:366: DCSRC=332a05c4, DISRC=332a0000,
DSTAT=00000000 DMT=04, DCON=a0d00800
dma2: 00000002 to DMASKTRIG
dma2: s3c2410_dma_start:394: ls=1, cur=c326b020, 00000000 c326b020
dma2: s3c2410_dma_start:394: DCSRC=332a05c4, DISRC=332a0000,
DSTAT=00000000 DMT=02, DCON=a0d00800
dma2: s3c2410_dma_started:967: ls=1, cur=c326b020, 00000000 c326b020
dma2: s3c2410_dma_started:967: DCSRC=332a05c4, DISRC=332a0000,
DSTAT=00000000 DMT=02, DCON=a0d00800
s3c24xx-i2s: Entered s3c24xx_i2s_trigger
s3c24xx-i2s: Entered s3c24xx_snd_is_clkmaster
s3c24xx-i2s: Entered s3c24xx_snd_txctrl
s3c24xx-i2s: r: IISCON: 10f IISMOD: 9 IISFCON: 0
s3c24xx-i2s: w: IISCON: 127 IISMOD: 89 IISFCON: a000
s3c24xx-pcm: Entered s3c24xx_pcm_pointer
s3c24xx-pcm: Pointer 332a0158 55000010
dma2: s3c2410_dma_irq:608: ls=1, cur=c326b020, 00000000 c326b020
dma2: s3c2410_dma_irq:608: DCSRC=332a1000, DISRC=332a0000,
DSTAT=00000000 DMT=00, DCON=a0d00800
s3c24xx-pcm: Entered s3c24xx_audio_buffdone
s3c24xx-pcm: Entered s3c24xx_pcm_pointer
s3c24xx-pcm: Pointer 332a1000 55000010
s3c24xx-pcm: Entered s3c24xx_pcm_enqueue dma_max 0
s3c24xx-pcm: dma_loaded: 0 pos: 332a1000 len: 4096 dma_max: 2 dma_end: 332a3e80
s3c2410_dma_enqueue: id=c31fa300, data=332a1000, size=4096
s3c2410_dma_enqueue: buffer c326b040 queued onto empty channel
s3c2410_chan_loadbuffer: loading buff c326b040 (0x332a1000,0x001000)
load_state is none, checking for noreload (next=00000000)
s3c24xx-pcm: ret 0 period 4096
s3c24xx-pcm: dma_loaded: 1 pos: 332a2000 len: 4096 dma_max: 2 dma_end: 332a3e80
s3c2410_dma_enqueue: id=c31fa300, data=332a2000, size=4096
dma2: s3c2410_dma_enqueue: buffer c326b000 queued onto non-empty channel
dma2: loadbuffer:timeout loading buffer
dma2: s3c2410_dma_enqueue:517: ls=1, cur=c326b040, c326b000 c326b000
dma2: s3c2410_dma_enqueue:517: DCSRC=332a1000, DISRC=332a1000,
DSTAT=00000000 DMT=00, DCON=a0d00800
s3c24xx-pcm: ret -22 period 4096
dma2: timeout waiting for load (s3c2410_dma_irq)
s3c24xx-pcm: Entered s3c24xx_pcm_pointer
s3c24xx-pcm: Pointer 332a1000 55000010
s3c24xx-pcm: Entered s3c24xx_pcm_pointer
s3c24xx-pcm: Pointer 332a1000 55000010
^CAborted by signals3c24xx-pcm: Entered s3c24xx_pcm_trigger
s3c2410_dma_dostop:
dma2: s3c2410_dma_dostop:857: ls=1, cur=c326b040, c326b000 c326b000
dma2: s3c2410_dma_dostop:857: DCSRC=332a1000, DISRC=332a1000,
DSTAT=00000000 DMT=00, DCON=a0d00800
s3c24xx-i2s: Entered s3c24xx_i2s_trigger
s3c24xx-i2s: Entered s3c24xx_snd_txctrl
s3c24xx-i2s: r: IISCON: 127 IISMOD: 89 IISFCON: a000
--
Christian Pellegrin, see http://www.evolware.org/chri/
"Real Programmers don't play tennis, or any other sport which requires
you to change clothes. Mountain climbing is OK, and Real Programmers
wear their climbing boots to work in case a mountain should suddenly
spring up in the middle of the computer room."
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: possible problem in s3c24xx-pcm.c in git-devel branch
2008-11-13 14:57 possible problem in s3c24xx-pcm.c in git-devel branch christian pellegrin
@ 2008-11-13 15:17 ` Mark Brown
2008-11-13 15:40 ` christian pellegrin
2008-11-13 15:44 ` David Anders
1 sibling, 1 reply; 9+ messages in thread
From: Mark Brown @ 2008-11-13 15:17 UTC (permalink / raw)
To: christian pellegrin; +Cc: David Anders, alsa-devel, Ben Dooks
On Thu, Nov 13, 2008 at 03:57:08PM +0100, christian pellegrin wrote:
> during the porting the uda134x driver to the git devel branch of ALSA
> SOC I noticed a possible problem in s3c24xx-pcm.c. s3c24xx_pcm_enqueue
> gained a new parameter that specifies the maximum number of periods
> that can be enqueued. In s3c24xx_pcm_prepare, which is called on
> play/capture start, this is limited to 1. Unfortunately on the 2410
> the result of this change is that the DMA is stopped because the
> autoload of the next DMA descriptor doesn't work. I copied a log at
> the end of this email. Look for DMT==00 after the irq signaling the
> end of the first period and the subsequent fail of DMA loading since
> the channel is stopped.
CCing in Dave Anders who wrote that patch (though the problem it fixes
was reported previously). I can't help but think that this ought to be
being dealt with within the DMA code, it all feels rather fragile.
> Now I fixed with:
> --- a/sound/soc/s3c24xx/s3c24xx-pcm.c
> +++ b/sound/soc/s3c24xx/s3c24xx-pcm.c
> @@ -253,7 +253,7 @@ static int s3c24xx_pcm_prepare(struct
> snd_pcm_substream *substream)
> prtd->dma_pos = prtd->dma_start;
>
> /* enqueue dma buffers */
> - s3c24xx_pcm_enqueue(substream, 1);
> + s3c24xx_pcm_enqueue(substream, 2);
>
> return ret;
> }
>
> but this really could be "playing with DMA" since I'm not sure why
> there is a 1 (since min_period is 2 I would guess 2 is the right
> value). Anyway with this change play and capture work well.
See the commit log - the underlying DMA code restricts the number of
buffers that can be queued up prior to the start of DMA.
>
> # /opt/arm/alsa/bin/aplay /mp3z/prova.wav
> s3c24xx-pcm: Entered s3c24xx_pcm_open
> s3c24xx_uda134x_startup 0
> 31250, 132031, 66015, 44010, 33007, 26406, 22005, 18861, 16503,
> 14670, 13203, 12002, 11002, 10156, 9430, 8802, 8251, 7766, 7335, 6949,
> 6601, 6287, 6001, 5740, 5501, 5281, 5078, 4890, 4715, 4552, 4401,
> 4259, 4125, 46875, 198046, 99023, 66015, 49511, 39609, 33007, 28292,
> 24755, 22005, 19804, 18004, 16503, 15234, 14146, 13203, 12377, 11649,
> 11002, 10423, 9902, 9430, 9002, 8610, 8251, 7921, 7617, 7335, 7073,
> 6829, 6601, 6388, 6188,
> Playing WAVE '/mp3z/prova.wav' : Signed 16 bit Little Endian, Rate 8000 Hz, Mono
> s3c24xx_uda134x_hw_params desired rate 8000, 58
> s3c24xx_uda134x_hw_params will use: 256FS PCLK 24 sysclk 2048000 err 79
> uda134x_set_dai_fmt fmt: 00003000
> s3c24xx-i2s: Entered s3c24xx_i2s_set_fmt
> s3c24xx-i2s: hw_params r: IISMOD: 9
> s3c24xx-i2s: hw_params w: IISMOD: 9
> s3c24xx-i2s: Entered s3c24xx_i2s_set_sysclk
> s3c24xx-i2s: Entered s3c24xx_i2s_set_clkdiv
> s3c24xx-i2s: Entered s3c24xx_i2s_set_clkdiv
> s3c24xx-i2s: Entered s3c24xx_i2s_set_clkdiv
> uda134x_set_dai_sysclk clk_id: 0, freq: 2048000, dir: 1
> uda134x_hw_params sysclk: 2048000, rate:8000
> uda134x_hw_params dai_fmt: 12288, params_format:2
> uda134x_write reg: 08, value:20
> s3c24xx-i2s: Entered s3c24xx_i2s_hw_params
> s3c24xx-i2s: hw_params r: IISMOD: 9
> s3c24xx-i2s: hw_params w: IISMOD: 9
> s3c24xx-pcm: Entered s3c24xx_pcm_hw_params
> s3c24xx-pcm: params bf0673f4, client bf067404, channel 10
> dma10: s3c2410_request_dma: client=I2S PCM Stereo out, dev=00000000
> mapped channel 10 to 2
> dma2: s3c2410_dma_request:755: ls=0, cur=c326b020, 00000000 c326b020
> dma2: s3c2410_dma_request:755: DCSRC=332a05c4, DISRC=332a0000,
> DSTAT=00000000 DMT=04, DCON=a0d00000
> dma10: s3c2410_dma_request : requesting irq 35
> s3c2410_dma_request: channel initialised, c044fdd4
> s3c2410_dma_set_buffdone_fn: chan=c044fdd4, callback rtn=bf05d108
> s3c24xx-pcm: Entered s3c24xx_pcm_mmap
> s3c24xx-pcm: Entered s3c24xx_pcm_prepare
> s3c2410_dma_devconfig: source=1, hwcfg=00000003, devaddr=55000010
> s3c2410_dma_devconfig: mem source, devaddr=55000010, hwcfg=3
> s3c2410_dma_config: chan=10, xfer_unit=2, dcon=80000000
> s3c2410_dma_config: Initial dcon is 80000000
> s3c2410_dma_config: New dcon is 80000000
> s3c2410_dma_config: dcon now a0900000
> s3c2410_dma_flush: chan c044fdd4 (2)
> dma2: s3c2410_dma_flush:912: ls=0, cur=c326b020, 00000000 c326b020
> dma2: s3c2410_dma_flush:912: DCSRC=332a05c4, DISRC=332a0000,
> DSTAT=00000000 DMT=04, DCON=a0d00000
> s3c2410_dma_flush: free buffer c326b020, next 00000000
> s3c24xx-pcm: Entered s3c24xx_audio_buffdone
> dma2: s3c2410_dma_flush:939: DCSRC=332a05c4, DISRC=332a0000,
> DSTAT=00000000 DMT=04, DCON=a0d00000
> dma2: s3c2410_dma_flush:954: DCSRC=332a05c4, DISRC=332a0000,
> DSTAT=00000000 DMT=04, DCON=a0d00000
> s3c24xx-pcm: Entered s3c24xx_pcm_enqueue dma_max 1
> s3c24xx-pcm: dma_loaded: 0 pos: 332a0000 len: 4096 dma_max: 1 dma_end: 332a3e80
> s3c2410_dma_enqueue: id=c31fa300, data=332a0000, size=4096
> s3c2410_dma_enqueue: buffer c326b020 queued onto empty channel
> s3c24xx-pcm: ret 0 period 4096
> uda134x_mute mute: 0
> uda134x_write reg: 0C, value:80
> s3c24xx-pcm: Entered s3c24xx_pcm_trigger
> s3c2410_start_dma: channel=2
> s3c2410_chan_loadbuffer: loading buff c326b020 (0x332a0000,0x001000)
> load_state is none, checking for noreload (next=00000000)
> dma2: s3c2410_dma_start:366: ls=1, cur=c326b020, 00000000 c326b020
> dma2: s3c2410_dma_start:366: DCSRC=332a05c4, DISRC=332a0000,
> DSTAT=00000000 DMT=04, DCON=a0d00800
> dma2: 00000002 to DMASKTRIG
> dma2: s3c2410_dma_start:394: ls=1, cur=c326b020, 00000000 c326b020
> dma2: s3c2410_dma_start:394: DCSRC=332a05c4, DISRC=332a0000,
> DSTAT=00000000 DMT=02, DCON=a0d00800
> dma2: s3c2410_dma_started:967: ls=1, cur=c326b020, 00000000 c326b020
> dma2: s3c2410_dma_started:967: DCSRC=332a05c4, DISRC=332a0000,
> DSTAT=00000000 DMT=02, DCON=a0d00800
> s3c24xx-i2s: Entered s3c24xx_i2s_trigger
> s3c24xx-i2s: Entered s3c24xx_snd_is_clkmaster
> s3c24xx-i2s: Entered s3c24xx_snd_txctrl
> s3c24xx-i2s: r: IISCON: 10f IISMOD: 9 IISFCON: 0
> s3c24xx-i2s: w: IISCON: 127 IISMOD: 89 IISFCON: a000
> s3c24xx-pcm: Entered s3c24xx_pcm_pointer
> s3c24xx-pcm: Pointer 332a0158 55000010
> dma2: s3c2410_dma_irq:608: ls=1, cur=c326b020, 00000000 c326b020
> dma2: s3c2410_dma_irq:608: DCSRC=332a1000, DISRC=332a0000,
> DSTAT=00000000 DMT=00, DCON=a0d00800
> s3c24xx-pcm: Entered s3c24xx_audio_buffdone
> s3c24xx-pcm: Entered s3c24xx_pcm_pointer
> s3c24xx-pcm: Pointer 332a1000 55000010
> s3c24xx-pcm: Entered s3c24xx_pcm_enqueue dma_max 0
> s3c24xx-pcm: dma_loaded: 0 pos: 332a1000 len: 4096 dma_max: 2 dma_end: 332a3e80
> s3c2410_dma_enqueue: id=c31fa300, data=332a1000, size=4096
> s3c2410_dma_enqueue: buffer c326b040 queued onto empty channel
> s3c2410_chan_loadbuffer: loading buff c326b040 (0x332a1000,0x001000)
> load_state is none, checking for noreload (next=00000000)
> s3c24xx-pcm: ret 0 period 4096
> s3c24xx-pcm: dma_loaded: 1 pos: 332a2000 len: 4096 dma_max: 2 dma_end: 332a3e80
> s3c2410_dma_enqueue: id=c31fa300, data=332a2000, size=4096
> dma2: s3c2410_dma_enqueue: buffer c326b000 queued onto non-empty channel
> dma2: loadbuffer:timeout loading buffer
> dma2: s3c2410_dma_enqueue:517: ls=1, cur=c326b040, c326b000 c326b000
> dma2: s3c2410_dma_enqueue:517: DCSRC=332a1000, DISRC=332a1000,
> DSTAT=00000000 DMT=00, DCON=a0d00800
> s3c24xx-pcm: ret -22 period 4096
> dma2: timeout waiting for load (s3c2410_dma_irq)
> s3c24xx-pcm: Entered s3c24xx_pcm_pointer
> s3c24xx-pcm: Pointer 332a1000 55000010
> s3c24xx-pcm: Entered s3c24xx_pcm_pointer
> s3c24xx-pcm: Pointer 332a1000 55000010
> ^CAborted by signals3c24xx-pcm: Entered s3c24xx_pcm_trigger
> s3c2410_dma_dostop:
> dma2: s3c2410_dma_dostop:857: ls=1, cur=c326b040, c326b000 c326b000
> dma2: s3c2410_dma_dostop:857: DCSRC=332a1000, DISRC=332a1000,
> DSTAT=00000000 DMT=00, DCON=a0d00800
> s3c24xx-i2s: Entered s3c24xx_i2s_trigger
> s3c24xx-i2s: Entered s3c24xx_snd_txctrl
> s3c24xx-i2s: r: IISCON: 127 IISMOD: 89 IISFCON: a000
>
>
> --
> Christian Pellegrin, see http://www.evolware.org/chri/
> "Real Programmers don't play tennis, or any other sport which requires
> you to change clothes. Mountain climbing is OK, and Real Programmers
> wear their climbing boots to work in case a mountain should suddenly
> spring up in the middle of the computer room."
> _______________________________________________
> Alsa-devel mailing list
> Alsa-devel@alsa-project.org
> http://mailman.alsa-project.org/mailman/listinfo/alsa-devel
>
--
"You grabbed my hand and we fell into it, like a daydream - or a fever."
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: possible problem in s3c24xx-pcm.c in git-devel branch
2008-11-13 15:17 ` Mark Brown
@ 2008-11-13 15:40 ` christian pellegrin
2008-11-13 16:09 ` Mark Brown
0 siblings, 1 reply; 9+ messages in thread
From: christian pellegrin @ 2008-11-13 15:40 UTC (permalink / raw)
To: Mark Brown; +Cc: David Anders, alsa-devel, Ben Dooks
On Thu, Nov 13, 2008 at 4:17 PM, Mark Brown <broonie@sirena.org.uk> wrote:
> On Thu, Nov 13, 2008 at 03:57:08PM +0100, christian pellegrin wrote:
>
>>
>> but this really could be "playing with DMA" since I'm not sure why
>> there is a 1 (since min_period is 2 I would guess 2 is the right
>> value). Anyway with this change play and capture work well.
>
> See the commit log - the underlying DMA code restricts the number of
> buffers that can be queued up prior to the start of DMA.
>
>>
AFAIK it's limited to 2 transfers, one loaded and one running. It
could beneficial to have more of them (so the DMA doesn't stop if one
interrupt is delayed for too much time). But I don't know if it's so
critical. A period (4k) with cd quality sound takes 23 ms to be
played. An embedded system not responding to irqs for all this time
probably has worse issues.
--
Christian Pellegrin, see http://www.evolware.org/chri/
"Real Programmers don't play tennis, or any other sport which requires
you to change clothes. Mountain climbing is OK, and Real Programmers
wear their climbing boots to work in case a mountain should suddenly
spring up in the middle of the computer room."
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: possible problem in s3c24xx-pcm.c in git-devel branch
2008-11-13 14:57 possible problem in s3c24xx-pcm.c in git-devel branch christian pellegrin
2008-11-13 15:17 ` Mark Brown
@ 2008-11-13 15:44 ` David Anders
2008-11-13 16:02 ` christian pellegrin
1 sibling, 1 reply; 9+ messages in thread
From: David Anders @ 2008-11-13 15:44 UTC (permalink / raw)
To: alsa-devel; +Cc: christian pellegrin, Mark Brown, Ben Dooks
Christian,
the enqueue patch i submitted seems to have fixed the issue on several s3c2440 based platforms. i also tested with a s3c2410 and wm8750 codec. i'll re-setup my s3c2410 platform and do some tests. in the mean time, would it be possible for you to provide me a debug log with the enqueue set as:
s3c24xx_pcm_enqueue(substream, 0);
the zero value indicates to use whatever the max dma_limit value is. i agree with Mark, that there is some core DMA issue that needs to be resolved, i'm just not sure what it is as of yet. any feedback on the issue is greatly appreciated.
thanks
Dave Anders
AML
--- On Thu, 11/13/08, christian pellegrin <chripell@gmail.com> wrote:
> From: christian pellegrin <chripell@gmail.com>
> Subject: [alsa-devel] possible problem in s3c24xx-pcm.c in git-devel branch
> To: alsa-devel@alsa-project.org, "Ben Dooks" <ben-linux@fluff.org>
> Date: Thursday, November 13, 2008, 8:57 AM
> Hi,
>
> during the porting the uda134x driver to the git devel
> branch of ALSA
> SOC I noticed a possible problem in s3c24xx-pcm.c.
> s3c24xx_pcm_enqueue
> gained a new parameter that specifies the maximum number of
> periods
> that can be enqueued. In s3c24xx_pcm_prepare, which is
> called on
> play/capture start, this is limited to 1. Unfortunately on
> the 2410
> the result of this change is that the DMA is stopped
> because the
> autoload of the next DMA descriptor doesn't work. I
> copied a log at
> the end of this email. Look for DMT==00 after the irq
> signaling the
> end of the first period and the subsequent fail of DMA
> loading since
> the channel is stopped.
>
> Now I fixed with:
>
> --- a/sound/soc/s3c24xx/s3c24xx-pcm.c
> +++ b/sound/soc/s3c24xx/s3c24xx-pcm.c
> @@ -253,7 +253,7 @@ static int s3c24xx_pcm_prepare(struct
> snd_pcm_substream *substream)
> prtd->dma_pos = prtd->dma_start;
>
> /* enqueue dma buffers */
> - s3c24xx_pcm_enqueue(substream, 1);
> + s3c24xx_pcm_enqueue(substream, 2);
>
> return ret;
> }
>
> but this really could be "playing with DMA" since
> I'm not sure why
> there is a 1 (since min_period is 2 I would guess 2 is the
> right
> value). Anyway with this change play and capture work well.
>
> # /opt/arm/alsa/bin/aplay /mp3z/prova.wav
> s3c24xx-pcm: Entered s3c24xx_pcm_open
> s3c24xx_uda134x_startup 0
> 31250, 132031, 66015, 44010, 33007, 26406, 22005, 18861,
> 16503,
> 14670, 13203, 12002, 11002, 10156, 9430, 8802, 8251, 7766,
> 7335, 6949,
> 6601, 6287, 6001, 5740, 5501, 5281, 5078, 4890, 4715, 4552,
> 4401,
> 4259, 4125, 46875, 198046, 99023, 66015, 49511, 39609,
> 33007, 28292,
> 24755, 22005, 19804, 18004, 16503, 15234, 14146, 13203,
> 12377, 11649,
> 11002, 10423, 9902, 9430, 9002, 8610, 8251, 7921, 7617,
> 7335, 7073,
> 6829, 6601, 6388, 6188,
> Playing WAVE '/mp3z/prova.wav' : Signed 16 bit
> Little Endian, Rate 8000 Hz, Mono
> s3c24xx_uda134x_hw_params desired rate 8000, 58
> s3c24xx_uda134x_hw_params will use: 256FS PCLK 24 sysclk
> 2048000 err 79
> uda134x_set_dai_fmt fmt: 00003000
> s3c24xx-i2s: Entered s3c24xx_i2s_set_fmt
> s3c24xx-i2s: hw_params r: IISMOD: 9
> s3c24xx-i2s: hw_params w: IISMOD: 9
> s3c24xx-i2s: Entered s3c24xx_i2s_set_sysclk
> s3c24xx-i2s: Entered s3c24xx_i2s_set_clkdiv
> s3c24xx-i2s: Entered s3c24xx_i2s_set_clkdiv
> s3c24xx-i2s: Entered s3c24xx_i2s_set_clkdiv
> uda134x_set_dai_sysclk clk_id: 0, freq: 2048000, dir: 1
> uda134x_hw_params sysclk: 2048000, rate:8000
> uda134x_hw_params dai_fmt: 12288, params_format:2
> uda134x_write reg: 08, value:20
> s3c24xx-i2s: Entered s3c24xx_i2s_hw_params
> s3c24xx-i2s: hw_params r: IISMOD: 9
> s3c24xx-i2s: hw_params w: IISMOD: 9
> s3c24xx-pcm: Entered s3c24xx_pcm_hw_params
> s3c24xx-pcm: params bf0673f4, client bf067404, channel 10
> dma10: s3c2410_request_dma: client=I2S PCM Stereo out,
> dev=00000000
> mapped channel 10 to 2
> dma2: s3c2410_dma_request:755: ls=0, cur=c326b020, 00000000
> c326b020
> dma2: s3c2410_dma_request:755: DCSRC=332a05c4,
> DISRC=332a0000,
> DSTAT=00000000 DMT=04, DCON=a0d00000
> dma10: s3c2410_dma_request : requesting irq 35
> s3c2410_dma_request: channel initialised, c044fdd4
> s3c2410_dma_set_buffdone_fn: chan=c044fdd4, callback
> rtn=bf05d108
> s3c24xx-pcm: Entered s3c24xx_pcm_mmap
> s3c24xx-pcm: Entered s3c24xx_pcm_prepare
> s3c2410_dma_devconfig: source=1, hwcfg=00000003,
> devaddr=55000010
> s3c2410_dma_devconfig: mem source, devaddr=55000010,
> hwcfg=3
> s3c2410_dma_config: chan=10, xfer_unit=2, dcon=80000000
> s3c2410_dma_config: Initial dcon is 80000000
> s3c2410_dma_config: New dcon is 80000000
> s3c2410_dma_config: dcon now a0900000
> s3c2410_dma_flush: chan c044fdd4 (2)
> dma2: s3c2410_dma_flush:912: ls=0, cur=c326b020, 00000000
> c326b020
> dma2: s3c2410_dma_flush:912: DCSRC=332a05c4,
> DISRC=332a0000,
> DSTAT=00000000 DMT=04, DCON=a0d00000
> s3c2410_dma_flush: free buffer c326b020, next 00000000
> s3c24xx-pcm: Entered s3c24xx_audio_buffdone
> dma2: s3c2410_dma_flush:939: DCSRC=332a05c4,
> DISRC=332a0000,
> DSTAT=00000000 DMT=04, DCON=a0d00000
> dma2: s3c2410_dma_flush:954: DCSRC=332a05c4,
> DISRC=332a0000,
> DSTAT=00000000 DMT=04, DCON=a0d00000
> s3c24xx-pcm: Entered s3c24xx_pcm_enqueue dma_max 1
> s3c24xx-pcm: dma_loaded: 0 pos: 332a0000 len: 4096 dma_max:
> 1 dma_end: 332a3e80
> s3c2410_dma_enqueue: id=c31fa300, data=332a0000, size=4096
> s3c2410_dma_enqueue: buffer c326b020 queued onto empty
> channel
> s3c24xx-pcm: ret 0 period 4096
> uda134x_mute mute: 0
> uda134x_write reg: 0C, value:80
> s3c24xx-pcm: Entered s3c24xx_pcm_trigger
> s3c2410_start_dma: channel=2
> s3c2410_chan_loadbuffer: loading buff c326b020
> (0x332a0000,0x001000)
> load_state is none, checking for noreload (next=00000000)
> dma2: s3c2410_dma_start:366: ls=1, cur=c326b020, 00000000
> c326b020
> dma2: s3c2410_dma_start:366: DCSRC=332a05c4,
> DISRC=332a0000,
> DSTAT=00000000 DMT=04, DCON=a0d00800
> dma2: 00000002 to DMASKTRIG
> dma2: s3c2410_dma_start:394: ls=1, cur=c326b020, 00000000
> c326b020
> dma2: s3c2410_dma_start:394: DCSRC=332a05c4,
> DISRC=332a0000,
> DSTAT=00000000 DMT=02, DCON=a0d00800
> dma2: s3c2410_dma_started:967: ls=1, cur=c326b020, 00000000
> c326b020
> dma2: s3c2410_dma_started:967: DCSRC=332a05c4,
> DISRC=332a0000,
> DSTAT=00000000 DMT=02, DCON=a0d00800
> s3c24xx-i2s: Entered s3c24xx_i2s_trigger
> s3c24xx-i2s: Entered s3c24xx_snd_is_clkmaster
> s3c24xx-i2s: Entered s3c24xx_snd_txctrl
> s3c24xx-i2s: r: IISCON: 10f IISMOD: 9 IISFCON: 0
> s3c24xx-i2s: w: IISCON: 127 IISMOD: 89 IISFCON: a000
> s3c24xx-pcm: Entered s3c24xx_pcm_pointer
> s3c24xx-pcm: Pointer 332a0158 55000010
> dma2: s3c2410_dma_irq:608: ls=1, cur=c326b020, 00000000
> c326b020
> dma2: s3c2410_dma_irq:608: DCSRC=332a1000, DISRC=332a0000,
> DSTAT=00000000 DMT=00, DCON=a0d00800
> s3c24xx-pcm: Entered s3c24xx_audio_buffdone
> s3c24xx-pcm: Entered s3c24xx_pcm_pointer
> s3c24xx-pcm: Pointer 332a1000 55000010
> s3c24xx-pcm: Entered s3c24xx_pcm_enqueue dma_max 0
> s3c24xx-pcm: dma_loaded: 0 pos: 332a1000 len: 4096 dma_max:
> 2 dma_end: 332a3e80
> s3c2410_dma_enqueue: id=c31fa300, data=332a1000, size=4096
> s3c2410_dma_enqueue: buffer c326b040 queued onto empty
> channel
> s3c2410_chan_loadbuffer: loading buff c326b040
> (0x332a1000,0x001000)
> load_state is none, checking for noreload (next=00000000)
> s3c24xx-pcm: ret 0 period 4096
> s3c24xx-pcm: dma_loaded: 1 pos: 332a2000 len: 4096 dma_max:
> 2 dma_end: 332a3e80
> s3c2410_dma_enqueue: id=c31fa300, data=332a2000, size=4096
> dma2: s3c2410_dma_enqueue: buffer c326b000 queued onto
> non-empty channel
> dma2: loadbuffer:timeout loading buffer
> dma2: s3c2410_dma_enqueue:517: ls=1, cur=c326b040, c326b000
> c326b000
> dma2: s3c2410_dma_enqueue:517: DCSRC=332a1000,
> DISRC=332a1000,
> DSTAT=00000000 DMT=00, DCON=a0d00800
> s3c24xx-pcm: ret -22 period 4096
> dma2: timeout waiting for load (s3c2410_dma_irq)
> s3c24xx-pcm: Entered s3c24xx_pcm_pointer
> s3c24xx-pcm: Pointer 332a1000 55000010
> s3c24xx-pcm: Entered s3c24xx_pcm_pointer
> s3c24xx-pcm: Pointer 332a1000 55000010
> ^CAborted by signals3c24xx-pcm: Entered s3c24xx_pcm_trigger
> s3c2410_dma_dostop:
> dma2: s3c2410_dma_dostop:857: ls=1, cur=c326b040, c326b000
> c326b000
> dma2: s3c2410_dma_dostop:857: DCSRC=332a1000,
> DISRC=332a1000,
> DSTAT=00000000 DMT=00, DCON=a0d00800
> s3c24xx-i2s: Entered s3c24xx_i2s_trigger
> s3c24xx-i2s: Entered s3c24xx_snd_txctrl
> s3c24xx-i2s: r: IISCON: 127 IISMOD: 89 IISFCON: a000
>
>
> --
> Christian Pellegrin, see http://www.evolware.org/chri/
> "Real Programmers don't play tennis, or any other
> sport which requires
> you to change clothes. Mountain climbing is OK, and Real
> Programmers
> wear their climbing boots to work in case a mountain should
> suddenly
> spring up in the middle of the computer room."
> _______________________________________________
> Alsa-devel mailing list
> Alsa-devel@alsa-project.org
> http://mailman.alsa-project.org/mailman/listinfo/alsa-devel
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: possible problem in s3c24xx-pcm.c in git-devel branch
2008-11-13 15:44 ` David Anders
@ 2008-11-13 16:02 ` christian pellegrin
0 siblings, 0 replies; 9+ messages in thread
From: christian pellegrin @ 2008-11-13 16:02 UTC (permalink / raw)
To: dave123_aml; +Cc: alsa-devel, Mark Brown, Ben Dooks
On Thu, Nov 13, 2008 at 4:44 PM, David Anders <dave123_aml@yahoo.com> wrote:
> Christian,
>
Hi,
> the enqueue patch i submitted seems to have fixed the issue on several s3c2440 based platforms. i also tested with a s3c2410 and wm8750 codec. i'll re-setup my s3c2410 platform and do some tests. in the mean time, would it be possible for you to provide me a debug log with the enqueue set as:
>
> s3c24xx_pcm_enqueue(substream, 0);
>
I've copied it at the end of this mail. I have a smdk2410 if you need
some testing of patches. In a short time I should have a custom system
based on s3c2440 and a uda1341 codec.
> the zero value indicates to use whatever the max dma_limit value is. i agree with Mark, that there is some core DMA issue that needs to be resolved, i'm just not sure what it is as of yet. any feedback on the issue is greatly appreciated.
what issues are you seeing? The dma code is quite complicated but I
haven't experienced problems yet.
# /opt/arm/alsa/bin/aplay /mp3z/prova.wav
s3c24xx-pcm: Entered s3c24xx_pcm_open
Playing WAVE '/mp3z/prova.wav' : Signed 16 bit Little Endian, Rate 8000 Hz, Mono
s3c24xx-i2s: Entered s3c24xx_i2s_set_fmt
s3c24xx-i2s: hw_params r: IISMOD: 9
s3c24xx-i2s: hw_params w: IISMOD: 9
s3c24xx-i2s: Entered s3c24xx_i2s_set_sysclk
s3c24xx-i2s: Entered s3c24xx_i2s_set_clkdiv
s3c24xx-i2s: Entered s3c24xx_i2s_set_clkdiv
s3c24xx-i2s: Entered s3c24xx_i2s_set_clkdiv
s3c24xx-i2s: Entered s3c24xx_i2s_hw_params
s3c24xx-i2s: hw_params r: IISMOD: 9
s3c24xx-i2s: hw_params w: IISMOD: 9
s3c24xx-pcm: Entered s3c24xx_pcm_hw_params
s3c24xx-pcm: params bf06743c, client bf06744c, channel 10
dma10: s3c2410_request_dma: client=I2S PCM Stereo out, dev=00000000
mapped channel 10 to 2
dma2: s3c2410_dma_request:755: ls=0, cur=c3223040, 00000000 c3223040
dma2: s3c2410_dma_request:755: DCSRC=332a158a, DISRC=332a1000,
DSTAT=00000000 DMT=04, DCON=a0d00000
dma10: s3c2410_dma_request : requesting irq 35
s3c2410_dma_request: channel initialised, c044fdd4
s3c2410_dma_set_buffdone_fn: chan=c044fdd4, callback rtn=bf05d0d0
s3c24xx-pcm: Entered s3c24xx_pcm_mmap
s3c24xx-pcm: Entered s3c24xx_pcm_prepare
s3c2410_dma_devconfig: source=1, hwcfg=00000003, devaddr=55000010
s3c2410_dma_devconfig: mem source, devaddr=55000010, hwcfg=3
s3c2410_dma_config: chan=10, xfer_unit=2, dcon=80000000
s3c2410_dma_config: Initial dcon is 80000000
s3c2410_dma_config: New dcon is 80000000
s3c2410_dma_config: dcon now a0900000
s3c2410_dma_flush: chan c044fdd4 (2)
dma2: s3c2410_dma_flush:912: ls=0, cur=c3223040, 00000000 c3223040
dma2: s3c2410_dma_flush:912: DCSRC=332a158a, DISRC=332a1000,
DSTAT=00000000 DMT=04, DCON=a0d00000
s3c2410_dma_flush: free buffer c3223040, next 00000000
s3c24xx-pcm: Entered s3c24xx_audio_buffdone
dma2: s3c2410_dma_flush:939: DCSRC=332a158a, DISRC=332a1000,
DSTAT=00000000 DMT=04, DCON=a0d00000
dma2: s3c2410_dma_flush:954: DCSRC=332a158a, DISRC=332a1000,
DSTAT=00000000 DMT=04, DCON=a0d00000
s3c24xx-pcm: Entered s3c24xx_pcm_enqueue
s3c24xx-pcm: dma_loaded: 0
s3c2410_dma_enqueue: id=c31f6300, data=332a0000, size=4096
s3c2410_dma_enqueue: buffer c3223040 queued onto empty channel
s3c24xx-pcm: dma_loaded: 1
s3c2410_dma_enqueue: id=c31f6300, data=332a1000, size=4096
dma2: s3c2410_dma_enqueue: buffer c3223000 queued onto non-empty channel
s3c24xx-pcm: Entered s3c24xx_pcm_trigger
s3c2410_start_dma: channel=2
s3c2410_chan_loadbuffer: loading buff c3223040 (0x332a0000,0x001000)
load_state is none, checking for noreload (next=c3223000)
dma2: s3c2410_dma_start:366: ls=1, cur=c3223040, c3223000 c3223000
dma2: s3c2410_dma_start:366: DCSRC=332a158a, DISRC=332a0000,
DSTAT=00000000 DMT=04, DCON=a0900800
dma2: 00000002 to DMASKTRIG
dma2: s3c2410_dma_start:394: ls=1, cur=c3223040, c3223000 c3223000
dma2: s3c2410_dma_start:394: DCSRC=332a158a, DISRC=332a0000,
DSTAT=00000000 DMT=02, DCON=a0900800
s3c2410_dma_start: buff not yet loaded, no more todo
dma2: s3c2410_dma_started:967: ls=1, cur=c3223040, c3223000 c3223000
dma2: s3c2410_dma_started:967: DCSRC=332a158a, DISRC=332a0000,
DSTAT=00000000 DMT=02, DCON=a0900800
s3c2410_dma_started: buff not yet loaded, no more todo
s3c24xx-i2s: Entered s3c24xx_i2s_trigger
s3c24xx-i2s: Entered s3c24xx_snd_is_clkmaster
s3c24xx-i2s: Entered s3c24xx_snd_txctrl
s3c24xx-i2s: r: IISCON: f IISMOD: 9 IISFCON: 0
s3c24xx-i2s: w: IISCON: 27 IISMOD: 89 IISFCON: a000
s3c24xx-pcm: Entered s3c24xx_pcm_pointer
s3c24xx-pcm: Pointer 332a014a 55000010
dma2: s3c2410_dma_irq:608: ls=1, cur=c3223040, c3223000 c3223000
dma2: s3c2410_dma_irq:608: DCSRC=332a1000, DISRC=332a0000,
DSTAT=00000000 DMT=02, DCON=a0900800
s3c24xx-pcm: Entered s3c24xx_audio_buffdone
s3c24xx-pcm: Entered s3c24xx_pcm_pointer
s3c24xx-pcm: Pointer 332a0290 55000010
s3c24xx-pcm: Entered s3c24xx_pcm_enqueue
s3c24xx-pcm: dma_loaded: 1
s3c2410_dma_enqueue: id=c31f6300, data=332a2000, size=4096
dma2: s3c2410_dma_enqueue: buffer c3223020 queued onto non-empty channel
s3c2410_chan_loadbuffer: loading buff c3223000 (0x332a1000,0x001000)
load_state is none, checking for noreload (next=c3223020)
s3c2410_chan_loadbuffer: loading buff c3223020 (0x332a2000,0x001000)
dma2: s3c2410_dma_irq:608: ls=3, cur=c3223000, 00000000 c3223020
dma2: s3c2410_dma_irq:608: DCSRC=332a1000, DISRC=332a2000,
DSTAT=00000000 DMT=02, DCON=a0900800
s3c24xx-pcm: Entered s3c24xx_audio_buffdone
s3c24xx-pcm: Entered s3c24xx_pcm_pointer
s3c24xx-pcm: Pointer 332a228e 55000010
s3c24xx-pcm: Entered s3c24xx_pcm_enqueue
s3c24xx-pcm: dma_loaded: 1
s3c24xx-pcm: <7>s3c24xx_pcm_enqueue: corrected dma len 3712
s3c2410_dma_enqueue: id=c31f6300, data=332a3000, size=3712
dma2: s3c2410_dma_enqueue: buffer c3223040 queued onto non-empty channel
s3c2410_chan_loadbuffer: loading buff c3223040 (0x332a3000,0x000e80)
s3c24xx-pcm: Entered s3c24xx_pcm_pointer
s3c24xx-pcm: Pointer 332a271e 55000010
s3c24xx-pcm: Entered s3c24xx_pcm_pointer
s3c24xx-pcm: Pointer 332a2802 55000010
s3c24xx-pcm: Entered s3c24xx_pcm_pointer
s3c24xx-pcm: Pointer 332a28e8 55000010
s3c24xx-pcm: Entered s3c24xx_pcm_pointer
s3c24xx-pcm: Pointer 332a29ce 55000010
dma2: s3c2410_dma_irq:608: ls=3, cur=c3223020, 00000000 c3223040
dma2: s3c2410_dma_irq:608: DCSRC=332a3000, DISRC=332a3000,
DSTAT=00000000 DMT=02, DCON=a0900740
s3c24xx-pcm: Entered s3c24xx_audio_buffdone
s3c24xx-pcm: Entered s3c24xx_pcm_pointer
s3c24xx-pcm: Pointer 332a3290 55000010
s3c24xx-pcm: Entered s3c24xx_pcm_enqueue
s3c24xx-pcm: dma_loaded: 1
s3c2410_dma_enqueue: id=c31f6300, data=332a0000, size=4096
dma2: s3c2410_dma_enqueue: buffer c3223000 queued onto non-empty channel
s3c2410_chan_loadbuffer: loading buff c3223000 (0x332a0000,0x001000)
s3c24xx-pcm: Entered s3c24xx_pcm_pointer
s3c24xx-pcm: Pointer 332a3676 55000010
s3c24xx-pcm: Entered s3c24xx_pcm_pointer
s3c24xx-pcm: Pointer 332a375a 55000010
dma2: s3c2410_dma_irq:608: ls=3, cur=c3223040, 00000000 c3223000
dma2: s3c2410_dma_irq:608: DCSRC=332a3e80, DISRC=332a0000,
DSTAT=00000000 DMT=02, DCON=a0900800
s3c24xx-pcm: Entered s3c24xx_audio_buffdone
s3c24xx-pcm: Entered s3c24xx_pcm_pointer
s3c24xx-pcm: Pointer 332a0290 55000010
s3c24xx-pcm: Entered s3c24xx_pcm_enqueue
s3c24xx-pcm: dma_loaded: 1
s3c2410_dma_enqueue: id=c31f6300, data=332a1000, size=4096
dma2: s3c2410_dma_enqueue: buffer c3223020 queued onto non-empty channel
s3c2410_chan_loadbuffer: loading buff c3223020 (0x332a1000,0x001000)
dma2: s3c2410_dma_irq:608: ls=3, cur=c3223000, 00000000 c3223020
dma2: s3c2410_dma_irq:608: DCSRC=332a1000, DISRC=332a1000,
DSTAT=00000000 DMT=02, DCON=a0900800
s3c24xx-pcm: Entered s3c24xx_audio_buffdone
s3c24xx-pcm: Entered s3c24xx_pcm_pointer
s3c24xx-pcm: Pointer 332a128e 55000010
s3c24xx-pcm: Entered s3c24xx_pcm_enqueue
s3c24xx-pcm: dma_loaded: 1
s3c2410_dma_enqueue: id=c31f6300, data=332a2000, size=4096
dma2: s3c2410_dma_enqueue: buffer c3223040 queued onto non-empty channel
s3c2410_chan_loadbuffer: loading buff c3223040 (0x332a2000,0x001000)
s3c24xx-pcm: Entered s3c24xx_pcm_pointer
s3c24xx-pcm: Pointer 332a1672 55000010
s3c24xx-pcm: Entered s3c24xx_pcm_pointer
s3c24xx-pcm: Pointer 332a1758 55000010
s3c24xx-pcm: Entered s3c24xx_pcm_pointer
s3c24xx-pcm: Pointer 332a183e 55000010
dma2: s3c2410_dma_irq:608: ls=3, cur=c3223020, 00000000 c3223040
dma2: s3c2410_dma_irq:608: DCSRC=332a2000, DISRC=332a2000,
DSTAT=00000000 DMT=02, DCON=a0900800
s3c24xx-pcm: Entered s3c24xx_audio_buffdone
s3c24xx-pcm: Entered s3c24xx_pcm_pointer
s3c24xx-pcm: Pointer 332a2290 55000010
s3c24xx-pcm: Entered s3c24xx_pcm_enqueue
s3c24xx-pcm: dma_loaded: 1
s3c24xx-pcm: <7>s3c24xx_pcm_enqueue: corrected dma len 3712
s3c2410_dma_enqueue: id=c31f6300, data=332a3000, size=3712
dma2: s3c2410_dma_enqueue: buffer c3223000 queued onto non-empty channel
s3c2410_chan_loadbuffer: loading buff c3223000 (0x332a3000,0x000e80)
dma2: s3c2410_dma_irq:608: ls=3, cur=c3223040, 00000000 c3223000
dma2: s3c2410_dma_irq:608: DCSRC=332a3000, DISRC=332a3000,
DSTAT=00000000 DMT=02, DCON=a0900740
s3c24xx-pcm: Entered s3c24xx_audio_buffdone
s3c24xx-pcm: Entered s3c24xx_pcm_pointer
s3c24xx-pcm: Pointer 332a328e 55000010
s3c24xx-pcm: Entered s3c24xx_pcm_enqueue
s3c24xx-pcm: dma_loaded: 1
s3c2410_dma_enqueue: id=c31f6300, data=332a0000, size=4096
dma2: s3c2410_dma_enqueue: buffer c3223020 queued onto non-empty channel
s3c2410_chan_loadbuffer: loading buff c3223020 (0x332a0000,0x001000)
s3c24xx-pcm: Entered s3c24xx_pcm_pointer
s3c24xx-pcm: Pointer 332a3672 55000010
s3c24xx-pcm: Entered s3c24xx_pcm_pointer
s3c24xx-pcm: Pointer 332a3758 55000010
s3c24xx-pcm: Entered s3c24xx_pcm_pointer
s3c24xx-pcm: Pointer 332a383e 55000010
dma2: s3c2410_dma_irq:608: ls=3, cur=c3223000, 00000000 c3223020
dma2: s3c2410_dma_irq:608: DCSRC=332a3e80, DISRC=332a0000,
DSTAT=00000000 DMT=02, DCON=a0900800
s3c24xx-pcm: Entered s3c24xx_audio_buffdone
s3c24xx-pcm: Entered s3c24xx_pcm_pointer
s3c24xx-pcm: Pointer 332a0290 55000010
s3c24xx-pcm: Entered s3c24xx_pcm_enqueue
s3c24xx-pcm: dma_loaded: 1
s3c2410_dma_enqueue: id=c31f6300, data=332a1000, size=4096
dma2: s3c2410_dma_enqueue: buffer c3223040 queued onto non-empty channel
s3c2410_chan_loadbuffer: loading buff c3223040 (0x332a1000,0x001000)
dma2: s3c2410_dma_irq:608: ls=3, cur=c3223020, 00000000 c3223040
dma2: s3c2410_dma_irq:608: DCSRC=332a1000, DISRC=332a1000,
DSTAT=00000000 DMT=02, DCON=a0900800
s3c24xx-pcm: Entered s3c24xx_audio_buffdone
s3c24xx-pcm: Entered s3c24xx_pcm_pointer
s3c24xx-pcm: Pointer 332a128e 55000010
s3c24xx-pcm: Entered s3c24xx_pcm_enqueue
s3c24xx-pcm: dma_loaded: 1
s3c2410_dma_enqueue: id=c31f6300, data=332a2000, size=4096
dma2: s3c2410_dma_enqueue: buffer c3223000 queued onto non-empty channel
s3c2410_chan_loadbuffer: loading buff c3223000 (0x332a2000,0x001000)
s3c24xx-pcm: Entered s3c24xx_pcm_pointer
s3c24xx-pcm: Pointer 332a1672 55000010
s3c24xx-pcm: Entered s3c24xx_pcm_pointer
s3c24xx-pcm: Pointer 332a1758 55000010
s3c24xx-pcm: Entered s3c24xx_pcm_pointer
s3c24xx-pcm: Pointer 332a183e 55000010
dma2: s3c2410_dma_irq:608: ls=3, cur=c3223040, 00000000 c3223000
dma2: s3c2410_dma_irq:608: DCSRC=332a2000, DISRC=332a2000,
DSTAT=00000000 DMT=02, DCON=a0900800
s3c24xx-pcm: Entered s3c24xx_audio_buffdone
s3c24xx-pcm: Entered s3c24xx_pcm_pointer
s3c24xx-pcm: Pointer 332a2290 55000010
s3c24xx-pcm: Entered s3c24xx_pcm_enqueue
s3c24xx-pcm: dma_loaded: 1
s3c24xx-pcm: <7>s3c24xx_pcm_enqueue: corrected dma len 3712
s3c2410_dma_enqueue: id=c31f6300, data=332a3000, size=3712
dma2: s3c2410_dma_enqueue: buffer c3223020 queued onto non-empty channel
s3c2410_chan_loadbuffer: loading buff c3223020 (0x332a3000,0x000e80)
dma2: s3c2410_dma_irq:608: ls=3, cur=c3223000, 00000000 c3223020
dma2: s3c2410_dma_irq:608: DCSRC=332a3000, DISRC=332a3000,
DSTAT=00000000 DMT=02, DCON=a0900740
s3c24xx-pcm: Entered s3c24xx_audio_buffdone
s3c24xx-pcm: Entered s3c24xx_pcm_pointer
s3c24xx-pcm: Pointer 332a328e 55000010
s3c24xx-pcm: Entered s3c24xx_pcm_enqueue
s3c24xx-pcm: dma_loaded: 1
s3c2410_dma_enqueue: id=c31f6300, data=332a0000, size=4096
dma2: s3c2410_dma_enqueue: buffer c3223040 queued onto non-empty channel
s3c2410_chan_loadbuffer: loading buff c3223040 (0x332a0000,0x001000)
s3c24xx-pcm: Entered s3c24xx_pcm_pointer
s3c24xx-pcm: Pointer 332a3672 55000010
s3c24xx-pcm: Entered s3c24xx_pcm_pointer
s3c24xx-pcm: Pointer 332a3758 55000010
s3c24xx-pcm: Entered s3c24xx_pcm_pointer
s3c24xx-pcm: Pointer 332a383e 55000010
dma2: s3c2410_dma_irq:608: ls=3, cur=c3223020, 00000000 c3223040
dma2: s3c2410_dma_irq:608: DCSRC=332a3e80, DISRC=332a0000,
DSTAT=00000000 DMT=02, DCON=a0900800
s3c24xx-pcm: Entered s3c24xx_audio_buffdone
s3c24xx-pcm: Entered s3c24xx_pcm_pointer
s3c24xx-pcm: Pointer 332a0290 55000010
s3c24xx-pcm: Entered s3c24xx_pcm_enqueue
s3c24xx-pcm: dma_loaded: 1
s3c2410_dma_enqueue: id=c31f6300, data=332a1000, size=4096
dma2: s3c2410_dma_enqueue: buffer c3223000 queued onto non-empty channel
s3c2410_chan_loadbuffer: loading buff c3223000 (0x332a1000,0x001000)
dma2: s3c2410_dma_irq:608: ls=3, cur=c3223040, 00000000 c3223000
dma2: s3c2410_dma_irq:608: DCSRC=332a1000, DISRC=332a1000,
DSTAT=00000000 DMT=02, DCON=a0900800
s3c24xx-pcm: Entered s3c24xx_audio_buffdone
s3c24xx-pcm: Entered s3c24xx_pcm_pointer
s3c24xx-pcm: Pointer 332a128e 55000010
s3c24xx-pcm: Entered s3c24xx_pcm_enqueue
s3c24xx-pcm: dma_loaded: 1
s3c2410_dma_enqueue: id=c31f6300, data=332a2000, size=4096
dma2: s3c2410_dma_enqueue: buffer c3223020 queued onto non-empty channel
s3c2410_chan_loadbuffer: loading buff c3223020 (0x332a2000,0x001000)
s3c24xx-pcm: Entered s3c24xx_pcm_pointer
s3c24xx-pcm: Pointer 332a1672 55000010
s3c24xx-pcm: Entered s3c24xx_pcm_pointer
s3c24xx-pcm: Pointer 332a1758 55000010
s3c24xx-pcm: Entered s3c24xx_pcm_pointer
s3c24xx-pcm: Pointer 332a183e 55000010
dma2: s3c2410_dma_irq:608: ls=3, cur=c3223000, 00000000 c3223020
dma2: s3c2410_dma_irq:608: DCSRC=332a2000, DISRC=332a2000,
DSTAT=00000000 DMT=02, DCON=a0900800
s3c24xx-pcm: Entered s3c24xx_audio_buffdone
s3c24xx-pcm: Entered s3c24xx_pcm_pointer
s3c24xx-pcm: Pointer 332a2290 55000010
s3c24xx-pcm: Entered s3c24xx_pcm_enqueue
s3c24xx-pcm: dma_loaded: 1
s3c24xx-pcm: <7>s3c24xx_pcm_enqueue: corrected dma len 3712
s3c2410_dma_enqueue: id=c31f6300, data=332a3000, size=3712
dma2: s3c2410_dma_enqueue: buffer c3223040 queued onto non-empty channel
s3c2410_chan_loadbuffer: loading buff c3223040 (0x332a3000,0x000e80)
dma2: s3c2410_dma_irq:608: ls=3, cur=c3223020, 00000000 c3223040
dma2: s3c2410_dma_irq:608: DCSRC=332a3000, DISRC=332a3000,
DSTAT=00000000 DMT=02, DCON=a0900740
s3c24xx-pcm: Entered s3c24xx_audio_buffdone
s3c24xx-pcm: Entered s3c24xx_pcm_pointer
s3c24xx-pcm: Pointer 332a328e 55000010
s3c24xx-pcm: Entered s3c24xx_pcm_enqueue
s3c24xx-pcm: dma_loaded: 1
s3c2410_dma_enqueue: id=c31f6300, data=332a0000, size=4096
dma2: s3c2410_dma_enqueue: buffer c3223000 queued onto non-empty channel
s3c2410_chan_loadbuffer: loading buff c3223000 (0x332a0000,0x001000)
s3c24xx-pcm: Entered s3c24xx_pcm_pointer
s3c24xx-pcm: Pointer 332a3672 55000010
s3c24xx-pcm: Entered s3c24xx_pcm_pointer
s3c24xx-pcm: Pointer 332a3758 55000010
s3c24xx-pcm: Entered s3c24xx_pcm_pointer
s3c24xx-pcm: Pointer 332a383e 55000010
dma2: s3c2410_dma_irq:608: ls=3, cur=c3223040, 00000000 c3223000
dma2: s3c2410_dma_irq:608: DCSRC=332a3e80, DISRC=332a0000,
DSTAT=00000000 DMT=02, DCON=a0900800
s3c24xx-pcm: Entered s3c24xx_audio_buffdone
s3c24xx-pcm: Entered s3c24xx_pcm_pointer
s3c24xx-pcm: Pointer 332a0290 55000010
s3c24xx-pcm: Entered s3c24xx_pcm_enqueue
s3c24xx-pcm: dma_loaded: 1
s3c2410_dma_enqueue: id=c31f6300, data=332a1000, size=4096
dma2: s3c2410_dma_enqueue: buffer c3223020 queued onto non-empty channel
s3c2410_chan_loadbuffer: loading buff c3223020 (0x332a1000,0x001000)
dma2: s3c2410_dma_irq:608: ls=3, cur=c3223000, 00000000 c3223020
dma2: s3c2410_dma_irq:608: DCSRC=332a1000, DISRC=332a1000,
DSTAT=00000000 DMT=02, DCON=a0900800
s3c24xx-pcm: Entered s3c24xx_audio_buffdone
s3c24xx-pcm: Entered s3c24xx_pcm_pointer
s3c24xx-pcm: Pointer 332a128e 55000010
s3c24xx-pcm: Entered s3c24xx_pcm_enqueue
s3c24xx-pcm: dma_loaded: 1
s3c2410_dma_enqueue: id=c31f6300, data=332a2000, size=4096
dma2: s3c2410_dma_enqueue: buffer c3223040 queued onto non-empty channel
s3c2410_chan_loadbuffer: loading buff c3223040 (0x332a2000,0x001000)
s3c24xx-pcm: Entered s3c24xx_pcm_pointer
s3c24xx-pcm: Pointer 332a1672 55000010
s3c24xx-pcm: Entered s3c24xx_pcm_pointer
s3c24xx-pcm: Pointer 332a1758 55000010
dma2: s3c2410_dma_irq:608: ls=3, cur=c3223020, 00000000 c3223040
dma2: s3c2410_dma_irq:608: DCSRC=332a2000, DISRC=332a2000,
DSTAT=00000000 DMT=02, DCON=a0900800
s3c24xx-pcm: Entered s3c24xx_audio_buffdone
s3c24xx-pcm: Entered s3c24xx_pcm_pointer
s3c24xx-pcm: Pointer 332a2290 55000010
s3c24xx-pcm: Entered s3c24xx_pcm_enqueue
s3c24xx-pcm: dma_loaded: 1
s3c24xx-pcm: <7>s3c24xx_pcm_enqueue: corrected dma len 3712
s3c2410_dma_enqueue: id=c31f6300, data=332a3000, size=3712
dma2: s3c2410_dma_enqueue: buffer c3223000 queued onto non-empty channel
s3c2410_chan_loadbuffer: loading buff c3223000 (0x332a3000,0x000e80)
s3c24xx-pcm: Entered s3c24xx_pcm_pointer
s3c24xx-pcm: Pointer 332a2720 55000010
s3c24xx-pcm: Entered s3c24xx_pcm_pointer
s3c24xx-pcm: Pointer 332a2806 55000010
s3c24xx-pcm: Entered s3c24xx_pcm_pointer
s3c24xx-pcm: Pointer 332a28ec 55000010
dma2: s3c2410_dma_irq:608: ls=3, cur=c3223040, 00000000 c3223000
dma2: s3c2410_dma_irq:608: DCSRC=332a3000, DISRC=332a3000,
DSTAT=00000000 DMT=02, DCON=a0900740
s3c24xx-pcm: Entered s3c24xx_audio_buffdone
s3c24xx-pcm: Entered s3c24xx_pcm_pointer
s3c24xx-pcm: Pointer 332a3290 55000010
s3c24xx-pcm: Entered s3c24xx_pcm_enqueue
s3c24xx-pcm: dma_loaded: 1
s3c2410_dma_enqueue: id=c31f6300, data=332a0000, size=4096
dma2: s3c2410_dma_enqueue: buffer c3223020 queued onto non-empty channel
s3c2410_chan_loadbuffer: loading buff c3223020 (0x332a0000,0x001000)
dma2: s3c2410_dma_irq:608: ls=3, cur=c3223000, 00000000 c3223020
dma2: s3c2410_dma_irq:608: DCSRC=332a3e80, DISRC=332a0000,
DSTAT=00000000 DMT=02, DCON=a0900800
s3c24xx-pcm: Entered s3c24xx_audio_buffdone
s3c24xx-pcm: Entered s3c24xx_pcm_pointer
s3c24xx-pcm: Pointer 332a028e 55000010
s3c24xx-pcm: Entered s3c24xx_pcm_enqueue
s3c24xx-pcm: dma_loaded: 1
s3c2410_dma_enqueue: id=c31f6300, data=332a1000, size=4096
dma2: s3c2410_dma_enqueue: buffer c3223040 queued onto non-empty channel
s3c2410_chan_loadbuffer: loading buff c3223040 (0x332a1000,0x001000)
s3c24xx-pcm: Entered s3c24xx_pcm_pointer
s3c24xx-pcm: Pointer 332a0672 55000010
s3c24xx-pcm: Entered s3c24xx_pcm_pointer
s3c24xx-pcm: Pointer 332a0758 55000010
dma2: s3c2410_dma_irq:608: ls=3, cur=c3223020, 00000000 c3223040
dma2: s3c2410_dma_irq:608: DCSRC=332a1000, DISRC=332a1000,
DSTAT=00000000 DMT=02, DCON=a0900800
s3c24xx-pcm: Entered s3c24xx_audio_buffdone
s3c24xx-pcm: Entered s3c24xx_pcm_pointer
s3c24xx-pcm: Pointer 332a1290 55000010
s3c24xx-pcm: Entered s3c24xx_pcm_enqueue
s3c24xx-pcm: dma_loaded: 1
s3c2410_dma_enqueue: id=c31f6300, data=332a2000, size=4096
dma2: s3c2410_dma_enqueue: buffer c3223000 queued onto non-empty channel
s3c2410_chan_loadbuffer: loading buff c3223000 (0x332a2000,0x001000)
s3c24xx-pcm: Entered s3c24xx_pcm_pointer
s3c24xx-pcm: Pointer 332a1676 55000010
s3c24xx-pcm: Entered s3c24xx_pcm_pointer
s3c24xx-pcm: Pointer 332a175a 55000010
dma2: s3c2410_dma_irq:608: ls=3, cur=c3223040, 00000000 c3223000
dma2: s3c2410_dma_irq:608: DCSRC=332a2000, DISRC=332a2000,
DSTAT=00000000 DMT=02, DCON=a0900800
s3c24xx-pcm: Entered s3c24xx_audio_buffdone
s3c24xx-pcm: Entered s3c24xx_pcm_pointer
s3c24xx-pcm: Pointer 332a2290 55000010
s3c24xx-pcm: Entered s3c24xx_pcm_enqueue
s3c24xx-pcm: dma_loaded: 1
s3c24xx-pcm: <7>s3c24xx_pcm_enqueue: corrected dma len 3712
s3c2410_dma_enqueue: id=c31f6300, data=332a3000, size=3712
dma2: s3c2410_dma_enqueue: buffer c3223020 queued onto non-empty channel
s3c2410_chan_loadbuffer: loading buff c3223020 (0x332a3000,0x000e80)
s3c24xx-pcm: Entered s3c24xx_pcm_pointer
s3c24xx-pcm: Pointer 332a2720 55000010
s3c24xx-pcm: Entered s3c24xx_pcm_pointer
s3c24xx-pcm: Pointer 332a2806 55000010
dma2: s3c2410_dma_irq:608: ls=3, cur=c3223000, 00000000 c3223020
dma2: s3c2410_dma_irq:608: DCSRC=332a3000, DISRC=332a3000,
DSTAT=00000000 DMT=02, DCON=a0900740
s3c24xx-pcm: Entered s3c24xx_audio_buffdone
s3c24xx-pcm: Entered s3c24xx_pcm_pointer
s3c24xx-pcm: Pointer 332a3290 55000010
s3c24xx-pcm: Entered s3c24xx_pcm_enqueue
s3c24xx-pcm: dma_loaded: 1
s3c2410_dma_enqueue: id=c31f6300, data=332a0000, size=4096
dma2: s3c2410_dma_enqueue: buffer c3223040 queued onto non-empty channel
s3c2410_chan_loadbuffer: loading buff c3223040 (0x332a0000,0x001000)
s3c24xx-pcm: Entered s3c24xx_pcm_pointer
s3c24xx-pcm: Pointer 332a3674 55000010
s3c24xx-pcm: Entered s3c24xx_pcm_pointer
s3c24xx-pcm: Pointer 332a375a 55000010
dma2: s3c2410_dma_irq:608: ls=3, cur=c3223020, 00000000 c3223040
dma2: s3c2410_dma_irq:608: DCSRC=332a3e80, DISRC=332a0000,
DSTAT=00000000 DMT=02, DCON=a0900800
s3c24xx-pcm: Entered s3c24xx_audio_buffdone
s3c24xx-pcm: Entered s3c24xx_pcm_pointer
s3c24xx-pcm: Pointer 332a0290 55000010
s3c24xx-pcm: Entered s3c24xx_pcm_enqueue
s3c24xx-pcm: dma_loaded: 1
s3c2410_dma_enqueue: id=c31f6300, data=332a1000, size=4096
dma2: s3c2410_dma_enqueue: buffer c3223000 queued onto non-empty channel
s3c2410_chan_loadbuffer: loading buff c3223000 (0x332a1000,0x001000)
s3c24xx-pcm: Entered s3c24xx_pcm_pointer
s3c24xx-pcm: Pointer 332a0674 55000010
s3c24xx-pcm: Entered s3c24xx_pcm_pointer
s3c24xx-pcm: Pointer 332a075a 55000010
dma2: s3c2410_dma_irq:608: ls=3, cur=c3223040, 00000000 c3223000
dma2: s3c2410_dma_irq:608: DCSRC=332a1000, DISRC=332a1000,
DSTAT=00000000 DMT=02, DCON=a0900800
s3c24xx-pcm: Entered s3c24xx_audio_buffdone
s3c24xx-pcm: Entered s3c24xx_pcm_pointer
s3c24xx-pcm: Pointer 332a1290 55000010
s3c24xx-pcm: Entered s3c24xx_pcm_enqueue
s3c24xx-pcm: dma_loaded: 1
s3c2410_dma_enqueue: id=c31f6300, data=332a2000, size=4096
dma2: s3c2410_dma_enqueue: buffer c3223020 queued onto non-empty channel
s3c2410_chan_loadbuffer: loading buff c3223020 (0x332a2000,0x001000)
s3c24xx-pcm: Entered s3c24xx_pcm_pointer
s3c24xx-pcm: Pointer 332a1676 55000010
s3c24xx-pcm: Entered s3c24xx_pcm_pointer
s3c24xx-pcm: Pointer 332a175a 55000010
dma2: s3c2410_dma_irq:608: ls=3, cur=c3223000, 00000000 c3223020
dma2: s3c2410_dma_irq:608: DCSRC=332a2000, DISRC=332a2000,
DSTAT=00000000 DMT=02, DCON=a0900800
s3c24xx-pcm: Entered s3c24xx_audio_buffdone
s3c24xx-pcm: Entered s3c24xx_pcm_pointer
s3c24xx-pcm: Pointer 332a2290 55000010
s3c24xx-pcm: Entered s3c24xx_pcm_enqueue
s3c24xx-pcm: dma_loaded: 1
s3c24xx-pcm: <7>s3c24xx_pcm_enqueue: corrected dma len 3712
s3c2410_dma_enqueue: id=c31f6300, data=332a3000, size=3712
dma2: s3c2410_dma_enqueue: buffer c3223040 queued onto non-empty channel
s3c2410_chan_loadbuffer: loading buff c3223040 (0x332a3000,0x000e80)
s3c24xx-pcm: Entered s3c24xx_pcm_pointer
s3c24xx-pcm: Pointer 332a2720 55000010
s3c24xx-pcm: Entered s3c24xx_pcm_pointer
s3c24xx-pcm: Pointer 332a2806 55000010
dma2: s3c2410_dma_irq:608: ls=3, cur=c3223020, 00000000 c3223040
dma2: s3c2410_dma_irq:608: DCSRC=332a3000, DISRC=332a3000,
DSTAT=00000000 DMT=02, DCON=a0900740
s3c24xx-pcm: Entered s3c24xx_audio_buffdone
s3c24xx-pcm: Entered s3c24xx_pcm_pointer
s3c24xx-pcm: Pointer 332a3290 55000010
s3c24xx-pcm: Entered s3c24xx_pcm_enqueue
s3c24xx-pcm: dma_loaded: 1
s3c2410_dma_enqueue: id=c31f6300, data=332a0000, size=4096
dma2: s3c2410_dma_enqueue: buffer c3223000 queued onto non-empty channel
s3c2410_chan_loadbuffer: loading buff c3223000 (0x332a0000,0x001000)
s3c24xx-pcm: Entered s3c24xx_pcm_pointer
s3c24xx-pcm: Pointer 332a3676 55000010
s3c24xx-pcm: Entered s3c24xx_pcm_pointer
s3c24xx-pcm: Pointer 332a375a 55000010
dma2: s3c2410_dma_irq:608: ls=3, cur=c3223040, 00000000 c3223000
dma2: s3c2410_dma_irq:608: DCSRC=332a3e80, DISRC=332a0000,
DSTAT=00000000 DMT=02, DCON=a0900800
s3c24xx-pcm: Entered s3c24xx_audio_buffdone
s3c24xx-pcm: Entered s3c24xx_pcm_pointer
s3c24xx-pcm: Pointer 332a0290 55000010
s3c24xx-pcm: Entered s3c24xx_pcm_enqueue
s3c24xx-pcm: dma_loaded: 1
s3c2410_dma_enqueue: id=c31f6300, data=332a1000, size=4096
dma2: s3c2410_dma_enqueue: buffer c3223020 queued onto non-empty channel
s3c2410_chan_loadbuffer: loading buff c3223020 (0x332a1000,0x001000)
s3c24xx-pcm: Entered s3c24xx_pcm_pointer
s3c24xx-pcm: Pointer 332a0676 55000010
s3c24xx-pcm: Entered s3c24xx_pcm_pointer
s3c24xx-pcm: Pointer 332a075a 55000010
dma2: s3c2410_dma_irq:608: ls=3, cur=c3223000, 00000000 c3223020
dma2: s3c2410_dma_irq:608: DCSRC=332a1000, DISRC=332a1000,
DSTAT=00000000 DMT=02, DCON=a0900800
s3c24xx-pcm: Entered s3c24xx_audio_buffdone
s3c24xx-pcm: Entered s3c24xx_pcm_pointer
s3c24xx-pcm: Pointer 332a1290 55000010
s3c24xx-pcm: Entered s3c24xx_pcm_enqueue
s3c24xx-pcm: dma_loaded: 1
s3c2410_dma_enqueue: id=c31f6300, data=332a2000, size=4096
dma2: s3c2410_dma_enqueue: buffer c3223040 queued onto non-empty channel
s3c2410_chan_loadbuffer: loading buff c3223040 (0x332a2000,0x001000)
s3c24xx-pcm: Entered s3c24xx_pcm_pointer
s3c24xx-pcm: Pointer 332a1676 55000010
s3c24xx-pcm: Entered s3c24xx_pcm_pointer
s3c24xx-pcm: Pointer 332a175a 55000010
dma2: s3c2410_dma_irq:608: ls=3, cur=c3223020, 00000000 c3223040
dma2: s3c2410_dma_irq:608: DCSRC=332a2000, DISRC=332a2000,
DSTAT=00000000 DMT=02, DCON=a0900800
s3c24xx-pcm: Entered s3c24xx_audio_buffdone
s3c24xx-pcm: Entered s3c24xx_pcm_pointer
s3c24xx-pcm: Pointer 332a2290 55000010
s3c24xx-pcm: Entered s3c24xx_pcm_enqueue
s3c24xx-pcm: dma_loaded: 1
s3c24xx-pcm: <7>s3c24xx_pcm_enqueue: corrected dma len 3712
s3c2410_dma_enqueue: id=c31f6300, data=332a3000, size=3712
dma2: s3c2410_dma_enqueue: buffer c3223000 queued onto non-empty channel
s3c2410_chan_loadbuffer: loading buff c3223000 (0x332a3000,0x000e80)
s3c24xx-pcm: Entered s3c24xx_pcm_pointer
s3c24xx-pcm: Pointer 332a2720 55000010
s3c24xx-pcm: Entered s3c24xx_pcm_pointer
s3c24xx-pcm: Pointer 332a2806 55000010
dma2: s3c2410_dma_irq:608: ls=3, cur=c3223040, 00000000 c3223000
dma2: s3c2410_dma_irq:608: DCSRC=332a3000, DISRC=332a3000,
DSTAT=00000000 DMT=02, DCON=a0900740
s3c24xx-pcm: Entered s3c24xx_audio_buffdone
s3c24xx-pcm: Entered s3c24xx_pcm_pointer
s3c24xx-pcm: Pointer 332a3290 55000010
s3c24xx-pcm: Entered s3c24xx_pcm_enqueue
s3c24xx-pcm: dma_loaded: 1
s3c2410_dma_enqueue: id=c31f6300, data=332a0000, size=4096
dma2: s3c2410_dma_enqueue: buffer c3223020 queued onto non-empty channel
s3c2410_chan_loadbuffer: loading buff c3223020 (0x332a0000,0x001000)
s3c24xx-pcm: Entered s3c24xx_pcm_pointer
s3c24xx-pcm: Pointer 332a3676 55000010
s3c24xx-pcm: Entered s3c24xx_pcm_pointer
s3c24xx-pcm: Pointer 332a375a 55000010
dma2: s3c2410_dma_irq:608: ls=3, cur=c3223000, 00000000 c3223020
dma2: s3c2410_dma_irq:608: DCSRC=332a3e80, DISRC=332a0000,
DSTAT=00000000 DMT=02, DCON=a0900800
s3c24xx-pcm: Entered s3c24xx_audio_buffdone
s3c24xx-pcm: Entered s3c24xx_pcm_pointer
s3c24xx-pcm: Pointer 332a0290 55000010
s3c24xx-pcm: Entered s3c24xx_pcm_enqueue
s3c24xx-pcm: dma_loaded: 1
s3c2410_dma_enqueue: id=c31f6300, data=332a1000, size=4096
dma2: s3c2410_dma_enqueue: buffer c3223040 queued onto non-empty channel
s3c2410_chan_loadbuffer: loading buff c3223040 (0x332a1000,0x001000)
s3c24xx-pcm: Entered s3c24xx_pcm_pointer
s3c24xx-pcm: Pointer 332a0676 55000010
s3c24xx-pcm: Entered s3c24xx_pcm_pointer
s3c24xx-pcm: Pointer 332a075a 55000010
dma2: s3c2410_dma_irq:608: ls=3, cur=c3223020, 00000000 c3223040
dma2: s3c2410_dma_irq:608: DCSRC=332a1000, DISRC=332a1000,
DSTAT=00000000 DMT=02, DCON=a0900800
s3c24xx-pcm: Entered s3c24xx_audio_buffdone
s3c24xx-pcm: Entered s3c24xx_pcm_pointer
s3c24xx-pcm: Pointer 332a1290 55000010
s3c24xx-pcm: Entered s3c24xx_pcm_enqueue
s3c24xx-pcm: dma_loaded: 1
s3c2410_dma_enqueue: id=c31f6300, data=332a2000, size=4096
dma2: s3c2410_dma_enqueue: buffer c3223000 queued onto non-empty channel
s3c2410_chan_loadbuffer: loading buff c3223000 (0x332a2000,0x001000)
s3c24xx-pcm: Entered s3c24xx_pcm_pointer
s3c24xx-pcm: Pointer 332a1676 55000010
s3c24xx-pcm: Entered s3c24xx_pcm_pointer
s3c24xx-pcm: Pointer 332a175a 55000010
dma2: s3c2410_dma_irq:608: ls=3, cur=c3223040, 00000000 c3223000
dma2: s3c2410_dma_irq:608: DCSRC=332a2000, DISRC=332a2000,
DSTAT=00000000 DMT=02, DCON=a0900800
s3c24xx-pcm: Entered s3c24xx_audio_buffdone
s3c24xx-pcm: Entered s3c24xx_pcm_pointer
s3c24xx-pcm: Pointer 332a2290 55000010
s3c24xx-pcm: Entered s3c24xx_pcm_enqueue
s3c24xx-pcm: dma_loaded: 1
s3c24xx-pcm: <7>s3c24xx_pcm_enqueue: corrected dma len 3712
s3c2410_dma_enqueue: id=c31f6300, data=332a3000, size=3712
dma2: s3c2410_dma_enqueue: buffer c3223020 queued onto non-empty channel
s3c2410_chan_loadbuffer: loading buff c3223020 (0x332a3000,0x000e80)
s3c24xx-pcm: Entered s3c24xx_pcm_pointer
s3c24xx-pcm: Pointer 332a2720 55000010
s3c24xx-pcm: Entered s3c24xx_pcm_pointer
s3c24xx-pcm: Pointer 332a2806 55000010
dma2: s3c2410_dma_irq:608: ls=3, cur=c3223000, 00000000 c3223020
dma2: s3c2410_dma_irq:608: DCSRC=332a3000, DISRC=332a3000,
DSTAT=00000000 DMT=02, DCON=a0900740
s3c24xx-pcm: Entered s3c24xx_audio_buffdone
s3c24xx-pcm: Entered s3c24xx_pcm_pointer
s3c24xx-pcm: Pointer 332a3290 55000010
s3c24xx-pcm: Entered s3c24xx_pcm_enqueue
s3c24xx-pcm: dma_loaded: 1
s3c2410_dma_enqueue: id=c31f6300, data=332a0000, size=4096
dma2: s3c2410_dma_enqueue: buffer c3223040 queued onto non-empty channel
s3c2410_chan_loadbuffer: loading buff c3223040 (0x332a0000,0x001000)
s3c24xx-pcm: Entered s3c24xx_pcm_pointer
s3c24xx-pcm: Pointer 332a3676 55000010
s3c24xx-pcm: Entered s3c24xx_pcm_pointer
s3c24xx-pcm: Pointer 332a375a 55000010
dma2: s3c2410_dma_irq:608: ls=3, cur=c3223020, 00000000 c3223040
dma2: s3c2410_dma_irq:608: DCSRC=332a3e80, DISRC=332a0000,
DSTAT=00000000 DMT=02, DCON=a0900800
s3c24xx-pcm: Entered s3c24xx_audio_buffdone
s3c24xx-pcm: Entered s3c24xx_pcm_pointer
s3c24xx-pcm: Pointer 332a0290 55000010
s3c24xx-pcm: Entered s3c24xx_pcm_enqueue
s3c24xx-pcm: dma_loaded: 1
s3c2410_dma_enqueue: id=c31f6300, data=332a1000, size=4096
dma2: s3c2410_dma_enqueue: buffer c3223000 queued onto non-empty channel
s3c2410_chan_loadbuffer: loading buff c3223000 (0x332a1000,0x001000)
s3c24xx-pcm: Entered s3c24xx_pcm_pointer
s3c24xx-pcm: Pointer 332a0676 55000010
dma2: s3c2410_dma_irq:608: ls=3, cur=c3223040, 00000000 c3223000
dma2: s3c2410_dma_irq:608: DCSRC=332a1000, DISRC=332a1000,
DSTAT=00000000 DMT=02, DCON=a0900800
s3c24xx-pcm: Entered s3c24xx_audio_buffdone
s3c24xx-pcm: Entered s3c24xx_pcm_pointer
s3c24xx-pcm: Pointer 332a1290 55000010
s3c24xx-pcm: Entered s3c24xx_pcm_enqueue
s3c24xx-pcm: dma_loaded: 1
s3c2410_dma_enqueue: id=c31f6300, data=332a2000, size=4096
dma2: s3c2410_dma_enqueue: buffer c3223020 queued onto non-empty channel
s3c2410_chan_loadbuffer: loading buff c3223020 (0x332a2000,0x001000)
dma2: s3c2410_dma_irq:608: ls=3, cur=c3223000, 00000000 c3223020
dma2: s3c2410_dma_irq:608: DCSRC=332a2000, DISRC=332a2000,
DSTAT=00000000 DMT=02, DCON=a0900800
s3c24xx-pcm: Entered s3c24xx_audio_buffdone
s3c24xx-pcm: Entered s3c24xx_pcm_pointer
s3c24xx-pcm: Pointer 332a2290 55000010
s3c24xx-pcm: Entered s3c24xx_pcm_enqueue
s3c24xx-pcm: dma_loaded: 1
s3c24xx-pcm: <7>s3c24xx_pcm_enqueue: corrected dma len 3712
s3c2410_dma_enqueue: id=c31f6300, data=332a3000, size=3712
dma2: s3c2410_dma_enqueue: buffer c3223040 queued onto non-empty channel
s3c2410_chan_loadbuffer: loading buff c3223040 (0x332a3000,0x000e80)
dma2: s3c2410_dma_irq:608: ls=3, cur=c3223020, 00000000 c3223040
dma2: s3c2410_dma_irq:608: DCSRC=332a3000, DISRC=332a3000,
DSTAT=00000000 DMT=02, DCON=a0900740
s3c24xx-pcm: Entered s3c24xx_audio_buffdone
s3c24xx-pcm: Entered s3c24xx_pcm_pointer
s3c24xx-pcm: Pointer 332a3290 55000010
s3c24xx-pcm: Entered s3c24xx_pcm_enqueue
s3c24xx-pcm: dma_loaded: 1
s3c2410_dma_enqueue: id=c31f6300, data=332a0000, size=4096
dma2: s3c2410_dma_enqueue: buffer c3223000 queued onto non-empty channel
s3c2410_chan_loadbuffer: loading buff c3223000 (0x332a0000,0x001000)
dma2: s3c2410_dma_irq:608: ls=3, cur=c3223040, 00000000 c3223000
dma2: s3c2410_dma_irq:608: DCSRC=332a3e80, DISRC=332a0000,
DSTAT=00000000 DMT=02, DCON=a0900800
s3c24xx-pcm: Entered s3c24xx_audio_buffdone
s3c24xx-pcm: Entered s3c24xx_pcm_pointer
s3c24xx-pcm: Pointer 332a0290 55000010
s3c24xx-pcm: Entered s3c24xx_pcm_trigger
s3c2410_dma_dostop:
dma2: s3c2410_dma_dostop:857: ls=1, cur=c3223000, 00000000 c3223000
dma2: s3c2410_dma_dostop:857: DCSRC=332a03b0, DISRC=332a0000,
DSTAT=00000628 DMT=02, DCON=a0900800
s3c24xx-i2s: Entered s3c24xx_i2s_trigger
s3c24xx-i2s: Entered s3c24xx_snd_txctrl
s3c24xx-i2s: r: IISCON: 127 IISMOD: 89 IISFCON: a000
s3c24xx-i2s: w: IISCON: 10f IISMOD: 9 IISFCON: 0
dma2: end of transfer, stopping channel (-32223)
s3c2410_dma_dostop:
dma2: s3c2410_dma_dostop:857: ls=0, cur=c3223000, 00000000 c3223000
dma2: s3c2410_dma_dostop:857: DCSRC=332a058a, DISRC=332a0000,
DSTAT=00000000 DMT=04, DCON=a0d00000
s3c24xx-pcm: Entered s3c24xx_pcm_hw_free
s3c24xx-pcm: Entered s3c24xx_pcm_hw_free
s3c24xx-pcm: Entered s3c24xx_pcm_close
#
--
Christian Pellegrin, see http://www.evolware.org/chri/
"Real Programmers don't play tennis, or any other sport which requires
you to change clothes. Mountain climbing is OK, and Real Programmers
wear their climbing boots to work in case a mountain should suddenly
spring up in the middle of the computer room."
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: possible problem in s3c24xx-pcm.c in git-devel branch
2008-11-13 15:40 ` christian pellegrin
@ 2008-11-13 16:09 ` Mark Brown
2008-11-14 12:46 ` Mark Brown
0 siblings, 1 reply; 9+ messages in thread
From: Mark Brown @ 2008-11-13 16:09 UTC (permalink / raw)
To: christian pellegrin; +Cc: David Anders, alsa-devel, Ben Dooks
On Thu, Nov 13, 2008 at 04:40:03PM +0100, christian pellegrin wrote:
> AFAIK it's limited to 2 transfers, one loaded and one running. It
Yes, exactly - meaning that when DMA is idle there's only the loaded
buffer.
> could beneficial to have more of them (so the DMA doesn't stop if one
> interrupt is delayed for too much time). But I don't know if it's so
> critical. A period (4k) with cd quality sound takes 23 ms to be
> played. An embedded system not responding to irqs for all this time
> probably has worse issues.
AIUI it's a bootstrapping issue: the problem is what happens when the
first DMA buffer completes if there isn't a new buffer ready. Once
there's a loaded buffer ready things are happy.
I'm wondering if adding a call to s3c24xx_pcm_enqueue() in the start
trigger after enabling the DMA might help matters, but I've not thought
that through at all.
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: possible problem in s3c24xx-pcm.c in git-devel branch
2008-11-13 16:09 ` Mark Brown
@ 2008-11-14 12:46 ` Mark Brown
2008-11-14 16:20 ` christian pellegrin
0 siblings, 1 reply; 9+ messages in thread
From: Mark Brown @ 2008-11-14 12:46 UTC (permalink / raw)
To: christian pellegrin; +Cc: David Anders, alsa-devel, Ben Dooks
On Thu, Nov 13, 2008 at 04:09:36PM +0000, Mark Brown wrote:
> AIUI it's a bootstrapping issue: the problem is what happens when the
> first DMA buffer completes if there isn't a new buffer ready. Once
> there's a loaded buffer ready things are happy.
More info provided by Dave on IRC:
15:46 < prpplague> now the big difference between the 2410 and 2440 is ofcourse
the primary clock, the 2410 generally running 200mhz whereas
the 2440 is at 400mhz
...
15:49 < prpplague> i'm wondering if that when on a 200mhz s3c2410 that the
second dma enqueued buffer is done, that it has been long
enough for the dma channel to have started, but on the 2440
running at 400mhz it hasn't had time to start
...
16:38 < prpplague> broonie: i wonder if i clock the my s3c2440 board at 200mhz
and retested if i would see the issue
16:41 < prpplague> broonie: yep, i can recreate christians problem when using
the s3c2440 at 200mhz
16:42 < prpplague> broonie: and also if i use the stock code, i.e. without the
enqueue limit being 1, and running at 200mhz the audio issue
goes away
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: possible problem in s3c24xx-pcm.c in git-devel branch
2008-11-14 12:46 ` Mark Brown
@ 2008-11-14 16:20 ` christian pellegrin
2008-11-17 11:00 ` Mark Brown
0 siblings, 1 reply; 9+ messages in thread
From: christian pellegrin @ 2008-11-14 16:20 UTC (permalink / raw)
To: Mark Brown; +Cc: David Anders, alsa-devel, Ben Dooks
On Fri, Nov 14, 2008 at 1:46 PM, Mark Brown <broonie@sirena.org.uk> wrote:
>
> More info provided by Dave on IRC:
>
> 15:46 < prpplague> now the big difference between the 2410 and 2440 is ofcourse
> the primary clock, the 2410 generally running 200mhz whereas
> the 2440 is at 400mhz
>
>
Hi,
to say the truth I never saw problems on the S3c2440 custom board @
400Mhz I worked with initially:
CPU S3C2440A (id 0x32440001)
S3C244X: core 399.651 MHz, memory 133.217 MHz, peripheral 66.608 MHz
Right now I cannot do much complete audio testing with it (the audio
part after the codec is crippled) but I can test if dma starts and if
audio playing last the right number of seconds. My initial patch was
against 2.6.27 so without the limitation on the maximum period
initially loading but I remembered that there were only 2 buffers
loaded because the lower level dma enqueue function returned error
after that. I never saw problems with aplay and madplay.
I will try to do some changes in that code but my worry is how to know
how many periods are filled with data for sure by the upper ALSA
layers (I'm not an expert in ASLA as you can see).
--
Christian Pellegrin, see http://www.evolware.org/chri/
"Real Programmers don't play tennis, or any other sport which requires
you to change clothes. Mountain climbing is OK, and Real Programmers
wear their climbing boots to work in case a mountain should suddenly
spring up in the middle of the computer room."
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: possible problem in s3c24xx-pcm.c in git-devel branch
2008-11-14 16:20 ` christian pellegrin
@ 2008-11-17 11:00 ` Mark Brown
0 siblings, 0 replies; 9+ messages in thread
From: Mark Brown @ 2008-11-17 11:00 UTC (permalink / raw)
To: christian pellegrin; +Cc: David Anders, alsa-devel, Ben Dooks
On Fri, Nov 14, 2008 at 05:20:35PM +0100, christian pellegrin wrote:
> initially loading but I remembered that there were only 2 buffers
> loaded because the lower level dma enqueue function returned error
> after that. I never saw problems with aplay and madplay.
No errors were being returned - the problems were all in the audio
output but the applications weren't aware of this.
> I will try to do some changes in that code but my worry is how to know
> how many periods are filled with data for sure by the upper ALSA
> layers (I'm not an expert in ASLA as you can see).
It's really up to the application how much data it tries to provide.
^ permalink raw reply [flat|nested] 9+ messages in thread
end of thread, other threads:[~2008-11-17 11:00 UTC | newest]
Thread overview: 9+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2008-11-13 14:57 possible problem in s3c24xx-pcm.c in git-devel branch christian pellegrin
2008-11-13 15:17 ` Mark Brown
2008-11-13 15:40 ` christian pellegrin
2008-11-13 16:09 ` Mark Brown
2008-11-14 12:46 ` Mark Brown
2008-11-14 16:20 ` christian pellegrin
2008-11-17 11:00 ` Mark Brown
2008-11-13 15:44 ` David Anders
2008-11-13 16:02 ` christian pellegrin
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.