drivers: sensor: stts751: Update driver to use i2c_dt_spec
Simplify driver by using i2c_dt_spec for bus access.
Signed-off-by: Benjamin Björnsson <benjamin.bjornsson@gmail.com>
diff --git a/drivers/sensor/stts751/stts751.c b/drivers/sensor/stts751/stts751.c
index ce075e2..a0282ea 100644
--- a/drivers/sensor/stts751/stts751.c
+++ b/drivers/sensor/stts751/stts751.c
@@ -175,10 +175,9 @@
data->dev = dev;
- data->bus = device_get_binding(config->master_dev_name);
- if (!data->bus) {
- LOG_DBG("bus master not found: %s", config->master_dev_name);
- return -EINVAL;
+ if (!device_is_ready(config->i2c.bus)) {
+ LOG_ERR("Bus device is not ready");
+ return -ENODEV;
}
config->bus_init(dev);
@@ -201,7 +200,7 @@
static struct stts751_data stts751_data;
static const struct stts751_config stts751_config = {
- .master_dev_name = DT_INST_BUS_LABEL(0),
+ COND_CODE_1(DT_INST_ON_BUS(0, i2c), (.i2c = I2C_DT_SPEC_INST_GET(0),), ())
#ifdef CONFIG_STTS751_TRIGGER
.event_port = DT_INST_GPIO_LABEL(0, drdy_gpios),
.event_pin = DT_INST_GPIO_PIN(0, drdy_gpios),
@@ -209,7 +208,6 @@
#endif
#if DT_ANY_INST_ON_BUS_STATUS_OKAY(i2c)
.bus_init = stts751_i2c_init,
- .i2c_slv_addr = DT_INST_REG_ADDR(0),
#else
#error "BUS MACRO NOT DEFINED IN DTS"
#endif
diff --git a/drivers/sensor/stts751/stts751.h b/drivers/sensor/stts751/stts751.h
index 8ea73be..e6a3084 100644
--- a/drivers/sensor/stts751/stts751.h
+++ b/drivers/sensor/stts751/stts751.h
@@ -20,21 +20,19 @@
#include "stts751_reg.h"
struct stts751_config {
- char *master_dev_name;
+#if DT_ANY_INST_ON_BUS_STATUS_OKAY(i2c)
+ struct i2c_dt_spec i2c;
+#endif
int (*bus_init)(const struct device *dev);
#ifdef CONFIG_STTS751_TRIGGER
const char *event_port;
uint8_t event_pin;
uint8_t int_flags;
#endif
-#if DT_ANY_INST_ON_BUS_STATUS_OKAY(i2c)
- uint16_t i2c_slv_addr;
-#endif
};
struct stts751_data {
const struct device *dev;
- const struct device *bus;
int16_t sample_temp;
stmdev_ctx_t *ctx;
diff --git a/drivers/sensor/stts751/stts751_i2c.c b/drivers/sensor/stts751/stts751_i2c.c
index c56651b..567ba19 100644
--- a/drivers/sensor/stts751/stts751_i2c.c
+++ b/drivers/sensor/stts751/stts751_i2c.c
@@ -23,21 +23,17 @@
static int stts751_i2c_read(const struct device *dev, uint8_t reg_addr, uint8_t *value,
uint16_t len)
{
- struct stts751_data *data = dev->data;
const struct stts751_config *cfg = dev->config;
- return i2c_burst_read(data->bus, cfg->i2c_slv_addr,
- reg_addr, value, len);
+ return i2c_burst_read_dt(&cfg->i2c, reg_addr, value, len);
}
static int stts751_i2c_write(const struct device *dev, uint8_t reg_addr, uint8_t *value,
uint16_t len)
{
- struct stts751_data *data = dev->data;
const struct stts751_config *cfg = dev->config;
- return i2c_burst_write(data->bus, cfg->i2c_slv_addr,
- reg_addr, value, len);
+ return i2c_burst_write_dt(&cfg->i2c, reg_addr, value, len);
}
int stts751_i2c_init(const struct device *dev)