Part Number: AM625
About two months ago, I successfully played 4-channel audio using McASP on the BeagleBone Black (AM335x). However, since the BeagleBone is an older platform, I am now trying to implement the same functionality on the PocketBeagle2 (AM6254) for a more modern and lower-cost system.
One thing I noticed is that, unlike the BeagleBone Black, the PocketBeagle2 does not appear to have an onboard audio X-TAL (24.576MHz), so it seems that the audio clock must be generated differently.
I was able to get audio playback working, but the playback speed is completely incorrect — the audio finishes within about 1 second, which makes me suspect that McASP is running from an incorrect AUX clock source or an unintended clock configuration. (when I explicitly set the clock inside simple-audio-card,cpu, so I kept only sound-dai=<&mcasp0>;)
This thread was extremely helpful:
https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1487650/am625-running-mcasp-as-master-with-external-audio_ext_refclk-of-24-576mhz
https://software-dl.ti.com/tisci/esd/latest/5_soc_doc/am62x/clocks.html#clocks-for-mcasp0-device
However, even after checking the clock summary and trying several debugging approaches, it still seems like my clock configuration is not being applied correctly.
I would appreciate any advice on the proper way to configure the McASP audio clocks on AM6254 when running McASP as master.
Results:
locofield@loco-adp:~$ aplay -l
**** List of PLAYBACK Hardware Devices ****
card 0: locofieldmcasp [locofield-mcasp], device 0: davinci-mcasp.0-a2b24xx-hifi a2b24xx.2-0068-0 [davinci-mcasp.0-a2b24xx-hifi a2b24xx.2-0068-0]
locofield@loco-adp:~$ speaker-test -c4 -r48000 -FS32_LE
speaker-test 1.2.14
Playback device is default
Stream parameters are 48000Hz, S32_LE, 4 channels
Using 16 octaves of pink noise
ALSA lib pcm_params.c:2235:(snd1_pcm_hw_refine_slave) Slave PCM not usable
Broken configuration for playback: no configurations available: Invalid argument
Setting of hwparams failed: Invalid argument
#include "k3-am6232-pocketbeagle2.dts"
/ {
compatible = "beagle,am62-pocketbeagle2", "ti,am625";
model = "BeagleBoard.org PocketBeagle2";
sound {
compatible = "simple-audio-card";
simple-audio-card,name = "locofield-mcasp";
simple-audio-card,format = "i2s";
simple-audio-card,bitclock-master = <&dailink0_master>;
simple-audio-card,frame-master = <&dailink0_master>;
dailink0_master: simple-audio-card,cpu {
sound-dai = <&mcasp0>;
};
simple-audio-card,codec {
sound-dai = <&a2b24xx>;
};
};
};
...
&main_pmx0 {
mcasp0_pins: mcasp0-default-pins {
pinctrl-single,pins = <
AM62X_IOPAD(0x1a0, PIN_INPUT, 2) // P1.02 AUDIO EXT REFCLK0
AM62X_IOPAD(0x1a4, PIN_OUTPUT, 0) // ACLKX
AM62X_IOPAD(0x1a8, PIN_OUTPUT, 0) // AFSX
AM62X_IOPAD(0x194, PIN_OUTPUT, 0) // AXR3
AM62X_IOPAD(0x198, PIN_OUTPUT, 0) // AXR2
>;
};
...
&mcasp0 {
status = "okay";
#sound-dai-cells = <0>;
pinctrl-names = "default";
pinctrl-0 = <&mcasp0_pins>;
op-mode = <0>;
tdm-slots = <2>;
slot-width = <32>;
num-serializer = <4>;
serial-dir = <0 0 1 1>;
clocks = <&k3_clks 190 0>, <&k3_clks 190 15>;
clock-names = "fck", "ahclkx";
assigned-clocks = <&k3_clks 190 0>, <&k3_clks 190 15>;
assigned-clock-parents = <&k3_clks 190 2>, <&k3_clks 190 18>;
assigned-clock-rates = <0>, <6144000>;
};
locofield@loco-adp:~$ sudo k3conf dump clock2 190
|------------------------------------------------------------------------------------------------|
| VERSION INFO |
|------------------------------------------------------------------------------------------------|
| K3CONF | (version 0.4-nogit built Thu Dec 04 20:24:55 UTC 2025) |
| SoC | AM62X SR1.0 |
| SoC identifiers | [0x3a247529] 0x1d123 Func-Safe Secure 'T' Grade -40 C to 125 C ALW Package |
| SYSFW | ABI: 4.0 (firmware version 0x000b '11.2.5--v11.02.05 (Fancy Rat))') |
| DM ABI Info | 3.0 |
| DM F/w rev | 11.2.5 |
| DM Component rev | RM/PM HAL:'v11.02.05' SCI_SERV:'MSDK.11.02.00.11' |
| F/w Capabilities | 0x7b7: GEN DEEP_SLP MCU_ONLY PART_IO DM_MGD_LPM IO_ISO DM-SPLT |
|------------------------------------------------------------------------------------------------|
|-----------------------------------------------------------------------------------------------------------------------------|
| Device ID | Clock ID | Clock Name | Status | Clock Frequency |
|-----------------------------------------------------------------------------------------------------------------------------|
| 190 | 0 | DEV_MCASP0_AUX_CLK | CLK_STATE_READY | 96000000 |
| 190 | 1 | DEV_MCASP0_AUX_CLK_PARENT_POSTDIV4_16FF_MAIN_2_HSDIVOUT8_CLK | CLK_STATE_READY | 100000000 |
| 190 | 2 | DEV_MCASP0_AUX_CLK_PARENT_POSTDIV1_16FFT_MAIN_1_HSDIVOUT6_CLK | CLK_STATE_READY | 96000000 |
| 190 | 3 | DEV_MCASP0_MCASP_ACLKR_PIN | CLK_STATE_READY | 0 |
| 190 | 4 | DEV_MCASP0_MCASP_ACLKR_POUT | CLK_STATE_READY | 0 |
| 190 | 5 | DEV_MCASP0_MCASP_ACLKX_PIN | CLK_STATE_READY | 0 |
| 190 | 6 | DEV_MCASP0_MCASP_ACLKX_POUT | CLK_STATE_READY | 0 |
| 190 | 7 | DEV_MCASP0_MCASP_AFSR_POUT | CLK_STATE_READY | 0 |
| 190 | 8 | DEV_MCASP0_MCASP_AFSX_POUT | CLK_STATE_READY | 0 |
| 190 | 9 | DEV_MCASP0_MCASP_AHCLKR_PIN | CLK_STATE_READY | 0 |
| 190 | 10 | DEV_MCASP0_MCASP_AHCLKR_PIN_PARENT_BOARD_0_EXT_REFCLK1_OUT | CLK_STATE_READY | 0 |
| 190 | 11 | DEV_MCASP0_MCASP_AHCLKR_PIN_PARENT_GLUELOGIC_HFOSC0_CLKOUT | CLK_STATE_READY | 25000000 |
| 190 | 12 | DEV_MCASP0_MCASP_AHCLKR_PIN_PARENT_BOARD_0_AUDIO_EXT_REFCLK0_OUT | CLK_STATE_READY | 0 |
| 190 | 13 | DEV_MCASP0_MCASP_AHCLKR_PIN_PARENT_BOARD_0_AUDIO_EXT_REFCLK1_OUT | CLK_STATE_READY | 0 |
| 190 | 14 | DEV_MCASP0_MCASP_AHCLKR_POUT | CLK_STATE_READY | 0 |
| 190 | 15 | DEV_MCASP0_MCASP_AHCLKX_PIN | CLK_STATE_READY | 0 |
| 190 | 16 | DEV_MCASP0_MCASP_AHCLKX_PIN_PARENT_BOARD_0_EXT_REFCLK1_OUT | CLK_STATE_READY | 0 |
| 190 | 17 | DEV_MCASP0_MCASP_AHCLKX_PIN_PARENT_GLUELOGIC_HFOSC0_CLKOUT | CLK_STATE_READY | 25000000 |
| 190 | 18 | DEV_MCASP0_MCASP_AHCLKX_PIN_PARENT_BOARD_0_AUDIO_EXT_REFCLK0_OUT | CLK_STATE_READY | 0 |
| 190 | 19 | DEV_MCASP0_MCASP_AHCLKX_PIN_PARENT_BOARD_0_AUDIO_EXT_REFCLK1_OUT | CLK_STATE_READY | 0 |
| 190 | 20 | DEV_MCASP0_MCASP_AHCLKX_POUT | CLK_STATE_READY | 0 |
| 190 | 21 | DEV_MCASP0_VBUSP_CLK | CLK_STATE_READY | 250000000 |
|-----------------------------------------------------------------------------------------------------------------------------|
locofield@loco-adp:~$ cat /sys/kernel/debug/pinctrl/*/pinmux-pins | grep "mcasp"
pin 101 (PIN101): 2b00000.audio-controller (GPIO UNCLAIMED) function mcasp0-default-pins group mcasp0-default-pins
pin 102 (PIN102): 2b00000.audio-controller (GPIO UNCLAIMED) function mcasp0-default-pins group mcasp0-default-pins
pin 104 (PIN104): 2b00000.audio-controller (GPIO UNCLAIMED) function mcasp0-default-pins group mcasp0-default-pins
pin 105 (PIN105): 2b00000.audio-controller (GPIO UNCLAIMED) function mcasp0-default-pins group mcasp0-default-pins
pin 106 (PIN106): 2b00000.audio-controller (GPIO UNCLAIMED) function mcasp0-default-pins group mcasp0-default-pins