Open main menu

DAVE Developer's Wiki β

Changes

DESK-MX8M-L/Peripherals/Audio

1,991 bytes added, 15 April
no edit summary
!colspan="4" style="width:100%; text-align:left"; border-bottom:solid 2px #ededed"|History
|-
!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"|ID#
!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:#edf8fb; padding:5px; color:#000000" |{{oldid|17551|2023/02/24}}| style="border-left:solid 2px #73B2C7; border-right:solid 2px #73B2C7;border-top:solid 2px #73B2C7; border-bottom:solid 2px #73B2C7; background-color:#edf8fb; 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:#ededededf8fb; padding:5px; color:#000000" |{{oldid|xxxx19165|xxxx2023/08/22}}| style="border-left:solid 2px #73B2C7; border-right:solid 2px #73B2C7;border-top:solid 2px #73B2C7; border-bottom:solid 2px #73B2C7; background-color:#edf8fb; padding:5px; color:#000000" |DESK-MX8M-L 4.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" |162024/0204/202311! 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 24.01.0 release
|-
|}
=== Device tree configuration ===
Here below an example of device tree configuration used on standard DAVE's kit for the AXEL Lite SOM:
==== MITO 8M Mini ====Here below an example of device tree configuration used on standard DAVE's kit for MITO 8M Mini: From <code>imx6qdlimx8mm-mito8mmini-sbcx-revb-common.dtsidts</code> it is possible to find the codec SSI interface configuration:
<pre>
sound {
compatible = "fsl,imx-audio-tlv320aic31xx";
model = "sbcx-audio-tlv320aic3100";
ssi-controller = <&ssi1>;
audio-codec = <&codec>;
audio-routing =
"Speaker", "SPK",
"Headphone Jack", "HPL",
"Headphone Jack", "HPR",
"MIC1LP", "Line In",
"MIC1LM", "Line In",
"MIC1RP", "Mic Jack",
"Mic Jack", "MICBIAS";
mux-int-port = <1>;
mux-ext-port = <3>;
status = "okay";
};
...
...
&audmux sound { pinctrl compatible = "simple-audio-card"; simple-audio-card,format = "i2s"; simple-audio-names card,name = "defaultSBCX_TLV320"; pinctrl simple-audio-card,bitclock-0 master = <&pinctrl_tlv320aic3x_1codec_dai>; status 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", "okayMIC1LM", "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>; }; };...&ssi1 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_codec_en: codecen {
fsl,pins = <
MX8MM_IOMUXC_SAI3_RXFS_GPIO4_IO28 0x19
>;
};
...
...
</pre>
From <code>imx8mm-mito8mmini.dtsi</code>:
<pre>
...
...
&iomuxc {
pinctrl-names ... pinctrl_sai2: sai2grp { fsl,pins = "default"< 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-0 };... pinctrl_codec_en: codecen { fsl,pins = <&pinctrl_hog_sbcx &pinctrl_hog_sbcx_one_piece MX8MM_IOMUXC_SAI3_RXFS_GPIO4_IO28 0x19 >; };
...
...
tlv320aic3x {
pinctrl_tlv320aic3x_1: tlv320aic3x_codecgrp-1{
fsl,pins = <
MX6QDL_PAD_CSI0_DAT5__AUD3_TXD 0x130b0
MX6QDL_PAD_CSI0_DAT6__AUD3_TXFS 0x130b0
MX6QDL_PAD_CSI0_DAT7__AUD3_RXD 0x130b0
MX6QDL_PAD_CSI0_DAT4__AUD3_TXC 0x130b0
MX6QDL_PAD_GPIO_3__XTALOSC_REF_CLK_24M 0x130b0
 
MX6QDL_PAD_GPIO_4__GPIO1_IO04 0x130b0
>;
};
};
 
</pre>
===Accessing the peripheral=== 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.
====Linux messages at boot time====
...
...
[ 53.071782038735] fsl-ssi-dai 2028000ALSA device list:[ 3.ssi038739] #0: No cache defaults, reading back from HWSBCX_TLV320
...
...
[ 5.624473] ALSA device list:
[ 5.635031] #0: sbcx-audio-tlv320aic3100
</pre>
<pre class="workstation-terminal">
root@desk-mx6mx8mm:~# aplay -l
**** List of PLAYBACK Hardware Devices ****
card 0: sbcxaudiotlv320 SBCXTLV320 [sbcx-audio-tlv320aic3100SBCX_TLV320], device 0: HiFi 30020000.sai-tlv320aic31xx-hifi tlv320aic31xx-hifi-0 [HiFi 30020000.sai-tlv320aic31xx-hifi tlv320aic31xx-hifi-0]
Subdevices: 1/1
Subdevice #0: subdevice #0
root@desk-mx8mm:~#
</pre>
====Usage [https://alsa-project.org/wiki/Documentation alsa-utils] ====
In order to unmute the speaker the <code>amixer</code> utility can be used.
<pre class="workstation-terminal">
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:~#
</pre>
To perform a sound, execute the command:
<pre class="workstation-terminal">
root@desk-mx6mx8mm:~# aplay /home/root/rootfs/unit_tests/ASRC/audio8k16Sspeaker-test sim speaker-test 1.2.wav6Playing WAVE '/home/root/rootfs/unit_tests/ASRC/audio8k16S.wav' : Signed Playback device is defaultStream parameters are 48000Hz, S16_LE, 1 channelsUsing 16 bit Little Endian, octaves of pink noiseRate 8000 Hz, Stereoset to 48000Hz (requested 48000Hz)Buffer size range from 3840 to 5760Period size range from 1920 to 1920Using max buffer size 5760Periods = 4was set period_size = 1920was set buffer_size = 5760 0 - Front Left</pre>In order to unmute the speaker the <code>alsamixer</code> utility can be used.
=== Additional information ===
----
[[Category:ORCA]] [[Category:MITO 8M Mini]]
dave_user
427
edits