On 04/07/2015 09:33 PM, noman pouigt wrote:
In my setup codec(max98090) is master and mcbsp is slave. I used above command and got below error: arecord: set_params:1233: Sample format non available Available formats:
- S16_LE
The codec only supports S16_LE or S24_LE.
So i changed the format to S16_LE and got below error: arecord: pcm_read:2031: read error: Input/output error
I checked the dmesg and found out that interrupt triggered only once and after some time all widgets gets powered down. Below is part of the dmesg.
[ 174.186431] snd_pcm_lib_read [ 174.186462] snd_pcm_lib_read1 [ 174.187042] omap-mcbsp 48074000.mcbsp: **** McBSP255 regs **** [ 174.187072] omap-mcbsp 48074000.mcbsp: DRR2: 0xedd0abce [ 174.187103] omap-mcbsp 48074000.mcbsp: DRR1: 0x0000 [ 174.187133] omap-mcbsp 48074000.mcbsp: DXR2: 0x0000 [ 174.187164] omap-mcbsp 48074000.mcbsp: DXR1: 0x0000 [ 174.187194] omap-mcbsp 48074000.mcbsp: SPCR2: 0x0230 [ 174.187225] omap-mcbsp 48074000.mcbsp: SPCR1: 0x0031 [ 174.187255] omap-mcbsp 48074000.mcbsp: RCR2: 0x8041 [ 174.187286] omap-mcbsp 48074000.mcbsp: RCR1: 0x0040 [ 174.187316] omap-mcbsp 48074000.mcbsp: XCR2: 0x8041 [ 174.187347] omap-mcbsp 48074000.mcbsp: XCR1: 0x0040 [ 174.187377] omap-mcbsp 48074000.mcbsp: SRGR2: 0x001f [ 174.187408] omap-mcbsp 48074000.mcbsp: SRGR1: 0x0f00 [ 174.187438] omap-mcbsp 48074000.mcbsp: PCR0: 0x000f [ 174.187469] omap-mcbsp 48074000.mcbsp: *********************** [ 174.187499] snd_pcm_update_hw_ptr0
May i know where am i going wrong?
First check the /proc/asound/card0/pcm0c/sub0/status while the capture is running and look at the hw_ptr if it has moved at all.
Enable more interrupts in sound/soc/omap/mcbsp.c:omap_mcbsp_config(), like RUNDFLEN, ROVFLEN and see if you have overflow in McBSP.
If the DMA has not moved it means that McBSP does not received the FS which would indicate the frame start, thus it will not sample data in, thus it will not trigger the DMA to read the data out.
Since the capture is working on McBSP2 in McBSP slave (and master also) the only thing which can be wrong is the way the max98090 is wired up or some mux issue again as it was before for you.