mbox series

[v4,0/5] Add support for the STM32F7 I2C

Message ID 1505399319-14782-1-git-send-email-pierre-yves.mordret@st.com
Headers show
Series Add support for the STM32F7 I2C | expand

Message

Pierre Yves MORDRET Sept. 14, 2017, 2:28 p.m. UTC
This patchset adds support for the I2C controller embedded in STM32F7xx SoC.
It enables I2C transfer in interrupt mode with Standard-mode, Fast-mode and
Fast-mode+ bus speed.
---
 Version history:
     v4:
        * Fix max I2C Bus clock to 100%
        * Solve typo issue
        * Add retries value
    v3:
        * Move stm32f7_i2c_match above stm32f7_i2c_driver
        * of_device_get_match_data instead of of_match_device
        * Improve I2C Speed DT gathering
        * dev_err into dev_dbg for Arbitration loss
        * Remove useless space aligned

    v2:
        * Implement an I2C timings computation algorithm instead of static
          values(bindings). Algorithm uses generic I2C SCL Falling/Rising
          bindings and System clock to compute its timings.
        * I2C Device Tree Update
---
Pierre-Yves MORDRET (5):
  dt-bindings: i2c-stm32: Document the STM32F7 I2C bindings
  i2c: i2c-stm32f4: use generic definition of speed enum
  i2c: i2c-stm32f7: add driver
  ARM: dts: stm32: Add I2C1 support for STM32F746 SoC
  ARM: dts: stm32: Add I2C1 support for STM32F746 eval board

 .../devicetree/bindings/i2c/i2c-stm32.txt          |  29 +-
 arch/arm/boot/dts/stm32746g-eval.dts               |   8 +
 arch/arm/boot/dts/stm32f746.dtsi                   |  22 +
 drivers/i2c/busses/Kconfig                         |  10 +
 drivers/i2c/busses/Makefile                        |   1 +
 drivers/i2c/busses/i2c-stm32.h                     |  20 +
 drivers/i2c/busses/i2c-stm32f4.c                   |  18 +-
 drivers/i2c/busses/i2c-stm32f7.c                   | 972 +++++++++++++++++++++
 8 files changed, 1066 insertions(+), 14 deletions(-)
 create mode 100644 drivers/i2c/busses/i2c-stm32.h
 create mode 100644 drivers/i2c/busses/i2c-stm32f7.c

Comments

Wolfram Sang Sept. 14, 2017, 3:38 p.m. UTC | #1
On Thu, Sep 14, 2017 at 04:28:36PM +0200, Pierre-Yves MORDRET wrote:
> This patch uses a more generic definition of speed enum for i2c-stm32f4
> driver.
> 
> Signed-off-by: M'boumba Cedric Madianga <cedric.madianga@gmail.com>
> Signed-off-by: Pierre-Yves MORDRET <pierre-yves.mordret@st.com>
> Reviewed-by: Ludovic BARRE <ludovic.barre@st.com>

Applied to for-next, thanks!
Wolfram Sang Sept. 14, 2017, 3:40 p.m. UTC | #2
On Thu, Sep 14, 2017 at 04:28:37PM +0200, Pierre-Yves MORDRET wrote:
> This patch adds initial support for the STM32F7 I2C controller.
> 
> Signed-off-by: M'boumba Cedric Madianga <cedric.madianga@gmail.com>
> Signed-off-by: Pierre-Yves MORDRET <pierre-yves.mordret@st.com>

Thanks for the quick update. I'd think the 'rate_max' variable can now
be dropped and replaced by 'rate'? If so, we can fix that later
incrementally.

Applied to for-next (will be in 4.14), thanks! The DTS patches need to
go via arm-soc.
Pierre Yves MORDRET Sept. 14, 2017, 3:52 p.m. UTC | #3
On 09/14/2017 05:40 PM, Wolfram Sang wrote:
> On Thu, Sep 14, 2017 at 04:28:37PM +0200, Pierre-Yves MORDRET wrote:
>> This patch adds initial support for the STM32F7 I2C controller.
>>
>> Signed-off-by: M'boumba Cedric Madianga <cedric.madianga@gmail.com>
>> Signed-off-by: Pierre-Yves MORDRET <pierre-yves.mordret@st.com>
> 
> Thanks for the quick update. I'd think the 'rate_max' variable can now
> be dropped and replaced by 'rate'? If so, we can fix that later
> incrementally.

