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
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?