drivers/i2c: Add support of stm32mp1
Add support of I2C. Add I2C5 configuration for the arduino connector support. Signed-off-by: Christophe Priouzeau <christophe.priouzeau@linaro.org> Signed-off-by: Arnaud Pouliquen <arnaud.pouliquen@linaro.org>
This commit is contained in:
parent
860772323d
commit
303ff3fb8c
2 changed files with 48 additions and 2 deletions
|
@ -24,13 +24,14 @@ config I2C_STM32_V1
|
||||||
|
|
||||||
config I2C_STM32_V2
|
config I2C_STM32_V2
|
||||||
bool
|
bool
|
||||||
depends on SOC_SERIES_STM32F0X || SOC_SERIES_STM32F3X || SOC_SERIES_STM32F7X || SOC_SERIES_STM32L0X || SOC_SERIES_STM32L4X || SOC_SERIES_STM32WBX
|
depends on SOC_SERIES_STM32F0X || SOC_SERIES_STM32F3X || SOC_SERIES_STM32F7X || SOC_SERIES_STM32L0X || SOC_SERIES_STM32L4X || SOC_SERIES_STM32WBX || SOC_SERIES_STM32MP1X
|
||||||
select HAS_DTS_I2C
|
select HAS_DTS_I2C
|
||||||
select USE_STM32_LL_I2C
|
select USE_STM32_LL_I2C
|
||||||
select USE_STM32_LL_RCC if SOC_SERIES_STM32F0X || SOC_SERIES_STM32F3X
|
select USE_STM32_LL_RCC if SOC_SERIES_STM32F0X || SOC_SERIES_STM32F3X
|
||||||
select I2C_STM32_INTERRUPT if I2C_SLAVE
|
select I2C_STM32_INTERRUPT if I2C_SLAVE
|
||||||
help
|
help
|
||||||
Enable I2C support on the STM32 F0, F3, F7, L4 and WBX family of processors.
|
Enable I2C support on the STM32 F0, F3, F7, L4, WBX and MP1 family of
|
||||||
|
processors.
|
||||||
This driver also supports the L0 series.
|
This driver also supports the L0 series.
|
||||||
If I2C_SLAVE is enabled it selects I2C_STM32_INTERRUPT, since slave mode
|
If I2C_SLAVE is enabled it selects I2C_STM32_INTERRUPT, since slave mode
|
||||||
is only supported by this driver with interrupts enabled.
|
is only supported by this driver with interrupts enabled.
|
||||||
|
|
|
@ -332,3 +332,48 @@ STM32_I2C_INIT(I2C_3);
|
||||||
|
|
||||||
STM32_I2C_INIT(I2C_4);
|
STM32_I2C_INIT(I2C_4);
|
||||||
#endif /* CONFIG_I2C_4 */
|
#endif /* CONFIG_I2C_4 */
|
||||||
|
|
||||||
|
|
||||||
|
#ifdef CONFIG_I2C_5
|
||||||
|
|
||||||
|
#ifndef I2C5_BASE
|
||||||
|
#error "I2C_5 is not available on the platform that you selected"
|
||||||
|
#endif /* I2C5_BASE */
|
||||||
|
|
||||||
|
#ifdef CONFIG_I2C_STM32_INTERRUPT
|
||||||
|
static void i2c_stm32_irq_config_func_5(struct device *port);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
static const struct i2c_stm32_config i2c_stm32_cfg_5 = {
|
||||||
|
.i2c = (I2C_TypeDef *)DT_I2C_5_BASE_ADDRESS,
|
||||||
|
.pclken = {
|
||||||
|
.enr = DT_I2C_5_CLOCK_BITS,
|
||||||
|
.bus = DT_I2C_5_CLOCK_BUS,
|
||||||
|
},
|
||||||
|
#ifdef CONFIG_I2C_STM32_INTERRUPT
|
||||||
|
.irq_config_func = i2c_stm32_irq_config_func_5,
|
||||||
|
#endif
|
||||||
|
.bitrate = DT_I2C_5_BITRATE,
|
||||||
|
};
|
||||||
|
|
||||||
|
static struct i2c_stm32_data i2c_stm32_dev_data_5;
|
||||||
|
|
||||||
|
DEVICE_AND_API_INIT(i2c_stm32_5, CONFIG_I2C_5_NAME, &i2c_stm32_init,
|
||||||
|
&i2c_stm32_dev_data_5, &i2c_stm32_cfg_5,
|
||||||
|
POST_KERNEL, CONFIG_KERNEL_INIT_PRIORITY_DEVICE,
|
||||||
|
&api_funcs);
|
||||||
|
|
||||||
|
#ifdef CONFIG_I2C_STM32_INTERRUPT
|
||||||
|
static void i2c_stm32_irq_config_func_5(struct device *dev)
|
||||||
|
{
|
||||||
|
IRQ_CONNECT(DT_I2C_5_EVENT_IRQ, DT_I2C_5_EVENT_IRQ_PRI,
|
||||||
|
stm32_i2c_event_isr, DEVICE_GET(i2c_stm32_5), 0);
|
||||||
|
irq_enable(DT_I2C_5_EVENT_IRQ);
|
||||||
|
|
||||||
|
IRQ_CONNECT(DT_I2C_5_ERROR_IRQ, DT_I2C_5_ERROR_IRQ_PRI,
|
||||||
|
stm32_i2c_error_isr, DEVICE_GET(i2c_stm32_5), 0);
|
||||||
|
irq_enable(DT_I2C_5_ERROR_IRQ);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif /* CONFIG_I2C_5 */
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue