[alsa-devel] Please help in adding ams-delta support to ASoC
Janusz Krzysztofik
jkrzyszt at tis.icnet.pl
Wed Jun 10 12:27:38 CEST 2009
Hi Peter,
Wednesday 10 June 2009 10:12:32 Peter Ujfalusi napisał(a):
> On Tuesday 09 June 2009 18:17:42 ext Janusz Krzysztofik wrote:
> > +static struct omap_mcbsp_reg_cfg mcbsp_regs = {
> > + .spcr2 = FREE | XINTM(3) | XRST,
> > + .spcr1 = RINTM(3) | RRST,
> > + .rcr1 = RFRLEN1(2 - 1) | RWDLEN1(OMAP_MCBSP_WORD_8),
> > + .xcr1 = XFRLEN1(1 - 1) | XWDLEN1(OMAP_MCBSP_WORD_16),
> > +};
> >
> > BTW, I can't see any way of specifying a similiar mcbsp setup in new
> > omap asoc framework.
>
> Yeah, 8 bit is not supported - in fact only 16 bit is supported - with ASoC
> on OMAP.
Not only this. AFAICS, there is no way of specifying single phase stereo (with
XPHASE/RPHASE unset), 2 words per frame (XFRLEN1/RFRLEN1(2 - 1)). Isn't this
required for correct DSP_A/DSP_B support?
> But you should be able to use the playback with the current ASoC.
Definitelly yes. I am aware that the above limitations have nothing to do with
the main problem, as with current mcbsp code I should always be able to get
some kind of noise at least using one of supported formats, as far as
clocking is set up correctly.
> --- a/arch/arm/plat-omap/dma.c
> +++ b/arch/arm/plat-omap/dma.c
> @@ -266,6 +266,8 @@ void omap_set_dma_transfer_params(int lch, int
> data_type, int elem_count,
> ccr &= ~(1 << 5);
> if (sync_mode == OMAP_DMA_SYNC_FRAME)
> ccr |= 1 << 5;
> + if (dma_trigger)
> + ccr |= dma_trigger & 0x1f;
> dma_write(ccr, CCR(lch));
>
> ccr = dma_read(CCR2(lch));
Applied, sorry, did not help (with capture, unlike playback, set up for
internal clocking for as much device isolation as possible).
# aplay -D hw:0,0 -f S16_LE /dev/urandom
Playing raw data '/dev/urandom' : Signed 16 bit Little Endian, Rate 8000 Hz,
Mono
omap_pcm_trigger START: DMA pointer at 0x11d4a0d0
omap_pcm_trigger STOP: DMA pointer at 0x11d4a0d0 error
# arecord -D hw:0,0 -f S16_LE -t raw /dev/null
Recording raw data '/dev/null' : Signed 16 bit Little Endian, Rate 8000 Hz,
Mono
omap_pcm_trigger START: DMA pointer at 0xe101a0d0
arecord: pcm_read:1529: read error: Input/output error
omap_pcm_trigger STOP: DMA pointer at 0xe101a0d0
# cat /dev/urandom >/dev/dsp
omap_pcm_trigger START: DMA pointer at 0x11d4a0d0
cat: write error: Input/output error
omap_pcm_trigger STOP: DMA pointer at 0x11d4a0d0
# cat /dev/dsp >/dev/null
omap_pcm_trigger START: DMA pointer at 0xe101a0d0
cat: read error: Input/output eromap_pcm_trigger STOP: DMA pointer at
0xe101a0d0
ror
#
BTW, I have found that, when invoked with those "-D hw:0,0 -f SE16_LE"
options, aplay/arecord behave correctly, exactly as Mark has pointed out once
at the beginning of this huge thread, stopping themselves after 10 seconds
with an error message, without need for ^C.
> I would expected that by just copying (I know that there are other things
> involved) the old ALSA arm directory to the latest kernel and compiling it
> should be working... It seams I was wrong.
Anyway, if you find porting one or another framework, back or forward,
helpfull in any way, just let me know, I can try.
Thanks,
Janusz
--
To unsubscribe from this list: send the line "unsubscribe alsa-devel" in
the body of a message to majordomo at vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
More information about the Alsa-devel
mailing list