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.

TDA4VM : McASP and Dummy mode on J7

Hi Experts,

I need to use McASP10 of J7 to do some testing with external device base on no codec device.

MCASP10 AXR0 : input, receive I2S signal from external device
MCASP10 AXR1 : output, Send I2S signal to external device

I set to Dummy mode and play the wav file,

but I can't probe any signal from McASP10 ACLKX and AXR1 with oscilloscope.

Could you give me some advice, 

Thanks and Best Regards,

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

Kernel version:Linux j7-evm 5.10.100 #9 SMP PREEMPT Mon May 22 15:43:41 CST 2023 aarch64 aarch64 aarch64 GNU/Linux

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

I have referred to these discussions to modify the DTS

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/607500/linux-processor-sdk-am335x-mcasp-master-mode-configuration

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/672205/linux-am3352-mcasp-configuration-for-dummy-codec

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/629979/linux-dra745-mcasp-and-dummy-sound-card-on-dra7xx?tisearch=e2e-sitesearch&keymatch=jacinto

and I tried using "aplay" to check if dummy function is workable

root@j7-evm:~# aplay -l
**** List of PLAYBACK Hardware Devices ****
card 0: Dummy [Dummy], device 0: Dummy PCM [Dummy PCM]
Subdevices: 8/8
Subdevice #0: subdevice #0
Subdevice #1: subdevice #1
Subdevice #2: subdevice #2
Subdevice #3: subdevice #3
Subdevice #4: subdevice #4
Subdevice #5: subdevice #5
Subdevice #6: subdevice #6
Subdevice #7: subdevice #7

root@j7-evm:~# aplay /bin/Ring01.wav
Playing WAVE '/bin/Ring01.wav' : Signed 16 bit Little Endian, Rate 22050  Hz, Stereo

After "aplay" the wav file, I can't probe the signal out put on McASP10 ACLKX and FSX.

Checking aplay status, it looks like "aplay" is working,

root@j7-evm:~# aplay /bin/Ring01.wav &
[1] 1248
Playing WAVE '/bin/Ring01.wav' : Signed 16 bit Little Endian, Rate 22050 Hz, Stereo
root@j7-evm:~# cat /proc/asound/card0/pcm0p/sub0/status
state: RUNNING
owner_pid : 1248
trigger_time: 2583.017112615
tstamp : 0.000000000
delay : 10250
avail : 775
avail_max : 8269
-----
hw_ptr : 28336
appl_ptr : 38586
root@j7-evm:~#
root@j7-evm:~# cat /proc/asound/card0/pcm0p/sub0/status
state: RUNNING
owner_pid : 1248
trigger_time: 2583.017112615
tstamp : 0.000000000
delay : 9948
avail : 1077
avail_max : 2756
-----
hw_ptr : 100294
appl_ptr : 110242
root@j7-evm:~#

and I set SND_DUMMY to "y" in defconfig ( "board-support/linux-5.10.100+gitAUTOINC+7a7a3af903-g7a7a3af903/arch/arm64/configs/tisdk_j7-evm_defconfig")

CONFIG_SND_SIMPLE_CARD=y

CONFIG_SND_DUMMY=y

I modified the DTS "k3-j721e-common-proc-board.dts"

codec_test: codec_test {

    compatible = "linux,snd-soc-dummy";
    #sound-dai-cells = <0>;
    status="okay";

};

sound0: sound@0 {

    compatible = "simple-audio-card";
    simple-audio-card,name = "TEST-EVM";
    simple-audio-card,format = "i2s";
    simple-audio-card,bitclock-master = <&sound_master>;
    simple-audio-card,frame-master = <&sound_master>;

    status="okay";
                       
    sound_master: simple-audio-card,cpu {
        sound-dai = <&mcasp10>;
        system-clock-frequency = <24576000>;
    };
    simple-audio-card,codec {
        sound-dai = <&codec_test>;     
    };

};

mcasp10_pins_default: mcasp10-pins-default {
    pinctrl-single,pins = <
        J721E_IOPAD(0x158, PIN_OUTPUT_PULLDOWN, 12) /* (U23) RGMII5_TX_CTL.MCASP10_ACLKX */
        J721E_IOPAD(0x15c, PIN_OUTPUT_PULLDOWN, 12) /* (U26) RGMII5_RX_CTL.MCASP10_AFSX */
        J721E_IOPAD(0x160, PIN_OUTPUT_PULLDOWN, 12) /* (V28) RGMII5_TD3.MCASP10_AXR0 */
        J721E_IOPAD(0x164, PIN_OUTPUT_PULLDOWN, 12) /* (V29) RGMII5_TD2.MCASP10_AXR1 */
    >;
};

&mcasp10 {

    #sound-dai-cells = <0>;
    
    pinctrl-names = "default";
    pinctrl-0 = <&mcasp10_pins_default>;
    
    op-mode = <0>; // MCASP_IIS_MODE
    tdm-slots = <2>;
    auxclk-fs-ratio = <256>;

    serial-dir = < // 0: INACTIVE, 1: TX, 2: RX
        1 2 0 0
    >;
    tx-num-evt = <32>;
    rx-num-evt = <32>;
};

u-boot pin definition "board-support/u-boot-2021.01+gitAUTOINC+44a87e3ab8-g44a87e3ab8/arch/arm/dts/k3-j721e-common-proc-board.dts", 

the MCASP 10 pin definition is the same as the kernel's DTS

mcasp10_pins_default: mcasp10-pins-default {
    pinctrl-single,pins = <
        J721E_IOPAD(0x158, PIN_OUTPUT_PULLDOWN, 12) /* (U23) RGMII5_TX_CTL.MCASP10_ACLKX */
        J721E_IOPAD(0x15c, PIN_OUTPUT_PULLDOWN, 12) /* (U26) RGMII5_RX_CTL.MCASP10_AFSX */
        J721E_IOPAD(0x160, PIN_OUTPUT_PULLDOWN, 12) /* (V28) RGMII5_TD3.MCASP10_AXR0 */
        J721E_IOPAD(0x164, PIN_OUTPUT_PULLDOWN, 12) /* (V29) RGMII5_TD2.MCASP10_AXR1 */
    >;
};

 

and I add some debug message in "davinci-mcasp.c" th check if the mcasp driver is running.

when system booting, I found the function "mcasp_reparent_fck()" return '0', because it can't get "fck_parent"

parent_name = of_get_property(node, "fck_parent", NULL);
if (!parent_name)
    return 0;

Do you have any suggestions about the system does not get the property parent_name?

Will it cause no signal output of MCASP ACLKX/AXR?

  • Dear Expert,

    Shawn is my customer.

    we have checked something,

    1. Pinmux is correct.

    mode 12 "C" is McASP 10

    I guess dummy code should be work in software, but there are not real hardware signal out.

    It should be device tree setting problem, so we need related example

    May you help us?

    Many Thanks

    Gibbs

  • Hi, Dear TI Expert.

    After checking few days, I think issue should be very clear.

    I think customer face device tree setting issue, because driver probe works, but get property fail.

    pinmux setting should fine.

    We need some suggestion (or correct device tree setting) for McASP dummy mode in J7 device tree

    Shawn, May you also upload original boot log & deevice tree file for us?

    Many Thanks

    Gibbs