Newly added i2s device returns error at kernel startup: "[ 2.359377] st,stm32-i2s 44004000.audio-controller: no irq for node 44004000.audio-controller" [Answered]
Hello,
so I am using the Yocto environment and patched the device tree:
diff --git a/arch/arm/boot/dts/stm32mp157-pinctrl.dtsi b/arch/arm/boot/dts/stm32mp157-pinctrl.dtsi
index dd796ec03..54ef05294 100644
--- a/arch/arm/boot/dts/stm32mp157-pinctrl.dtsi
+++ b/arch/arm/boot/dts/stm32mp157-pinctrl.dtsi
@@ -473,7 +473,16 @@
};
};
-
+
+ i2s1_pins_mx: i2s1_mx-0 {
+ pins {
+ pinmux = <STM32_PINMUX('A', 15, AF5)>; /* I2S1_WS */
+ bias-disable;
+ drive-push-pull;
+ slew-rate = <1>;
+ };
+ };
+
i2s2_pins_a: i2s2-0 {
pins {
pinmux = <STM32_PINMUX('I', 3, AF5)>, /* I2S2_SDO */
@@ -1479,6 +1488,17 @@
};
};
+ i2s1_pins_z_mx: i2s1_mx-0 {
+ pins {
+ pinmux = <STM32_PINMUX('Z', 0, AF5)>, /* I2S1_CK */
+ <STM32_PINMUX('Z', 1, AF5)>, /* I2S1_SDI */
+ <STM32_PINMUX('Z', 2, AF5)>; /* I2S1_SDO */
+ bias-disable;
+ drive-push-pull;
+ slew-rate = <1>;
+ };
+ };
+
spi1_sleep_pins_a: spi1-sleep-0 {
pins {
pinmux = <STM32_PINMUX('Z', 0, ANALOG)>, /* SPI1_SCK */
diff --git a/arch/arm/boot/dts/stm32mp157c-ev1.dts b/arch/arm/boot/dts/stm32mp157c-ev1.dts
index 7323f40af..ce89fa959 100644
--- a/arch/arm/boot/dts/stm32mp157c-ev1.dts
+++ b/arch/arm/boot/dts/stm32mp157c-ev1.dts
@@ -98,7 +98,7 @@
};
};
- sound: sound {
+ sound0: sound@0 {
compatible = "audio-graph-card";
label = "STM32MP1-EV";
routing =
@@ -111,6 +111,42 @@
&dfsdm0_port &dfsdm1_port &dfsdm2_port &dfsdm3_port>;
status = "okay";
};
+
+ sound1: sound@1 {
+ compatible = "audio-graph-card";
+ label = "I2S-DEVICE";
+ dais = <&i2s1_port>;
+ };
+
+ i2s1: audio-controller@44004000 {
+ compatible = "st,stm32h7-i2s";
+ #sound-dai-cells = <0>;
+ reg = <0x44004000 0x400>;
+ interrupts = <GIC_SPI 36 IRQ_TYPE_LEVEL_HIGH>;
+ clocks = <&rcc SPI1>, <&rcc SPI1_K>, <&rcc PLL3_Q>, <&rcc PLL3_R>;
+ clock-names = "pclk", "i2sclk", "x8k", "x11k";
+ dmas = <&dmamux1 37 0x400 0x01>,
+ <&dmamux1 38 0x400 0x01>;
+ dma-names = "rx", "tx";
+ pinctrl-names = "default";
+ pinctrl-0 = <&i2s1_pins_mx>;
+ status = "okay";
+
+ i2s1_port: port@0 {
+ cpu_endpoint: endpoint {
+ remote-endpoint = <&codec_endpoint>;
+ format = "i2s";
+ };
+ };
+ };
+
+ audio-codec {
+ codec_port: port@0 {
+ codec_endpoint: endpoint {
+ remote-endpoint = <&cpu_endpoint>;
+ };
+ };
+ };
dmic0: dmic-0 {
compatible = "dmic-codec";
@@ -660,12 +696,12 @@
};
};
-&spi1 {
- pinctrl-names = "default", "sleep";
- pinctrl-0 = <&spi1_pins_a>;
- pinctrl-1 = <&spi1_sleep_pins_a>;
- status = "disabled";
-};
+// &spi1 {
+// pinctrl-names = "default", "sleep";
+// pinctrl-0 = <&spi1_pins_a>;
+// pinctrl-1 = <&spi1_sleep_pins_a>;
+// status = "disabled";
+// };
&timers2 {
status = "disabled";
diff --git a/arch/arm/boot/dts/stm32mp157c-m4-srm.dtsi b/arch/arm/boot/dts/stm32mp157c-m4-srm.dtsi
index 4d641a99c..b44618088 100644
--- a/arch/arm/boot/dts/stm32mp157c-m4-srm.dtsi
+++ b/arch/arm/boot/dts/stm32mp157c-m4-srm.dtsi
@@ -516,9 +516,9 @@
m4_spi1_pins_a: m4-spi1-0 {
pins {
- pinmux = <STM32_PINMUX('Z', 0, AF5)>, /* SPI1_SCK */
- <STM32_PINMUX('Z', 2, AF5)>, /* SPI1_MOSI */
- <STM32_PINMUX('Z', 1, AF5)>; /* SPI1_MISO */
+ pinmux = <STM32_PINMUX('Z', 0, RSVD)>, /* SPI1_SCK */
+ <STM32_PINMUX('Z', 2, RSVD)>, /* SPI1_MOSI */
+ <STM32_PINMUX('Z', 1, RSVD)>; /* SPI1_MISO */
};
};
};
diff --git a/arch/arm/boot/dts/stm32mp157c.dtsi b/arch/arm/boot/dts/stm32mp157c.dtsi
index d56e0f984..20f30f416 100644
--- a/arch/arm/boot/dts/stm32mp157c.dtsi
+++ b/arch/arm/boot/dts/stm32mp157c.dtsi
@@ -800,31 +800,31 @@
status = "disabled";
};
- spi1: spi@44004000 {
- #address-cells = <1>;
- #size-cells = <0>;
- compatible = "st,stm32h7-spi";
- reg = <0x44004000 0x400>;
- interrupts = <GIC_SPI 35 IRQ_TYPE_LEVEL_HIGH>;
- clocks = <&rcc SPI1_K>;
- resets = <&rcc SPI1_R>;
- dmas = <&dmamux1 37 0x400 0x01>,
- <&dmamux1 38 0x400 0x01>;
- dma-names = "rx", "tx";
- power-domains = <&pd_core>;
- status = "disabled";
- };
-
- i2s1: audio-controller@44004000 {
- compatible = "st,stm32h7-i2s";
- #sound-dai-cells = <0>;
- reg = <0x44004000 0x400>;
- interrupts = <GIC_SPI 35 IRQ_TYPE_LEVEL_HIGH>;
- dmas = <&dmamux1 37 0x400 0x01>,
- <&dmamux1 38 0x400 0x01>;
- dma-names = "rx", "tx";
- status = "disabled";
- };
+// spi1: spi@44004000 {
+// #address-cells = <1>;
+// #size-cells = <0>;
+// compatible = "st,stm32h7-spi";
+// reg = <0x44004000 0x400>;
+// interrupts = <GIC_SPI 35 IRQ_TYPE_LEVEL_HIGH>;
+// clocks = <&rcc SPI1_K>;
+// resets = <&rcc SPI1_R>;
+// dmas = <&dmamux1 37 0x400 0x01>,
+// <&dmamux1 38 0x400 0x01>;
+// dma-names = "rx", "tx";
+// power-domains = <&pd_core>;
+// status = "disabled";
+// };
+
+// i2s1: audio-controller@44004000 {
+// compatible = "st,stm32h7-i2s";
+// #sound-dai-cells = <0>;
+// reg = <0x44004000 0x400>;
+// interrupts = <GIC_SPI 35 IRQ_TYPE_LEVEL_HIGH>;
+// dmas = <&dmamux1 37 0x400 0x01>,
+// <&dmamux1 38 0x400 0x01>;
+// dma-names = "rx", "tx";
+// status = "okay";
+// };
spi4: spi@44005000 {
#address-cells = <1>;And basically I just want to add a new I2S sound device to connect to via the GPIOs to evaluate data.
The patch gets deployed with no problems. However I am getting the Error
[ 2.359377] st,stm32-i2s 44004000.audio-controller: no irq for node 44004000.audio-controller
What is it that I am missing?
