From 367a5002aeecdc45f92b3aedd788d9ae64431c3d Mon Sep 17 00:00:00 2001 From: raiden00pl Date: Sat, 23 Sep 2023 20:44:48 +0200 Subject: [PATCH] thingy53: add i2ctools support --- boards/arm/nrf53/thingy53/src/nrf53_bringup.c | 4 + boards/arm/nrf53/thingy53/src/nrf53_i2c.c | 110 ++++++++++++++++++ boards/arm/nrf53/thingy53/src/thingy53.h | 24 ++++ 3 files changed, 138 insertions(+) create mode 100644 boards/arm/nrf53/thingy53/src/nrf53_i2c.c diff --git a/boards/arm/nrf53/thingy53/src/nrf53_bringup.c b/boards/arm/nrf53/thingy53/src/nrf53_bringup.c index 64152d303ac..13f0c2df5c3 100644 --- a/boards/arm/nrf53/thingy53/src/nrf53_bringup.c +++ b/boards/arm/nrf53/thingy53/src/nrf53_bringup.c @@ -248,6 +248,10 @@ int nrf53_bringup(void) } #endif +#if defined(CONFIG_I2C) && defined(CONFIG_SYSTEM_I2CTOOL) + nrf53_i2ctool(); +#endif + #ifdef CONFIG_RGBLED ret = nrf53_rgbled_initialize(); if (ret < 0) diff --git a/boards/arm/nrf53/thingy53/src/nrf53_i2c.c b/boards/arm/nrf53/thingy53/src/nrf53_i2c.c new file mode 100644 index 00000000000..e48cd352043 --- /dev/null +++ b/boards/arm/nrf53/thingy53/src/nrf53_i2c.c @@ -0,0 +1,110 @@ +/**************************************************************************** + * boards/arm/nrf53/thingy53/src/nrf53_i2c.c + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. The + * ASF licenses this file to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance with the + * License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations + * under the License. + * + ****************************************************************************/ + +/**************************************************************************** + * Included Files + ****************************************************************************/ + +#include + +#include + +#ifdef CONFIG_I2C +# include "nrf53_i2c.h" +#endif + +/**************************************************************************** + * Public Functions + ****************************************************************************/ + +/**************************************************************************** + * Name: nrf53_i2c_register + * + * Description: + * Register one I2C drivers for the I2C tool. + * + ****************************************************************************/ + +#ifdef CONFIG_SYSTEM_I2CTOOL +int nrf53_i2c_register(int bus) +{ + struct i2c_master_s *i2c; + int ret = OK; + + i2c = nrf53_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); + nrf53_i2cbus_uninitialize(i2c); + } + } + + return ret; +} +#endif + +/**************************************************************************** + * Name: nrf53_i2ctool + * + * Description: + * Register I2C drivers for the I2C tool. + * + ****************************************************************************/ + +#ifdef CONFIG_SYSTEM_I2CTOOL +int nrf53_i2ctool(void) +{ + int ret = OK; + +#ifdef CONFIG_NRF53_I2C0_MASTER + ret = nrf53_i2c_register(0); + if (ret != OK) + { + return ret; + } +#endif + +#ifdef CONFIG_NRF53_I2C1_MASTER + ret = nrf53_i2c_register(1); + if (ret != OK) + { + return ret; + } +#endif + +#ifdef CONFIG_NRF53_I2C2_MASTER + ret = nrf53_i2c_register(2); + if (ret != OK) + { + return ret; + } +#endif + + return ret; +} +#endif diff --git a/boards/arm/nrf53/thingy53/src/thingy53.h b/boards/arm/nrf53/thingy53/src/thingy53.h index f67e8867fbd..7266b3a6fe1 100644 --- a/boards/arm/nrf53/thingy53/src/thingy53.h +++ b/boards/arm/nrf53/thingy53/src/thingy53.h @@ -163,5 +163,29 @@ int nrf53_bringup(void); int nrf53_rgbled_initialize(void); +/**************************************************************************** + * Name: nrf53_i2c_register + * + * Description: + * Register one I2C drivers for the I2C tool. + * + ****************************************************************************/ + +#ifdef CONFIG_I2C +int nrf53_i2c_register(int bus); +#endif + +/**************************************************************************** + * Name: nrf53_i2ctool + * + * Description: + * Register I2C drivers for the I2C tool. + * + ****************************************************************************/ + +#ifdef CONFIG_SYSTEM_I2CTOOL +int nrf53_i2ctool(void); +#endif + #endif /* __ASSEMBLY__ */ #endif /* __BOARDS_ARM_NRF53_THINGY53_SRC_THINGY53_H */