/* * Copyright (c) 2020 Innoseis B.V * * SPDX-License-Identifier: Apache-2.0 */ #include #include #include #include #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 const struct eeprom_driver_api 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);