[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID:
<AM6PR04MB5941C1138E4F33AA3FA49AA388D02@AM6PR04MB5941.eurprd04.prod.outlook.com>
Date: Fri, 28 Jun 2024 00:03:27 +0000
From: Peng Fan <peng.fan@....com>
To: Frank Li <frank.li@....com>, Rob Herring <robh@...nel.org>, Krzysztof
Kozlowski <krzk+dt@...nel.org>, Conor Dooley <conor+dt@...nel.org>, Shawn Guo
<shawnguo@...nel.org>, Sascha Hauer <s.hauer@...gutronix.de>, Pengutronix
Kernel Team <kernel@...gutronix.de>, Fabio Estevam <festevam@...il.com>,
"open list:OPEN FIRMWARE AND FLATTENED DEVICE TREE BINDINGS"
<devicetree@...r.kernel.org>, "open list:ARM/FREESCALE IMX / MXC ARM
ARCHITECTURE" <imx@...ts.linux.dev>, "moderated list:ARM/FREESCALE IMX / MXC
ARM ARCHITECTURE" <linux-arm-kernel@...ts.infradead.org>, open list
<linux-kernel@...r.kernel.org>
CC: "imx@...ts.linux.dev" <imx@...ts.linux.dev>
Subject: RE: [PATCH 3/7] arm64: dts: imx95-19x19-evk: Add audio related nodes
> Subject: [PATCH 3/7] arm64: dts: imx95-19x19-evk: Add audio related
> nodes
>
> Add sai1, sai2. Add i2c4 and wm8962 and other dependent nodes.
>
> Signed-off-by: Frank Li <Frank.Li@....com>
> ---
> .../boot/dts/freescale/imx95-19x19-evk.dts | 238
> ++++++++++++++++++
> 1 file changed, 238 insertions(+)
>
> diff --git a/arch/arm64/boot/dts/freescale/imx95-19x19-evk.dts
> b/arch/arm64/boot/dts/freescale/imx95-19x19-evk.dts
> index d14a54ab4fd47..660e623f4f964 100644
> --- a/arch/arm64/boot/dts/freescale/imx95-19x19-evk.dts
> +++ b/arch/arm64/boot/dts/freescale/imx95-19x19-evk.dts
> @@ -17,6 +17,11 @@ aliases {
> serial0 = &lpuart1;
> };
>
> + bt_sco_codec: audio-codec-bt-sco {
> + #sound-dai-cells = <1>;
> + compatible = "linux,bt-sco";
> + };
> +
> chosen {
> stdout-path = &lpuart1;
> };
> @@ -40,6 +45,34 @@ linux_cma: linux,cma {
> };
> };
>
> + reg_3p3v: regulator-3p3v {
> + compatible = "regulator-fixed";
> + regulator-max-microvolt = <3300000>;
> + regulator-min-microvolt = <3300000>;
> + regulator-name = "+V3.3_SW";
> + };
> +
> + reg_audio_pwr: regulator-audio-pwr {
> + compatible = "regulator-fixed";
> + regulator-name = "audio-pwr";
> + regulator-min-microvolt = <3300000>;
> + regulator-max-microvolt = <3300000>;
> + gpio = <&i2c4_gpio_expander_21 1
> GPIO_ACTIVE_HIGH>;
> + enable-active-high;
> + regulator-always-on;
> + };
> +
> + reg_audio_slot: regulator-audio-slot {
> + compatible = "regulator-fixed";
> + regulator-name = "audio-wm8962";
> + regulator-min-microvolt = <3300000>;
> + regulator-max-microvolt = <3300000>;
> + gpio = <&i2c4_gpio_expander_21 7
> GPIO_ACTIVE_HIGH>;
> + enable-active-high;
> + regulator-always-on;
> + status = "disabled";
> + };
> +
> reg_m2_pwr: regulator-m2-pwr {
> compatible = "regulator-fixed";
> regulator-name = "M.2-power";
> @@ -79,6 +112,97 @@ reg_usdhc2_vmmc: regulator-usdhc2 {
> enable-active-high;
> off-on-delay-us = <12000>;
> };
> +
> + sound-bt-sco {
> + compatible = "simple-audio-card";
> + simple-audio-card,name = "bt-sco-audio";
> + simple-audio-card,format = "dsp_a";
> + simple-audio-card,bitclock-inversion;
> + simple-audio-card,frame-master = <&btcpu>;
> + simple-audio-card,bitclock-master = <&btcpu>;
> +
> + btcpu: simple-audio-card,cpu {
> + sound-dai = <&sai1>;
> + dai-tdm-slot-num = <2>;
> + dai-tdm-slot-width = <16>;
> + };
> +
> + simple-audio-card,codec {
> + sound-dai = <&bt_sco_codec 1>;
> + };
> + };
> +
> + sound-micfil {
> + compatible = "fsl,imx-audio-card";
> + model = "micfil-audio";
> +
> + pri-dai-link {
> + link-name = "micfil hifi";
> + format = "i2s";
> + cpu {
> + sound-dai = <&micfil>;
> + };
> + };
> + };
> +
> + sound-wm8962 {
> + compatible = "fsl,imx-audio-wm8962";
> + pinctrl-names = "default";
> + pinctrl-0 = <&pinctrl_hp>;
> + model = "wm8962-audio";
> + audio-cpu = <&sai3>;
> + audio-codec = <&wm8962>;
> + hp-det-gpio = <&gpio2 11 GPIO_ACTIVE_HIGH>;
> + audio-routing = "Headphone Jack", "HPOUTL",
> + "Headphone Jack", "HPOUTR",
> + "Ext Spk", "SPKOUTL",
> + "Ext Spk", "SPKOUTR",
> + "AMIC", "MICBIAS",
> + "IN3R", "AMIC",
> + "IN1R", "AMIC";
> + };
> +};
> +
> +&lpi2c4 {
> + clock-frequency = <400000>;
> + pinctrl-names = "default";
> + pinctrl-0 = <&pinctrl_lpi2c4>;
> + status = "okay";
> +
> + wm8962: audio-codec@1a {
> + compatible = "wlf,wm8962";
> + reg = <0x1a>;
> + clocks = <&scmi_clk IMX95_CLK_SAI3>;
> + DCVDD-supply = <®_audio_pwr>;
> + DBVDD-supply = <®_audio_pwr>;
> + AVDD-supply = <®_audio_pwr>;
> + CPVDD-supply = <®_audio_pwr>;
> + MICVDD-supply = <®_audio_pwr>;
> + PLLVDD-supply = <®_audio_pwr>;
> + SPKVDD1-supply = <®_audio_pwr>;
> + SPKVDD2-supply = <®_audio_pwr>;
> + gpio-cfg = < 0x0000 /* 0:Default */
> + 0x0000 /* 1:Default */
> + 0x0000 /* 2:FN_DMICCLK */
> + 0x0000 /* 3:Default */
> + 0x0000 /* 4:FN_DMICCDAT */
> + 0x0000 /* 5:Default */
> + >;
> + };
> +
> + i2c4_gpio_expander_21: gpio@21 {
Use gpio-expander@21?
It is easy to duplicate the node if other i2c bus also
has one.
Regards,
Peng.
> + compatible = "nxp,pcal6408";
> + reg = <0x21>;
> + #gpio-cells = <2>;
> + gpio-controller;
> + interrupt-controller;
> + #interrupt-cells = <2>;
> + interrupt-parent = <&gpio2>;
> + interrupts = <18 IRQ_TYPE_LEVEL_LOW>;
> + pinctrl-names = "default";
> + pinctrl-0 = <&pinctrl_i2c4_pcal6408>;
> + vcc-supply = <®_3p3v>;
> + };
> };
>
> &lpi2c7 {
> @@ -108,6 +232,23 @@ &lpuart1 {
> status = "okay";
> };
>
> +&micfil {
> + #sound-dai-cells = <0>;
> + pinctrl-names = "default";
> + pinctrl-0 = <&pinctrl_pdm>;
> + assigned-clocks = <&scmi_clk IMX95_CLK_AUDIOPLL1_VCO>,
> + <&scmi_clk IMX95_CLK_AUDIOPLL2_VCO>,
> + <&scmi_clk IMX95_CLK_AUDIOPLL1>,
> + <&scmi_clk IMX95_CLK_AUDIOPLL2>,
> + <&scmi_clk IMX95_CLK_PDM>;
> + assigned-clock-parents = <0>, <0>, <0>, <0>,
> + <&scmi_clk
> IMX95_CLK_AUDIOPLL1>;
> + assigned-clock-rates = <3932160000>,
> + <3612672000>, <393216000>,
> + <361267200>, <49152000>;
> + status = "okay";
> +};
> +
> &mu7 {
> status = "okay";
> };
> @@ -128,6 +269,42 @@ &pcie1 {
> status = "okay";
> };
>
> +&sai1 {
> + #sound-dai-cells = <0>;
> + pinctrl-names = "default";
> + pinctrl-0 = <&pinctrl_sai1>;
> + assigned-clocks = <&scmi_clk IMX95_CLK_AUDIOPLL1_VCO>,
> + <&scmi_clk IMX95_CLK_AUDIOPLL2_VCO>,
> + <&scmi_clk IMX95_CLK_AUDIOPLL1>,
> + <&scmi_clk IMX95_CLK_AUDIOPLL2>,
> + <&scmi_clk IMX95_CLK_SAI1>;
> + assigned-clock-parents = <0>, <0>, <0>, <0>,
> + <&scmi_clk
> IMX95_CLK_AUDIOPLL1>;
> + assigned-clock-rates = <3932160000>,
> + <3612672000>, <393216000>,
> + <361267200>, <12288000>;
> + fsl,sai-mclk-direction-output;
> + status = "okay";
> +};
> +
> +&sai3 {
> + #sound-dai-cells = <0>;
> + pinctrl-names = "default";
> + pinctrl-0 = <&pinctrl_sai3>;
> + assigned-clocks = <&scmi_clk IMX95_CLK_AUDIOPLL1_VCO>,
> + <&scmi_clk IMX95_CLK_AUDIOPLL2_VCO>,
> + <&scmi_clk IMX95_CLK_AUDIOPLL1>,
> + <&scmi_clk IMX95_CLK_AUDIOPLL2>,
> + <&scmi_clk IMX95_CLK_SAI3>;
> + assigned-clock-parents = <0>, <0>, <0>, <0>,
> + <&scmi_clk
> IMX95_CLK_AUDIOPLL1>;
> + assigned-clock-rates = <3932160000>,
> + <3612672000>, <393216000>,
> + <361267200>, <12288000>;
> + fsl,sai-mclk-direction-output;
> + status = "okay";
> +};
> +
> &usdhc1 {
> pinctrl-names = "default", "state_100mhz", "state_200mhz",
> "sleep";
> pinctrl-0 = <&pinctrl_usdhc1>;
> @@ -159,12 +336,31 @@ &wdog3 {
> };
>
> &scmi_iomuxc {
> + pinctrl_hp: hpgrp {
> + fsl,pins = <
> + IMX95_PAD_GPIO_IO11__GPIO2_IO_BIT11
> 0x31e
> + >;
> + };
> +
> + pinctrl_i2c4_pcal6408: i2c4pcal6498grp {
> + fsl,pins = <
> + IMX95_PAD_GPIO_IO18__GPIO2_IO_BIT18
> 0x31e
> + >;
> + };
> +
> pinctrl_i2c7_pcal6524: i2c7pcal6524grp {
> fsl,pins = <
> IMX95_PAD_GPIO_IO36__GPIO5_IO_BIT16
> 0x31e
> >;
> };
>
> + pinctrl_lpi2c4: lpi2c4grp {
> + fsl,pins = <
> + IMX95_PAD_GPIO_IO30__LPI2C4_SDA
> 0x40000b9e
> + IMX95_PAD_GPIO_IO31__LPI2C4_SCL
> 0x40000b9e
> + >;
> + };
> +
> pinctrl_lpi2c7: lpi2c7grp {
> fsl,pins = <
> IMX95_PAD_GPIO_IO08__LPI2C7_SDA
> 0x40000b9e
> @@ -184,6 +380,48 @@
> IMX95_PAD_GPIO_IO35__HSIOMIX_TOP_PCIE2_CLKREQ_B
> 0x4000031e
> >;
> };
>
> + pinctrl_pdm: pdmgrp {
> + fsl,pins = <
> +
> IMX95_PAD_PDM_CLK__AONMIX_TOP_PDM_CLK
> 0x31e
> +
> IMX95_PAD_PDM_BIT_STREAM0__AONMIX_TOP_PDM_BIT_S
> TREAM_BIT0 0x31e
> + >;
> + };
> +
> + pinctrl_sai1: sai1grp {
> + fsl,pins = <
> +
> IMX95_PAD_SAI1_RXD0__AONMIX_TOP_SAI1_RX_DATA_BIT0
> 0x31e
> +
> IMX95_PAD_SAI1_TXC__AONMIX_TOP_SAI1_TX_BCLK
> 0x31e
> +
> IMX95_PAD_SAI1_TXFS__AONMIX_TOP_SAI1_TX_SYNC
> 0x31e
> +
> IMX95_PAD_SAI1_TXD0__AONMIX_TOP_SAI1_TX_DATA_BIT0
> 0x31e
> + >;
> + };
> +
> + pinctrl_sai2: sai2grp {
> + fsl,pins = <
> +
> IMX95_PAD_ENET2_MDIO__NETCMIX_TOP_SAI2_RX_BCLK
> 0x31e
> +
> IMX95_PAD_ENET2_MDC__NETCMIX_TOP_SAI2_RX_SYNC
> 0x31e
> +
> IMX95_PAD_ENET2_TD3__NETCMIX_TOP_SAI2_RX_DATA_BIT
> 0 0x31e
> +
> IMX95_PAD_ENET2_TD2__NETCMIX_TOP_SAI2_RX_DATA_BIT
> 1 0x31e
> +
> IMX95_PAD_ENET2_TXC__NETCMIX_TOP_SAI2_TX_BCLK
> 0x31e
> +
> IMX95_PAD_ENET2_TX_CTL__NETCMIX_TOP_SAI2_TX_SYNC
> 0x31e
> +
> IMX95_PAD_ENET2_RX_CTL__NETCMIX_TOP_SAI2_TX_DATA_
> BIT0 0x31e
> +
> IMX95_PAD_ENET2_RXC__NETCMIX_TOP_SAI2_TX_DATA_BIT1
> 0x31e
> +
> IMX95_PAD_ENET2_RD0__NETCMIX_TOP_SAI2_TX_DATA_BIT
> 2 0x31e
> +
> IMX95_PAD_ENET2_RD1__NETCMIX_TOP_SAI2_TX_DATA_BIT
> 3 0x31e
> +
> IMX95_PAD_ENET2_RD2__NETCMIX_TOP_SAI2_MCLK
> 0x31e
> + >;
> + };
> +
> + pinctrl_sai3: sai3grp {
> + fsl,pins = <
> + IMX95_PAD_GPIO_IO17__SAI3_MCLK
> 0x31e
> + IMX95_PAD_GPIO_IO16__SAI3_TX_BCLK
> 0x31e
> + IMX95_PAD_GPIO_IO26__SAI3_TX_SYNC
> 0x31e
> +
> IMX95_PAD_GPIO_IO20__SAI3_RX_DATA_BIT0
> 0x31e
> +
> IMX95_PAD_GPIO_IO21__SAI3_TX_DATA_BIT0
> 0x31e
> + >;
> + };
> +
> pinctrl_uart1: uart1grp {
> fsl,pins = <
>
> IMX95_PAD_UART1_RXD__AONMIX_TOP_LPUART1_RX
> 0x31e
> --
> 2.34.1
>
Powered by blists - more mailing lists