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

Heiko Schocher hs at denx.de
Wed Aug 9 04:10:19 UTC 2017


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!

bye,
Heiko
-- 
DENX Software Engineering GmbH,      Managing Director: Wolfgang Denk
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany


More information about the U-Boot mailing list