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

From DAVE Developer's Wiki
Jump to: navigation, search
(Created page with "{{subst:Peripheral | nome-som=AXEL ULite | nome-peripheral = Audio}}")
 
m (U0007 moved page DESK-MX6UL-L/Pheripherals/Audio to DESK-MX6UL-L/Peripherals/Audio without leaving a redirect)
 
(10 intermediate revisions by 2 users not shown)
Line 1: Line 1:
<section begin=History/>
+
<section begin="History" />
 
{| style="border-collapse:collapse; "
 
{| style="border-collapse:collapse; "
!colspan="4" style="width:100%; text-align:left"; border-bottom:solid 2px #ededed"|History
+
! 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"|Version
+
! 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:#edf8fb; padding:5px; color:#000000"|X.Y.Z
+
| 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|14242|2021/07/20}}
|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"|Month Year
+
| 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" |First DESK-MX6UL-L release
|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"|TBD
 
 
|-
 
|-
 +
| 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|16323|2022/03/16}}
 +
| 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-MX6UL-L 3.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:#edf8fb; padding:5px; color:#000000"|[TBD_link X.Y.Z]
+
! 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" |2023/05/04
|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"|Month Year
+
! 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-MX6UL-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:#edf8fb; padding:5px; color:#000000"|TBD
 
|-
 
|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"|...
 
|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"|...
 
|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"|...
 
|-
 
 
|}
 
|}
<section end=History/>
+
<section end="History" />
<section begin=Body/>
+
<section begin="Body" />
  
 
==Peripheral Audio ==
 
==Peripheral Audio ==
  
''TBD: sostituire tutti i dump con le informazioni sull'uso della periferica''
+
{{ImportantMessage|text=The audio peripheral is not available - ''as default option'' - on [[AXEL_ULite_SOM/AXEL_ULite_Evaluation_Kit | AXEL ULite EVK]]. Please contact [mailto:sales@dave.eu Sales department] for this option.}}
  
 
=== Device tree configuration ===
 
=== Device tree configuration ===
Here below an example of device tree configuration used on standard DAVE's kit for the AXEL ULite SOM:
+
Here below an example of device tree configuration for the AXEL ULite SOM (using a special version of [[AXEL_ULite_SOM/AXEL_ULite_Evaluation_Kit | AXEL ULite EVK]] mounting option):
  
From <code>''carrier.dts''</code>:
+
From <code>imx6ul-axelulite-cb006c.dts</code>:
 +
        sound {
 +
                compatible = "fsl,imx-audio-tlv320aic31xx";
 +
                model = "axelulite-audio-tlv320aic3100";
 +
                cpu-dai = <&sai2>;
 +
                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";
 +
                status = "okay";
 +
        };
 +
 +
