Primary Git Repository for the Zephyr Project. Zephyr is a new generation, scalable, optimized, secure RTOS for multiple hardware architectures.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

65 lines
1.6 KiB

/*
* 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;
};
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);