[U-Boot] [PATCH 1/1] i2c: add i2c driver for stm32

Patrice CHOTARD patrice.chotard at st.com
Wed Aug 9 13:41:39 UTC 2017


Hi Heiko

On 08/09/2017 06:10 AM, Heiko Schocher wrote:
> Hi Simon, Patrice,
> 
> Am 06.08.2017 um 07:15 schrieb Simon Glass:
>> Hi Patrice,
>>
>> On 25 July 2017 at 10:02,  <patrice.chotard at st.com> wrote:
>>> From: Patrice Chotard <patrice.chotard at st.com>
>>>
>>> Add i2c driver which can be used on both STM32F7 and STM32H7.
>>> This I2C block supports the following features:
>>>   _ Slave and master modes
>>>   _ Multimaster capability
>>>   _ Standard-mode (up to 100 kHz)
>>>   _ Fast-mode (up to 400 kHz)
>>>   _ Fast-mode Plus (up to 1 MHz)
>>>   _ 7-bit and 10-bit addressing mode
>>>   _ Multiple 7-bit slave addresses (2 addresses, 1 with configurable 
>>> mask)
>>>   _ All 7-bit addresses acknowledge mode
>>>   _ General call
>>>   _ Programmable setup and hold times
>>>   _ Easy to use event management
>>>   _ Optional clock stretching
>>>   _ Software reset
>>>
>>> Signed-off-by: Christophe Kerello <christophe.kerello at st.com>
>>> Signed-off-by: Patrice Chotard <patrice.chotard at st.com>
>>> ---
>>>   doc/device-tree-bindings/i2c/i2c-stm32.txt |  30 ++
>>>   drivers/i2c/Kconfig                        |   7 +
>>>   drivers/i2c/Makefile                       |   1 +
>>>   drivers/i2c/stm32f7_i2c.c                  | 839 
>>> +++++++++++++++++++++++++++++
>>>   4 files changed, 877 insertions(+)
>>>   create mode 100644 doc/device-tree-bindings/i2c/i2c-stm32.txt
>>>   create mode 100644 drivers/i2c/stm32f7_i2c.c
>>>
> [...]
>>> diff --git a/drivers/i2c/stm32f7_i2c.c b/drivers/i2c/stm32f7_i2c.c
>>> new file mode 100644
>>> index 0000000..255b38a
>>> --- /dev/null
>>> +++ b/drivers/i2c/stm32f7_i2c.c
>>> @@ -0,0 +1,839 @@
>>> +/*
>>> + * (C) Copyright 2017 STMicroelectronics
>>> + *
>>> + * SPDX-License-Identifier:    GPL-2.0+
>>> + */
>>> +
>>> +#include <common.h>
>>> +#include <clk.h>
>>> +#include <dm.h>
>>> +#include <i2c.h>
>>> +#include <reset.h>
>>> +
>>> +#include <dm/device.h>
>>> +#include <linux/io.h>
>>> +
>>> +/* STM32 I2C registers */
>>> +struct stm32_i2c_regs {
>>> +       u32 cr1;        /* I2C control register 1 */
>>> +       u32 cr2;        /* I2C control register 2 */
>>> +       u32 oar1;       /* I2C own address 1 register */
>>> +       u32 oar2;       /* I2C own address 2 register */
>>> +       u32 timingr;    /* I2C timing register */
>>> +       u32 timeoutr;   /* I2C timeout register */
>>> +       u32 isr;        /* I2C interrupt and status register */
>>> +       u32 icr;        /* I2C interrupt clear register */
>>> +       u32 pecr;       /* I2C packet error checking register */
>>> +       u32 rxdr;       /* I2C receive data register */
>>> +       u32 txdr;       /* I2C transmit data register */
>>> +};
>>> +
>>> +#define STM32_I2C_CR1                          0x00
>>> +#define STM32_I2C_CR2                          0x04
>>
>> Do you really need these STM32_I2C prefixes?
> 
> Why not? I think this makes it clearer reading the drivers code.
> Beside of this, I am in sync with Simons comments.
> 
> @Patrice: Can you prepare a v2 please? Thanks!

V2 is in the pipe ;-)

Thanks

Patrice

> 
> bye,
> Heiko


More information about the U-Boot mailing list