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.

Problem in Integrating TLV320AIC3104 codec with OMAP4460 (serial data is not coming on DIN pin)

Other Parts Discussed in Thread: TLV320AIC3104, TWL6040

Hi,

I am in process of integrating the TLV320AIC3104 with omap4460, and I have done the necessary machine driver changes.

When I play a file through tinyplay command , I am not able to see the Data coming into the codec DIN pin through probing and

cat /proc/asound/card0/pcm0p/sub0/status not showing proper hw_ptr increments, and audio is not heard on the speaker.

I am suspecting the clock are not supplied properly. The clock that I feed are as follows.

MCLK - 19.2MHZ

BCLK - 24MHZ

WCLK- 12KHZ.

Do see any problem in the above clock values?

I am configuring MCBSP as master and codec as slave.

Any help on this is highly appreciated.


Kind Regards,
Sandeep S.P

  • Hi, Sandeep,

    From your post, it sounds like the issue is with the OMAP side of things, so I am going to move your post to the OMAP forum.

    -d2

  • We were able to resolve the playback issue. 

    Root Cause :  In devices.c file (arch/arm/mach-omap2) omap_init_mcpdm() function, the CLOCKS were getting reset . As of now we have commented this portion of source code. 

    Can anybody suggest me, why the reset of clocks were required here?

    if (cpu_is_omap44xx()) {
    omap_mux_init_signal("abe_pdm_ul_data.abe_pdm_ul_data",
    OMAP_PIN_INPUT_PULLDOWN);

    omap_mux_init_signal("abe_pdm_dl_data.abe_pdm_dl_data",
    OMAP_PIN_INPUT_PULLDOWN);

    omap_mux_init_signal("abe_pdm_frame.abe_pdm_frame",
    OMAP_PIN_INPUT_PULLUP);

    omap_mux_init_signal("abe_pdm_lb_clk.abe_pdm_lb_clk",
    OMAP_PIN_INPUT_PULLDOWN);

    omap_mux_init_signal("abe_clks.abe_clks",
    OMAP_PIN_INPUT_PULLDOWN);
    }

  • Hi Sandeep.

    Those signals are getting setup for a McPDM connection to the codec.  That's the mode used with the TWL6040 codec on the Blaze board.  The same pins are used for McBSP3 which I'm guessing is the McBSP port you are using with the TLV320AICxxxx. So that code puts the pins in the wrong mode for your codec connection.

    Depending on which kernel version you are using, you might have CONFIG_SND_OMAP_SOC_MCPDM incorrectly turned on in order for this code to run.

    Regards,

        Steve