Many thanks. I will try to put a reminder in my mind for this ;)

> 
> Applied to for-next (will be in 4.14), thanks! The DTS patches need to
> go via arm-soc.
> 

Thanks again !
--
To unsubscribe from this list: send the line "unsubscribe devicetree" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Alexandre TORGUE Oct. 6, 2017, 1 p.m. UTC | #4
Hi

On 09/14/2017 04:28 PM, Pierre-Yves MORDRET wrote:
> This patch adds I2C1 support for STM32F746 SoC.
> 
> Signed-off-by: M'boumba Cedric Madianga <cedric.madianga@gmail.com>
> Signed-off-by: Pierre-Yves MORDRET <pierre-yves.mordret@st.com>
> ---
>   Version history:
>      v4:
>      v3:
>          * None
>      v2:
>          * Update I2C SoC device tree with latest Linux version
> ---
> ---
>   arch/arm/boot/dts/stm32f746.dtsi | 22 ++++++++++++++++++++++
>   1 file changed, 22 insertions(+)
> 
> diff --git a/arch/arm/boot/dts/stm32f746.dtsi b/arch/arm/boot/dts/stm32f746.dtsi
> index 4506eb9..ddd8f2c 100644
> --- a/arch/arm/boot/dts/stm32f746.dtsi
> +++ b/arch/arm/boot/dts/stm32f746.dtsi

Applied on stm32-dt-for-v4.15 branch.

Thanks
Alex



> @@ -361,6 +361,16 @@
>   					bias-disable;
>   				};
>   			};
> +
> +			i2c1_pins_b: i2c1@0 {
> +				pins {
> +					pinmux = <STM32F746_PB9_FUNC_I2C1_SDA>,
> +						 <STM32F746_PB8_FUNC_I2C1_SCL>;
> +					bias-disable;
> +					drive-open-drain;
> +					slew-rate = <0>;
> +				};
> +			};
>   		};
>   
>   		crc: crc@40023000 {
> @@ -380,6 +390,18 @@
>   			assigned-clocks = <&rcc 1 CLK_HSE_RTC>;
>   			assigned-clock-rates = <1000000>;
>   		};
> +
> +		i2c1: i2c@40005400 {
> +			compatible = "st,stm32f7-i2c";
> +			reg = <0x40005400 0x400>;
> +			interrupts = <31>,
> +				     <32>;
> +			resets = <&rcc STM32F7_APB1_RESET(I2C1)>;
> +			clocks = <&rcc 1 CLK_I2C1>;
> +			#address-cells = <1>;
> +			#size-cells = <0>;
> +			status = "disabled";
> +		};
>   	};
>   };
>   
> 



--
To unsubscribe from this list: send the line "unsubscribe devicetree" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Alexandre TORGUE Oct. 6, 2017, 1 p.m. UTC | #5
Hi

On 09/14/2017 04:28 PM, Pierre-Yves MORDRET wrote:
> This patch adds I2C1 support for STM32F746 eval board
> 
> Signed-off-by: M'boumba Cedric Madianga <cedric.madianga@gmail.com>
> Signed-off-by: Pierre-Yves MORDRET <pierre-yves.mordret@st.com>
> ---
>   Version history:
>      v4:
>      v3:
>          * None
> 
>      v2:
>          * Add SCL Rising/Falling time for eval board
> ---
> ---
>   arch/arm/boot/dts/stm32746g-eval.dts | 8 ++++++++
>   1 file changed, 8 insertions(+)
> 
> diff --git a/arch/arm/boot/dts/stm32746g-eval.dts b/arch/arm/boot/dts/stm32746g-eval.dts
> index 69a9579..9288c7a 100644
> --- a/arch/arm/boot/dts/stm32746g-eval.dts
> +++ b/arch/arm/boot/dts/stm32746g-eval.dts

Applied on stm32-dt-for-v4.15 branch.

Thanks
Alex

> @@ -102,3 +102,11 @@
>   	pinctrl-names = "default";
>   	status = "okay";
>   };
> +
> +&i2c1 {
> +	pinctrl-0 = <&i2c1_pins_b>;
> +	pinctrl-names = "default";
> +	i2c-scl-rising-time-ns = <185>;
> +	i2c-scl-falling-time-ns = <20>;
> +	status = "okay";
> +};
> 
--
To unsubscribe from this list: send the line "unsubscribe devicetree" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html