summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMax Krummenacher <max.krummenacher@toradex.com>2022-08-18 16:15:36 +0200
committerMax Krummenacher <max.krummenacher@toradex.com>2022-08-24 12:10:37 +0000
commit41774a2764a6720650641ad9eee7751862917156 (patch)
tree04eaf32b69b916011e38390facbb30e3675e9ed1
parent52b57463dd1246f4fc72c18f383301eed0b5a621 (diff)
arm64: dts: imx8mp-verdin: add analog audio
Add the audio codec NAU8824 present on the Development Carrier Board and the WM8904 present on the Dahlia Carrier Board. Upstream-status: Pending [mainline does not support SAI yet] Signed-off-by: Max Krummenacher <max.krummenacher@toradex.com>
-rw-r--r--arch/arm64/boot/dts/freescale/imx8mp-verdin-dahlia.dtsi60
-rw-r--r--arch/arm64/boot/dts/freescale/imx8mp-verdin-dev.dtsi52
2 files changed, 106 insertions, 6 deletions
diff --git a/arch/arm64/boot/dts/freescale/imx8mp-verdin-dahlia.dtsi b/arch/arm64/boot/dts/freescale/imx8mp-verdin-dahlia.dtsi
index 4b8f86f63081..bb3ac603ad7b 100644
--- a/arch/arm64/boot/dts/freescale/imx8mp-verdin-dahlia.dtsi
+++ b/arch/arm64/boot/dts/freescale/imx8mp-verdin-dahlia.dtsi
@@ -3,7 +3,35 @@
* Copyright 2022 Toradex
*/
-/* TODO: Audio Codec */
+/ {
+ sound_card: sound-card {
+ 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 = "imx8mp-wm8904";
+ simple-audio-card,routing =
+ "Headphone Jack", "HPOUTL",
+ "Headphone Jack", "HPOUTR",
+ "IN2L", "Line In Jack",
+ "IN2R", "Line In Jack",
+ "Headphone Jack", "MICBIAS",
+ "IN1L", "Headphone Jack";
+ simple-audio-card,widgets =
+ "Microphone", "Headphone Jack",
+ "Headphone", "Headphone Jack",
+ "Line", "Line In Jack";
+
+ dailink_master: simple-audio-card,codec {
+ sound-dai = <&wm8904_1a>;
+ clocks = <&audio_blk_ctrl IMX8MP_CLK_AUDIO_BLK_CTRL_SAI1_MCLK1>;
+ };
+
+ simple-audio-card,cpu {
+ sound-dai = <&sai1>;
+ };
+ };
+};
&backlight {
power-supply = <&reg_3p3v>;
@@ -64,7 +92,21 @@
&i2c4 {
status = "okay";
- /* TODO: Audio Codec */
+ /* Audio Codec */
+ wm8904_1a: codec@1a {
+ compatible = "wlf,wm8904";
+ pinctrl-names = "default";
+ pinctrl-0 = <&pinctrl_sai1>;
+ #sound-dai-cells = <0>;
+ clocks = <&audio_blk_ctrl IMX8MP_CLK_AUDIO_BLK_CTRL_SAI1_MCLK1>;
+ clock-names = "mclk";
+ reg = <0x1a>;
+ DCVDD-supply = <&reg_1p8v>;
+ DBVDD-supply = <&reg_1p8v>;
+ AVDD-supply = <&reg_1p8v>;
+ CPVDD-supply = <&reg_1p8v>;
+ MICVDD-supply = <&reg_1p8v>;
+ };
};
/* TODO: Verdin PCIE_1 */
@@ -88,7 +130,19 @@
vin-supply = <&reg_3p3v>;
};
-/* TODO: Verdin I2S_1 */
+/* VERDIN I2S_1 */
+&sai1 {
+ #sound-dai-cells = <0>;
+ assigned-clocks = <&clk IMX8MP_CLK_SAI1>;
+ assigned-clock-parents = <&clk IMX8MP_AUDIO_PLL1_OUT>;
+ assigned-clock-rates = <24576000>;
+ fsl,sai-mclk-direction-output;
+ status = "okay";
+};
+
+&sdma2 {
+ status = "okay";
+};
/* Verdin UART_1 */
&uart1 {
diff --git a/arch/arm64/boot/dts/freescale/imx8mp-verdin-dev.dtsi b/arch/arm64/boot/dts/freescale/imx8mp-verdin-dev.dtsi
index cefabe65b252..b695051feea1 100644
--- a/arch/arm64/boot/dts/freescale/imx8mp-verdin-dev.dtsi
+++ b/arch/arm64/boot/dts/freescale/imx8mp-verdin-dev.dtsi
@@ -6,8 +6,6 @@
#include "imx8mp-verdin-dahlia.dtsi"
/ {
- /* TODO: Audio Codec */
-
reg_eth2phy: regulator-eth2phy {
compatible = "regulator-fixed";
enable-active-high;
@@ -19,6 +17,40 @@
startup-delay-us = <200000>;
vin-supply = <&reg_3p3v>;
};
+
+ sound_card: sound-card {
+ 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 = "imx8mp-nau8822";
+ simple-audio-card,routing =
+ "Headphones", "LHP",
+ "Headphones", "RHP",
+ "Speaker", "LSPK",
+ "Speaker", "RSPK",
+ "Line Out", "AUXOUT1",
+ "Line Out", "AUXOUT2",
+ "LAUX", "Line In",
+ "RAUX", "Line In",
+ "LMICP", "Mic In",
+ "RMICP", "Mic In";
+ simple-audio-card,widgets =
+ "Headphones", "Headphones",
+ "Line Out", "Line Out",
+ "Speaker", "Speaker",
+ "Microphone", "Mic In",
+ "Line", "Line In";
+
+ dailink_master: simple-audio-card,codec {
+ sound-dai = <&nau8822_1a>;
+ clocks = <&audio_blk_ctrl IMX8MP_CLK_AUDIO_BLK_CTRL_SAI1_MCLK1>;
+ };
+
+ simple-audio-card,cpu {
+ sound-dai = <&sai1>;
+ };
+ };
};
&fec {
@@ -31,7 +63,17 @@
vcc-supply = <&reg_1p8v>;
};
-/* TODO: Verdin I2C_1 with Audio Codec */
+/* Verdin I2C_1 */
+&i2c4 {
+ /* Audio Codec */
+ nau8822_1a: codec-nau@1a {
+ compatible = "nuvoton,nau8822";
+ pinctrl-names = "default";
+ pinctrl-0 = <&pinctrl_sai1>;
+ #sound-dai-cells = <0>;
+ reg = <0x1a>;
+ };
+};
/* Verdin UART_1, connector X50 through RS485 transceiver */
&uart1 {
@@ -44,3 +86,7 @@
&usdhc2 {
max-frequency = <100000000>;
};
+
+&wm8904_1a {
+ status = "disabled";
+};