[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