diff --git a/dts/arm/st/f4/stm32f4.dtsi b/dts/arm/st/f4/stm32f4.dtsi index 4a58c45b4c7..c6c444fb920 100644 --- a/dts/arm/st/f4/stm32f4.dtsi +++ b/dts/arm/st/f4/stm32f4.dtsi @@ -192,6 +192,15 @@ label = "SPI_1"; }; + i2s1: i2s@40013000 { + compatible = "st,stm32-i2s"; + reg = <0x40013000 0x400>; + clocks = <&rcc STM32_CLOCK_BUS_APB2 0x00001000>; + interrupts = <35 5>; + status = "disabled"; + label = "I2S_1"; + }; + usbotg_fs: usb@50000000 { compatible = "st,stm32-otgfs"; reg = <0x50000000 0x40000>; diff --git a/dts/arm/st/f4/stm32f401.dtsi b/dts/arm/st/f4/stm32f401.dtsi index 82810a45054..65be3b219be 100644 --- a/dts/arm/st/f4/stm32f401.dtsi +++ b/dts/arm/st/f4/stm32f401.dtsi @@ -29,5 +29,23 @@ status = "disabled"; label = "SPI_3"; }; + + i2s2: i2s@40003800 { + compatible = "st,stm32-i2s"; + reg = <0x40003800 0x400>; + clocks = <&rcc STM32_CLOCK_BUS_APB1 0x00004000>; + interrupts = <36 5>; + status = "disabled"; + label = "I2S_2"; + }; + + i2s3: i2s@40003C00 { + compatible = "st,stm32-i2s"; + reg = <0x40003C00 0x400>; + clocks = <&rcc STM32_CLOCK_BUS_APB1 0x00008000>; + interrupts = <51 5>; + status = "disabled"; + label = "I2S_3"; + }; }; }; diff --git a/dts/arm/st/f4/stm32f411.dtsi b/dts/arm/st/f4/stm32f411.dtsi index 41634fe44bd..48cce588fe4 100644 --- a/dts/arm/st/f4/stm32f411.dtsi +++ b/dts/arm/st/f4/stm32f411.dtsi @@ -27,5 +27,23 @@ status = "disabled"; label = "SPI_5"; }; + + i2s4: i2s@40013400 { + compatible = "st,stm32-i2s"; + reg = <0x40013400 0x400>; + clocks = <&rcc STM32_CLOCK_BUS_APB2 0x00002000>; + interrupts = <84 5>; + status = "disabled"; + label = "I2S_4"; + }; + + i2s5: i2s@40015000 { + compatible = "st,stm32-i2s"; + reg = <0x40015000 0x400>; + clocks = <&rcc STM32_CLOCK_BUS_APB2 0x00100000>; + interrupts = <85 5>; + status = "disabled"; + label = "I2S_5"; + }; }; }; diff --git a/dts/arm/st/f4/stm32f429.dtsi b/dts/arm/st/f4/stm32f429.dtsi index 5a5e77ee1a8..e443cc97858 100644 --- a/dts/arm/st/f4/stm32f429.dtsi +++ b/dts/arm/st/f4/stm32f429.dtsi @@ -58,7 +58,16 @@ label = "SPI_4"; }; - /* spi5 is present on all STM32F429XX SoCs except + i2s4: i2s@40013400 { + compatible = "st,stm32-i2s"; + reg = <0x40013400 0x400>; + clocks = <&rcc STM32_CLOCK_BUS_APB2 0x00002000>; + interrupts = <84 5>; + status = "disabled"; + label = "I2S_4"; + }; + + /* spi5/i2s5 is present on all STM32F429XX SoCs except * STM32F429vX SoCs. Delete node in stm32f429vX.dtsi. */ spi5: spi@40015000 { @@ -71,7 +80,16 @@ label = "SPI_5"; }; - /* spi6 is present on all STM32F429XX SoCs except + i2s5: i2s@40015000 { + compatible = "st,stm32-i2s"; + reg = <0x40015000 0x400>; + clocks = <&rcc STM32_CLOCK_BUS_APB2 0x00100000>; + interrupts = <85 5>; + status = "disabled"; + label = "I2S_5"; + }; + + /* spi6/i2s6 is present on all STM32F429XX SoCs except * STM32F429vX SoCs. Delete node in stm32f429vX.dtsi. */ spi6: spi@40015400 { @@ -83,5 +101,14 @@ status = "disabled"; label = "SPI_6"; }; + + i2s6: i2s@40015400 { + compatible = "st,stm32-i2s"; + reg = <0x40015400 0x400>; + clocks = <&rcc STM32_CLOCK_BUS_APB2 0x00200000>; + interrupts = <86 5>; + status = "disabled"; + label = "I2S_6"; + }; }; }; diff --git a/dts/arm/st/f4/stm32f429vX.dtsi b/dts/arm/st/f4/stm32f429vX.dtsi index afa86f77bb0..e76fca4e009 100644 --- a/dts/arm/st/f4/stm32f429vX.dtsi +++ b/dts/arm/st/f4/stm32f429vX.dtsi @@ -19,3 +19,7 @@ /delete-node/ &spi5; /delete-node/ &spi6; + +/delete-node/ &i2s5; + +/delete-node/ &i2s6; diff --git a/dts/bindings/i2s/i2s.yaml b/dts/bindings/i2s/i2s.yaml new file mode 100644 index 00000000000..ae172c65485 --- /dev/null +++ b/dts/bindings/i2s/i2s.yaml @@ -0,0 +1,34 @@ +# +# Copyright (c) 2018, STMicroelectronics +# +# SPDX-License-Identifier: Apache-2.0 +# +--- +title: I2S Base Structure +version: 0.1 + +description: > + This binding gives the base structures for all I2S devices + +child: + bus: i2s + +properties: + compatible: + type: string + category: required + description: compatible strings + generation: define + label: + type: string + category: required + description: Human readable string describing the device (used by Zephyr for API name) + generation: define + clocks: + type: array + category: optional + description: Clock gate information + generation: define + + +... diff --git a/dts/bindings/i2s/st,stm32-i2s.yaml b/dts/bindings/i2s/st,stm32-i2s.yaml new file mode 100644 index 00000000000..d8df3ed0c4f --- /dev/null +++ b/dts/bindings/i2s/st,stm32-i2s.yaml @@ -0,0 +1,38 @@ +# +# Copyright (c) 2018, STMicroelectronics +# +# SPDX-License-Identifier: Apache-2.0 +# +--- +title: STM32 I2S +version: 0.1 + +description: > + This binding gives a base representation of the STM32 I2S controller + +inherits: + !include i2s.yaml + +properties: + compatible: + constraint: "st,stm32-i2s" + + reg: + type: array + description: mmio register space + generation: define + category: required + + interrupts: + type: array + category: required + description: required interrupts + generation: define + + interrupt-names: + type: stringlist + category: optional + description: readable string describing the interrupts + generation: define + +...