arm64: dts: imx8-apalis: Add audio support

Add audio support to Apalis-iMX8QM and its carrier boards. These includes:
* On SOM i2s sound card
* On SOM spdif sound card
* Enabling Audiomix and Asynchronous Sample Rate Converter

Signed-off-by: João Paulo Gonçalves <joao.goncalves@toradex.com>
Signed-off-by: Francesco Dolcini <francesco.dolcini@toradex.com>
Signed-off-by: Shawn Guo <shawnguo@kernel.org>
This commit is contained in:
João Paulo Gonçalves
2024-09-03 11:12:29 +02:00
committed by Shawn Guo
parent 54304f99b6
commit 73214bc975
4 changed files with 137 additions and 23 deletions

View File

@@ -22,9 +22,13 @@ &adc1 {
status = "okay";
};
/* TODO: Audio Mixer */
&amix {
status = "okay";
};
/* TODO: Asynchronous Sample Rate Converter (ASRC) */
&asrc0 {
status = "okay";
};
/* TODO: Display Controller */
@@ -104,13 +108,25 @@ &lsio_pwm3 {
/* TODO: Apalis BKL1_PWM */
/* TODO: Apalis DAP1 */
/* Apalis DAP1 */
&sai1 {
status = "okay";
};
/* TODO: Apalis Analogue Audio */
&sai5 {
status = "okay";
};
&sai5_lpcg {
status = "okay";
};
/* TODO: Apalis SATA1 */
/* TODO: Apalis SPDIF1 */
/* Apalis SPDIF1 */
&spdif0 {
status = "okay";
};
/* TODO: Apalis USBH2, Apalis USBH3 and on-module Wi-Fi via on-module HSIC Hub */

View File

@@ -62,9 +62,13 @@ &adc1 {
status = "okay";
};
/* TODO: Audio Mixer */
&amix {
status = "okay";
};
/* TODO: Asynchronous Sample Rate Converter (ASRC) */
&asrc0 {
status = "okay";
};
/* TODO: Display Controller */
@@ -191,13 +195,25 @@ &lsio_pwm3 {
/* TODO: Apalis BKL1_PWM */
/* TODO: Apalis DAP1 */
/* Apalis DAP1 */
&sai1 {
status = "okay";
};
/* TODO: Apalis Analogue Audio */
&sai5 {
status = "okay";
};
&sai5_lpcg {
status = "okay";
};
/* TODO: Apalis SATA1 */
/* TODO: Apalis SPDIF1 */
/* Apalis SPDIF1 */
&spdif0 {
status = "okay";
};
/* TODO: Apalis USBH2, Apalis USBH3 and on-module Wi-Fi via on-module HSIC Hub */

View File

@@ -94,9 +94,13 @@ &adc1 {
status = "okay";
};
/* TODO: Audio Mixer */
&amix {
status = "okay";
};
/* TODO: Asynchronous Sample Rate Converter (ASRC) */
&asrc0 {
status = "okay";
};
/* TODO: Display Controller */
@@ -240,13 +244,25 @@ &lsio_pwm3 {
/* TODO: Apalis BKL1_PWM */
/* TODO: Apalis DAP1 */
/* Apalis DAP1 */
&sai1 {
status = "okay";
};
/* TODO: Apalis Analogue Audio */
&sai5 {
status = "okay";
};
&sai5_lpcg {
status = "okay";
};
/* TODO: Apalis SATA1 */
/* TODO: Apalis SPDIF1 */
/* Apalis SPDIF1 */
&spdif0 {
status = "okay";
};
/* TODO: Apalis USBH2, Apalis USBH3 and on-module Wi-Fi via on-module HSIC Hub */

View File

@@ -126,6 +126,13 @@ reg_usb_phy: regulator-usb-hsic1 {
regulator-name = "usb-phy-dummy";
};
reg_vref_1v8: regulator-vref-1v8 {
compatible = "regulator-fixed";
regulator-name = "+V1.8";
regulator-min-microvolt = <1800000>;
regulator-max-microvolt = <1800000>;
};
reserved-memory {
#address-cells = <2>;
#size-cells = <2>;
@@ -198,11 +205,32 @@ linux,cma {
};
};
/* TODO: Apalis Analogue Audio */
sound {
compatible = "simple-audio-card";
simple-audio-card,bitclock-master = <&dailink_master>;
simple-audio-card,format = "i2s";
simple-audio-card,frame-master = <&dailink_master>;
simple-audio-card,name = "apalis-imx8qm";
simple-audio-card,cpu {
sound-dai = <&sai1>;
};
dailink_master: simple-audio-card,codec {
sound-dai = <&sgtl5000>;
};
};
/* TODO: HDMI Audio */
/* TODO: Apalis SPDIF1 */
/* Apalis SPDIF1 */
sound-spdif {
compatible = "fsl,imx-audio-spdif";
model = "imx-spdif";
spdif-controller = <&spdif0>;
spdif-in;
spdif-out;
};
touchscreen: touchscreen {
compatible = "toradex,vf50-touchscreen";
@@ -227,6 +255,10 @@ touchscreen: touchscreen {
};
&asrc0 {
fsl,asrc-rate = <48000>;
};
&adc0 {
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_adc0>;
@@ -334,8 +366,6 @@ &i2c1 {
clock-frequency = <100000>;
status = "okay";
/* TODO: Audio Codec */
/* USB3503A */
usb-hub@8 {
compatible = "smsc,usb3503a";
@@ -348,6 +378,24 @@ usb-hub@8 {
refclk-frequency = <25000000>;
reset-gpios = <&lsio_gpio1 2 GPIO_ACTIVE_LOW>;
};
/* On Module Audio Codec */
sgtl5000: audio-codec@a {
compatible = "fsl,sgtl5000";
reg = <0x0a>;
assigned-clocks = <&clk IMX_SC_R_AUDIO_PLL_0 IMX_SC_PM_CLK_PLL>,
<&clk IMX_SC_R_AUDIO_PLL_0 IMX_SC_PM_CLK_SLV_BUS>,
<&clk IMX_SC_R_AUDIO_PLL_0 IMX_SC_PM_CLK_MST_BUS>,
<&mclkout0_lpcg IMX_LPCG_CLK_0>;
assigned-clock-rates = <786432000>, <49152000>, <12288000>, <12288000>;
clocks = <&mclkout0_lpcg IMX_LPCG_CLK_0>;
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_sgtl5000>;
#sound-dai-cells = <0>;
VDDA-supply = <&reg_module_3v3_avdd>;
VDDD-supply = <&reg_vref_1v8>;
VDDIO-supply = <&reg_module_3v3>;
};
};
/* Apalis I2C1 */
@@ -729,13 +777,31 @@ &mu2_m0 {
/* TODO: Apalis BKL1_PWM */
/* TODO: Apalis DAP1 */
/* TODO: Analogue Audio */
/* Apalis DAP1 */
&sai1 {
assigned-clocks = <&clk IMX_SC_R_AUDIO_PLL_0 IMX_SC_PM_CLK_PLL>,
<&clk IMX_SC_R_AUDIO_PLL_0 IMX_SC_PM_CLK_SLV_BUS>,
<&clk IMX_SC_R_AUDIO_PLL_0 IMX_SC_PM_CLK_MST_BUS>,
<&sai1_lpcg IMX_LPCG_CLK_0>;
assigned-clock-rates = <786432000>, <49152000>, <12288000>, <49152000>;
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_sai1>;
#sound-dai-cells = <0>;
status = "okay";
};
/* TODO: Apalis SATA1 */
/* TODO: Apalis SPDIF1 */
/* Apalis SPDIF1 */
&spdif0 {
assigned-clocks = <&clk IMX_SC_R_AUDIO_PLL_0 IMX_SC_PM_CLK_PLL>,
<&clk IMX_SC_R_AUDIO_PLL_0 IMX_SC_PM_CLK_SLV_BUS>,
<&clk IMX_SC_R_AUDIO_PLL_0 IMX_SC_PM_CLK_MST_BUS>;
assigned-clock-rates = <786432000>, <49152000>, <12288000>;
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_spdif0>;
status = "okay";
};
/* TODO: Thermal Zones */