DESK-MX9-L/Peripherals/Audio

From DAVE Developer's Wiki
< DESK-MX9-L
Revision as of 08:56, 1 February 2024 by U0007 (talk | contribs)
Jump to: navigation, search
History
Issue Date Notes
2024/01/31 DESK-MX9-L 5.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]

Here below an example of device tree configuration used on standard DAVE's kit for AURA:

From imx93-aura-cb2001.dts it is possible to find the codec 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 = <&sai3>;
		};

		codec_dai: simple-audio-card,codec {
			sound-dai = <&codec>;
			system-clock-frequency = <24000000>;
		};
	};
...
};
...
&sai3 {
	#sound-dai-cells = <0>;
	pinctrl-names = "default";
	pinctrl-0 = <&pinctrl_sai3>;
	pinctrl-1 = <&pinctrl_codec_en>;
	assigned-clocks = <&clk IMX93_CLK_SAI3>;
	assigned-clock-parents = <&clk IMX93_CLK_AUDIO_PLL>;
	assigned-clock-rates = <12288000>;
	fsl,sai-mclk-direction-output;
	status = "okay";
};
...
&lpi2c1 {
...
	codec: tlv320aic31xx@18 {
		#sound-dai-cells = <0>;
		compatible = "ti,tlv320aic3100";
		reg = <0x18>;
		reset-gpios = <&gpio2 21 GPIO_ACTIVE_LOW>;
		HPVDD-supply = <&carrier_reg_3v3>;
		SPRVDD-supply = <&carrier_reg_5v0>;
		SPLVDD-supply = <&carrier_reg_5v0>;
		AVDD-supply = <&carrier_reg_3v3>;
		IOVDD-supply = <&carrier_reg_3v3>;
		DVDD-supply = <&carrier_reg_1v8>;
	};
...
};
...
&iomuxc {
...
	pinctrl_sai3: sai3grp {
		fsl,pins = <
			MX93_PAD_GPIO_IO26__SAI3_TX_SYNC		0x31e
			MX93_PAD_GPIO_IO16__SAI3_TX_BCLK		0x31e
			MX93_PAD_GPIO_IO17__SAI3_MCLK			0x31e
			MX93_PAD_GPIO_IO19__SAI3_TX_DATA00		0x31e
			MX93_PAD_GPIO_IO20__SAI3_RX_DATA00		0x31e
		>;
	};

	pinctrl_codec_en: codecen {
		fsl,pins = <
			MX93_PAD_GPIO_IO21__GPIO2_IO21			 0x31e
		>;
	};
...
};

Accessing the peripheral[edit | edit source]

Linux messages at boot time[edit | edit source]

...
[    2.155123] ALSA device list:
[    2.162823]   #0: SBCX_TLV320
...

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

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

Usage alsa-utils[edit | edit source]

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

root@desk-mx93:~# amixer sset "Speaker" on
Simple mixer control 'Speaker',0
  Capabilities: pswitch pswitch-joined
  Playback channels: Mono
  Mono: Playback [on]
root@desk-mx93:~# 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-mx93:~# 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-mx93:~# 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-mx93:~# 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]
root@desk-mx93:~#

To perform a sound, execute the command:

root@desk-mx93:~# speaker-test sim

speaker-test 1.2.8

Playback device is default
Stream parameters are 48000Hz, S16_LE, 1 channels
Using 16 octaves of pink noise
Rate set to 48000Hz (requested 48000Hz)
Buffer size range from 3848 to 5773
Period size range from 1924 to 1925
Using max buffer size 5772
Periods = 4
was set period_size = 1924
was set buffer_size = 5773
 0 - Front Left

Additional information[edit | edit source]

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