diff --git a/boards/xtensa/esp32s3/common/src/Make.defs b/boards/xtensa/esp32s3/common/src/Make.defs index 91cc34ee20e..f2df128831b 100644 --- a/boards/xtensa/esp32s3/common/src/Make.defs +++ b/boards/xtensa/esp32s3/common/src/Make.defs @@ -36,6 +36,10 @@ ifeq ($(CONFIG_I2C_DRIVER),y) CSRCS += esp32s3_board_i2c.c endif +ifeq ($(CONFIG_SENSORS_BMP180),y) + CSRCS += esp32s3_board_bmp180.c +endif + DEPPATH += --dep-path src VPATH += :src CFLAGS += $(shell $(INCDIR) "$(CC)" $(TOPDIR)$(DELIM)arch$(DELIM)$(CONFIG_ARCH)$(DELIM)src$(DELIM)board$(DELIM)src) diff --git a/boards/xtensa/esp32s3/common/src/esp32s3_board_bmp180.c b/boards/xtensa/esp32s3/common/src/esp32s3_board_bmp180.c new file mode 100644 index 00000000000..6b6d8dcfc35 --- /dev/null +++ b/boards/xtensa/esp32s3/common/src/esp32s3_board_bmp180.c @@ -0,0 +1,75 @@ +/**************************************************************************** + * boards/xtensa/esp32s3/common/src/esp32s3_board_bmp180.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 +#include + +#include +#include +#include + +#include "esp32s3_i2c.h" +#include "esp32s3-devkit.h" + +/**************************************************************************** + * Public Functions + ****************************************************************************/ + +/**************************************************************************** + * Name: board_bmp180_initialize + * + * Description: + * Initialize and register the BMP180 Pressure Sensor driver. + * + * Input Parameters: + * devno - The device number, used to build the device path as /dev/pressN + * busno - The I2C bus number + * + * Returned Value: + * Zero (OK) on success; a negated errno value on failure. + * + ****************************************************************************/ + +int board_bmp180_initialize(int devno, int busno) +{ + struct i2c_master_s *i2c; + char devpath[12]; + + /* Initialize BMP180 */ + + i2c = esp32s3_i2cbus_initialize(busno); + if (i2c == NULL) + { + return -ENODEV; + } + + /* Register the barometer sensor */ + + (void)snprintf(devpath, sizeof(devpath), "/dev/press%d", devno); + + return bmp180_register(devpath, i2c); +} + diff --git a/boards/xtensa/esp32s3/esp32s3-devkit/src/esp32s3-devkit.h b/boards/xtensa/esp32s3/esp32s3-devkit/src/esp32s3-devkit.h index a2b79651396..df4f762a3ce 100644 --- a/boards/xtensa/esp32s3/esp32s3-devkit/src/esp32s3-devkit.h +++ b/boards/xtensa/esp32s3/esp32s3-devkit/src/esp32s3-devkit.h @@ -97,5 +97,24 @@ int board_spiflash_init(void); int board_i2c_init(void); #endif +/**************************************************************************** + * Name: board_bmp180_initialize + * + * Description: + * Initialize and register the BMP180 Pressure Sensor driver. + * + * Input Parameters: + * devno - The device number, used to build the device path as /dev/pressN + * busno - The I2C bus number + * + * Returned Value: + * Zero (OK) on success; a negated errno value on failure. + * + ****************************************************************************/ + +#ifdef CONFIG_SENSORS_BMP180 +int board_bmp180_initialize(int devno, int busno); +#endif + #endif /* __ASSEMBLY__ */ #endif /* __BOARDS_XTENSA_ESP32S3_ESP32S3_DEVKIT_SRC_ESP32S3_DEVKIT_H */ diff --git a/boards/xtensa/esp32s3/esp32s3-devkit/src/esp32s3_bringup.c b/boards/xtensa/esp32s3/esp32s3-devkit/src/esp32s3_bringup.c index 2fb9dc3120b..b6dc28f8e51 100644 --- a/boards/xtensa/esp32s3/esp32s3-devkit/src/esp32s3_bringup.c +++ b/boards/xtensa/esp32s3/esp32s3-devkit/src/esp32s3_bringup.c @@ -141,6 +141,17 @@ int esp32s3_bringup(void) } #endif +#ifdef CONFIG_SENSORS_BMP180 + /* Try to register BMP180 device in I2C0 */ + + ret = board_bmp180_initialize(0, ESP32S3_I2C0); + if (ret < 0) + { + syslog(LOG_ERR, + "Failed to initialize BMP180 driver for I2C0: %d\n", ret); + } +#endif + #ifdef CONFIG_INPUT_BUTTONS /* Register the BUTTON driver */