First, before I get to the question - here is a little background:
We have developed our own DM350 product that is loosely based on the
355EVM. We have replaced the decoder, removed the MSP430, redesigned the
switcher etc... I also - by accident - moved the audio codec to McBSP0,
when the original device was using McBSP1.
Because of this, quite a few things in the MVL (yes we are using 2.6.10)
distribution had to change. It seems that there was a bit of hacking to
make the audio work with the 355, and none of it considered that you
might want to use a codec on the other McBSP.
So, here is my problem - the DMA channel that is "assigned" for the
audio_open() (davinci-audio.c) function is wrong. And I can't figure out
where it is coming from !
Here are some snippets from davinci-audio.c
this structure is exported with platform_device_register:
/* Device Information */
static struct platform_device davinci_audio_device = {
.name = DAVINCI_AUDIO_NAME,
.dev = {
.driver_data = &audio_state,
.release = audio_free,
},
.id = 0,
};
...
audio_state_t *state = (&audio_state);
...
audio_stream_t *is = state->input_stream;
...
DPRINTK("DMA REQUEST FOR record\n");
DPRINTK("Channel requested %d, DMA dev %d\n", is->id, is->dma_dev);
DMA_REQUEST(err, is, audio_dma_callback);
So what I see is that 'is->dma_dev' is being passed to me as a 9. This
corresponds to the EDMA channel for ASP1 - not zero like I want. I
confirmed that this was indeed the problem by forcing the channel to 3
(ASP0 for record) and I suddenly have tons of dma !
But I need to fix the underlying problem ... Can anyone tell me who or
what determines the DMA channel for the audio?
Thanks!
Steve Berry
_______________________________________________
Davinci-linux-open-source mailing list
[email protected]
http://linux.davincidsp.com/mailman/listinfo/davinci-linux-open-source