&i2c4 {
 +
        clock-frequency = <100000>;
 +
        pinctrl-names = "default", "recovery";
 +
        pinctrl-0 = <&pinctrl_i2c4>;
 +
        pinctrl-1 = <&pinctrl_i2c4_recovery>;
 +
        recovery-gpios = <&gpio1 20 0>, <&gpio1 21 0>;
 +
        status = "okay";
 +
 +
        codec: tlv320aic31xx@18 {
 +
                compatible = "ti,tlv320aic3100";
 +
                reg = <0x18>;
 +
                clocks = <&clks IMX6UL_CLK_SAI2>,
 +
                        <&clks IMX6UL_CLK_DUMMY>;
 +
                clock-names = "mclk1", "mclk2";
 +
 +
gpio-reset = <&gpio1 27 1>;
 +
HPVDD-supply = <&reg_3p3v>;
 +
SPRVDD-supply = <&reg_3p3v>;
 +
SPLVDD-supply = <&reg_3p3v>;
 +
AVDD-supply = <&reg_3p3v>;
 +
IOVDD-supply = <&reg_3p3v>;
 +
DVDD-supply = <&reg_1p8v>;
 +
        };
 +
...
 +
...
 +
&iomuxc {
 +
        pinctrl-0 = <&pinctrl_hog_gpios>;
 +
        imx6ul-axelulite {
 +
 +
        tlv320aic3x {
 +
                pinctrl_tlv320aic3x_1: tlv320aic3x_codecgrp-1{
 +
                        fsl,pins = <
 +
                                MX6UL_PAD_JTAG_TDI__SAI2_TX_BCLK        0x17088
 +
                                MX6UL_PAD_JTAG_TDO__SAI2_TX_SYNC        0x17088
 +
                                MX6UL_PAD_JTAG_TRST_B__SAI2_TX_DATA    0x11088
 +
                                MX6UL_PAD_JTAG_TCK__SAI2_RX_DATA        0x11088
 +
                                MX6UL_PAD_JTAG_TMS__SAI2_MCLK          0x17088
 +
                                MX6UL_PAD_UART3_RTS_B__GPIO1_IO27      0x130b0 /* codec reset */
 +
                        >;
 +
                };
 +
        };
 +
 +
};
  
<pre>
+
===Accessing the peripheral===
&can1 {
 
    pinctrl-names = "default";
 
    pinctrl-0 = <&pinctrl_flexcan1_axel>;
 
    status = "okay";
 
};
 
</pre>
 
  
From <code>''carrier-common.dtsi''</code>:
+
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.
 
 
<pre>
 
    can1 {
 
        pinctrl_flexcan1_axel: flexcan1axelgrp-1 {
 
            fsl,pins = <
 
                MX6QDL_PAD_GPIO_7__FLEXCAN1_TX 0x80000000
 
                MX6QDL_PAD_GPIO_8__FLEXCAN1_RX 0x80000000
 
            >;
 
        };
 
    };
 
</pre>
 
  
===Accessing the peripheral===
 
 
====Linux messages at boot time====
 
====Linux messages at boot time====
  
Line 60: Line 95:
 
...
 
...
 
...
 
...
[    1.807495] flexcan 2090000.flexcan: 2090000.flexcan supply xceiver not found, using dummy regulator
+
[    3.314515] imx-tlv320aic31xx sound: tlv320aic31xx-hifi <-> 202c000.sai mapping ok
[    1.817366] flexcan 2090000.flexcan: device registered (reg_base=c0a30000, irq=31)
 
 
...
 
...
 
...
 
...
[    3.952659] can: controller area network core (rev 20170425 abi 9)
+
[    3.545396] ALSA device list:
[    3.963413] can: raw protocol (rev 20170425)
+
[    3.548401]   #0: axelulite-audio-tlv320aic3100
[    3.967717] can: broadcast manager protocol (rev 20170425 t)
 
[    3.973397] can: netlink gateway (rev 20170425) max_hops=1
 
 
</pre>
 
</pre>
  
====Enable the interface and check status====
+
To list the audio sound cards just use the <code>aplay</code> utility:
 +
 
 
<pre class="workstation-terminal">
 
<pre class="workstation-terminal">
root@imx6qxelk:~# ip link set can0 type can bitrate 500000
+
root@desk-mx6ul-axelulite:~# aplay -l
root@imx6qxelk:~# ifconfig can0 up
+
**** List of PLAYBACK Hardware Devices ****
root@imx6qxelk:~# ifconfig can0
+
card 0: axeluliteaudiot [axelulite-audio-tlv320aic3100], device 0: HiFi tlv320aic31xx-hifi-0 []
can0      Link encap:UNSPEC  HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
+
  Subdevices: 1/1
          UP RUNNING NOARP  MTU:16  Metric:1
+
  Subdevice #0: subdevice #0
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
+
root@desk-mx6ul-axelulite:~#
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
 
          collisions:0 txqueuelen:10
 
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)
 
          Interrupt:31
 
 
 
root@imx6qxelk:~#
 
 
</pre>
 
</pre>
  
==== Usage with [https://github.com/linux-can/can-utils can-utils] ====
+
====Usage [https://alsa-project.org/wiki/Documentation alsa-utils] ====
 
 
''TBD: reference verso eventuali informazioni sul web''
 
  
 
<pre class="workstation-terminal">
 
<pre class="workstation-terminal">
root@imx6qxelk:~# ip link set can0 type can bitrate 500000 triple-sampling on
+
root@desk-mx6ul-axelulite:~# aplay audio8k16S.wav
root@imx6qxelk:~# ifconfig can0 up
+
Playing WAVE 'audio8k16S.wav' : Signed 16 bit Little Endian, Rate 8000 Hz, Stereo
root@imx6qxelk:~# cansend can0 128#1122334455667788
 
root@imx6qxelk:~# candump can0
 
  can0  128  [8]  11 22 33 44 55 66 77 88
 
root@imx6qxelk:~#
 
 
</pre>
 
</pre>
 
=== Additional information ===
 
Each CAN port appears like a networking interface in the form <code>canX</code> where <b><i>X</i></b> is the port number.
 
 
Information about programming the CAN socket interface is given in the kernel tree under ''Documentation/networking/can.txt''
 
<section end=Body/>
 
  
 
----
 
----
  
 
[[Category:AXEL ULite]]
 
[[Category:AXEL ULite]]

Latest revision as of 17:57, 11 January 2024

History
Issue Date Notes

2021/07/20

First DESK-MX6UL-L release

2022/03/16

DESK-MX6UL-L 3.0.0 release
2023/05/04 DESK-MX6UL-L 4.0.0 release


Peripheral Audio[edit | edit source]

200px-Emblem-important.svg.png

The audio peripheral is not available - as default option - on AXEL ULite EVK. Please contact Sales department for this option.

Device tree configuration[edit | edit source]

Here below an example of device tree configuration for the AXEL ULite SOM (using a special version of AXEL ULite EVK mounting option):

From imx6ul-axelulite-cb006c.dts:

        sound {
                compatible = "fsl,imx-audio-tlv320aic31xx";
                model = "axelulite-audio-tlv320aic3100";
                cpu-dai = <&sai2>;
                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";
                status = "okay";
        };

&i2c4 {
        clock-frequency = <100000>;
        pinctrl-names = "default", "recovery";
        pinctrl-0 = <&pinctrl_i2c4>;
        pinctrl-1 = <&pinctrl_i2c4_recovery>;
        recovery-gpios = <&gpio1 20 0>, <&gpio1 21 0>;
        status = "okay";

        codec: tlv320aic31xx@18 {
                compatible = "ti,tlv320aic3100";
                reg = <0x18>;
                clocks = <&clks IMX6UL_CLK_SAI2>,
                       <&clks IMX6UL_CLK_DUMMY>;
                clock-names = "mclk1", "mclk2";

		gpio-reset = <&gpio1 27 1>;
		HPVDD-supply = <&reg_3p3v>;
		SPRVDD-supply = <&reg_3p3v>;
		SPLVDD-supply = <&reg_3p3v>;
		AVDD-supply = <&reg_3p3v>;
		IOVDD-supply = <&reg_3p3v>;
		DVDD-supply = <&reg_1p8v>;
        };
...
...
&iomuxc {
        pinctrl-0 = <&pinctrl_hog_gpios>;
        imx6ul-axelulite {

        tlv320aic3x {
                pinctrl_tlv320aic3x_1: tlv320aic3x_codecgrp-1{
                        fsl,pins = <
                                MX6UL_PAD_JTAG_TDI__SAI2_TX_BCLK        0x17088
                                MX6UL_PAD_JTAG_TDO__SAI2_TX_SYNC        0x17088
                                MX6UL_PAD_JTAG_TRST_B__SAI2_TX_DATA     0x11088
                                MX6UL_PAD_JTAG_TCK__SAI2_RX_DATA        0x11088
                                MX6UL_PAD_JTAG_TMS__SAI2_MCLK           0x17088
                                MX6UL_PAD_UART3_RTS_B__GPIO1_IO27       0x130b0 /* codec reset */
                        >;
                };
        };

};

Accessing the peripheral[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.

Linux messages at boot time[edit | edit source]

...
...
[    3.314515] imx-tlv320aic31xx sound: tlv320aic31xx-hifi <-> 202c000.sai mapping ok
...
...
[    3.545396] ALSA device list:
[    3.548401]   #0: axelulite-audio-tlv320aic3100

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

root@desk-mx6ul-axelulite:~# aplay -l
**** List of PLAYBACK Hardware Devices ****
card 0: axeluliteaudiot [axelulite-audio-tlv320aic3100], device 0: HiFi tlv320aic31xx-hifi-0 []
  Subdevices: 1/1
  Subdevice #0: subdevice #0
root@desk-mx6ul-axelulite:~#

Usage alsa-utils[edit | edit source]

root@desk-mx6ul-axelulite:~# aplay audio8k16S.wav 
Playing WAVE 'audio8k16S.wav' : Signed 16 bit Little Endian, Rate 8000 Hz, Stereo