DESK-MX8M-L/Peripherals/Audio

From DAVE Developer's Wiki
Jump to: navigation, search
History
ID# Issue Date Notes

17551

24/02/2023 DESK-MX8M-L 2.0.0 release


Peripheral Audio[edit | edit source]

Access to the audio interface is provided by ALSA (Advanced Linux Sound Architecture), which consists in a kernel driver and a users space library for application developers. A set of standard tools (alsa-utils) can be used for simple management of the audio codec.

Device tree configuration[edit | edit source]

MITO 8M Mini[edit | edit source]

Here below an example of device tree configuration used on standard DAVE's kit for MITO 8M Mini:

From imx8mm-mito8mmini.dts it is possible to find the codec SSI interface configuration:

...
...
    sound {
		compatible = "simple-audio-card";
		simple-audio-card,format = "i2s";
		simple-audio-card,name = "SBCX_TLV320";
		simple-audio-card,bitclock-master = <&codec_dai>;
		simple-audio-card,frame-master = <&codec_dai>;
		simple-audio-card,widgets =
			"Headphone", "Headphone Jack",
			"Line", "Line In",
			"Microphone", "Mic Jack";
		simple-audio-card,routing =
						"Speaker", "SPK",
						"Headphone Jack", "HPL",
						"Headphone Jack", "HPR",
						"MIC1LP", "Line In",
						"MIC1LM", "Line In",
						"MIC1RP", "Mic Jack",
						"Mic Jack", "MICBIAS";

		simple-audio-card,cpu {
			sound-dai = <&sai2>;
		};

		codec_dai: simple-audio-card,codec {
			sound-dai = <&codec>;
			system-clock-frequency = <24000000>;
		};
	};

...
...
&sai2 {
	#sound-dai-cells = <0>;
	pinctrl-names = "default";
	pinctrl-0 = <&pinctrl_sai2>;
	pinctrl-1 = <&pinctrl_codec_en>;
	clocks = <&clk IMX8MM_CLK_SAI2_ROOT>;
	assigned-clocks = <&clk IMX8MM_CLK_SAI2>;
	assigned-clock-parents = <&clk IMX8MM_AUDIO_PLL1_OUT>;
	assigned-clock-rates = <24576000>;
	status = "okay";
};
...
...
&iomuxc {
...
...
   	pinctrl_sai2: sai2grp {
		fsl,pins = <
			MX8MM_IOMUXC_SAI2_MCLK_SAI2_MCLK		0xd6
			MX8MM_IOMUXC_SAI2_TXFS_SAI2_TX_SYNC		0xd6
			MX8MM_IOMUXC_SAI2_TXC_SAI2_TX_BCLK		0xd6
			MX8MM_IOMUXC_SAI2_TXD0_SAI2_TX_DATA0	0xd6
			MX8MM_IOMUXC_SAI2_RXFS_SAI2_RX_SYNC		0xd6
			MX8MM_IOMUXC_SAI2_RXC_SAI2_RX_BCLK		0xd6
			MX8MM_IOMUXC_SAI2_RXD0_SAI2_RX_DATA0	0xd6
		>;
	};
...
	pinctrl_codec_en: codecen {
		fsl,pins = <
			MX8MM_IOMUXC_SAI3_RXFS_GPIO4_IO28			 0x19
		>;
	};
...
...

Accessing the peripheral[edit | edit source]

Linux messages at boot time[edit | edit source]

...
...
[    5.259739] debugfs: Directory '30020000.sai' with parent 'SBCX_TLV320' already present!
[    5.267980] asoc-simple-card sound: tlv320aic31xx-hifi <-> 30020000.sai mapping ok
...
...
[    5.454902] ALSA device list:
[    5.454906]   #0: SBCX_TLV320

To list the audio sound cards just use the aplay utility:

root@desk-mx8mm:~# aplay -l
**** List of PLAYBACK Hardware Devices ****
card 0: SBCXTLV320 [SBCX_TLV320], device 0: 30020000.sai-tlv320aic31xx-hifi tlv320aic31xx-hifi-0 []
  Subdevices: 1/1
  Subdevice #0: subdevice #0
root@desk-mx8mm:~#

Usage alsa-utils[edit | edit source]

In order to unmute the speaker the amixer utility can be used.

root@desk-mx8mm:~# amixer sset "Speaker" on
Simple mixer control 'Speaker',0
  Capabilities: pswitch pswitch-joined
  Playback channels: Mono
  Mono: Playback [on]
root@desk-mx8mm:~# amixer sset "Speaker Analog" 100
Simple mixer control 'Speaker Analog',0
  Capabilities: pvolume pvolume-joined
  Playback channels: Mono
  Limits: Playback 0 - 127
  Mono: Playback 100 [79%] [-13.50dB]
root@desk-mx8mm:~# amixer sset "Speaker Driver" on 2
Simple mixer control 'Speaker Driver',0
  Capabilities: pvolume pvolume-joined pswitch pswitch-joined
  Playback channels: Mono
  Limits: Playback 0 - 3
  Mono: Playback 2 [67%] [18.00dB] [on]
root@desk-mx8mm:~# amixer sset "DAC" 100
Simple mixer control 'DAC',0
  Capabilities: pvolume
  Playback channels: Front Left - Front Right
  Limits: Playback 0 - 175
  Mono:
  Front Left: Playback 100 [57%] [-13.50dB]
  Front Right: Playback 100 [57%] [-13.50dB]
root@desk-mx8mm:~# amixer sset "Output Left From Left DAC" on
Simple mixer control 'Output Left From Left DAC',0
  Capabilities: pswitch pswitch-joined
  Playback channels: Mono
  Mono: Playback [on]

To perform a sound, execute the command:

root@desk-mx8mm:~# aplay sample_22_frames.mp3 
Playing raw data 'sample_22_frames.mp3' : Unsigned 8 bit, Rate 8000 Hz, Mono

Additional information[edit | edit source]

Information about alsa-utils can be found on ALSA project wiki pages