From 6deda9b3d290b96404786694c08954aa0f387a1c Mon Sep 17 00:00:00 2001 From: HeyGoda <504868170@qq.com> Date: Sun, 28 Apr 2024 16:34:30 +0800 Subject: [PATCH] boards/stm32f103-minimum: fix i2c driver register --- .../stm32f103-minimum/src/stm32_bringup.c | 49 +++++++++++++++++++ 1 file changed, 49 insertions(+) diff --git a/boards/arm/stm32/stm32f103-minimum/src/stm32_bringup.c b/boards/arm/stm32/stm32f103-minimum/src/stm32_bringup.c index 7dfe7d4460..d228b1bc9c 100644 --- a/boards/arm/stm32/stm32f103-minimum/src/stm32_bringup.c +++ b/boards/arm/stm32/stm32f103-minimum/src/stm32_bringup.c @@ -138,6 +138,11 @@ #include #endif +#ifdef CONFIG_I2C_DRIVER +#include +#include "stm32_i2c.h" +#endif + /**************************************************************************** * Pre-processor Definitions ****************************************************************************/ @@ -172,6 +177,37 @@ # define MMCSD_MINOR 0 #endif +/**************************************************************************** + * Name: stm32_i2c_register + * + * Description: + * Register one I2C drivers for the I2C tool. + * + ****************************************************************************/ +#ifdef CONFIG_I2C_DRIVER +static void stm32_i2c_register(int bus) +{ + FAR struct i2c_master_s *i2c; + int ret; + + i2c = stm32_i2cbus_initialize(bus); + if (i2c == NULL) + { + syslog(LOG_ERR, "ERROR: Failed to get I2C%d interface\n", bus); + } + else + { + ret = i2c_register(i2c, bus); + if (ret < 0) + { + syslog(LOG_ERR, "ERROR: Failed to register I2C%d driver: %d\n", + bus, ret); + stm32_i2cbus_uninitialize(i2c); + } + } +} +#endif + /**************************************************************************** * Private Data ****************************************************************************/ @@ -224,6 +260,19 @@ int stm32_bringup(void) } #endif +#ifdef CONFIG_I2C_DRIVER + /* Register I2C drivers on behalf of the I2C tool */ + #ifdef CONFIG_STM32_I2C1 + stm32_i2c_register(1); + #endif + #ifdef CONFIG_STM32_I2C2 + stm32_i2c_register(2); + #endif + #ifdef CONFIG_STM32_I2C3 + stm32_i2c_register(3); + #endif +#endif + #ifdef CONFIG_LCD_BACKPACK /* slcd:0, i2c:1, rows=2, cols=16 */