* [PATCH] arm64: dts: imx8mp: Enable SAI audio on MX8MP DHCOM PDK2 and PDK3
@ 2023-05-15 15:52 Marek Vasut
2023-05-27 8:28 ` Shawn Guo
0 siblings, 1 reply; 2+ messages in thread
From: Marek Vasut @ 2023-05-15 15:52 UTC (permalink / raw)
To: linux-arm-kernel
Cc: Marek Vasut, Conor Dooley, Fabio Estevam, Krzysztof Kozlowski,
NXP Linux Team, Pengutronix Kernel Team, Rob Herring,
Sascha Hauer, Shawn Guo, devicetree
Add SAI I2S and audio bindings on MX8MP DHCOM PDK2 and PDK3.
The VDDA is supplied from on-carrier-board regulator, the VDDIO
is supplied from always-on on-SoM regulator. Except for different
I2C bus used to connect the codec, the implementation is virtually
identical on both carrier boards.
Align regulator-avdd name to regulator-3p3vdd on PDK3, since this
is the VDDA supply and it is the same on both carrier boards.
Signed-off-by: Marek Vasut <marex@denx.de>
---
Cc: Conor Dooley <conor+dt@kernel.org>
Cc: Fabio Estevam <festevam@gmail.com>
Cc: Krzysztof Kozlowski <krzysztof.kozlowski+dt@linaro.org>
Cc: NXP Linux Team <linux-imx@nxp.com>
Cc: Pengutronix Kernel Team <kernel@pengutronix.de>
Cc: Rob Herring <robh+dt@kernel.org>
Cc: Sascha Hauer <s.hauer@pengutronix.de>
Cc: Shawn Guo <shawnguo@kernel.org>
Cc: devicetree@vger.kernel.org
Cc: linux-arm-kernel@lists.infradead.org
---
.../boot/dts/freescale/imx8mp-dhcom-pdk2.dts | 54 +++++++++++++++++++
.../boot/dts/freescale/imx8mp-dhcom-pdk3.dts | 47 +++++++++++++++-
.../boot/dts/freescale/imx8mp-dhcom-som.dtsi | 17 ++++++
3 files changed, 116 insertions(+), 2 deletions(-)
diff --git a/arch/arm64/boot/dts/freescale/imx8mp-dhcom-pdk2.dts b/arch/arm64/boot/dts/freescale/imx8mp-dhcom-pdk2.dts
index 92df6c1277c36..de26c09e17805 100644
--- a/arch/arm64/boot/dts/freescale/imx8mp-dhcom-pdk2.dts
+++ b/arch/arm64/boot/dts/freescale/imx8mp-dhcom-pdk2.dts
@@ -23,6 +23,12 @@ chosen {
stdout-path = &uart1;
};
+ clk_ext_audio_codec: clock-codec {
+ #clock-cells = <0>;
+ clock-frequency = <24000000>;
+ compatible = "fixed-clock";
+ };
+
gpio-keys {
compatible = "gpio-keys";
@@ -102,6 +108,43 @@ led-3 {
pinctrl-names = "default";
};
};
+
+ reg_3p3vdd: regulator-3p3vdd { /* 3.3VDD */
+ compatible = "regulator-fixed";
+ regulator-always-on;
+ regulator-min-microvolt = <3300000>;
+ regulator-max-microvolt = <3300000>;
+ regulator-name = "3P3VDD";
+ };
+
+ sound {
+ compatible = "simple-audio-card";
+ simple-audio-card,name = "SGTL5000-Card";
+ simple-audio-card,format = "i2s";
+ simple-audio-card,bitclock-master = <&codec_dai>;
+ simple-audio-card,frame-master = <&codec_dai>;
+ simple-audio-card,widgets = "Headphone", "Headphone Jack";
+ simple-audio-card,routing = "Headphone Jack", "HP_OUT";
+
+ cpu_dai: simple-audio-card,cpu {
+ sound-dai = <&sai3>;
+ };
+
+ codec_dai: simple-audio-card,codec {
+ sound-dai = <&sgtl5000>;
+ };
+ };
+};
+
+&i2c5 {
+ sgtl5000: codec@a {
+ compatible = "fsl,sgtl5000";
+ reg = <0x0a>;
+ #sound-dai-cells = <0>;
+ clocks = <&clk_ext_audio_codec>;
+ VDDA-supply = <®_3p3vdd>;
+ VDDIO-supply = <®_vdd_3p3v_awo>;
+ };
};
&fec { /* Second ethernet */
@@ -155,6 +198,17 @@ &pcie {
status = "okay";
};
+&sai3 {
+ #sound-dai-cells = <0>;
+ pinctrl-names = "default";
+ pinctrl-0 = <&pinctrl_sai3>;
+ assigned-clocks = <&clk IMX8MP_CLK_SAI3>;
+ assigned-clock-parents = <&clk IMX8MP_AUDIO_PLL1_OUT>;
+ assigned-clock-rates = <12288000>;
+ fsl,sai-mclk-direction-output;
+ status = "okay";
+};
+
&usb3_1 {
fsl,over-current-active-low;
};
diff --git a/arch/arm64/boot/dts/freescale/imx8mp-dhcom-pdk3.dts b/arch/arm64/boot/dts/freescale/imx8mp-dhcom-pdk3.dts
index 24dc58b3404fb..6bcf17ffc9393 100644
--- a/arch/arm64/boot/dts/freescale/imx8mp-dhcom-pdk3.dts
+++ b/arch/arm64/boot/dts/freescale/imx8mp-dhcom-pdk3.dts
@@ -23,6 +23,12 @@ chosen {
stdout-path = &uart1;
};
+ clk_ext_audio_codec: clock-codec {
+ #clock-cells = <0>;
+ clock-frequency = <24000000>;
+ compatible = "fixed-clock";
+ };
+
clk_xtal25: clock-xtal25 {
compatible = "fixed-clock";
#clock-cells = <0>;
@@ -140,12 +146,30 @@ led-3 {
};
};
- reg_avdd: regulator-avdd { /* AUDIO_VDD */
+ reg_3p3vdd: regulator-3p3vdd { /* 3.3VDD */
compatible = "regulator-fixed";
regulator-always-on;
regulator-min-microvolt = <3300000>;
regulator-max-microvolt = <3300000>;
- regulator-name = "AUDIO_VDD";
+ regulator-name = "3P3VDD";
+ };
+
+ sound {
+ compatible = "simple-audio-card";
+ simple-audio-card,name = "SGTL5000-Card";
+ simple-audio-card,format = "i2s";
+ simple-audio-card,bitclock-master = <&codec_dai>;
+ simple-audio-card,frame-master = <&codec_dai>;
+ simple-audio-card,widgets = "Headphone", "Headphone Jack";
+ simple-audio-card,routing = "Headphone Jack", "HP_OUT";
+
+ cpu_dai: simple-audio-card,cpu {
+ sound-dai = <&sai3>;
+ };
+
+ codec_dai: simple-audio-card,codec {
+ sound-dai = <&sgtl5000>;
+ };
};
};
@@ -161,6 +185,15 @@ i2cmuxed0: i2c@0 {
#size-cells = <0>;
reg = <0>;
+ sgtl5000: codec@a {
+ compatible = "fsl,sgtl5000";
+ reg = <0x0a>;
+ #sound-dai-cells = <0>;
+ clocks = <&clk_ext_audio_codec>;
+ VDDA-supply = <®_3p3vdd>;
+ VDDIO-supply = <®_vdd_3p3v_awo>;
+ };
+
typec@3d {
compatible = "nxp,ptn5150";
reg = <0x3d>;
@@ -263,6 +296,16 @@ &pcie {
status = "okay";
};
+&sai3 {
+ pinctrl-names = "default";
+ pinctrl-0 = <&pinctrl_sai3>;
+ assigned-clocks = <&clk IMX8MP_CLK_SAI3>;
+ assigned-clock-parents = <&clk IMX8MP_AUDIO_PLL1_OUT>;
+ assigned-clock-rates = <12288000>;
+ fsl,sai-mclk-direction-output;
+ status = "okay";
+};
+
&usb_dwc3_0 {
usb-role-switch;
diff --git a/arch/arm64/boot/dts/freescale/imx8mp-dhcom-som.dtsi b/arch/arm64/boot/dts/freescale/imx8mp-dhcom-som.dtsi
index 7e804f6507843..98a11c31d7d45 100644
--- a/arch/arm64/boot/dts/freescale/imx8mp-dhcom-som.dtsi
+++ b/arch/arm64/boot/dts/freescale/imx8mp-dhcom-som.dtsi
@@ -49,6 +49,14 @@ reg_usdhc2_vmmc: regulator-usdhc2-vmmc {
startup-delay-us = <100>;
vin-supply = <&buck4>;
};
+
+ reg_vdd_3p3v_awo: regulator-vdd-3p3v-awo { /* VDD_3V3_AWO */
+ compatible = "regulator-fixed";
+ regulator-always-on;
+ regulator-min-microvolt = <3300000>;
+ regulator-max-microvolt = <3300000>;
+ regulator-name = "VDD_3P3V_AWO";
+ };
};
&A53_0 {
@@ -863,6 +871,15 @@ MX8MP_IOMUXC_SPDIF_EXT_CLK__GPIO5_IO05 0x40000080
>;
};
+ pinctrl_sai3: dhcom-sai3-grp {
+ fsl,pins = <
+ MX8MP_IOMUXC_SAI3_TXFS__AUDIOMIX_SAI3_TX_SYNC 0xd6
+ MX8MP_IOMUXC_SAI3_TXC__AUDIOMIX_SAI3_TX_BCLK 0xd6
+ MX8MP_IOMUXC_SAI3_RXD__AUDIOMIX_SAI3_RX_DATA00 0xd6
+ MX8MP_IOMUXC_SAI3_TXD__AUDIOMIX_SAI3_TX_DATA00 0xd6
+ >;
+ };
+
pinctrl_touch: dhcom-touch-grp {
fsl,pins = <
/* #TOUCH_INT */
--
2.39.2
^ permalink raw reply related [flat|nested] 2+ messages in thread* Re: [PATCH] arm64: dts: imx8mp: Enable SAI audio on MX8MP DHCOM PDK2 and PDK3
2023-05-15 15:52 [PATCH] arm64: dts: imx8mp: Enable SAI audio on MX8MP DHCOM PDK2 and PDK3 Marek Vasut
@ 2023-05-27 8:28 ` Shawn Guo
0 siblings, 0 replies; 2+ messages in thread
From: Shawn Guo @ 2023-05-27 8:28 UTC (permalink / raw)
To: Marek Vasut
Cc: linux-arm-kernel, Conor Dooley, Fabio Estevam,
Krzysztof Kozlowski, NXP Linux Team, Pengutronix Kernel Team,
Rob Herring, Sascha Hauer, devicetree
On Mon, May 15, 2023 at 05:52:05PM +0200, Marek Vasut wrote:
> Add SAI I2S and audio bindings on MX8MP DHCOM PDK2 and PDK3.
>
> The VDDA is supplied from on-carrier-board regulator, the VDDIO
> is supplied from always-on on-SoM regulator. Except for different
> I2C bus used to connect the codec, the implementation is virtually
> identical on both carrier boards.
>
> Align regulator-avdd name to regulator-3p3vdd on PDK3, since this
> is the VDDA supply and it is the same on both carrier boards.
>
> Signed-off-by: Marek Vasut <marex@denx.de>
> ---
> Cc: Conor Dooley <conor+dt@kernel.org>
> Cc: Fabio Estevam <festevam@gmail.com>
> Cc: Krzysztof Kozlowski <krzysztof.kozlowski+dt@linaro.org>
> Cc: NXP Linux Team <linux-imx@nxp.com>
> Cc: Pengutronix Kernel Team <kernel@pengutronix.de>
> Cc: Rob Herring <robh+dt@kernel.org>
> Cc: Sascha Hauer <s.hauer@pengutronix.de>
> Cc: Shawn Guo <shawnguo@kernel.org>
> Cc: devicetree@vger.kernel.org
> Cc: linux-arm-kernel@lists.infradead.org
> ---
> .../boot/dts/freescale/imx8mp-dhcom-pdk2.dts | 54 +++++++++++++++++++
> .../boot/dts/freescale/imx8mp-dhcom-pdk3.dts | 47 +++++++++++++++-
> .../boot/dts/freescale/imx8mp-dhcom-som.dtsi | 17 ++++++
> 3 files changed, 116 insertions(+), 2 deletions(-)
>
> diff --git a/arch/arm64/boot/dts/freescale/imx8mp-dhcom-pdk2.dts b/arch/arm64/boot/dts/freescale/imx8mp-dhcom-pdk2.dts
> index 92df6c1277c36..de26c09e17805 100644
> --- a/arch/arm64/boot/dts/freescale/imx8mp-dhcom-pdk2.dts
> +++ b/arch/arm64/boot/dts/freescale/imx8mp-dhcom-pdk2.dts
> @@ -23,6 +23,12 @@ chosen {
> stdout-path = &uart1;
> };
>
> + clk_ext_audio_codec: clock-codec {
> + #clock-cells = <0>;
> + clock-frequency = <24000000>;
> + compatible = "fixed-clock";
Can we start properties with 'compatible'?
Shawn
> + };
> +
> gpio-keys {
> compatible = "gpio-keys";
>
> @@ -102,6 +108,43 @@ led-3 {
> pinctrl-names = "default";
> };
> };
> +
> + reg_3p3vdd: regulator-3p3vdd { /* 3.3VDD */
> + compatible = "regulator-fixed";
> + regulator-always-on;
> + regulator-min-microvolt = <3300000>;
> + regulator-max-microvolt = <3300000>;
> + regulator-name = "3P3VDD";
> + };
> +
> + sound {
> + compatible = "simple-audio-card";
> + simple-audio-card,name = "SGTL5000-Card";
> + simple-audio-card,format = "i2s";
> + simple-audio-card,bitclock-master = <&codec_dai>;
> + simple-audio-card,frame-master = <&codec_dai>;
> + simple-audio-card,widgets = "Headphone", "Headphone Jack";
> + simple-audio-card,routing = "Headphone Jack", "HP_OUT";
> +
> + cpu_dai: simple-audio-card,cpu {
> + sound-dai = <&sai3>;
> + };
> +
> + codec_dai: simple-audio-card,codec {
> + sound-dai = <&sgtl5000>;
> + };
> + };
> +};
> +
> +&i2c5 {
> + sgtl5000: codec@a {
> + compatible = "fsl,sgtl5000";
> + reg = <0x0a>;
> + #sound-dai-cells = <0>;
> + clocks = <&clk_ext_audio_codec>;
> + VDDA-supply = <®_3p3vdd>;
> + VDDIO-supply = <®_vdd_3p3v_awo>;
> + };
> };
>
> &fec { /* Second ethernet */
> @@ -155,6 +198,17 @@ &pcie {
> status = "okay";
> };
>
> +&sai3 {
> + #sound-dai-cells = <0>;
> + pinctrl-names = "default";
> + pinctrl-0 = <&pinctrl_sai3>;
> + assigned-clocks = <&clk IMX8MP_CLK_SAI3>;
> + assigned-clock-parents = <&clk IMX8MP_AUDIO_PLL1_OUT>;
> + assigned-clock-rates = <12288000>;
> + fsl,sai-mclk-direction-output;
> + status = "okay";
> +};
> +
> &usb3_1 {
> fsl,over-current-active-low;
> };
> diff --git a/arch/arm64/boot/dts/freescale/imx8mp-dhcom-pdk3.dts b/arch/arm64/boot/dts/freescale/imx8mp-dhcom-pdk3.dts
> index 24dc58b3404fb..6bcf17ffc9393 100644
> --- a/arch/arm64/boot/dts/freescale/imx8mp-dhcom-pdk3.dts
> +++ b/arch/arm64/boot/dts/freescale/imx8mp-dhcom-pdk3.dts
> @@ -23,6 +23,12 @@ chosen {
> stdout-path = &uart1;
> };
>
> + clk_ext_audio_codec: clock-codec {
> + #clock-cells = <0>;
> + clock-frequency = <24000000>;
> + compatible = "fixed-clock";
> + };
> +
> clk_xtal25: clock-xtal25 {
> compatible = "fixed-clock";
> #clock-cells = <0>;
> @@ -140,12 +146,30 @@ led-3 {
> };
> };
>
> - reg_avdd: regulator-avdd { /* AUDIO_VDD */
> + reg_3p3vdd: regulator-3p3vdd { /* 3.3VDD */
> compatible = "regulator-fixed";
> regulator-always-on;
> regulator-min-microvolt = <3300000>;
> regulator-max-microvolt = <3300000>;
> - regulator-name = "AUDIO_VDD";
> + regulator-name = "3P3VDD";
> + };
> +
> + sound {
> + compatible = "simple-audio-card";
> + simple-audio-card,name = "SGTL5000-Card";
> + simple-audio-card,format = "i2s";
> + simple-audio-card,bitclock-master = <&codec_dai>;
> + simple-audio-card,frame-master = <&codec_dai>;
> + simple-audio-card,widgets = "Headphone", "Headphone Jack";
> + simple-audio-card,routing = "Headphone Jack", "HP_OUT";
> +
> + cpu_dai: simple-audio-card,cpu {
> + sound-dai = <&sai3>;
> + };
> +
> + codec_dai: simple-audio-card,codec {
> + sound-dai = <&sgtl5000>;
> + };
> };
> };
>
> @@ -161,6 +185,15 @@ i2cmuxed0: i2c@0 {
> #size-cells = <0>;
> reg = <0>;
>
> + sgtl5000: codec@a {
> + compatible = "fsl,sgtl5000";
> + reg = <0x0a>;
> + #sound-dai-cells = <0>;
> + clocks = <&clk_ext_audio_codec>;
> + VDDA-supply = <®_3p3vdd>;
> + VDDIO-supply = <®_vdd_3p3v_awo>;
> + };
> +
> typec@3d {
> compatible = "nxp,ptn5150";
> reg = <0x3d>;
> @@ -263,6 +296,16 @@ &pcie {
> status = "okay";
> };
>
> +&sai3 {
> + pinctrl-names = "default";
> + pinctrl-0 = <&pinctrl_sai3>;
> + assigned-clocks = <&clk IMX8MP_CLK_SAI3>;
> + assigned-clock-parents = <&clk IMX8MP_AUDIO_PLL1_OUT>;
> + assigned-clock-rates = <12288000>;
> + fsl,sai-mclk-direction-output;
> + status = "okay";
> +};
> +
> &usb_dwc3_0 {
> usb-role-switch;
>
> diff --git a/arch/arm64/boot/dts/freescale/imx8mp-dhcom-som.dtsi b/arch/arm64/boot/dts/freescale/imx8mp-dhcom-som.dtsi
> index 7e804f6507843..98a11c31d7d45 100644
> --- a/arch/arm64/boot/dts/freescale/imx8mp-dhcom-som.dtsi
> +++ b/arch/arm64/boot/dts/freescale/imx8mp-dhcom-som.dtsi
> @@ -49,6 +49,14 @@ reg_usdhc2_vmmc: regulator-usdhc2-vmmc {
> startup-delay-us = <100>;
> vin-supply = <&buck4>;
> };
> +
> + reg_vdd_3p3v_awo: regulator-vdd-3p3v-awo { /* VDD_3V3_AWO */
> + compatible = "regulator-fixed";
> + regulator-always-on;
> + regulator-min-microvolt = <3300000>;
> + regulator-max-microvolt = <3300000>;
> + regulator-name = "VDD_3P3V_AWO";
> + };
> };
>
> &A53_0 {
> @@ -863,6 +871,15 @@ MX8MP_IOMUXC_SPDIF_EXT_CLK__GPIO5_IO05 0x40000080
> >;
> };
>
> + pinctrl_sai3: dhcom-sai3-grp {
> + fsl,pins = <
> + MX8MP_IOMUXC_SAI3_TXFS__AUDIOMIX_SAI3_TX_SYNC 0xd6
> + MX8MP_IOMUXC_SAI3_TXC__AUDIOMIX_SAI3_TX_BCLK 0xd6
> + MX8MP_IOMUXC_SAI3_RXD__AUDIOMIX_SAI3_RX_DATA00 0xd6
> + MX8MP_IOMUXC_SAI3_TXD__AUDIOMIX_SAI3_TX_DATA00 0xd6
> + >;
> + };
> +
> pinctrl_touch: dhcom-touch-grp {
> fsl,pins = <
> /* #TOUCH_INT */
> --
> 2.39.2
>
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2023-05-27 8:28 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2023-05-15 15:52 [PATCH] arm64: dts: imx8mp: Enable SAI audio on MX8MP DHCOM PDK2 and PDK3 Marek Vasut
2023-05-27 8:28 ` Shawn Guo
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).