* [PATCH 1/5] clk: Add support for clock nexus dt bindings
2026-05-09 2:48 [PATCH 0/5] arm64: dts: freescale: Add IMX-AUD-IO daughter board support Chancel Liu
@ 2026-05-09 2:48 ` Chancel Liu
2026-05-09 2:48 ` [PATCH 2/5] dt-bindings: connector: Add fsl,io-connector binding Chancel Liu
` (3 subsequent siblings)
4 siblings, 0 replies; 6+ messages in thread
From: Chancel Liu @ 2026-05-09 2:48 UTC (permalink / raw)
To: robh, krzk+dt, conor+dt, Frank.Li, s.hauer, festevam, mturquette,
sboyd
Cc: kernel, devicetree, linux-kernel, imx, linux-arm-kernel,
linux-clk
Platforms can have a standardized connector/expansion slot that exposes
signals like clocks to expansion boards in an SoC agnostic way.
The support for nexus node has been added to handle those cases in
commit bd6f2fd5a1d5 ("of: Support parsing phandle argument lists through
a nexus node"). This commit introduced of_parse_phandle_with_args_map()
to handle nexus nodes in a generic way. Currently the gpio subsystem
adopted the support in commit c11e6f0f04db ("gpio: Support gpio nexus dt
bindings") and pwm subsystem adopted the support in commit e71e46a6f19c4
("pwm: Add support for pwm nexus dt bindings").
Change the function call to use of_parse_phandle_with_args_map() that
parses the phandle lists of clocks to use the nexus variant. This
allows remapping phandles and their arguments through any number of
nexus nodes and end up with the actual clock provider being used.
Signed-off-by: Chancel Liu <chancel.liu@nxp.com>
---
drivers/clk/clk.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/drivers/clk/clk.c b/drivers/clk/clk.c
index 048adfa86a5d..4240f059bec2 100644
--- a/drivers/clk/clk.c
+++ b/drivers/clk/clk.c
@@ -5206,8 +5206,8 @@ static int of_parse_clkspec(const struct device_node *np, int index,
*/
if (name)
index = of_property_match_string(np, "clock-names", name);
- ret = of_parse_phandle_with_args(np, "clocks", "#clock-cells",
- index, out_args);
+ ret = of_parse_phandle_with_args_map(np, "clocks", "clock",
+ index, out_args);
if (!ret)
break;
if (name && index >= 0)
--
2.50.1
^ permalink raw reply related [flat|nested] 6+ messages in thread* [PATCH 2/5] dt-bindings: connector: Add fsl,io-connector binding
2026-05-09 2:48 [PATCH 0/5] arm64: dts: freescale: Add IMX-AUD-IO daughter board support Chancel Liu
2026-05-09 2:48 ` [PATCH 1/5] clk: Add support for clock nexus dt bindings Chancel Liu
@ 2026-05-09 2:48 ` Chancel Liu
2026-05-09 2:48 ` [PATCH 3/5] arm64: dts: freescale: imx95-19x19-evk: Add IMX-AUD-IO board support Chancel Liu
` (2 subsequent siblings)
4 siblings, 0 replies; 6+ messages in thread
From: Chancel Liu @ 2026-05-09 2:48 UTC (permalink / raw)
To: robh, krzk+dt, conor+dt, Frank.Li, s.hauer, festevam, mturquette,
sboyd
Cc: kernel, devicetree, linux-kernel, imx, linux-arm-kernel,
linux-clk
The NXP I/O connector represents a physically present I/O connector on
the base board. It acts as a nexus that exposes a constrained set of
I/O resources, such as GPIOs, clocks, PWMs and interrupts, through
fixed electrical wiring. All actual hardware providers reside on the
base board. The connector node only defines index-based mappings to
those providers.
Signed-off-by: Chancel Liu <chancel.liu@nxp.com>
---
.../bindings/connector/fsl,io-connector.yaml | 94 +++++++++++++++++++
1 file changed, 94 insertions(+)
create mode 100644 Documentation/devicetree/bindings/connector/fsl,io-connector.yaml
diff --git a/Documentation/devicetree/bindings/connector/fsl,io-connector.yaml b/Documentation/devicetree/bindings/connector/fsl,io-connector.yaml
new file mode 100644
index 000000000000..8b5038a2332e
--- /dev/null
+++ b/Documentation/devicetree/bindings/connector/fsl,io-connector.yaml
@@ -0,0 +1,94 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/connector/fsl,io-connector.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: NXP I/O Connector
+
+maintainers:
+ - Frank Li <Frank.li@nxp.com>
+ - Chancel Liu <chancel.liu@nxp.com>
+
+description:
+ The NXP I/O connector represents a physically present I/O connector on the
+ base board. It acts as a nexus that exposes a constrained set of I/O
+ resources, such as GPIOs, clocks, PWMs and interrupts, through fixed
+ electrical wiring. All actual hardware providers reside on the base board.
+ The connector node only defines index-based mappings to those providers.
+
+properties:
+ compatible:
+ const: fsl,io-connector
+
+ gpio-controller: true
+
+ '#gpio-cells':
+ const: 2
+
+ gpio-map:
+ $ref: /schemas/types.yaml#/definitions/uint32-matrix
+
+ gpio-map-mask:
+ $ref: /schemas/types.yaml#/definitions/uint32-array
+
+ gpio-map-pass-thru:
+ $ref: /schemas/types.yaml#/definitions/uint32-array
+
+ '#clock-cells':
+ const: 1
+
+ clock-map:
+ $ref: /schemas/types.yaml#/definitions/uint32-matrix
+
+ clock-map-mask:
+ $ref: /schemas/types.yaml#/definitions/uint32-array
+
+ clock-map-pass-thru:
+ $ref: /schemas/types.yaml#/definitions/uint32-array
+
+ pwm-map:
+ $ref: /schemas/types.yaml#/definitions/uint32-matrix
+
+ pwm-map-mask:
+ $ref: /schemas/types.yaml#/definitions/uint32-array
+
+ pwm-map-pass-thru:
+ $ref: /schemas/types.yaml#/definitions/uint32-array
+
+ '#address-cells':
+ const: 0
+
+ interrupt-controller: true
+
+ "#interrupt-cells":
+ const: 2
+
+ interrupt-map: true
+
+ interrupt-map-mask: true
+
+required:
+ - compatible
+
+additionalProperties: false
+
+examples:
+ - |
+ #include <dt-bindings/interrupt-controller/irq.h>
+
+ connector {
+ compatible = "fsl,io-connector";
+ gpio-controller;
+ #gpio-cells = <2>;
+ gpio-map = <0 0 &gpio1 8 1>;
+ gpio-map-mask = <0xff 0x0>;
+ gpio-map-pass-thru = <0x0 0x1>;
+ #clock-cells = <1>;
+ clock-map = <0 &clk 1>;
+ #address-cells = <0>;
+ interrupt-controller;
+ #interrupt-cells = <2>;
+ interrupt-map-mask = <0xff 0x0>;
+ interrupt-map = <0 0 &gpio2 27 IRQ_TYPE_LEVEL_LOW>;
+ };
--
2.50.1
^ permalink raw reply related [flat|nested] 6+ messages in thread* [PATCH 3/5] arm64: dts: freescale: imx95-19x19-evk: Add IMX-AUD-IO board support
2026-05-09 2:48 [PATCH 0/5] arm64: dts: freescale: Add IMX-AUD-IO daughter board support Chancel Liu
2026-05-09 2:48 ` [PATCH 1/5] clk: Add support for clock nexus dt bindings Chancel Liu
2026-05-09 2:48 ` [PATCH 2/5] dt-bindings: connector: Add fsl,io-connector binding Chancel Liu
@ 2026-05-09 2:48 ` Chancel Liu
2026-05-09 2:48 ` [PATCH 4/5] arm64: dts: freescale: imx952-evk: " Chancel Liu
2026-05-09 2:48 ` [PATCH 5/5] arm64: dts: freescale: Add common DTS overlay for IMX-AUD-IO daughter board Chancel Liu
4 siblings, 0 replies; 6+ messages in thread
From: Chancel Liu @ 2026-05-09 2:48 UTC (permalink / raw)
To: robh, krzk+dt, conor+dt, Frank.Li, s.hauer, festevam, mturquette,
sboyd
Cc: kernel, devicetree, linux-kernel, imx, linux-arm-kernel,
linux-clk
IMX-AUD-IO is a daughter board which can be connected to i.MX95 19x19
EVK through a physical connector. This connector is described as a
fsl,io-connector connector to expose a constrained subset of GPIO and
clock resources to daughter board using fixed electrical wiring.
Also add required regulator, sound CPU DAI and I2C bus configuration to
support IMX-AUD-IO on this base board.
Signed-off-by: Chancel Liu <chancel.liu@nxp.com>
---
.../boot/dts/freescale/imx95-19x19-evk.dts | 53 ++++++++++++++++++-
1 file changed, 51 insertions(+), 2 deletions(-)
diff --git a/arch/arm64/boot/dts/freescale/imx95-19x19-evk.dts b/arch/arm64/boot/dts/freescale/imx95-19x19-evk.dts
index 041fd838fabb..f9b53df85396 100644
--- a/arch/arm64/boot/dts/freescale/imx95-19x19-evk.dts
+++ b/arch/arm64/boot/dts/freescale/imx95-19x19-evk.dts
@@ -43,6 +43,17 @@ aliases {
serial4 = &lpuart5;
};
+ aud_io_conn: aud-io-connector {
+ compatible = "fsl,io-connector";
+ gpio-controller;
+ #gpio-cells = <2>;
+ gpio-map = <0 0 &i2c6_pcal6416 8 1>;
+ gpio-map-mask = <0xff 0x0>;
+ gpio-map-pass-thru = <0x0 0x1>;
+ #clock-cells = <1>;
+ clock-map = <0 &scmi_clk IMX95_CLK_SAI2>;
+ };
+
bt_sco_codec: audio-codec-bt-sco {
#sound-dai-cells = <1>;
compatible = "linux,bt-sco";
@@ -94,7 +105,7 @@ flexcan2_phy: can-phy1 {
standby-gpios = <&i2c4_gpio_expander_21 3 GPIO_ACTIVE_LOW>;
};
- reg_vref_1v8: regulator-1p8v {
+ aud_io_reg_1v8: reg_vref_1v8: regulator-1p8v {
compatible = "regulator-fixed";
regulator-max-microvolt = <1800000>;
regulator-min-microvolt = <1800000>;
@@ -108,6 +119,22 @@ reg_3p3v: regulator-3p3v {
regulator-name = "+V3.3_SW";
};
+ aud_io_reg_3v3: regulator-aud-io-3v3 {
+ compatible = "regulator-fixed";
+ regulator-name = "aud-io-3v3";
+ regulator-max-microvolt = <3300000>;
+ regulator-min-microvolt = <3300000>;
+ gpio = <&i2c6_pcal6416 11 GPIO_ACTIVE_HIGH>;
+ enable-active-high;
+ };
+
+ aud_io_reg_5v: regulator-aud-io-5v {
+ compatible = "regulator-fixed";
+ regulator-name = "aud-io-5v";
+ regulator-max-microvolt = <5000000>;
+ regulator-min-microvolt = <5000000>;
+ };
+
reg_audio_pwr: regulator-audio-pwr {
compatible = "regulator-fixed";
regulator-name = "audio-pwr";
@@ -382,7 +409,7 @@ i2c5_pcal6408: gpio@21 {
};
};
-&lpi2c6 {
+aud_io_i2c: &lpi2c6 {
clock-frequency = <100000>;
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_lpi2c6>;
@@ -588,6 +615,28 @@ &sai1 {
status = "okay";
};
+aud_io_cpu: &sai2 {
+ #sound-dai-cells = <0>;
+ pinctrl-names = "default";
+ pinctrl-0 = <&pinctrl_sai2>;
+ clocks = <&scmi_clk IMX95_CLK_BUSNETCMIX>, <&dummy>,
+ <&scmi_clk IMX95_CLK_SAI2>, <&dummy>,
+ <&dummy>, <&scmi_clk IMX95_CLK_AUDIOPLL1>,
+ <&scmi_clk IMX95_CLK_AUDIOPLL2>;
+ clock-names = "bus", "mclk0", "mclk1", "mclk2", "mclk3", "pll8k", "pll11k";
+ 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_SAI2>;
+ 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;
+ fsl,sai-asynchronous;
+};
+
&sai3 {
#sound-dai-cells = <0>;
pinctrl-names = "default";
--
2.50.1
^ permalink raw reply related [flat|nested] 6+ messages in thread* [PATCH 4/5] arm64: dts: freescale: imx952-evk: Add IMX-AUD-IO board support
2026-05-09 2:48 [PATCH 0/5] arm64: dts: freescale: Add IMX-AUD-IO daughter board support Chancel Liu
` (2 preceding siblings ...)
2026-05-09 2:48 ` [PATCH 3/5] arm64: dts: freescale: imx95-19x19-evk: Add IMX-AUD-IO board support Chancel Liu
@ 2026-05-09 2:48 ` Chancel Liu
2026-05-09 2:48 ` [PATCH 5/5] arm64: dts: freescale: Add common DTS overlay for IMX-AUD-IO daughter board Chancel Liu
4 siblings, 0 replies; 6+ messages in thread
From: Chancel Liu @ 2026-05-09 2:48 UTC (permalink / raw)
To: robh, krzk+dt, conor+dt, Frank.Li, s.hauer, festevam, mturquette,
sboyd
Cc: kernel, devicetree, linux-kernel, imx, linux-arm-kernel,
linux-clk
IMX-AUD-IO is a daughter board which can be connected to i.MX952 EVK
through a physical connector. This connector is described as a
fsl,io-connector connector to expose a constrained subset of GPIO and
clock resources to daughter board using fixed electrical wiring.
Also add required regulator, sound CPU DAI and I2C bus configuration to
support IMX-AUD-IO on this base board.
Signed-off-by: Chancel Liu <chancel.liu@nxp.com>
---
arch/arm64/boot/dts/freescale/imx952-evk.dts | 68 +++++++++++++++++++-
1 file changed, 66 insertions(+), 2 deletions(-)
diff --git a/arch/arm64/boot/dts/freescale/imx952-evk.dts b/arch/arm64/boot/dts/freescale/imx952-evk.dts
index 62d1c1c7c501..bb1d8d5f5fcf 100644
--- a/arch/arm64/boot/dts/freescale/imx952-evk.dts
+++ b/arch/arm64/boot/dts/freescale/imx952-evk.dts
@@ -43,6 +43,17 @@ aliases {
spi6 = &lpspi7;
};
+ aud_io_conn: aud-io-connector {
+ compatible = "fsl,io-connector";
+ gpio-controller;
+ #gpio-cells = <2>;
+ gpio-map = <0 0 &pcal6416 8 1>;
+ gpio-map-mask = <0xff 0x0>;
+ gpio-map-pass-thru = <0x0 0x1>;
+ #clock-cells = <1>;
+ clock-map = <0 &scmi_clk IMX952_CLK_SAI2>;
+ };
+
bt_sco_codec: audio-codec-bt-sco {
#sound-dai-cells = <1>;
compatible = "linux,bt-sco";
@@ -114,13 +125,29 @@ reg_1p8v: regulator-1p8v {
regulator-name = "+V1.8_SW";
};
- reg_vref_1v8: regulator-adc-vref {
+ aud_io_reg_1v8: reg_vref_1v8: regulator-adc-vref {
compatible = "regulator-fixed";
regulator-name = "vref_1v8";
regulator-min-microvolt = <1800000>;
regulator-max-microvolt = <1800000>;
};
+ aud_io_reg_3v3: regulator-aud-io-3v3 {
+ compatible = "regulator-fixed";
+ regulator-name = "aud-io-3v3";
+ regulator-max-microvolt = <3300000>;
+ regulator-min-microvolt = <3300000>;
+ gpio = <&pcal6416 11 GPIO_ACTIVE_HIGH>;
+ enable-active-high;
+ };
+
+ aud_io_reg_5v: regulator-5v {
+ compatible = "regulator-fixed";
+ regulator-name = "aud-io-5v";
+ regulator-max-microvolt = <5000000>;
+ regulator-min-microvolt = <5000000>;
+ };
+
reg_audio_pwr: regulator-audio-pwr {
compatible = "regulator-fixed";
regulator-name = "audio-pwr";
@@ -323,7 +350,7 @@ i2c4_pcal6408: gpio@21 {
};
};
-&lpi2c6 {
+aud_io_i2c: &lpi2c6 {
clock-frequency = <100000>;
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_lpi2c6>;
@@ -468,6 +495,27 @@ &sai1 {
status = "okay";
};
+aud_io_cpu: &sai2 {
+ pinctrl-names = "default";
+ pinctrl-0 = <&pinctrl_sai2>;
+ clocks = <&scmi_clk IMX952_CLK_BUSNETCMIX>, <&clk_dummy>,
+ <&scmi_clk IMX952_CLK_SAI2>, <&clk_dummy>,
+ <&clk_dummy>, <&scmi_clk IMX952_CLK_AUDIOPLL1>,
+ <&scmi_clk IMX952_CLK_AUDIOPLL2>;
+ clock-names = "bus", "mclk0", "mclk1", "mclk2", "mclk3", "pll8k", "pll11k";
+ assigned-clocks = <&scmi_clk IMX952_CLK_AUDIOPLL1_VCO>,
+ <&scmi_clk IMX952_CLK_AUDIOPLL2_VCO>,
+ <&scmi_clk IMX952_CLK_AUDIOPLL1>,
+ <&scmi_clk IMX952_CLK_AUDIOPLL2>,
+ <&scmi_clk IMX952_CLK_SAI2>;
+ assigned-clock-parents = <0>, <0>, <0>, <0>,
+ <&scmi_clk IMX952_CLK_AUDIOPLL1>;
+ assigned-clock-rates = <3932160000>, <3612672000>,
+ <393216000>, <361267200>, <12288000>;
+ fsl,sai-mclk-direction-output;
+ fsl,sai-asynchronous;
+};
+
&sai3 {
assigned-clocks = <&scmi_clk IMX952_CLK_AUDIOPLL1_VCO>,
<&scmi_clk IMX952_CLK_AUDIOPLL2_VCO>,
@@ -688,6 +736,22 @@ IMX952_PAD_SAI1_TXD0__AONMIX_TOP_GPIO1_IO_13 0x51e
>;
};
+ pinctrl_sai2: sai2grp {
+ fsl,pins = <
+ IMX952_PAD_ENET2_MDIO__NETCMIX_TOP_SAI2_RX_BCLK 0x31e
+ IMX952_PAD_ENET2_MDC__NETCMIX_TOP_SAI2_RX_SYNC 0x31e
+ IMX952_PAD_ENET2_TD3__NETCMIX_TOP_SAI2_RX_DATA_0 0x31e
+ IMX952_PAD_ENET2_TD2__NETCMIX_TOP_SAI2_RX_DATA_1 0x31e
+ IMX952_PAD_ENET2_TXC__NETCMIX_TOP_SAI2_TX_BCLK 0x31e
+ IMX952_PAD_ENET2_TX_CTL__NETCMIX_TOP_SAI2_TX_SYNC 0x31e
+ IMX952_PAD_ENET2_RX_CTL__NETCMIX_TOP_SAI2_TX_DATA_0 0x31e
+ IMX952_PAD_ENET2_RXC__NETCMIX_TOP_SAI2_TX_DATA_1 0x31e
+ IMX952_PAD_ENET2_RD0__NETCMIX_TOP_SAI2_TX_DATA_2 0x31e
+ IMX952_PAD_ENET2_RD1__NETCMIX_TOP_SAI2_TX_DATA_3 0x31e
+ IMX952_PAD_ENET2_RD2__NETCMIX_TOP_SAI2_MCLK 0x31e
+ >;
+ };
+
pinctrl_sai3: sai3grp {
fsl,pins = <
IMX952_PAD_GPIO_IO17__WAKEUPMIX_TOP_SAI3_MCLK 0x31e
--
2.50.1
^ permalink raw reply related [flat|nested] 6+ messages in thread* [PATCH 5/5] arm64: dts: freescale: Add common DTS overlay for IMX-AUD-IO daughter board
2026-05-09 2:48 [PATCH 0/5] arm64: dts: freescale: Add IMX-AUD-IO daughter board support Chancel Liu
` (3 preceding siblings ...)
2026-05-09 2:48 ` [PATCH 4/5] arm64: dts: freescale: imx952-evk: " Chancel Liu
@ 2026-05-09 2:48 ` Chancel Liu
4 siblings, 0 replies; 6+ messages in thread
From: Chancel Liu @ 2026-05-09 2:48 UTC (permalink / raw)
To: robh, krzk+dt, conor+dt, Frank.Li, s.hauer, festevam, mturquette,
sboyd
Cc: kernel, devicetree, linux-kernel, imx, linux-arm-kernel,
linux-clk
Add common DTS overlay for the IMX-AUD-IO daughter board[1] which
connects to the base board through a PCIe X8 slot.
This board features a CS42888 codec providing 2 microphone inputs, 2
line inputs and 6 channels audio output capability.
[1]https://www.nxp.com/part/IMX-AUD-IO
Signed-off-by: Chancel Liu <chancel.liu@nxp.com>
---
arch/arm64/boot/dts/freescale/Makefile | 4 ++
arch/arm64/boot/dts/freescale/imx-aud-io.dtso | 58 +++++++++++++++++++
2 files changed, 62 insertions(+)
create mode 100644 arch/arm64/boot/dts/freescale/imx-aud-io.dtso
diff --git a/arch/arm64/boot/dts/freescale/Makefile b/arch/arm64/boot/dts/freescale/Makefile
index 0a4dabac5de4..7258740bfa23 100644
--- a/arch/arm64/boot/dts/freescale/Makefile
+++ b/arch/arm64/boot/dts/freescale/Makefile
@@ -545,11 +545,15 @@ dtb-$(CONFIG_ARCH_MXC) += imx95-15x15-evk-pcie0-ep.dtb
imx95-19x19-evk-pcie0-ep-dtbs += imx95-19x19-evk.dtb imx-pcie0-ep.dtbo
imx95-19x19-evk-pcie1-ep-dtbs += imx95-19x19-evk.dtb imx-pcie1-ep.dtbo
dtb-$(CONFIG_ARCH_MXC) += imx95-19x19-evk-pcie0-ep.dtb imx95-19x19-evk-pcie1-ep.dtb
+imx95-19x19-evk-aud-io-dtbs += imx95-19x19-evk.dtb imx-aud-io.dtbo
+dtb-$(CONFIG_ARCH_MXC) += imx95-19x19-evk-aud-io.dtb
dtb-$(CONFIG_ARCH_MXC) += imx95-libra-rdk-fpsc.dtb
dtb-$(CONFIG_ARCH_MXC) += imx95-19x19-verdin-evk.dtb
dtb-$(CONFIG_ARCH_MXC) += imx952-evk.dtb
+imx952-evk-aud-io-dtbs += imx952-evk.dtb imx-aud-io.dtbo
+dtb-$(CONFIG_ARCH_MXC) += imx952-evk-aud-io.dtb
imx8mm-kontron-dl-dtbs := imx8mm-kontron-bl.dtb imx8mm-kontron-dl.dtbo
imx8mm-kontron-bl-lte-dtbs := imx8mm-kontron-bl.dtb imx8mm-kontron-bl-lte.dtbo
diff --git a/arch/arm64/boot/dts/freescale/imx-aud-io.dtso b/arch/arm64/boot/dts/freescale/imx-aud-io.dtso
new file mode 100644
index 000000000000..77fd0aebd96b
--- /dev/null
+++ b/arch/arm64/boot/dts/freescale/imx-aud-io.dtso
@@ -0,0 +1,58 @@
+// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
+/*
+ * Common Device Tree for the IMX-AUD-IO daughter board[1].
+ * It connects to the baseboard through a PCIe X8 slot.
+ *
+ * [1]https://www.nxp.com/part/IMX-AUD-IO
+ *
+ * Copyright 2026 NXP
+ */
+
+/dts-v1/;
+/plugin/;
+
+#include <dt-bindings/gpio/gpio.h>
+
+&{/} {
+ aud-io-sound-cs42888 {
+ compatible = "fsl,imx-audio-card";
+ model = "imx-cs42888";
+
+ pri-dai-link {
+ link-name = "cs42888";
+ format = "i2s";
+ fsl,mclk-equal-bclk;
+
+ codec {
+ sound-dai = <&audio_io_codec>;
+ };
+
+ cpu {
+ sound-dai = <&aud_io_cpu>;
+ };
+
+ };
+ };
+};
+
+&aud_io_i2c {
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ audio_io_codec: codec@48 {
+ compatible = "cirrus,cs42888";
+ reg = <0x48>;
+ clocks = <&aud_io_conn 0>;
+ clock-names = "mclk";
+ VA-supply = <&aud_io_reg_5v>;
+ VD-supply = <&aud_io_reg_3v3>;
+ VLS-supply = <&aud_io_reg_1v8>;
+ VLC-supply = <&aud_io_reg_1v8>;
+ #sound-dai-cells = <0>;
+ reset-gpios = <&aud_io_conn 0 GPIO_ACTIVE_LOW>;
+ };
+};
+
+&aud_io_cpu {
+ status = "okay";
+};
--
2.50.1
^ permalink raw reply related [flat|nested] 6+ messages in thread