From ab10f417d81fd8ab8bd554eaa932998617cd75cc Mon Sep 17 00:00:00 2001 From: Armando Visconti Date: Mon, 1 Oct 2018 13:43:26 +0200 Subject: [PATCH] dts/arm/st/stm32f4: Add I2S support to DTS Add I2S bus initial support to stm32f4 SOC family. On stm32f4 the I2S shares same controller as SPI, so the declarations have been adapted from SPI ones. Signed-off-by: Armando Visconti --- dts/arm/st/f4/stm32f4.dtsi | 9 +++++++ dts/arm/st/f4/stm32f401.dtsi | 18 ++++++++++++++ dts/arm/st/f4/stm32f411.dtsi | 18 ++++++++++++++ dts/arm/st/f4/stm32f429.dtsi | 31 ++++++++++++++++++++++-- dts/arm/st/f4/stm32f429vX.dtsi | 4 ++++ dts/bindings/i2s/i2s.yaml | 34 ++++++++++++++++++++++++++ dts/bindings/i2s/st,stm32-i2s.yaml | 38 ++++++++++++++++++++++++++++++ 7 files changed, 150 insertions(+), 2 deletions(-) create mode 100644 dts/bindings/i2s/i2s.yaml create mode 100644 dts/bindings/i2s/st,stm32-i2s.yaml 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 + +...