Browse Source

drivers: sensor: rename tmp116 to tmp11x

The tmp116 sensor driver also supports tmp117 and tmp119. Therefore rename
to indicate that is supports a range of tmp devices.

Signed-off-by: Jeppe Odgaard <jeppe.odgaard@prevas.dk>
pull/87929/head
Jeppe Odgaard 4 months ago committed by Benjamin Cabé
parent
commit
231b2a0c19
  1. 8
      boards/bytesatwork/bytesensi_l/bytesensi_l.dts
  2. 2
      drivers/eeprom/CMakeLists.txt
  3. 2
      drivers/eeprom/Kconfig
  4. 11
      drivers/eeprom/Kconfig.tmp116
  5. 11
      drivers/eeprom/Kconfig.tmp11x
  6. 70
      drivers/eeprom/eeprom_tmp116.c
  7. 70
      drivers/eeprom/eeprom_tmp11x.c
  8. 2
      drivers/sensor/ti/CMakeLists.txt
  9. 2
      drivers/sensor/ti/Kconfig
  10. 57
      drivers/sensor/ti/tmp116/tmp116.h
  11. 2
      drivers/sensor/ti/tmp11x/CMakeLists.txt
  12. 6
      drivers/sensor/ti/tmp11x/Kconfig
  13. 156
      drivers/sensor/ti/tmp11x/tmp11x.c
  14. 57
      drivers/sensor/ti/tmp11x/tmp11x.h
  15. 8
      dts/bindings/i2c/ti,tca954x-base.yaml
  16. 6
      dts/bindings/mtd/ti,tmp11x-eeprom.yaml
  17. 30
      dts/bindings/sensor/ti,tmp11x.yaml
  18. 31
      include/zephyr/drivers/sensor/tmp116.h
  19. 31
      include/zephyr/drivers/sensor/tmp11x.h
  20. 41
      include/zephyr/dt-bindings/sensor/tmp116.h
  21. 41
      include/zephyr/dt-bindings/sensor/tmp11x.h
  22. 2
      samples/sensor/tmp11x/CMakeLists.txt
  23. 14
      samples/sensor/tmp11x/README.rst
  24. 8
      samples/sensor/tmp11x/boards/nucleo_f401re.overlay
  25. 2
      samples/sensor/tmp11x/prj.conf
  26. 6
      samples/sensor/tmp11x/sample.yaml
  27. 20
      samples/sensor/tmp11x/src/main.c
  28. 8
      tests/drivers/build_all/eeprom/app.overlay
  29. 10
      tests/drivers/build_all/sensor/i2c.dtsi

8
boards/bytesatwork/bytesensi_l/bytesensi_l.dts

@ -93,15 +93,15 @@
int-gpios = <&gpio0 25 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)>; int-gpios = <&gpio0 25 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)>;
}; };
temperature_sensor: tmp116@4a { temperature_sensor: tmp11x@4a {
status = "okay"; status = "okay";
compatible = "ti,tmp116"; compatible = "ti,tmp11x";
reg = <0x4a>; reg = <0x4a>;
#address-cells = <1>; #address-cells = <1>;
#size-cells = <0>; #size-cells = <0>;
eeprom: ti_tmp116_eeprom@0 { eeprom: ti_tmp11x_eeprom@0 {
compatible = "ti,tmp116-eeprom"; compatible = "ti,tmp11x-eeprom";
reg = <0x0>; reg = <0x0>;
read-only; read-only;
}; };

2
drivers/eeprom/CMakeLists.txt

@ -19,7 +19,7 @@ if(CONFIG_EEPROM_SIMULATOR)
endif() endif()
endif() endif()
zephyr_library_sources_ifdef(CONFIG_EEPROM_EMULATOR eeprom_emulator.c) zephyr_library_sources_ifdef(CONFIG_EEPROM_EMULATOR eeprom_emulator.c)
zephyr_library_sources_ifdef(CONFIG_EEPROM_TMP116 eeprom_tmp116.c) zephyr_library_sources_ifdef(CONFIG_EEPROM_TMP11X eeprom_tmp11x.c)
zephyr_library_sources_ifdef(CONFIG_EEPROM_XEC eeprom_mchp_xec.c) zephyr_library_sources_ifdef(CONFIG_EEPROM_XEC eeprom_mchp_xec.c)
zephyr_library_sources_ifdef(CONFIG_EEPROM_FAKE eeprom_fake.c) zephyr_library_sources_ifdef(CONFIG_EEPROM_FAKE eeprom_fake.c)

2
drivers/eeprom/Kconfig

@ -96,7 +96,7 @@ config EEPROM_AT2X_INIT_PRIORITY
source "drivers/eeprom/Kconfig.lpc11u6x" source "drivers/eeprom/Kconfig.lpc11u6x"
source "drivers/eeprom/Kconfig.stm32" source "drivers/eeprom/Kconfig.stm32"
source "drivers/eeprom/Kconfig.eeprom_emu" source "drivers/eeprom/Kconfig.eeprom_emu"
source "drivers/eeprom/Kconfig.tmp116" source "drivers/eeprom/Kconfig.tmp11x"
source "drivers/eeprom/Kconfig.xec" source "drivers/eeprom/Kconfig.xec"
source "drivers/eeprom/Kconfig.mb85rcxx" source "drivers/eeprom/Kconfig.mb85rcxx"
source "drivers/eeprom/Kconfig.mb85rsxx" source "drivers/eeprom/Kconfig.mb85rsxx"

11
drivers/eeprom/Kconfig.tmp116

@ -1,11 +0,0 @@
# Copyright (c) 2021 Innoseis B.V.
# SPDX-License-Identifier: Apache-2.0
config EEPROM_TMP116
bool "TMP116 EEPROM driver"
default y
depends on DT_HAS_TI_TMP116_EEPROM_ENABLED
depends on TMP116
help
Enable support for the on-chip EEPROM found on
Texas instrument TMP116 temperature sensor

11
drivers/eeprom/Kconfig.tmp11x

@ -0,0 +1,11 @@
# Copyright (c) 2021 Innoseis B.V.
# SPDX-License-Identifier: Apache-2.0
config EEPROM_TMP11X
bool "TMP116, TMP117 and TMP119 EEPROM driver"
default y
depends on DT_HAS_TI_TMP11X_EEPROM_ENABLED
depends on TMP11X
help
Enable support for the on-chip EEPROM found on
Texas instrument TMP116, TMP117 and TMP119 temperature sensor

70
drivers/eeprom/eeprom_tmp116.c

@ -1,70 +0,0 @@
/*
* Copyright (c) 2020 Innoseis B.V
*
* SPDX-License-Identifier: Apache-2.0
*/
#include <errno.h>
#include <zephyr/devicetree.h>
#include <zephyr/drivers/eeprom.h>
#include <zephyr/drivers/sensor/tmp116.h>
#define DT_DRV_COMPAT ti_tmp116_eeprom
struct eeprom_tmp116_config {
const struct device *parent;
};
BUILD_ASSERT(CONFIG_EEPROM_INIT_PRIORITY >
CONFIG_SENSOR_INIT_PRIORITY,
"TMP116 eeprom driver must be initialized after TMP116 sensor "
"driver");
static size_t eeprom_tmp116_size(const struct device *dev)
{
return EEPROM_TMP116_SIZE;
}
static int eeprom_tmp116_write(const struct device *dev, off_t offset,
const void *data, size_t len)
{
const struct eeprom_tmp116_config *config = dev->config;
return tmp116_eeprom_write(config->parent, offset, data, len);
}
static int eeprom_tmp116_read(const struct device *dev, off_t offset, void *data,
size_t len)
{
const struct eeprom_tmp116_config *config = dev->config;
return tmp116_eeprom_read(config->parent, offset, data, len);
}
static int eeprom_tmp116_init(const struct device *dev)
{
const struct eeprom_tmp116_config *config = dev->config;
if (!device_is_ready(config->parent)) {
return -ENODEV;
}
return 0;
}
static DEVICE_API(eeprom, eeprom_tmp116_api) = {
.read = eeprom_tmp116_read,
.write = eeprom_tmp116_write,
.size = eeprom_tmp116_size,
};
#define DEFINE_TMP116(_num) \
static const struct eeprom_tmp116_config eeprom_tmp116_config##_num = { \
.parent = DEVICE_DT_GET(DT_INST_BUS(_num)) \
}; \
DEVICE_DT_INST_DEFINE(_num, eeprom_tmp116_init, NULL, \
NULL, &eeprom_tmp116_config##_num, POST_KERNEL, \
CONFIG_EEPROM_INIT_PRIORITY, &eeprom_tmp116_api);
DT_INST_FOREACH_STATUS_OKAY(DEFINE_TMP116);

70
drivers/eeprom/eeprom_tmp11x.c

@ -0,0 +1,70 @@
/*
* Copyright (c) 2020 Innoseis B.V
*
* SPDX-License-Identifier: Apache-2.0
*/
#include <errno.h>
#include <zephyr/devicetree.h>
#include <zephyr/drivers/eeprom.h>
#include <zephyr/drivers/sensor/tmp11x.h>
#define DT_DRV_COMPAT ti_tmp11x_eeprom
struct eeprom_tmp11x_config {
const struct device *parent;
};
BUILD_ASSERT(CONFIG_EEPROM_INIT_PRIORITY >
CONFIG_SENSOR_INIT_PRIORITY,
"TMP11X eeprom driver must be initialized after TMP11X sensor "
"driver");
static size_t eeprom_tmp11x_size(const struct device *dev)
{
return EEPROM_TMP11X_SIZE;
}
static int eeprom_tmp11x_write(const struct device *dev, off_t offset,
const void *data, size_t len)
{
const struct eeprom_tmp11x_config *config = dev->config;
return tmp11x_eeprom_write(config->parent, offset, data, len);
}
static int eeprom_tmp11x_read(const struct device *dev, off_t offset, void *data,
size_t len)
{
const struct eeprom_tmp11x_config *config = dev->config;
return tmp11x_eeprom_read(config->parent, offset, data, len);
}
static int eeprom_tmp11x_init(const struct device *dev)
{
const struct eeprom_tmp11x_config *config = dev->config;
if (!device_is_ready(config->parent)) {
return -ENODEV;
}
return 0;
}
static DEVICE_API(eeprom, eeprom_tmp11x_api) = {
.read = eeprom_tmp11x_read,
.write = eeprom_tmp11x_write,
.size = eeprom_tmp11x_size,
};
#define DEFINE_TMP11X(_num) \
static const struct eeprom_tmp11x_config eeprom_tmp11x_config##_num = { \
.parent = DEVICE_DT_GET(DT_INST_BUS(_num)) \
}; \
DEVICE_DT_INST_DEFINE(_num, eeprom_tmp11x_init, NULL, \
NULL, &eeprom_tmp11x_config##_num, POST_KERNEL, \
CONFIG_EEPROM_INIT_PRIORITY, &eeprom_tmp11x_api);
DT_INST_FOREACH_STATUS_OKAY(DEFINE_TMP11X);

