drivers: i2c: slave: eeprom: use i2c_dt_spec
Simplify implementation by using i2c_dt_spec. Signed-off-by: Gerard Marull-Paretas <gerard.marull@nordicsemi.no>
This commit is contained in:
parent
be63d6addc
commit
7c0d4f0382
1 changed files with 10 additions and 14 deletions
|
@ -18,7 +18,6 @@
|
|||
LOG_MODULE_REGISTER(i2c_slave);
|
||||
|
||||
struct i2c_eeprom_slave_data {
|
||||
const struct device *i2c_controller;
|
||||
struct i2c_slave_config config;
|
||||
uint32_t buffer_size;
|
||||
uint8_t *buffer;
|
||||
|
@ -27,8 +26,7 @@ struct i2c_eeprom_slave_data {
|
|||
};
|
||||
|
||||
struct i2c_eeprom_slave_config {
|
||||
char *controller_dev_name;
|
||||
uint8_t address;
|
||||
struct i2c_dt_spec bus;
|
||||
uint32_t buffer_size;
|
||||
uint8_t *buffer;
|
||||
};
|
||||
|
@ -152,16 +150,18 @@ static int eeprom_slave_stop(struct i2c_slave_config *config)
|
|||
|
||||
static int eeprom_slave_register(const struct device *dev)
|
||||
{
|
||||
const struct i2c_eeprom_slave_config *cfg = dev->config;
|
||||
struct i2c_eeprom_slave_data *data = dev->data;
|
||||
|
||||
return i2c_slave_register(data->i2c_controller, &data->config);
|
||||
return i2c_slave_register(cfg->bus.bus, &data->config);
|
||||
}
|
||||
|
||||
static int eeprom_slave_unregister(const struct device *dev)
|
||||
{
|
||||
const struct i2c_eeprom_slave_config *cfg = dev->config;
|
||||
struct i2c_eeprom_slave_data *data = dev->data;
|
||||
|
||||
return i2c_slave_unregister(data->i2c_controller, &data->config);
|
||||
return i2c_slave_unregister(cfg->bus.bus, &data->config);
|
||||
}
|
||||
|
||||
static const struct i2c_slave_driver_api api_funcs = {
|
||||
|
@ -182,17 +182,14 @@ static int i2c_eeprom_slave_init(const struct device *dev)
|
|||
struct i2c_eeprom_slave_data *data = dev->data;
|
||||
const struct i2c_eeprom_slave_config *cfg = dev->config;
|
||||
|
||||
data->i2c_controller =
|
||||
device_get_binding(cfg->controller_dev_name);
|
||||
if (!data->i2c_controller) {
|
||||
LOG_ERR("i2c controller not found: %s",
|
||||
cfg->controller_dev_name);
|
||||
return -EINVAL;
|
||||
if (!device_is_ready(cfg->bus.bus)) {
|
||||
LOG_ERR("I2C controller device not ready");
|
||||
return -ENODEV;
|
||||
}
|
||||
|
||||
data->buffer_size = cfg->buffer_size;
|
||||
data->buffer = cfg->buffer;
|
||||
data->config.address = cfg->address;
|
||||
data->config.address = cfg->bus.addr;
|
||||
data->config.callbacks = &eeprom_callbacks;
|
||||
|
||||
return 0;
|
||||
|
@ -207,8 +204,7 @@ static int i2c_eeprom_slave_init(const struct device *dev)
|
|||
\
|
||||
static const struct i2c_eeprom_slave_config \
|
||||
i2c_eeprom_slave_##inst##_cfg = { \
|
||||
.controller_dev_name = DT_INST_BUS_LABEL(inst), \
|
||||
.address = DT_INST_REG_ADDR(inst), \
|
||||
.bus = I2C_DT_SPEC_INST_GET(inst), \
|
||||
.buffer_size = DT_INST_PROP(inst, size), \
|
||||
.buffer = i2c_eeprom_slave_##inst##_buffer \
|
||||
}; \
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue