Difference between revisions of "DESK-MX8M-L/Peripherals/Audio"

From DAVE Developer's Wiki
Jump to: navigation, search
(Updates for DESK-MX8-L 4.0.0 release)
Line 6: Line 6:
 
!style="border-left:solid 2px #73B2C7; border-right:solid 2px #73B2C7;border-top:solid 2px #73B2C7; border-bottom:solid 2px #73B2C7; background-color:#73B2C7; padding:5px; color:white"|Issue Date
 
!style="border-left:solid 2px #73B2C7; border-right:solid 2px #73B2C7;border-top:solid 2px #73B2C7; border-bottom:solid 2px #73B2C7; background-color:#73B2C7; padding:5px; color:white"|Issue Date
 
!style="border-left:solid 2px #73B2C7; border-right:solid 2px #73B2C7;border-top:solid 2px #73B2C7; border-bottom:solid 2px #73B2C7; background-color:#73B2C7; padding:5px; color:white"|Notes
 
!style="border-left:solid 2px #73B2C7; border-right:solid 2px #73B2C7;border-top:solid 2px #73B2C7; border-bottom:solid 2px #73B2C7; background-color:#73B2C7; padding:5px; color:white"|Notes
 +
|-
 +
| style="border-left:solid 2px #73B2C7; border-right:solid 2px #73B2C7;border-top:solid 2px #73B2C7; border-bottom:solid 2px #73B2C7; background-color:#ededed; padding:5px; color:#000000" |{{oldid|17551|17551}}
 +
| style="border-left:solid 2px #73B2C7; border-right:solid 2px #73B2C7;border-top:solid 2px #73B2C7; border-bottom:solid 2px #73B2C7; background-color:#ededed; padding:5px; color:#000000" |24/02/2023
 +
| style="border-left:solid 2px #73B2C7; border-right:solid 2px #73B2C7;border-top:solid 2px #73B2C7; border-bottom:solid 2px #73B2C7; background-color:#ededed; padding:5px; color:#000000" |DESK-MX8M-L 2.0.0 release
 
|-
 
|-
 
! style="border-left:solid 2px #73B2C7; border-right:solid 2px #73B2C7;border-top:solid 2px #73B2C7; border-bottom:solid 2px #73B2C7; background-color:#ededed; padding:5px; color:#000000" |{{oldid|17551|17551}}
 
! style="border-left:solid 2px #73B2C7; border-right:solid 2px #73B2C7;border-top:solid 2px #73B2C7; border-bottom:solid 2px #73B2C7; background-color:#ededed; padding:5px; color:#000000" |{{oldid|17551|17551}}
! style="border-left:solid 2px #73B2C7; border-right:solid 2px #73B2C7;border-top:solid 2px #73B2C7; border-bottom:solid 2px #73B2C7; background-color:#ededed; padding:5px; color:#000000" |24/02/2023
+
! style="border-left:solid 2px #73B2C7; border-right:solid 2px #73B2C7;border-top:solid 2px #73B2C7; border-bottom:solid 2px #73B2C7; background-color:#ededed; padding:5px; color:#000000" |26/07/2023
! style="border-left:solid 2px #73B2C7; border-right:solid 2px #73B2C7;border-top:solid 2px #73B2C7; border-bottom:solid 2px #73B2C7; background-color:#ededed; padding:5px; color:#000000" |DESK-MX8M-L 2.0.0 release
+
! style="border-left:solid 2px #73B2C7; border-right:solid 2px #73B2C7;border-top:solid 2px #73B2C7; border-bottom:solid 2px #73B2C7; background-color:#ededed; padding:5px; color:#000000" |DESK-MX8M-L 4.0.0 release
 
|-
 
|-
 
|}
 
|}
Line 29: Line 33:
 
...
 
...
 
...
 
...
    sound {
+
sound {
 
compatible = "simple-audio-card";
 
compatible = "simple-audio-card";
 
simple-audio-card,format = "i2s";
 
simple-audio-card,format = "i2s";
Line 57: Line 61:
 
};
 
};
 
};
 
};
 
 
...
 
...
 
...
 
...
Line 65: Line 68:
 
pinctrl-0 = <&pinctrl_sai2>;
 
pinctrl-0 = <&pinctrl_sai2>;
 
pinctrl-1 = <&pinctrl_codec_en>;
 
pinctrl-1 = <&pinctrl_codec_en>;
clocks = <&clk IMX8MM_CLK_SAI2_ROOT>;
 
 
assigned-clocks = <&clk IMX8MM_CLK_SAI2>;
 
assigned-clocks = <&clk IMX8MM_CLK_SAI2>;
 
assigned-clock-parents = <&clk IMX8MM_AUDIO_PLL1_OUT>;
 
assigned-clock-parents = <&clk IMX8MM_AUDIO_PLL1_OUT>;
Line 76: Line 78:
 
...
 
...
 
...
 
...
  pinctrl_sai2: sai2grp {
+
pinctrl_sai2: sai2grp {
 
fsl,pins = <
 
fsl,pins = <
 
MX8MM_IOMUXC_SAI2_MCLK_SAI2_MCLK 0xd6
 
MX8MM_IOMUXC_SAI2_MCLK_SAI2_MCLK 0xd6
Line 104: Line 106:
 
...
 
...
 
...
 
...
[    5.259739] debugfs: Directory '30020000.sai' with parent 'SBCX_TLV320' already present!
+
[    3.038735] ALSA device list:
[    5.267980] asoc-simple-card sound: tlv320aic31xx-hifi <-> 30020000.sai mapping ok
+
[    3.038739]   #0: SBCX_TLV320
 
...
 
...
 
...
 
...
[    5.454902] ALSA device list:
 
[    5.454906]  #0: SBCX_TLV320
 
 
</pre>
 
</pre>
  
Line 117: Line 117:
 
root@desk-mx8mm:~# aplay -l
 
root@desk-mx8mm:~# aplay -l
 
**** List of PLAYBACK Hardware Devices ****
 
**** List of PLAYBACK Hardware Devices ****
card 0: SBCXTLV320 [SBCX_TLV320], device 0: 30020000.sai-tlv320aic31xx-hifi tlv320aic31xx-hifi-0 []
+
card 0: SBCXTLV320 [SBCX_TLV320], device 0: 30020000.sai-tlv320aic31xx-hifi tlv320aic31xx-hifi-0 [30020000.sai-tlv320aic31xx-hifi tlv320aic31xx-hifi-0]
 
   Subdevices: 1/1
 
   Subdevices: 1/1
 
   Subdevice #0: subdevice #0
 
   Subdevice #0: subdevice #0
Line 131: Line 131:
 
   Playback channels: Mono
 
   Playback channels: Mono
 
   Mono: Playback [on]
 
   Mono: Playback [on]
</pre>
 
<pre class="workstation-terminal">
 
 
root@desk-mx8mm:~# amixer sset "Speaker Analog" 100
 
root@desk-mx8mm:~# amixer sset "Speaker Analog" 100
 
Simple mixer control 'Speaker Analog',0
 
Simple mixer control 'Speaker Analog',0
Line 139: Line 137:
 
   Limits: Playback 0 - 127
 
   Limits: Playback 0 - 127
 
   Mono: Playback 100 [79%] [-13.50dB]
 
   Mono: Playback 100 [79%] [-13.50dB]
</pre>
 
<pre class="workstation-terminal">
 
 
root@desk-mx8mm:~# amixer sset "Speaker Driver" on 2
 
root@desk-mx8mm:~# amixer sset "Speaker Driver" on 2
 
Simple mixer control 'Speaker Driver',0
 
Simple mixer control 'Speaker Driver',0
Line 147: Line 143:
 
   Limits: Playback 0 - 3
 
   Limits: Playback 0 - 3
 
   Mono: Playback 2 [67%] [18.00dB] [on]
 
   Mono: Playback 2 [67%] [18.00dB] [on]
</pre>
 
<pre class="workstation-terminal">
 
 
root@desk-mx8mm:~# amixer sset "DAC" 100
 
root@desk-mx8mm:~# amixer sset "DAC" 100
 
Simple mixer control 'DAC',0
 
Simple mixer control 'DAC',0
Line 157: Line 151:
 
   Front Left: Playback 100 [57%] [-13.50dB]
 
   Front Left: Playback 100 [57%] [-13.50dB]
 
   Front Right: Playback 100 [57%] [-13.50dB]
 
   Front Right: Playback 100 [57%] [-13.50dB]
</pre>
 
<pre class="workstation-terminal">
 
 
root@desk-mx8mm:~# amixer sset "Output Left From Left DAC" on
 
root@desk-mx8mm:~# amixer sset "Output Left From Left DAC" on
 
Simple mixer control 'Output Left From Left DAC',0
 
Simple mixer control 'Output Left From Left DAC',0
Line 164: Line 156:
 
   Playback channels: Mono
 
   Playback channels: Mono
 
   Mono: Playback [on]
 
   Mono: Playback [on]
 +
root@desk-mx8mm:~#
 
</pre>
 
</pre>
 +
 
To perform a sound, execute the command:
 
To perform a sound, execute the command:
 
<pre class="workstation-terminal">
 
<pre class="workstation-terminal">
root@desk-mx8mm:~# aplay sample_22_frames.mp3
+
root@desk-mx8mm:~# speaker-test sim
Playing raw data 'sample_22_frames.mp3' : Unsigned 8 bit, Rate 8000 Hz, Mono
+
 
 +
speaker-test 1.2.6
 +
 
 +
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 3840 to 5760
 +
Period size range from 1920 to 1920
 +
Using max buffer size 5760
 +
Periods = 4
 +
was set period_size = 1920
 +
was set buffer_size = 5760
 +
0 - Front Left
 
</pre>
 
</pre>
  

Revision as of 09:32, 26 July 2023

History
ID# Issue Date Notes

17551

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

17551

26/07/2023 DESK-MX8M-L 4.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>;
	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]

...
...
[    3.038735] ALSA device list:
[    3.038739]   #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 [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]
root@desk-mx8mm:~#

To perform a sound, execute the command:

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

speaker-test 1.2.6

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 3840 to 5760
Period size range from 1920 to 1920
Using max buffer size 5760
Periods = 4
was set period_size = 1920
was set buffer_size = 5760
 0 - Front Left

Additional information[edit | edit source]

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