This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

OMAPL138 Multiple Audio Channels(2RX+2TX) not work

Other Parts Discussed in Thread: OMAPL138

 I am trying to set  multiple serializers (2 TX and 2 RX) in OMAPL138 McASP0. I am using the linux-2.6.37-psp03.21.00.04.sdk that has code for 1 channel (1 TX and 1 RX ) only. I have gotten 1 TX and 1 RX working  very well in my board using omapl138 McASP. But when I set 2tx + 2rx to this framework, I see that DMA IRQ is not coming. Following are the modifications I made to the default architecture. Please tell me if I am missing something?

/* davinci da850 evm audio machine driver */
static u8 da850_iis_serializer_direction[] = {
 INACTIVE_MODE, INACTIVE_MODE, INACTIVE_MODE, INACTIVE_MODE,
 INACTIVE_MODE, INACTIVE_MODE, INACTIVE_MODE, INACTIVE_MODE,
 TX_MODE, TX_MODE, RX_MODE, RX_MODE,
 INACTIVE_MODE, INACTIVE_MODE, INACTIVE_MODE, INACTIVE_MODE,
};

static struct snd_platform_data da850_evm_snd_data = {
 .tx_dma_offset = 0x2000,
 .rx_dma_offset = 0x2000,
 .op_mode = DAVINCI_MCASP_IIS_MODE,
 .num_serializer = ARRAY_SIZE(da850_iis_serializer_direction),
 .tdm_slots = 4,
 .serial_dir = da850_iis_serializer_direction,
 .asp_chan_q = EVENTQ_0,
 .version = MCASP_VERSION_2,
 .txnumevt =2,
 .rxnumevt =2,
};

  • Moving this to the OMAPL138 forum.

  • Hi,

    Thanks for your post.

    If the number of TDM slots to be transmitted by the McASP are lesser than the number of active slots in the TDM bus, you will experience a TX. UNDERRUN issue which is a known issue. Please see the note below:

    McASP: Inactive Slot Usage Note

    On all silicon revisions, in any McASP serializer configured a transmit serializer with an n-slot TDM, data transfer can fail if both of the conditions below are true:

    1. one or more time slots within the n-slot TDM are configured as inactive and

    2. EDMA is used to transfer data to McASP

    For more details on the issue, please refer the below E2E post:

    http://e2e.ti.com/support/dsp/omap_applications_processors/f/42/p/267851/1051902.aspx

    Thanks & regards,

    Sivaraj K

    -------------------------------------------------------------------------------------------------------

    Please click the Verify Answer button on this post if it answers your question

    -------------------------------------------------------------------------------------------------------

  • Think you for your answer. I checked the regster XSTAT = 0x00000175(UNDERRUN issue),but I also checked the register  XTDM = 0X0000000f, the number of transmit channels are equal to the number of slots,it still don't work

    the register value  follows:

    01d00000: 44300a02 00000000 00000000 00000000
    01d00010: 00000000 1c000300 00000000 c600f080
    01d00020: 00000000 00000000 00000000 00000000
    01d00030: 0000c291 00000000 00000001 00000000
    01d00040: 00000000 00001f00 00000000 00000000
    01d00050: 00000000 00000000 00000000 00000000
    01d00060: 00001f00 0000ffff 00000074 00000102
    01d00070: 001800af 00008000 00000000 00000000
    01d00080: 00000104 00000000 00000000 00000000
    01d00090: 00000000 00000000 00000000 00000000
    01d000a0: 00001f00 0000ffff 00008074 00000212
    01d000b0: 000000af 00008000 0000000f 00000000
    01d000c0: 00000175 00000000 c7000000 00000000
    01d000d0: 00000000 00000000 00000000 00000000
    01d000e0: 00000000 00000000 00000000 00000000
    01d000f0: 00000000 00000000 00000000 00000000
    01d00100: 00000000 00000000 00000000 00000000
    01d00110: 00000000 00000000 00000000 00000000
    01d00120: 00000000 00000000 00000000 00000000

  • Hi,

    Thanks for your update.

    How many Tx. TDM slots are active on a n-slot TDM bus?

    Do you have any inactive slots on a n-slot TDM bus on the Tx. side?

    Please enable error interrutps in IER and check whether you are able to get tx. underrun flag active and correspondingly, underrun interrupt is triggering?

    For example, if any 1 slot is inactive on a 8-slot TDM bus to be transmitted, you will experience a TX. underrun issue and in order to transmit data to/from McASP through EDMA, you need to configure all tx. slots to be active in your code in order to overcome tx. underrun error which could be a tentative workaround and the actual silicon errata fix will be updated in the upcoming releases.

    Thanks & regards,

    Sivaraj K

    -------------------------------------------------------------------------------------------------------

    Please click the Verify Answer button on this post if it answers your question

    -------------------------------------------------------------------------------------------------------

     

  • HI,Sivaraj

    Thanks for your post.

    I set 4-slot TDM bus ,and 4 Tx.TDM slots are active  (XTDM=0x0000000f) 

    and AFIFO Registers :

    01d01010: 00010402 00000000 00010402 00000040
    01d01020: 00000000 00000000 00000000 00000000   
    01d01030: 00000000 00000000 00000000 00000000   
    01d01040: 00000000 00000000 00000000 00000000   
    01d01050: 00000000 00000000 00000000 00000000   
    01d01060: 00000000 00000000 00000000 00000000   

    Is Multi-serializer mode  not supported at the moment?

  • Hi,

    I mean, all Tx. serializers (AXRs) being configured as active on a n-slot TDM bus, then there wouldn't be any underrun issue. It means, it works in multi-serializer mode but not with inactive serializer slots.

    Thanks & regards,

    Sivaraj K

    -------------------------------------------------------------------------------------------------------

    Please click the Verify Answer button on this post if it answers your question

    -------------------------------------------------------------------------------------------------------