From dabaaa1e5d45b95e35a5c4d5ccf97e683f53601a Mon Sep 17 00:00:00 2001 From: Armando Visconti Date: Tue, 7 Sep 2021 10:27:49 +0200 Subject: [PATCH] drivers/sensor: stmemsc: make use of spi_dt_spec and i2c_dt_spec Make use of the new DT facilities that introduced two new bus structures, spi_dt_spec and i2c_dt_spec, as well as the macros, SPI_DT_SPEC_INST_GET and I2C_DT_SPEC_INST_GET, to retrieve info from DT. Signed-off-by: Armando Visconti --- drivers/sensor/iis2dlpc/iis2dlpc.c | 10 ++++------ drivers/sensor/iis2dlpc/iis2dlpc.h | 4 ++-- drivers/sensor/iis2iclx/iis2iclx.c | 10 ++++------ drivers/sensor/iis2iclx/iis2iclx.h | 4 ++-- drivers/sensor/lis2dw12/lis2dw12.c | 10 ++++------ drivers/sensor/lis2dw12/lis2dw12.h | 4 ++-- drivers/sensor/lis2mdl/lis2mdl.c | 10 ++++------ drivers/sensor/lis2mdl/lis2mdl.h | 4 ++-- drivers/sensor/lsm6dso/lsm6dso.c | 10 ++++------ drivers/sensor/lsm6dso/lsm6dso.h | 4 ++-- drivers/sensor/stmemsc/stmemsc.h | 18 ++++-------------- drivers/sensor/stmemsc/stmemsc_i2c.c | 8 ++++---- drivers/sensor/stmemsc/stmemsc_spi.c | 8 ++++---- 13 files changed, 42 insertions(+), 62 deletions(-) diff --git a/drivers/sensor/iis2dlpc/iis2dlpc.c b/drivers/sensor/iis2dlpc/iis2dlpc.c index b75fe0708b3..a1a99ba7e16 100644 --- a/drivers/sensor/iis2dlpc/iis2dlpc.c +++ b/drivers/sensor/iis2dlpc/iis2dlpc.c @@ -416,9 +416,8 @@ static int iis2dlpc_init(const struct device *dev) .handle = \ (void *)&iis2dlpc_config_##inst.stmemsc_cfg, \ }, \ - .stmemsc_cfg.spi = { \ - .bus = DEVICE_DT_GET(DT_INST_BUS(inst)), \ - .spi_cfg = SPI_CONFIG_DT_INST(inst, \ + .stmemsc_cfg = { \ + .spi = SPI_DT_SPEC_INST_GET(inst, \ IIS2DLPC_SPI_OPERATION, \ 0), \ }, \ @@ -443,9 +442,8 @@ static int iis2dlpc_init(const struct device *dev) .handle = \ (void *)&iis2dlpc_config_##inst.stmemsc_cfg, \ }, \ - .stmemsc_cfg.i2c = { \ - .bus = DEVICE_DT_GET(DT_INST_BUS(inst)), \ - .i2c_slv_addr = DT_INST_REG_ADDR(inst), \ + .stmemsc_cfg = { \ + .i2c = I2C_DT_SPEC_INST_GET(inst), \ }, \ .pm = DT_INST_PROP(inst, power_mode), \ .range = DT_INST_PROP(inst, range), \ diff --git a/drivers/sensor/iis2dlpc/iis2dlpc.h b/drivers/sensor/iis2dlpc/iis2dlpc.h index 923a6d9a299..ea2d4c6f87d 100644 --- a/drivers/sensor/iis2dlpc/iis2dlpc.h +++ b/drivers/sensor/iis2dlpc/iis2dlpc.h @@ -61,10 +61,10 @@ struct iis2dlpc_config { stmdev_ctx_t ctx; union { #if DT_ANY_INST_ON_BUS_STATUS_OKAY(i2c) - const struct stmemsc_cfg_i2c i2c; + const struct i2c_dt_spec i2c; #endif #if DT_ANY_INST_ON_BUS_STATUS_OKAY(spi) - const struct stmemsc_cfg_spi spi; + const struct spi_dt_spec spi; #endif } stmemsc_cfg; iis2dlpc_mode_t pm; diff --git a/drivers/sensor/iis2iclx/iis2iclx.c b/drivers/sensor/iis2iclx/iis2iclx.c index 0fb7102e579..aabc0dbeaf7 100644 --- a/drivers/sensor/iis2iclx/iis2iclx.c +++ b/drivers/sensor/iis2iclx/iis2iclx.c @@ -666,9 +666,8 @@ static int iis2iclx_init(const struct device *dev) .handle = \ (void *)&iis2iclx_config_##inst.stmemsc_cfg, \ }, \ - .stmemsc_cfg.spi = { \ - .bus = DEVICE_DT_GET(DT_INST_BUS(inst)), \ - .spi_cfg = SPI_CONFIG_DT_INST(inst, \ + .stmemsc_cfg = { \ + .spi = SPI_DT_SPEC_INST_GET(inst, \ IIS2ICLX_SPI_OPERATION, \ 0), \ }, \ @@ -692,9 +691,8 @@ static int iis2iclx_init(const struct device *dev) .handle = \ (void *)&iis2iclx_config_##inst.stmemsc_cfg, \ }, \ - .stmemsc_cfg.i2c = { \ - .bus = DEVICE_DT_GET(DT_INST_BUS(inst)), \ - .i2c_slv_addr = DT_INST_REG_ADDR(inst), \ + .stmemsc_cfg = { \ + .i2c = I2C_DT_SPEC_INST_GET(inst), \ }, \ .odr = DT_INST_PROP(inst, odr), \ .range = DT_INST_PROP(inst, range), \ diff --git a/drivers/sensor/iis2iclx/iis2iclx.h b/drivers/sensor/iis2iclx/iis2iclx.h index 8c87afd7556..6622be8fc49 100644 --- a/drivers/sensor/iis2iclx/iis2iclx.h +++ b/drivers/sensor/iis2iclx/iis2iclx.h @@ -40,10 +40,10 @@ struct iis2iclx_config { stmdev_ctx_t ctx; union { #if DT_ANY_INST_ON_BUS_STATUS_OKAY(i2c) - const struct stmemsc_cfg_i2c i2c; + const struct i2c_dt_spec i2c; #endif #if DT_ANY_INST_ON_BUS_STATUS_OKAY(spi) - const struct stmemsc_cfg_spi spi; + const struct spi_dt_spec spi; #endif } stmemsc_cfg; uint8_t odr; diff --git a/drivers/sensor/lis2dw12/lis2dw12.c b/drivers/sensor/lis2dw12/lis2dw12.c index 1f8fa7e174b..289f720d9eb 100644 --- a/drivers/sensor/lis2dw12/lis2dw12.c +++ b/drivers/sensor/lis2dw12/lis2dw12.c @@ -356,9 +356,8 @@ static int lis2dw12_init(const struct device *dev) .handle = \ (void *)&lis2dw12_config_##inst.stmemsc_cfg, \ }, \ - .stmemsc_cfg.spi = { \ - .bus = DEVICE_DT_GET(DT_INST_BUS(inst)), \ - .spi_cfg = SPI_CONFIG_DT_INST(inst, \ + .stmemsc_cfg = { \ + .spi = SPI_DT_SPEC_INST_GET(inst, \ LIS2DW12_SPI_OPERATION, \ 0), \ }, \ @@ -383,9 +382,8 @@ static int lis2dw12_init(const struct device *dev) .handle = \ (void *)&lis2dw12_config_##inst.stmemsc_cfg, \ }, \ - .stmemsc_cfg.i2c = { \ - .bus = DEVICE_DT_GET(DT_INST_BUS(inst)), \ - .i2c_slv_addr = DT_INST_REG_ADDR(inst), \ + .stmemsc_cfg = { \ + .i2c = I2C_DT_SPEC_INST_GET(inst), \ }, \ .pm = DT_INST_PROP(inst, power_mode), \ .range = DT_INST_PROP(inst, range), \ diff --git a/drivers/sensor/lis2dw12/lis2dw12.h b/drivers/sensor/lis2dw12/lis2dw12.h index 599fea2f2a4..5b2b0292f52 100644 --- a/drivers/sensor/lis2dw12/lis2dw12.h +++ b/drivers/sensor/lis2dw12/lis2dw12.h @@ -60,10 +60,10 @@ struct lis2dw12_device_config { stmdev_ctx_t ctx; union { #if DT_ANY_INST_ON_BUS_STATUS_OKAY(i2c) - const struct stmemsc_cfg_i2c i2c; + const struct i2c_dt_spec i2c; #endif #if DT_ANY_INST_ON_BUS_STATUS_OKAY(spi) - const struct stmemsc_cfg_spi spi; + const struct spi_dt_spec spi; #endif } stmemsc_cfg; lis2dw12_mode_t pm; diff --git a/drivers/sensor/lis2mdl/lis2mdl.c b/drivers/sensor/lis2mdl/lis2mdl.c index 165135ce330..ed3feb1d258 100644 --- a/drivers/sensor/lis2mdl/lis2mdl.c +++ b/drivers/sensor/lis2mdl/lis2mdl.c @@ -525,9 +525,8 @@ static int lis2mdl_pm_control(const struct device *dev, .handle = \ (void *)&lis2mdl_config_##inst.stmemsc_cfg, \ }, \ - .stmemsc_cfg.spi = { \ - .bus = DEVICE_DT_GET(DT_INST_BUS(inst)), \ - .spi_cfg = SPI_CONFIG_DT_INST(inst, \ + .stmemsc_cfg = { \ + .spi = SPI_DT_SPEC_INST_GET(inst, \ LIS2MDL_SPI_OPERATION, \ 0), \ }, \ @@ -552,9 +551,8 @@ static int lis2mdl_pm_control(const struct device *dev, .handle = \ (void *)&lis2mdl_config_##inst.stmemsc_cfg, \ }, \ - .stmemsc_cfg.i2c = { \ - .bus = DEVICE_DT_GET(DT_INST_BUS(inst)), \ - .i2c_slv_addr = DT_INST_REG_ADDR(inst), \ + .stmemsc_cfg = { \ + .i2c = I2C_DT_SPEC_INST_GET(inst), \ }, \ .cancel_offset = DT_INST_PROP(inst, cancel_offset), \ .single_mode = DT_INST_PROP(inst, single_mode), \ diff --git a/drivers/sensor/lis2mdl/lis2mdl.h b/drivers/sensor/lis2mdl/lis2mdl.h index 3f58f85d12c..e4587588388 100644 --- a/drivers/sensor/lis2mdl/lis2mdl.h +++ b/drivers/sensor/lis2mdl/lis2mdl.h @@ -29,10 +29,10 @@ struct lis2mdl_config { stmdev_ctx_t ctx; union { #if DT_ANY_INST_ON_BUS_STATUS_OKAY(i2c) - const struct stmemsc_cfg_i2c i2c; + const struct i2c_dt_spec i2c; #endif #if DT_ANY_INST_ON_BUS_STATUS_OKAY(spi) - const struct stmemsc_cfg_spi spi; + const struct spi_dt_spec spi; #endif } stmemsc_cfg; bool cancel_offset; diff --git a/drivers/sensor/lsm6dso/lsm6dso.c b/drivers/sensor/lsm6dso/lsm6dso.c index 58224c03cfc..71bebde09bf 100644 --- a/drivers/sensor/lsm6dso/lsm6dso.c +++ b/drivers/sensor/lsm6dso/lsm6dso.c @@ -888,9 +888,8 @@ static int lsm6dso_init(const struct device *dev) .handle = \ (void *)&lsm6dso_config_##inst.stmemsc_cfg, \ }, \ - .stmemsc_cfg.spi = { \ - .bus = DEVICE_DT_GET(DT_INST_BUS(inst)), \ - .spi_cfg = SPI_CONFIG_DT_INST(inst, \ + .stmemsc_cfg = { \ + .spi = SPI_DT_SPEC_INST_GET(inst, \ LSM6DSO_SPI_OP, \ 0), \ }, \ @@ -912,9 +911,8 @@ static int lsm6dso_init(const struct device *dev) .handle = \ (void *)&lsm6dso_config_##inst.stmemsc_cfg, \ }, \ - .stmemsc_cfg.i2c = { \ - .bus = DEVICE_DT_GET(DT_INST_BUS(inst)), \ - .i2c_slv_addr = DT_INST_REG_ADDR(inst), \ + .stmemsc_cfg = { \ + .i2c = I2C_DT_SPEC_INST_GET(inst), \ }, \ COND_CODE_1(DT_INST_NODE_HAS_PROP(inst, irq_gpios), \ (LSM6DSO_CFG_IRQ(inst)), ()) \ diff --git a/drivers/sensor/lsm6dso/lsm6dso.h b/drivers/sensor/lsm6dso/lsm6dso.h index 9a3f6edbec7..d1e5f827928 100644 --- a/drivers/sensor/lsm6dso/lsm6dso.h +++ b/drivers/sensor/lsm6dso/lsm6dso.h @@ -94,10 +94,10 @@ struct lsm6dso_config { stmdev_ctx_t ctx; union { #if DT_ANY_INST_ON_BUS_STATUS_OKAY(i2c) - const struct stmemsc_cfg_i2c i2c; + const struct i2c_dt_spec i2c; #endif #if DT_ANY_INST_ON_BUS_STATUS_OKAY(spi) - const struct stmemsc_cfg_spi spi; + const struct spi_dt_spec spi; #endif } stmemsc_cfg; #ifdef CONFIG_LSM6DSO_TRIGGER diff --git a/drivers/sensor/stmemsc/stmemsc.h b/drivers/sensor/stmemsc/stmemsc.h index a46e0860305..b86dc3148e8 100644 --- a/drivers/sensor/stmemsc/stmemsc.h +++ b/drivers/sensor/stmemsc/stmemsc.h @@ -14,26 +14,16 @@ #include #ifdef CONFIG_I2C -struct stmemsc_cfg_i2c { - const struct device *bus; - uint16_t i2c_slv_addr; -}; - -int stmemsc_i2c_read(const struct stmemsc_cfg_i2c *stmemsc, +int stmemsc_i2c_read(const struct i2c_dt_spec *stmemsc, uint8_t reg_addr, uint8_t *value, uint8_t len); -int stmemsc_i2c_write(const struct stmemsc_cfg_i2c *stmemsc, +int stmemsc_i2c_write(const struct i2c_dt_spec *stmemsc, uint8_t reg_addr, uint8_t *value, uint8_t len); #endif #ifdef CONFIG_SPI -struct stmemsc_cfg_spi { - const struct device *bus; - struct spi_config spi_cfg; -}; - -int stmemsc_spi_read(const struct stmemsc_cfg_spi *stmemsc, +int stmemsc_spi_read(const struct spi_dt_spec *stmemsc, uint8_t reg_addr, uint8_t *value, uint8_t len); -int stmemsc_spi_write(const struct stmemsc_cfg_spi *stmemsc, +int stmemsc_spi_write(const struct spi_dt_spec *stmemsc, uint8_t reg_addr, uint8_t *value, uint8_t len); #endif #endif /* ZEPHYR_DRIVERS_SENSOR_STMEMSC_STMEMSC_H_ */ diff --git a/drivers/sensor/stmemsc/stmemsc_i2c.c b/drivers/sensor/stmemsc/stmemsc_i2c.c index 1c97c8a17c2..e4a431112c3 100644 --- a/drivers/sensor/stmemsc/stmemsc_i2c.c +++ b/drivers/sensor/stmemsc/stmemsc_i2c.c @@ -9,16 +9,16 @@ #include "stmemsc.h" -int stmemsc_i2c_read(const struct stmemsc_cfg_i2c *stmemsc, +int stmemsc_i2c_read(const struct i2c_dt_spec *stmemsc, uint8_t reg_addr, uint8_t *value, uint8_t len) { - return i2c_burst_read(stmemsc->bus, stmemsc->i2c_slv_addr, + return i2c_burst_read(stmemsc->bus, stmemsc->addr, reg_addr, value, len); } -int stmemsc_i2c_write(const struct stmemsc_cfg_i2c *stmemsc, +int stmemsc_i2c_write(const struct i2c_dt_spec *stmemsc, uint8_t reg_addr, uint8_t *value, uint8_t len) { - return i2c_burst_write(stmemsc->bus, stmemsc->i2c_slv_addr, + return i2c_burst_write(stmemsc->bus, stmemsc->addr, reg_addr, value, len); } diff --git a/drivers/sensor/stmemsc/stmemsc_spi.c b/drivers/sensor/stmemsc/stmemsc_spi.c index 32999bb14f8..b22347c94da 100644 --- a/drivers/sensor/stmemsc/stmemsc_spi.c +++ b/drivers/sensor/stmemsc/stmemsc_spi.c @@ -14,10 +14,10 @@ /* * SPI read */ -int stmemsc_spi_read(const struct stmemsc_cfg_spi *stmemsc, +int stmemsc_spi_read(const struct spi_dt_spec *stmemsc, uint8_t reg_addr, uint8_t *value, uint8_t len) { - const struct spi_config *spi_cfg = &stmemsc->spi_cfg; + const struct spi_config *spi_cfg = &stmemsc->config; uint8_t buffer_tx[2] = { reg_addr | SPI_READ, 0 }; /* write 1 byte with reg addr (msb at 1) + 1 dummy byte */ @@ -40,10 +40,10 @@ int stmemsc_spi_read(const struct stmemsc_cfg_spi *stmemsc, /* * SPI write */ -int stmemsc_spi_write(const struct stmemsc_cfg_spi *stmemsc, +int stmemsc_spi_write(const struct spi_dt_spec *stmemsc, uint8_t reg_addr, uint8_t *value, uint8_t len) { - const struct spi_config *spi_cfg = &stmemsc->spi_cfg; + const struct spi_config *spi_cfg = &stmemsc->config; uint8_t buffer_tx[1] = { reg_addr & ~SPI_READ }; /*