2
drivers/sensor/ti/CMakeLists.txt

@ -19,6 +19,6 @@ add_subdirectory_ifdef(CONFIG_TMP1075 tmp1075)
add_subdirectory_ifdef(CONFIG_TMP108 tmp108) add_subdirectory_ifdef(CONFIG_TMP108 tmp108)
add_subdirectory_ifdef(CONFIG_TMP112 tmp112) add_subdirectory_ifdef(CONFIG_TMP112 tmp112)
add_subdirectory_ifdef(CONFIG_TMP114 tmp114) add_subdirectory_ifdef(CONFIG_TMP114 tmp114)
add_subdirectory_ifdef(CONFIG_TMP116 tmp116) add_subdirectory_ifdef(CONFIG_TMP11X tmp11x)
add_subdirectory_ifdef(CONFIG_TMP435 tmp435) add_subdirectory_ifdef(CONFIG_TMP435 tmp435)
# zephyr-keep-sorted-stop # zephyr-keep-sorted-stop

2
drivers/sensor/ti/Kconfig

@ -19,6 +19,6 @@ source "drivers/sensor/ti/tmp1075/Kconfig"
source "drivers/sensor/ti/tmp108/Kconfig" source "drivers/sensor/ti/tmp108/Kconfig"
source "drivers/sensor/ti/tmp112/Kconfig" source "drivers/sensor/ti/tmp112/Kconfig"
source "drivers/sensor/ti/tmp114/Kconfig" source "drivers/sensor/ti/tmp114/Kconfig"
source "drivers/sensor/ti/tmp116/Kconfig" source "drivers/sensor/ti/tmp11x/Kconfig"
source "drivers/sensor/ti/tmp435/Kconfig" source "drivers/sensor/ti/tmp435/Kconfig"
# zephyr-keep-sorted-stop # zephyr-keep-sorted-stop

57
drivers/sensor/ti/tmp116/tmp116.h

@ -1,57 +0,0 @@
/*
* Copyright (c) 2019 Centaur Analytics, Inc
*
* SPDX-License-Identifier: Apache-2.0
*/
#ifndef ZEPHYR_DRIVERS_SENSOR_TMP116_TMP116_H_
#define ZEPHYR_DRIVERS_SENSOR_TMP116_TMP116_H_
#include <zephyr/sys/util_macro.h>
#define TMP116_REG_TEMP 0x0
#define TMP116_REG_CFGR 0x1
#define TMP116_REG_HIGH_LIM 0x2
#define TMP116_REG_LOW_LIM 0x3
#define TMP116_REG_EEPROM_UL 0x4
#define TMP116_REG_EEPROM1 0x5
#define TMP116_REG_EEPROM2 0x6
#define TMP116_REG_EEPROM3 0x7
#define TMP117_REG_TEMP_OFFSET 0x7
#define TMP116_REG_EEPROM4 0x8
#define TMP116_REG_DEVICE_ID 0xF
#define TMP116_RESOLUTION 78125 /* in tens of uCelsius*/
#define TMP116_RESOLUTION_DIV 10000000
#define TMP116_DEVICE_ID 0x1116
#define TMP117_DEVICE_ID 0x0117
#define TMP119_DEVICE_ID 0x2117
#define TMP116_CFGR_AVG (BIT(5) | BIT(6))
#define TMP116_CFGR_CONV (BIT(7) | BIT(8) | BIT(9))
#define TMP116_CFGR_MODE (BIT(10) | BIT(11))
#define TMP116_CFGR_DATA_READY BIT(13)
#define TMP116_EEPROM_UL_UNLOCK BIT(15)
#define TMP116_EEPROM_UL_BUSY BIT(14)
#define TMP116_AVG_1_SAMPLE 0
#define TMP116_AVG_8_SAMPLES BIT(5)
#define TMP116_AVG_32_SAMPLES BIT(6)
#define TMP116_AVG_64_SAMPLES (BIT(5) | BIT(6))
#define TMP116_MODE_CONTINUOUS 0
#define TMP116_MODE_SHUTDOWN BIT(10)
#define TMP116_MODE_ONE_SHOT (BIT(10) | BIT(11))
struct tmp116_data {
uint16_t sample;
uint16_t id;
};
struct tmp116_dev_config {
struct i2c_dt_spec bus;
uint16_t odr;
uint16_t oversampling;
};
#endif /* ZEPHYR_DRIVERS_SENSOR_TMP116_TMP116_H_ */

2
drivers/sensor/ti/tmp116/CMakeLists.txt → drivers/sensor/ti/tmp11x/CMakeLists.txt

@ -2,4 +2,4 @@
zephyr_library() zephyr_library()
zephyr_library_sources(tmp116.c) zephyr_library_sources(tmp11x.c)

6
drivers/sensor/ti/tmp116/Kconfig → drivers/sensor/ti/tmp11x/Kconfig

@ -1,12 +1,12 @@
# TMP116 temperature sensor configuration options # TMP11X temperature sensor configuration options
# Copyright (c) 2019 Centaur Analytics, Inc # Copyright (c) 2019 Centaur Analytics, Inc
# SPDX-License-Identifier: Apache-2.0 # SPDX-License-Identifier: Apache-2.0
config TMP116 config TMP11X
bool "TMP116, TMP117 and TMP119 Temperature Sensors" bool "TMP116, TMP117 and TMP119 Temperature Sensors"
default y default y
depends on DT_HAS_TI_TMP116_ENABLED depends on DT_HAS_TI_TMP11X_ENABLED
select I2C select I2C
help help
Enable driver for TMP116, TMP117 and TMP119 temperature sensors. Enable driver for TMP116, TMP117 and TMP119 temperature sensors.

156
drivers/sensor/ti/tmp116/tmp116.c → drivers/sensor/ti/tmp11x/tmp11x.c

@ -4,31 +4,31 @@
* SPDX-License-Identifier: Apache-2.0 * SPDX-License-Identifier: Apache-2.0
*/ */
#define DT_DRV_COMPAT ti_tmp116 #define DT_DRV_COMPAT ti_tmp11x
#include <zephyr/device.h> #include <zephyr/device.h>
#include <zephyr/drivers/i2c.h> #include <zephyr/drivers/i2c.h>
#include <zephyr/drivers/sensor.h> #include <zephyr/drivers/sensor.h>
#include <zephyr/drivers/sensor/tmp116.h> #include <zephyr/drivers/sensor/tmp11x.h>
#include <zephyr/dt-bindings/sensor/tmp116.h> #include <zephyr/dt-bindings/sensor/tmp11x.h>
#include <zephyr/sys/util.h> #include <zephyr/sys/util.h>
#include <zephyr/sys/byteorder.h> #include <zephyr/sys/byteorder.h>
#include <zephyr/sys/__assert.h> #include <zephyr/sys/__assert.h>
#include <zephyr/logging/log.h> #include <zephyr/logging/log.h>
#include <zephyr/kernel.h> #include <zephyr/kernel.h>
#include "tmp116.h" #include "tmp11x.h"
#define EEPROM_SIZE_REG sizeof(uint16_t) #define EEPROM_SIZE_REG sizeof(uint16_t)
#define EEPROM_TMP117_RESERVED (2 * sizeof(uint16_t)) #define EEPROM_TMP117_RESERVED (2 * sizeof(uint16_t))
#define EEPROM_MIN_BUSY_MS 7 #define EEPROM_MIN_BUSY_MS 7
LOG_MODULE_REGISTER(TMP116, CONFIG_SENSOR_LOG_LEVEL); LOG_MODULE_REGISTER(TMP11X, CONFIG_SENSOR_LOG_LEVEL);
static int tmp116_reg_read(const struct device *dev, uint8_t reg, static int tmp11x_reg_read(const struct device *dev, uint8_t reg,
uint16_t *val) uint16_t *val)
{ {
const struct tmp116_dev_config *cfg = dev->config; const struct tmp11x_dev_config *cfg = dev->config;
if (i2c_burst_read_dt(&cfg->bus, reg, (uint8_t *)val, 2) if (i2c_burst_read_dt(&cfg->bus, reg, (uint8_t *)val, 2)
< 0) { < 0) {
@ -40,21 +40,21 @@ static int tmp116_reg_read(const struct device *dev, uint8_t reg,
return 0; return 0;
} }
static int tmp116_reg_write(const struct device *dev, uint8_t reg, static int tmp11x_reg_write(const struct device *dev, uint8_t reg,
uint16_t val) uint16_t val)
{ {
const struct tmp116_dev_config *cfg = dev->config; const struct tmp11x_dev_config *cfg = dev->config;
uint8_t tx_buf[3] = {reg, val >> 8, val & 0xFF}; uint8_t tx_buf[3] = {reg, val >> 8, val & 0xFF};
return i2c_write_dt(&cfg->bus, tx_buf, sizeof(tx_buf)); return i2c_write_dt(&cfg->bus, tx_buf, sizeof(tx_buf));
} }
int tmp116_write_config(const struct device *dev, uint16_t mask, uint16_t conf) int tmp11x_write_config(const struct device *dev, uint16_t mask, uint16_t conf)
{ {
uint16_t config = 0; uint16_t config = 0;
int result; int result;
result = tmp116_reg_read(dev, TMP116_REG_CFGR, &config); result = tmp11x_reg_read(dev, TMP11X_REG_CFGR, &config);
if (result < 0) { if (result < 0) {
return result; return result;
@ -63,15 +63,15 @@ int tmp116_write_config(const struct device *dev, uint16_t mask, uint16_t conf)
config &= ~mask; config &= ~mask;
config |= conf; config |= conf;
return tmp116_reg_write(dev, TMP116_REG_CFGR, config); return tmp11x_reg_write(dev, TMP11X_REG_CFGR, config);
} }
static bool check_eeprom_bounds(const struct device *dev, off_t offset, static bool check_eeprom_bounds(const struct device *dev, off_t offset,
size_t len) size_t len)
{ {
struct tmp116_data *drv_data = dev->data; struct tmp11x_data *drv_data = dev->data;
if ((offset + len) > EEPROM_TMP116_SIZE || if ((offset + len) > EEPROM_TMP11X_SIZE ||
offset % EEPROM_SIZE_REG != 0 || offset % EEPROM_SIZE_REG != 0 ||
len % EEPROM_SIZE_REG != 0) { len % EEPROM_SIZE_REG != 0) {
return false; return false;
@ -86,7 +86,7 @@ static bool check_eeprom_bounds(const struct device *dev, off_t offset,
return true; return true;
} }
int tmp116_eeprom_write(const struct device *dev, off_t offset, int tmp11x_eeprom_write(const struct device *dev, off_t offset,
const void *data, size_t len) const void *data, size_t len)
{ {
uint8_t reg; uint8_t reg;
@ -97,7 +97,7 @@ int tmp116_eeprom_write(const struct device *dev, off_t offset,
return -EINVAL; return -EINVAL;
} }
res = tmp116_reg_write(dev, TMP116_REG_EEPROM_UL, TMP116_EEPROM_UL_UNLOCK); res = tmp11x_reg_write(dev, TMP11X_REG_EEPROM_UL, TMP11X_EEPROM_UL_UNLOCK);
if (res) { if (res) {
return res; return res;
} }
@ -105,7 +105,7 @@ int tmp116_eeprom_write(const struct device *dev, off_t offset,
for (reg = (offset / 2); reg < offset / 2 + len / 2; reg++) { for (reg = (offset / 2); reg < offset / 2 + len / 2; reg++) {
uint16_t val = *src; uint16_t val = *src;
res = tmp116_reg_write(dev, reg + TMP116_REG_EEPROM1, val); res = tmp11x_reg_write(dev, reg + TMP11X_REG_EEPROM1, val);
if (res != 0) { if (res != 0) {
break; break;
} }
@ -113,11 +113,11 @@ int tmp116_eeprom_write(const struct device *dev, off_t offset,
k_sleep(K_MSEC(EEPROM_MIN_BUSY_MS)); k_sleep(K_MSEC(EEPROM_MIN_BUSY_MS));
do { do {
res = tmp116_reg_read(dev, TMP116_REG_EEPROM_UL, &val); res = tmp11x_reg_read(dev, TMP11X_REG_EEPROM_UL, &val);
if (res != 0) { if (res != 0) {
break; break;
} }
} while (val & TMP116_EEPROM_UL_BUSY); } while (val & TMP11X_EEPROM_UL_BUSY);
src++; src++;
if (res != 0) { if (res != 0) {
@ -125,12 +125,12 @@ int tmp116_eeprom_write(const struct device *dev, off_t offset,
} }
} }
res = tmp116_reg_write(dev, TMP116_REG_EEPROM_UL, 0); res = tmp11x_reg_write(dev, TMP11X_REG_EEPROM_UL, 0);
return res; return res;
} }
int tmp116_eeprom_read(const struct device *dev, off_t offset, void *data, int tmp11x_eeprom_read(const struct device *dev, off_t offset, void *data,
size_t len) size_t len)
{ {
uint8_t reg; uint8_t reg;
@ -142,7 +142,7 @@ int tmp116_eeprom_read(const struct device *dev, off_t offset, void *data,
} }
for (reg = (offset / 2); reg < offset / 2 + len / 2; reg++) { for (reg = (offset / 2); reg < offset / 2 + len / 2; reg++) {
res = tmp116_reg_read(dev, reg + TMP116_REG_EEPROM1, dst); res = tmp11x_reg_read(dev, reg + TMP11X_REG_EEPROM1, dst);
if (res != 0) { if (res != 0) {
break; break;
} }
@ -162,9 +162,9 @@ int tmp116_eeprom_read(const struct device *dev, off_t offset, void *data,
* @retval 0 on success * @retval 0 on success
* @retval -EIO Otherwise * @retval -EIO Otherwise
*/ */
static inline int tmp116_device_id_check(const struct device *dev, uint16_t *id) static inline int tmp11x_device_id_check(const struct device *dev, uint16_t *id)
{ {
if (tmp116_reg_read(dev, TMP116_REG_DEVICE_ID, id) != 0) { if (tmp11x_reg_read(dev, TMP11X_REG_DEVICE_ID, id) != 0) {
LOG_ERR("%s: Failed to get Device ID register!", LOG_ERR("%s: Failed to get Device ID register!",
dev->name); dev->name);
return -EIO; return -EIO;
@ -179,10 +179,10 @@ static inline int tmp116_device_id_check(const struct device *dev, uint16_t *id)
return 0; return 0;
} }
static int tmp116_sample_fetch(const struct device *dev, static int tmp11x_sample_fetch(const struct device *dev,
enum sensor_channel chan) enum sensor_channel chan)
{ {
struct tmp116_data *drv_data = dev->data; struct tmp11x_data *drv_data = dev->data;
uint16_t value; uint16_t value;
uint16_t cfg_reg = 0; uint16_t cfg_reg = 0;
int rc; int rc;
@ -194,20 +194,20 @@ static int tmp116_sample_fetch(const struct device *dev,
drv_data->sample = 0U; drv_data->sample = 0U;
/* Make sure that a data is available */ /* Make sure that a data is available */
rc = tmp116_reg_read(dev, TMP116_REG_CFGR, &cfg_reg); rc = tmp11x_reg_read(dev, TMP11X_REG_CFGR, &cfg_reg);
if (rc < 0) { if (rc < 0) {
LOG_ERR("%s, Failed to read from CFGR register", LOG_ERR("%s, Failed to read from CFGR register",
dev->name); dev->name);
return rc; return rc;
} }
if ((cfg_reg & TMP116_CFGR_DATA_READY) == 0) { if ((cfg_reg & TMP11X_CFGR_DATA_READY) == 0) {
LOG_DBG("%s: no data ready", dev->name); LOG_DBG("%s: no data ready", dev->name);
return -EBUSY; return -EBUSY;
} }
/* Get the most recent temperature measurement */ /* Get the most recent temperature measurement */
rc = tmp116_reg_read(dev, TMP116_REG_TEMP, &value); rc = tmp11x_reg_read(dev, TMP11X_REG_TEMP, &value);
if (rc < 0) { if (rc < 0) {
LOG_ERR("%s: Failed to read from TEMP register!", LOG_ERR("%s: Failed to read from TEMP register!",
dev->name); dev->name);
@ -220,11 +220,11 @@ static int tmp116_sample_fetch(const struct device *dev,
return 0; return 0;
} }
static int tmp116_channel_get(const struct device *dev, static int tmp11x_channel_get(const struct device *dev,
enum sensor_channel chan, enum sensor_channel chan,
struct sensor_value *val) struct sensor_value *val)
{ {
struct tmp116_data *drv_data = dev->data; struct tmp11x_data *drv_data = dev->data;
int32_t tmp; int32_t tmp;
if (chan != SENSOR_CHAN_AMBIENT_TEMP) { if (chan != SENSOR_CHAN_AMBIENT_TEMP) {
@ -235,46 +235,46 @@ static int tmp116_channel_get(const struct device *dev,
* See datasheet "Temperature Results and Limits" section for more * See datasheet "Temperature Results and Limits" section for more
* details on processing sample data. * details on processing sample data.
*/ */
tmp = ((int16_t)drv_data->sample * (int32_t)TMP116_RESOLUTION) / 10; tmp = ((int16_t)drv_data->sample * (int32_t)TMP11X_RESOLUTION) / 10;
val->val1 = tmp / 1000000; /* uCelsius */ val->val1 = tmp / 1000000; /* uCelsius */
val->val2 = tmp % 1000000; val->val2 = tmp % 1000000;
return 0; return 0;
} }
static int16_t tmp116_conv_value(const struct sensor_value *val) static int16_t tmp11x_conv_value(const struct sensor_value *val)
{ {
uint32_t freq_micro = sensor_value_to_micro(val); uint32_t freq_micro = sensor_value_to_micro(val);
switch (freq_micro) { switch (freq_micro) {
case 64000000: /* 1 / 15.5 ms has been rounded down */ case 64000000: /* 1 / 15.5 ms has been rounded down */
return TMP116_DT_ODR_15_5_MS; return TMP11X_DT_ODR_15_5_MS;
case 8000000: case 8000000:
return TMP116_DT_ODR_125_MS; return TMP11X_DT_ODR_125_MS;
case 4000000: case 4000000:
return TMP116_DT_ODR_250_MS; return TMP11X_DT_ODR_250_MS;
case 2000000: case 2000000:
return TMP116_DT_ODR_500_MS; return TMP11X_DT_ODR_500_MS;
case 1000000: case 1000000:
return TMP116_DT_ODR_1000_MS; return TMP11X_DT_ODR_1000_MS;
case 250000: case 250000:
return TMP116_DT_ODR_4000_MS; return TMP11X_DT_ODR_4000_MS;
case 125000: case 125000:
return TMP116_DT_ODR_8000_MS; return TMP11X_DT_ODR_8000_MS;
case 62500: case 62500:
return TMP116_DT_ODR_16000_MS; return TMP11X_DT_ODR_16000_MS;
default: default:
LOG_ERR("%" PRIu32 " uHz not supported", freq_micro); LOG_ERR("%" PRIu32 " uHz not supported", freq_micro);
return -EINVAL; return -EINVAL;
} }
} }
static int tmp116_attr_set(const struct device *dev, static int tmp11x_attr_set(const struct device *dev,
enum sensor_channel chan, enum sensor_channel chan,
enum sensor_attribute attr, enum sensor_attribute attr,
const struct sensor_value *val) const struct sensor_value *val)
{ {
struct tmp116_data *drv_data = dev->data; struct tmp11x_data *drv_data = dev->data;
int16_t value; int16_t value;
uint16_t avg; uint16_t avg;
@ -284,12 +284,12 @@ static int tmp116_attr_set(const struct device *dev,
switch ((int)attr) { switch ((int)attr) {
case SENSOR_ATTR_SAMPLING_FREQUENCY: case SENSOR_ATTR_SAMPLING_FREQUENCY:
value = tmp116_conv_value(val); value = tmp11x_conv_value(val);
if (value < 0) { if (value < 0) {
return value; return value;
} }
return tmp116_write_config(dev, TMP116_CFGR_CONV, value); return tmp11x_write_config(dev, TMP11X_CFGR_CONV, value);
case SENSOR_ATTR_OFFSET: case SENSOR_ATTR_OFFSET:
if (drv_data->id != TMP117_DEVICE_ID && drv_data->id != TMP119_DEVICE_ID) { if (drv_data->id != TMP117_DEVICE_ID && drv_data->id != TMP119_DEVICE_ID) {
@ -301,48 +301,48 @@ static int tmp116_attr_set(const struct device *dev,
* The offset is encoded into the temperature register format. * The offset is encoded into the temperature register format.
*/ */
value = (((val->val1) * 10000000) + ((val->val2) * 10)) value = (((val->val1) * 10000000) + ((val->val2) * 10))
/ (int32_t)TMP116_RESOLUTION; / (int32_t)TMP11X_RESOLUTION;
return tmp116_reg_write(dev, TMP117_REG_TEMP_OFFSET, value); return tmp11x_reg_write(dev, TMP117_REG_TEMP_OFFSET, value);
case SENSOR_ATTR_OVERSAMPLING: case SENSOR_ATTR_OVERSAMPLING:
/* sensor supports averaging 1, 8, 32 and 64 samples */ /* sensor supports averaging 1, 8, 32 and 64 samples */
switch (val->val1) { switch (val->val1) {
case 1: case 1:
avg = TMP116_AVG_1_SAMPLE; avg = TMP11X_AVG_1_SAMPLE;
break; break;
case 8: case 8:
avg = TMP116_AVG_8_SAMPLES; avg = TMP11X_AVG_8_SAMPLES;
break; break;
case 32: case 32:
avg = TMP116_AVG_32_SAMPLES; avg = TMP11X_AVG_32_SAMPLES;
break; break;
case 64: case 64:
avg = TMP116_AVG_64_SAMPLES; avg = TMP11X_AVG_64_SAMPLES;
break; break;
default: default:
return -EINVAL; return -EINVAL;
} }
return tmp116_write_config(dev, TMP116_CFGR_AVG, avg); return tmp11x_write_config(dev, TMP11X_CFGR_AVG, avg);
case SENSOR_ATTR_TMP116_SHUTDOWN_MODE: case SENSOR_ATTR_TMP11X_SHUTDOWN_MODE:
return tmp116_write_config(dev, TMP116_CFGR_MODE, TMP116_MODE_SHUTDOWN); return tmp11x_write_config(dev, TMP11X_CFGR_MODE, TMP11X_MODE_SHUTDOWN);
case SENSOR_ATTR_TMP116_CONTINUOUS_CONVERSION_MODE: case SENSOR_ATTR_TMP11X_CONTINUOUS_CONVERSION_MODE:
return tmp116_write_config(dev, TMP116_CFGR_MODE, TMP116_MODE_CONTINUOUS); return tmp11x_write_config(dev, TMP11X_CFGR_MODE, TMP11X_MODE_CONTINUOUS);
case SENSOR_ATTR_TMP116_ONE_SHOT_MODE: case SENSOR_ATTR_TMP11X_ONE_SHOT_MODE:
return tmp116_write_config(dev, TMP116_CFGR_MODE, TMP116_MODE_ONE_SHOT); return tmp11x_write_config(dev, TMP11X_CFGR_MODE, TMP11X_MODE_ONE_SHOT);
default: default:
return -ENOTSUP; return -ENOTSUP;
} }
} }
static int tmp116_attr_get(const struct device *dev, enum sensor_channel chan, static int tmp11x_attr_get(const struct device *dev, enum sensor_channel chan,
enum sensor_attribute attr, struct sensor_value *val) enum sensor_attribute attr, struct sensor_value *val)
{ {
uint16_t data; uint16_t data;
@ -354,7 +354,7 @@ static int tmp116_attr_get(const struct device *dev, enum sensor_channel chan,
switch (attr) { switch (attr) {
case SENSOR_ATTR_CONFIGURATION: case SENSOR_ATTR_CONFIGURATION:
rc = tmp116_reg_read(dev, TMP116_REG_CFGR, &data); rc = tmp11x_reg_read(dev, TMP11X_REG_CFGR, &data);
if (rc < 0) { if (rc < 0) {
return rc; return rc;
} }
@ -369,17 +369,17 @@ static int tmp116_attr_get(const struct device *dev, enum sensor_channel chan,
return 0; return 0;
} }
static DEVICE_API(sensor, tmp116_driver_api) = { static DEVICE_API(sensor, tmp11x_driver_api) = {
.attr_set = tmp116_attr_set, .attr_set = tmp11x_attr_set,
.attr_get = tmp116_attr_get, .attr_get = tmp11x_attr_get,
.sample_fetch = tmp116_sample_fetch, .sample_fetch = tmp11x_sample_fetch,
.channel_get = tmp116_channel_get .channel_get = tmp11x_channel_get
}; };
static int tmp116_init(const struct device *dev) static int tmp11x_init(const struct device *dev)
{ {
struct tmp116_data *drv_data = dev->data; struct tmp11x_data *drv_data = dev->data;
const struct tmp116_dev_config *cfg = dev->config; const struct tmp11x_dev_config *cfg = dev->config;
int rc; int rc;
uint16_t id; uint16_t id;
@ -389,32 +389,32 @@ static int tmp116_init(const struct device *dev)
} }
/* Check the Device ID */ /* Check the Device ID */
rc = tmp116_device_id_check(dev, &id); rc = tmp11x_device_id_check(dev, &id);
if (rc < 0) { if (rc < 0) {
return rc; return rc;
} }
LOG_DBG("Got device ID: %x", id); LOG_DBG("Got device ID: %x", id);
drv_data->id = id; drv_data->id = id;
rc = tmp116_write_config(dev, TMP116_CFGR_CONV, cfg->odr); rc = tmp11x_write_config(dev, TMP11X_CFGR_CONV, cfg->odr);
if (rc < 0) { if (rc < 0) {
return rc; return rc;
} }
rc = tmp116_write_config(dev, TMP116_CFGR_AVG, cfg->oversampling); rc = tmp11x_write_config(dev, TMP11X_CFGR_AVG, cfg->oversampling);
return rc; return rc;
} }
#define DEFINE_TMP116(_num) \ #define DEFINE_TMP11X(_num) \
static struct tmp116_data tmp116_data_##_num; \ static struct tmp11x_data tmp11x_data_##_num; \
static const struct tmp116_dev_config tmp116_config_##_num = { \ static const struct tmp11x_dev_config tmp11x_config_##_num = { \
.bus = I2C_DT_SPEC_INST_GET(_num), \ .bus = I2C_DT_SPEC_INST_GET(_num), \
.odr = DT_INST_PROP(_num, odr), \ .odr = DT_INST_PROP(_num, odr), \
.oversampling = DT_INST_PROP(_num, oversampling), \ .oversampling = DT_INST_PROP(_num, oversampling), \
}; \ }; \
SENSOR_DEVICE_DT_INST_DEFINE(_num, tmp116_init, NULL, \ SENSOR_DEVICE_DT_INST_DEFINE(_num, tmp11x_init, NULL, \
&tmp116_data_##_num, &tmp116_config_##_num, POST_KERNEL, \ &tmp11x_data_##_num, &tmp11x_config_##_num, POST_KERNEL, \
CONFIG_SENSOR_INIT_PRIORITY, &tmp116_driver_api); CONFIG_SENSOR_INIT_PRIORITY, &tmp11x_driver_api);
DT_INST_FOREACH_STATUS_OKAY(DEFINE_TMP116) DT_INST_FOREACH_STATUS_OKAY(DEFINE_TMP11X)

57
drivers/sensor/ti/tmp11x/tmp11x.h

@ -0,0 +1,57 @@
/*
* Copyright (c) 2019 Centaur Analytics, Inc
*
* SPDX-License-Identifier: Apache-2.0
*/
#ifndef ZEPHYR_DRIVERS_SENSOR_TMP11X_TMP11X_H_
#define ZEPHYR_DRIVERS_SENSOR_TMP11X_TMP11X_H_
#include <zephyr/sys/util_macro.h>
#define TMP11X_REG_TEMP 0x0
#define TMP11X_REG_CFGR 0x1
#define TMP11X_REG_HIGH_LIM 0x2
#define TMP11X_REG_LOW_LIM 0x3
#define TMP11X_REG_EEPROM_UL 0x4
#define TMP11X_REG_EEPROM1 0x5
#define TMP11X_REG_EEPROM2 0x6
#define TMP11X_REG_EEPROM3 0x7
#define TMP117_REG_TEMP_OFFSET 0x7
#define TMP11X_REG_EEPROM4 0x8
#define TMP11X_REG_DEVICE_ID 0xF
#define TMP11X_RESOLUTION 78125 /* in tens of uCelsius*/
#define TMP11X_RESOLUTION_DIV 10000000
#define TMP116_DEVICE_ID 0x1116
#define TMP117_DEVICE_ID 0x0117
#define TMP119_DEVICE_ID 0x2117
#define TMP11X_CFGR_AVG (BIT(5) | BIT(6))
#define TMP11X_CFGR_CONV (BIT(7) | BIT(8) | BIT(9))
#define TMP11X_CFGR_MODE (BIT(10) | BIT(11))
#define TMP11X_CFGR_DATA_READY BIT(13)
#define TMP11X_EEPROM_UL_UNLOCK BIT(15)
#define TMP11X_EEPROM_UL_BUSY BIT(14)
#define TMP11X_AVG_1_SAMPLE 0
#define TMP11X_AVG_8_SAMPLES BIT(5)
#define TMP11X_AVG_32_SAMPLES BIT(6)
#define TMP11X_AVG_64_SAMPLES (BIT(5) | BIT(6))
#define TMP11X_MODE_CONTINUOUS 0
#define TMP11X_MODE_SHUTDOWN BIT(10)
#define TMP11X_MODE_ONE_SHOT (BIT(10) | BIT(11))
struct tmp11x_data {
uint16_t sample;
uint16_t id;
};
struct tmp11x_dev_config {
struct i2c_dt_spec bus;
uint16_t odr;
uint16_t oversampling;
};
#endif /* ZEPHYR_DRIVERS_SENSOR_TMP11X_TMP11X_H_ */

8
dts/bindings/i2c/ti,tca954x-base.yaml

@ -25,8 +25,8 @@ description: |
#address-cells = <1>; #address-cells = <1>;
#size-cells = <0>; #size-cells = <0>;
temp_sens_0: tmp116@49 { temp_sens_0: tmp11x@49 {
compatible = "ti,tmp116"; compatible = "ti,tmp11x";
reg = <0x49>; reg = <0x49>;
}; };
}; };
@ -37,8 +37,8 @@ description: |
#address-cells = <1>; #address-cells = <1>;
#size-cells = <0>; #size-cells = <0>;
temp_sens_1: tmp116@49 { temp_sens_1: tmp11x@49 {
compatible = "ti,tmp116"; compatible = "ti,tmp11x";
reg = <0x49>; reg = <0x49>;
}; };
}; };

6
dts/bindings/mtd/ti,tmp116-eeprom.yaml → dts/bindings/mtd/ti,tmp11x-eeprom.yaml

@ -1,10 +1,10 @@
# Copyright (c) 2020 Innoseis B.V # Copyright (c) 2020 Innoseis B.V
# SPDX-License-Identifier: Apache-2.0 # SPDX-License-Identifier: Apache-2.0
description: TI TMP116 EEPROM controller binding description: TI TMP11X EEPROM controller
compatible: "ti,tmp116-eeprom" compatible: "ti,tmp11x-eeprom"
include: eeprom-base.yaml include: eeprom-base.yaml
on-bus: tmp116 on-bus: tmp11x

30
dts/bindings/sensor/ti,tmp116.yaml → dts/bindings/sensor/ti,tmp11x.yaml

@ -1,11 +1,11 @@
# Copyright (c) 2019 Centaur Analytics, Inc # Copyright (c) 2019 Centaur Analytics, Inc
# SPDX-License-Identifier: Apache-2.0 # SPDX-License-Identifier: Apache-2.0
description: Texas Instruments TMP116 temperature sensor description: Texas Instruments TMP11X temperature sensor
compatible: "ti,tmp116" compatible: "ti,tmp11x"
bus: tmp116 bus: tmp11x
include: [sensor-device.yaml, i2c-device.yaml] include: [sensor-device.yaml, i2c-device.yaml]
@ -18,14 +18,14 @@ properties:
Specify the default temperature output data rate in milliseconds (ms). Specify the default temperature output data rate in milliseconds (ms).
Default is power-up configuration. Default is power-up configuration.
- 0 # TMP116_DT_ODR_15_5_MS - 0 # TMP11X_DT_ODR_15_5_MS
- 0x80 # TMP116_DT_ODR_125_MS - 0x80 # TMP11X_DT_ODR_125_MS
- 0x100 # TMP116_DT_ODR_250_MS - 0x100 # TMP11X_DT_ODR_250_MS
- 0x180 # TMP116_DT_ODR_500_MS - 0x180 # TMP11X_DT_ODR_500_MS
- 0x200 # TMP116_DT_ODR_1000_MS - 0x200 # TMP11X_DT_ODR_1000_MS
- 0x280 # TMP116_DT_ODR_4000_MS - 0x280 # TMP11X_DT_ODR_4000_MS
- 0x300 # TMP116_DT_ODR_8000_MS - 0x300 # TMP11X_DT_ODR_8000_MS
- 0x380 # TMP116_DT_ODR_16000_MS - 0x380 # TMP11X_DT_ODR_16000_MS
oversampling: oversampling:
type: int type: int
default: 0x20 default: 0x20
@ -34,7 +34,7 @@ properties:
Set number of sample to averaging in one readout. Set number of sample to averaging in one readout.
Default is power-up configuration (8 samples). Default is power-up configuration (8 samples).
- 0 # TMP116_DT_OVERSAMPLING_1 - 0 # TMP11X_DT_OVERSAMPLING_1
- 0x20 # TMP116_DT_OVERSAMPLING_8 - 0x20 # TMP11X_DT_OVERSAMPLING_8
- 0x40 # TMP116_DT_OVERSAMPLING_32 - 0x40 # TMP11X_DT_OVERSAMPLING_32
- 0x60 # TMP116_DT_OVERSAMPLING_64 - 0x60 # TMP11X_DT_OVERSAMPLING_64

31
include/zephyr/drivers/sensor/tmp116.h

@ -1,31 +0,0 @@
/*
* Copyright (c) 2021 Innoseis B.V
*
* SPDX-License-Identifier: Apache-2.0
*/
#ifndef ZEPHYR_INCLUDE_DRIVERS_SENSOR_TMP116_H_
#define ZEPHYR_INCLUDE_DRIVERS_SENSOR_TMP116_H_
#include <zephyr/device.h>
#include <zephyr/drivers/sensor.h>
#include <sys/types.h>
enum sensor_attribute_tmp_116 {
/** Turn on power saving/one shot mode */
SENSOR_ATTR_TMP116_ONE_SHOT_MODE = SENSOR_ATTR_PRIV_START,
/** Shutdown the sensor */
SENSOR_ATTR_TMP116_SHUTDOWN_MODE,
/** Turn on continuous conversion */
SENSOR_ATTR_TMP116_CONTINUOUS_CONVERSION_MODE,
};
#define EEPROM_TMP116_SIZE (4 * sizeof(uint16_t))
int tmp116_eeprom_read(const struct device *dev, off_t offset, void *data,
size_t len);
int tmp116_eeprom_write(const struct device *dev, off_t offset,
const void *data, size_t len);
#endif /* ZEPHYR_INCLUDE_DRIVERS_SENSOR_TMP116_H_ */

31
include/zephyr/drivers/sensor/tmp11x.h

@ -0,0 +1,31 @@
/*
* Copyright (c) 2021 Innoseis B.V
*
* SPDX-License-Identifier: Apache-2.0
*/
#ifndef ZEPHYR_INCLUDE_DRIVERS_SENSOR_TMP11X_H_
#define ZEPHYR_INCLUDE_DRIVERS_SENSOR_TMP11X_H_
#include <zephyr/device.h>
#include <zephyr/drivers/sensor.h>
#include <sys/types.h>
enum sensor_attribute_tmp_11x {
/** Turn on power saving/one shot mode */
SENSOR_ATTR_TMP11X_ONE_SHOT_MODE = SENSOR_ATTR_PRIV_START,
/** Shutdown the sensor */
SENSOR_ATTR_TMP11X_SHUTDOWN_MODE,
/** Turn on continuous conversion */
SENSOR_ATTR_TMP11X_CONTINUOUS_CONVERSION_MODE,
};
#define EEPROM_TMP11X_SIZE (4 * sizeof(uint16_t))
int tmp11x_eeprom_read(const struct device *dev, off_t offset, void *data,
size_t len);
int tmp11x_eeprom_write(const struct device *dev, off_t offset,
const void *data, size_t len);
#endif /* ZEPHYR_INCLUDE_DRIVERS_SENSOR_TMP11X_H_ */

41
include/zephyr/dt-bindings/sensor/tmp116.h

@ -1,41 +0,0 @@
/*
* Copyright (c) 2024 Vitrolife A/S
*
* SPDX-License-Identifier: Apache-2.0
*/
#ifndef ZEPHYR_INCLUDE_DT_BINDINGS_TI_TMP116_H_
#define ZEPHYR_INCLUDE_DT_BINDINGS_TI_TMP116_H_
/**
* @defgroup TMP116 Texas Instruments (TI) TMP116 DT Options
* @ingroup sensor_interface
* @{
*/
/**
* @defgroup TMP116_ODR Temperature output data rate
* @{
*/
#define TMP116_DT_ODR_15_5_MS 0
#define TMP116_DT_ODR_125_MS 0x80
#define TMP116_DT_ODR_250_MS 0x100
#define TMP116_DT_ODR_500_MS 0x180
#define TMP116_DT_ODR_1000_MS 0x200
#define TMP116_DT_ODR_4000_MS 0x280
#define TMP116_DT_ODR_8000_MS 0x300
#define TMP116_DT_ODR_16000_MS 0x380
/** @} */
/**
* @defgroup TMP116_OS Temperature average sample count
* @{
*/
#define TMP116_DT_OVERSAMPLING_1 0
#define TMP116_DT_OVERSAMPLING_8 0x20
#define TMP116_DT_OVERSAMPLING_32 0x40
#define TMP116_DT_OVERSAMPLING_64 0x60
/** @} */
/** @} */
#endif /* ZEPHYR_INCLUDE_DT_BINDINGS_TI_TMP116_H_ */

41
include/zephyr/dt-bindings/sensor/tmp11x.h

@ -0,0 +1,41 @@
/*
* Copyright (c) 2024 Vitrolife A/S
*
* SPDX-License-Identifier: Apache-2.0
*/
#ifndef ZEPHYR_INCLUDE_DT_BINDINGS_TI_TMP11X_H_
#define ZEPHYR_INCLUDE_DT_BINDINGS_TI_TMP11X_H_
/**
* @defgroup TMP11X Texas Instruments (TI) TMP11X DT Options
* @ingroup sensor_interface
* @{
*/
/**
* @defgroup TMP11X_ODR Temperature output data rate
* @{
*/
#define TMP11X_DT_ODR_15_5_MS 0
#define TMP11X_DT_ODR_125_MS 0x80
#define TMP11X_DT_ODR_250_MS 0x100
#define TMP11X_DT_ODR_500_MS 0x180
#define TMP11X_DT_ODR_1000_MS 0x200
#define TMP11X_DT_ODR_4000_MS 0x280
#define TMP11X_DT_ODR_8000_MS 0x300
#define TMP11X_DT_ODR_16000_MS 0x380
/** @} */
/**
* @defgroup TMP11X_OS Temperature average sample count
* @{
*/
#define TMP11X_DT_OVERSAMPLING_1 0
#define TMP11X_DT_OVERSAMPLING_8 0x20
#define TMP11X_DT_OVERSAMPLING_32 0x40
#define TMP11X_DT_OVERSAMPLING_64 0x60
/** @} */
/** @} */
#endif /* ZEPHYR_INCLUDE_DT_BINDINGS_TI_TMP11X_H_ */

2
samples/sensor/tmp116/CMakeLists.txt → samples/sensor/tmp11x/CMakeLists.txt

@ -2,7 +2,7 @@
cmake_minimum_required(VERSION 3.20.0) cmake_minimum_required(VERSION 3.20.0)
find_package(Zephyr REQUIRED HINTS $ENV{ZEPHYR_BASE}) find_package(Zephyr REQUIRED HINTS $ENV{ZEPHYR_BASE})
project(tmp116) project(tmp11x)
FILE(GLOB app_sources src/*.c) FILE(GLOB app_sources src/*.c)
target_sources(app PRIVATE ${app_sources}) target_sources(app PRIVATE ${app_sources})

14
samples/sensor/tmp116/README.rst → samples/sensor/tmp11x/README.rst

@ -1,19 +1,19 @@
.. _ti_tmp116_sample: .. _ti_tmp11x_sample:
TI_TMP116 Sample TI_TMP11X Sample
################ ################
Description Description
*********** ***********
This sample application periodically takes temperature readings using the ti_tmp116 This sample application periodically takes temperature readings using the ti_tmp11x
sensor driver. The result is written to the console. This sample also included the code sensor driver. The result is written to the console. This sample also included the code
to use the features provided by TMP117, which is a sensor similar to TMP116 to use the features provided by TMP117 and TMP119, which are sensors similar to TMP116.
Requirements Requirements
************ ************
This sample needs a TI TMP116 or TI TMP117 sensor connected to the target board's I2C This sample needs a TI TMP116, TI TMP117 or TI TMP119 sensor connected to the target board's I2C
connector. connector.
@ -38,7 +38,7 @@ In order to build the sample, connect the board to the computer with a USB cable
following commands: following commands:
.. zephyr-app-commands:: .. zephyr-app-commands::
:zephyr-app: samples/sensor/tmp116 :zephyr-app: samples/sensor/tmp11x
:board: nucleo_f401re :board: nucleo_f401re
:goals: build flash :goals: build flash
:compact: :compact:
@ -57,7 +57,7 @@ The output should look like this:
.. code-block:: console .. code-block:: console
Device TMP116 - 0x200010a8 is ready Device TMP11X - 0x200010a8 is ready
temp is 26.7031250 oC temp is 26.7031250 oC
temp is 26.7109375 oC temp is 26.7109375 oC
... ...

8
samples/sensor/tmp116/boards/nucleo_f401re.overlay → samples/sensor/tmp11x/boards/nucleo_f401re.overlay

@ -6,14 +6,14 @@
&i2c1 { &i2c1 {
ti_tmp116: ti_tmp116@4b { ti_tmp11x: ti_tmp11x@4b {
compatible = "ti,tmp116"; compatible = "ti,tmp11x";
reg = <0x4B>; reg = <0x4B>;
#address-cells = <1>; #address-cells = <1>;
#size-cells = <0>; #size-cells = <0>;
eeprom: ti_tmp116_eeprom@0 { eeprom: ti_tmp11x_eeprom@0 {
compatible = "ti,tmp116-eeprom"; compatible = "ti,tmp11x-eeprom";
reg = <0x0>; reg = <0x0>;
read-only; read-only;
}; };

2
samples/sensor/tmp116/prj.conf → samples/sensor/tmp11x/prj.conf

@ -4,4 +4,4 @@ CONFIG_SENSOR=y
CONFIG_SENSOR_INIT_PRIORITY=90 CONFIG_SENSOR_INIT_PRIORITY=90
CONFIG_EEPROM=y CONFIG_EEPROM=y
CONFIG_EEPROM_INIT_PRIORITY=91 CONFIG_EEPROM_INIT_PRIORITY=91
CONFIG_EEPROM_TMP116=y CONFIG_EEPROM_TMP11X=y

6
samples/sensor/tmp116/sample.yaml → samples/sensor/tmp11x/sample.yaml

@ -1,7 +1,7 @@
sample: sample:
name: TI TMP116 Sensor Sample name: TI TMP11X Sensor Sample
tests: tests:
sample.sensor.tmp116: sample.sensor.tmp11x:
harness: console harness: console
platform_allow: nucleo_f401re platform_allow: nucleo_f401re
integration_platforms: integration_platforms:
@ -12,4 +12,4 @@ tests:
type: one_line type: one_line
regex: regex:
- "temp is (.*) oC" - "temp is (.*) oC"
fixture: fixture_i2c_tmp116 fixture: fixture_i2c_tmp11x

20
samples/sensor/tmp116/src/main.c → samples/sensor/tmp11x/src/main.c

@ -8,29 +8,29 @@
#include <zephyr/device.h> #include <zephyr/device.h>
#include <zephyr/drivers/sensor.h> #include <zephyr/drivers/sensor.h>
#include <zephyr/drivers/eeprom.h> #include <zephyr/drivers/eeprom.h>
#include <zephyr/drivers/sensor/tmp116.h> #include <zephyr/drivers/sensor/tmp11x.h>
#include <zephyr/sys/printk.h> #include <zephyr/sys/printk.h>
#include <zephyr/sys/__assert.h> #include <zephyr/sys/__assert.h>
#define TMP116_NODE DT_COMPAT_GET_ANY_STATUS_OKAY(ti_tmp116) #define TMP11X_NODE DT_COMPAT_GET_ANY_STATUS_OKAY(ti_tmp11x)
#define TMP116_EEPROM_NODE DT_CHILD(TMP116_NODE, ti_tmp116_eeprom_0) #define TMP11X_EEPROM_NODE DT_CHILD(TMP11X_NODE, ti_tmp11x_eeprom_0)
static uint8_t eeprom_content[EEPROM_TMP116_SIZE]; static uint8_t eeprom_content[EEPROM_TMP11X_SIZE];
int main(void) int main(void)
{ {
const struct device *const dev = DEVICE_DT_GET(TMP116_NODE); const struct device *const dev = DEVICE_DT_GET(TMP11X_NODE);
const struct device *const eeprom = DEVICE_DT_GET(TMP116_EEPROM_NODE); const struct device *const eeprom = DEVICE_DT_GET(TMP11X_EEPROM_NODE);
struct sensor_value temp_value; struct sensor_value temp_value;
/* offset to be added to the temperature /* offset to be added to the temperature
* only supported by TMP117 * only supported by TMP117 and TMP119
*/ */
struct sensor_value offset_value; struct sensor_value offset_value;
int ret; int ret;
__ASSERT(device_is_ready(dev), "TMP116 device not ready"); __ASSERT(device_is_ready(dev), "tmp11x device not ready");
__ASSERT(device_is_ready(eeprom), "TMP116 eeprom device not ready"); __ASSERT(device_is_ready(eeprom), "tmp11x eeprom device not ready");
printk("Device %s - %p is ready\n", dev->name, dev); printk("Device %s - %p is ready\n", dev->name, dev);
@ -56,7 +56,7 @@ int main(void)
SENSOR_ATTR_OFFSET, &offset_value); SENSOR_ATTR_OFFSET, &offset_value);
if (ret) { if (ret) {
printk("sensor_attr_set failed ret = %d\n", ret); printk("sensor_attr_set failed ret = %d\n", ret);
printk("SENSOR_ATTR_OFFSET is only supported by TMP117\n"); printk("SENSOR_ATTR_OFFSET is only supported by TMP117 and TMP119\n");
} }
while (1) { while (1) {
ret = sensor_sample_fetch(dev); ret = sensor_sample_fetch(dev);

8
tests/drivers/build_all/eeprom/app.overlay

@ -55,15 +55,15 @@
/* read-only; */ /* read-only; */
}; };
test_i2c_tmp116: tmp116@2 { test_i2c_tmp11x: tmp11x@2 {
status = "okay"; status = "okay";
compatible = "ti,tmp116"; compatible = "ti,tmp11x";
reg = <0x2>; reg = <0x2>;
#address-cells = <1>; #address-cells = <1>;
#size-cells = <0>; #size-cells = <0>;
test_tmp116_eeprom: ti_tmp116_eeprom@0 { test_tmp11x_eeprom: ti_tmp11x_eeprom@0 {
compatible = "ti,tmp116-eeprom"; compatible = "ti,tmp11x-eeprom";
reg = <0x0>; reg = <0x0>;
read-only; read-only;
}; };

10
tests/drivers/build_all/sensor/i2c.dtsi

@ -24,7 +24,7 @@
#include <zephyr/dt-bindings/sensor/stts22h.h> #include <zephyr/dt-bindings/sensor/stts22h.h>
#include <zephyr/dt-bindings/sensor/ina226.h> #include <zephyr/dt-bindings/sensor/ina226.h>
#include <zephyr/dt-bindings/sensor/apds9253.h> #include <zephyr/dt-bindings/sensor/apds9253.h>
#include <zephyr/dt-bindings/sensor/tmp116.h> #include <zephyr/dt-bindings/sensor/tmp11x.h>
#include <zephyr/dt-bindings/sensor/tmp114.h> #include <zephyr/dt-bindings/sensor/tmp114.h>
/**************************************** /****************************************
@ -478,11 +478,11 @@ test_i2c_tmp112: tmp112@46 {
reg = <0x46>; reg = <0x46>;
}; };
test_i2c_tmp116: tmp116@47 { test_i2c_tmp11x: tmp11x@47 {
compatible = "ti,tmp116"; compatible = "ti,tmp11x";
reg = <0x47>; reg = <0x47>;
odr = <TMP116_DT_ODR_125_MS>; odr = <TMP11X_DT_ODR_125_MS>;
oversampling = <TMP116_DT_OVERSAMPLING_32>; oversampling = <TMP11X_DT_OVERSAMPLING_32>;
}; };
test_i2c_bq274xx: bq27xx@48 { test_i2c_bq274xx: bq27xx@48 {

Loading…
Cancel
Save