drivers/sensor: stmemsc: add macros to populate stmdev_ctx_t structure

Add STMEMSC_CTX I2C/SPI/I3C macros that can be reused among all STMEMSC
based ST sensor drivers to populate the stmdev_ctx_t stucture.

Signed-off-by: Armando Visconti <armando.visconti@st.com>
This commit is contained in:
Armando Visconti 2023-04-21 13:45:54 +02:00 committed by Fabio Baltieri
commit a4337af69f
9 changed files with 125 additions and 246 deletions

View file

@ -227,6 +227,10 @@ int hts221_init(const struct device *dev)
#define HTS221_CFG_IRQ(inst)
#endif /* CONFIG_HTS221_TRIGGER */
#define HTS221_CONFIG_COMMON(inst) \
COND_CODE_1(DT_INST_NODE_HAS_PROP(inst, drdy_gpios), \
(HTS221_CFG_IRQ(inst)), ())
#define HTS221_SPI_OPERATION (SPI_WORD_SET(8) | \
SPI_OP_MODE_MASTER | \
SPI_MODE_CPOL | \
@ -235,23 +239,13 @@ int hts221_init(const struct device *dev)
#define HTS221_CONFIG_SPI(inst) \
{ \
.ctx = { \
.read_reg = \
(stmdev_read_ptr) stmemsc_spi_read, \
.write_reg = \
(stmdev_write_ptr) stmemsc_spi_write, \
.mdelay = \
(stmdev_mdelay_ptr) stmemsc_mdelay, \
.handle = \
(void *)&hts221_config_##inst.stmemsc_cfg, \
}, \
STMEMSC_CTX_SPI(&hts221_config_##inst.stmemsc_cfg), \
.stmemsc_cfg = { \
.spi = SPI_DT_SPEC_INST_GET(inst, \
HTS221_SPI_OPERATION, \
0), \
}, \
COND_CODE_1(DT_INST_NODE_HAS_PROP(inst, drdy_gpios), \
(HTS221_CFG_IRQ(inst)), ()) \
HTS221_CONFIG_COMMON(inst) \
}
/*
@ -260,21 +254,11 @@ int hts221_init(const struct device *dev)
#define HTS221_CONFIG_I2C(inst) \
{ \
.ctx = { \
.read_reg = \
(stmdev_read_ptr) stmemsc_i2c_read, \
.write_reg = \
(stmdev_write_ptr) stmemsc_i2c_write, \
.mdelay = \
(stmdev_mdelay_ptr) stmemsc_mdelay, \
.handle = \
(void *)&hts221_config_##inst.stmemsc_cfg, \
}, \
STMEMSC_CTX_I2C(&hts221_config_##inst.stmemsc_cfg), \
.stmemsc_cfg = { \
.i2c = I2C_DT_SPEC_INST_GET(inst), \
}, \
COND_CODE_1(DT_INST_NODE_HAS_PROP(inst, drdy_gpios), \
(HTS221_CFG_IRQ(inst)), ()) \
HTS221_CONFIG_COMMON(inst) \
}
/*

View file

@ -447,6 +447,13 @@ static int iis2dlpc_init(const struct device *dev)
#define IIS2DLPC_CFG_IRQ(inst)
#endif /* CONFIG_IIS2DLPC_TRIGGER */
#define IIS2DLPC_CONFIG_COMMON(inst) \
.pm = DT_INST_PROP(inst, power_mode), \
.range = DT_INST_PROP(inst, range), \
IIS2DLPC_CONFIG_TAP(inst) \
COND_CODE_1(DT_INST_NODE_HAS_PROP(inst, drdy_gpios), \
(IIS2DLPC_CFG_IRQ(inst)), ())
#define IIS2DLPC_SPI_OPERATION (SPI_WORD_SET(8) | \
SPI_OP_MODE_MASTER | \
SPI_MODE_CPOL | \
@ -454,26 +461,13 @@ static int iis2dlpc_init(const struct device *dev)
#define IIS2DLPC_CONFIG_SPI(inst) \
{ \
.ctx = { \
.read_reg = \
(stmdev_read_ptr) stmemsc_spi_read, \
.write_reg = \
(stmdev_write_ptr) stmemsc_spi_write, \
.mdelay = \
(stmdev_mdelay_ptr) stmemsc_mdelay, \
.handle = \
(void *)&iis2dlpc_config_##inst.stmemsc_cfg, \
}, \
STMEMSC_CTX_SPI(&iis2dlpc_config_##inst.stmemsc_cfg), \
.stmemsc_cfg = { \
.spi = SPI_DT_SPEC_INST_GET(inst, \
IIS2DLPC_SPI_OPERATION, \
0), \
}, \
.pm = DT_INST_PROP(inst, power_mode), \
.range = DT_INST_PROP(inst, range), \
IIS2DLPC_CONFIG_TAP(inst) \
COND_CODE_1(DT_INST_NODE_HAS_PROP(inst, drdy_gpios), \
(IIS2DLPC_CFG_IRQ(inst)), ()) \
IIS2DLPC_CONFIG_COMMON(inst) \
}
/*
@ -482,24 +476,11 @@ static int iis2dlpc_init(const struct device *dev)
#define IIS2DLPC_CONFIG_I2C(inst) \
{ \
.ctx = { \
.read_reg = \
(stmdev_read_ptr) stmemsc_i2c_read, \
.write_reg = \
(stmdev_write_ptr) stmemsc_i2c_write, \
.mdelay = \
(stmdev_mdelay_ptr) stmemsc_mdelay, \
.handle = \
(void *)&iis2dlpc_config_##inst.stmemsc_cfg, \
}, \
STMEMSC_CTX_I2C(&iis2dlpc_config_##inst.stmemsc_cfg), \
.stmemsc_cfg = { \
.i2c = I2C_DT_SPEC_INST_GET(inst), \
}, \
.pm = DT_INST_PROP(inst, power_mode), \
.range = DT_INST_PROP(inst, range), \
IIS2DLPC_CONFIG_TAP(inst) \
COND_CODE_1(DT_INST_NODE_HAS_PROP(inst, drdy_gpios), \
(IIS2DLPC_CFG_IRQ(inst)), ()) \
IIS2DLPC_CONFIG_COMMON(inst) \
}
/*

View file

@ -651,6 +651,12 @@ static int iis2iclx_init(const struct device *dev)
#define IIS2ICLX_CFG_IRQ(inst)
#endif /* CONFIG_IIS2ICLX_TRIGGER */
#define IIS2ICLX_CONFIG_COMMON(inst) \
.odr = DT_INST_PROP(inst, odr), \
.range = DT_INST_PROP(inst, range), \
COND_CODE_1(DT_INST_NODE_HAS_PROP(inst, drdy_gpios), \
(IIS2ICLX_CFG_IRQ(inst)), ())
#define IIS2ICLX_SPI_OPERATION (SPI_WORD_SET(8) | \
SPI_OP_MODE_MASTER | \
SPI_MODE_CPOL | \
@ -658,25 +664,13 @@ static int iis2iclx_init(const struct device *dev)
#define IIS2ICLX_CONFIG_SPI(inst) \
{ \
.ctx = { \
.read_reg = \
(stmdev_read_ptr) stmemsc_spi_read, \
.write_reg = \
(stmdev_write_ptr) stmemsc_spi_write, \
.mdelay = \
(stmdev_mdelay_ptr) stmemsc_mdelay, \
.handle = \
(void *)&iis2iclx_config_##inst.stmemsc_cfg, \
}, \
STMEMSC_CTX_SPI(&iis2iclx_config_##inst.stmemsc_cfg), \
.stmemsc_cfg = { \
.spi = SPI_DT_SPEC_INST_GET(inst, \
IIS2ICLX_SPI_OPERATION, \
0), \
}, \
.odr = DT_INST_PROP(inst, odr), \
.range = DT_INST_PROP(inst, range), \
COND_CODE_1(DT_INST_NODE_HAS_PROP(inst, drdy_gpios), \
(IIS2ICLX_CFG_IRQ(inst)), ()) \
IIS2ICLX_CONFIG_COMMON(inst) \
}
/*
@ -685,23 +679,11 @@ static int iis2iclx_init(const struct device *dev)
#define IIS2ICLX_CONFIG_I2C(inst) \
{ \
.ctx = { \
.read_reg = \
(stmdev_read_ptr) stmemsc_i2c_read, \
.write_reg = \
(stmdev_write_ptr) stmemsc_i2c_write, \
.mdelay = \
(stmdev_mdelay_ptr) stmemsc_mdelay, \
.handle = \
(void *)&iis2iclx_config_##inst.stmemsc_cfg, \
}, \
STMEMSC_CTX_I2C(&iis2iclx_config_##inst.stmemsc_cfg), \
.stmemsc_cfg = { \
.i2c = I2C_DT_SPEC_INST_GET(inst), \
}, \
.odr = DT_INST_PROP(inst, odr), \
.range = DT_INST_PROP(inst, range), \
COND_CODE_1(DT_INST_NODE_HAS_PROP(inst, drdy_gpios), \
(IIS2ICLX_CFG_IRQ(inst)), ()) \
IIS2ICLX_CONFIG_COMMON(inst) \
}
/*

View file

@ -352,6 +352,13 @@ static int lis2ds12_init(const struct device *dev)
#define LIS2DS12_CFG_IRQ(inst)
#endif /* CONFIG_LIS2DS12_TRIGGER */
#define LIS2DS12_CONFIG_COMMON(inst) \
.range = DT_INST_PROP(inst, range), \
.pm = DT_INST_PROP(inst, power_mode), \
.odr = DT_INST_PROP(inst, odr), \
COND_CODE_1(DT_INST_NODE_HAS_PROP(inst, irq_gpios), \
(LIS2DS12_CFG_IRQ(inst)), ())
#define LIS2DS12_SPI_OPERATION (SPI_WORD_SET(8) | \
SPI_OP_MODE_MASTER | \
SPI_MODE_CPOL | \
@ -359,26 +366,13 @@ static int lis2ds12_init(const struct device *dev)
#define LIS2DS12_CONFIG_SPI(inst) \
{ \
.ctx = { \
.read_reg = \
(stmdev_read_ptr) stmemsc_spi_read, \
.write_reg = \
(stmdev_write_ptr) stmemsc_spi_write, \
.mdelay = \
(stmdev_mdelay_ptr) stmemsc_mdelay, \
.handle = \
(void *)&lis2ds12_config_##inst.stmemsc_cfg, \
}, \
STMEMSC_CTX_SPI(&lis2ds12_config_##inst.stmemsc_cfg), \
.stmemsc_cfg = { \
.spi = SPI_DT_SPEC_INST_GET(inst, \
LIS2DS12_SPI_OPERATION, \
0), \
}, \
.range = DT_INST_PROP(inst, range), \
.pm = DT_INST_PROP(inst, power_mode), \
.odr = DT_INST_PROP(inst, odr), \
COND_CODE_1(DT_INST_NODE_HAS_PROP(inst, irq_gpios), \
(LIS2DS12_CFG_IRQ(inst)), ()) \
LIS2DS12_CONFIG_COMMON(inst) \
}
/*
@ -387,24 +381,11 @@ static int lis2ds12_init(const struct device *dev)
#define LIS2DS12_CONFIG_I2C(inst) \
{ \
.ctx = { \
.read_reg = \
(stmdev_read_ptr) stmemsc_i2c_read, \
.write_reg = \
(stmdev_write_ptr) stmemsc_i2c_write, \
.mdelay = \
(stmdev_mdelay_ptr) stmemsc_mdelay, \
.handle = \
(void *)&lis2ds12_config_##inst.stmemsc_cfg, \
}, \
STMEMSC_CTX_I2C(&lis2ds12_config_##inst.stmemsc_cfg), \
.stmemsc_cfg = { \
.i2c = I2C_DT_SPEC_INST_GET(inst), \
}, \
.range = DT_INST_PROP(inst, range), \
.pm = DT_INST_PROP(inst, power_mode), \
.odr = DT_INST_PROP(inst, odr), \
COND_CODE_1(DT_INST_NODE_HAS_PROP(inst, irq_gpios), \
(LIS2DS12_CFG_IRQ(inst)), ()) \
LIS2DS12_CONFIG_COMMON(inst) \
}
/*

View file

@ -529,28 +529,7 @@ static int lis2dw12_init(const struct device *dev)
#define LIS2DW12_CFG_IRQ(inst)
#endif /* CONFIG_LIS2DW12_TRIGGER */
#define LIS2DW12_SPI_OPERATION (SPI_WORD_SET(8) | \
SPI_OP_MODE_MASTER | \
SPI_MODE_CPOL | \
SPI_MODE_CPHA) \
#define LIS2DW12_CONFIG_SPI(inst) \
{ \
.ctx = { \
.read_reg = \
(stmdev_read_ptr) stmemsc_spi_read, \
.write_reg = \
(stmdev_write_ptr) stmemsc_spi_write, \
.mdelay = \
(stmdev_mdelay_ptr) stmemsc_mdelay, \
.handle = \
(void *)&lis2dw12_config_##inst.stmemsc_cfg, \
}, \
.stmemsc_cfg = { \
.spi = SPI_DT_SPEC_INST_GET(inst, \
LIS2DW12_SPI_OPERATION, \
0), \
}, \
#define LIS2DW12_CONFIG_COMMON(inst) \
.pm = DT_INST_PROP(inst, power_mode), \
.odr = DT_INST_PROP_OR(inst, odr, 12), \
.range = DT_INST_PROP(inst, range), \
@ -562,7 +541,22 @@ static int lis2dw12_init(const struct device *dev)
LIS2DW12_CONFIG_TAP(inst) \
LIS2DW12_CONFIG_FREEFALL(inst) \
COND_CODE_1(DT_INST_NODE_HAS_PROP(inst, irq_gpios), \
(LIS2DW12_CFG_IRQ(inst)), ()) \
(LIS2DW12_CFG_IRQ(inst)), ())
#define LIS2DW12_SPI_OPERATION (SPI_WORD_SET(8) | \
SPI_OP_MODE_MASTER | \
SPI_MODE_CPOL | \
SPI_MODE_CPHA) \
#define LIS2DW12_CONFIG_SPI(inst) \
{ \
STMEMSC_CTX_SPI(&lis2dw12_config_##inst.stmemsc_cfg), \
.stmemsc_cfg = { \
.spi = SPI_DT_SPEC_INST_GET(inst, \
LIS2DW12_SPI_OPERATION, \
0), \
}, \
LIS2DW12_CONFIG_COMMON(inst) \
}
/*
@ -571,31 +565,11 @@ static int lis2dw12_init(const struct device *dev)
#define LIS2DW12_CONFIG_I2C(inst) \
{ \
.ctx = { \
.read_reg = \
(stmdev_read_ptr) stmemsc_i2c_read, \
.write_reg = \
(stmdev_write_ptr) stmemsc_i2c_write, \
.mdelay = \
(stmdev_mdelay_ptr) stmemsc_mdelay, \
.handle = \
(void *)&lis2dw12_config_##inst.stmemsc_cfg, \
}, \
STMEMSC_CTX_I2C(&lis2dw12_config_##inst.stmemsc_cfg), \
.stmemsc_cfg = { \
.i2c = I2C_DT_SPEC_INST_GET(inst), \
}, \
.pm = DT_INST_PROP(inst, power_mode), \
.odr = DT_INST_PROP_OR(inst, odr, 12), \
.range = DT_INST_PROP(inst, range), \
.bw_filt = DT_INST_PROP(inst, bw_filt), \
.low_noise = DT_INST_PROP(inst, low_noise), \
.hp_filter_path = DT_INST_PROP(inst, hp_filter_path), \
.hp_ref_mode = DT_INST_PROP(inst, hp_ref_mode), \
.drdy_pulsed = DT_INST_PROP(inst, drdy_pulsed), \
LIS2DW12_CONFIG_TAP(inst) \
LIS2DW12_CONFIG_FREEFALL(inst) \
COND_CODE_1(DT_INST_NODE_HAS_PROP(inst, irq_gpios), \
(LIS2DW12_CFG_IRQ(inst)), ()) \
LIS2DW12_CONFIG_COMMON(inst) \
}
/*

View file

@ -512,6 +512,12 @@ static int lis2mdl_pm_action(const struct device *dev,
#define LIS2MDL_CFG_IRQ(inst)
#endif /* CONFIG_LIS2MDL_TRIGGER */
#define LIS2MDL_CONFIG_COMMON(inst) \
.cancel_offset = DT_INST_PROP(inst, cancel_offset), \
.single_mode = DT_INST_PROP(inst, single_mode), \
COND_CODE_1(DT_INST_NODE_HAS_PROP(inst, irq_gpios), \
(LIS2MDL_CFG_IRQ(inst)), ())
#define LIS2MDL_SPI_OPERATION (SPI_WORD_SET(8) | \
SPI_OP_MODE_MASTER | \
SPI_MODE_CPOL | \
@ -519,26 +525,14 @@ static int lis2mdl_pm_action(const struct device *dev,
#define LIS2MDL_CONFIG_SPI(inst) \
{ \
.ctx = { \
.read_reg = \
(stmdev_read_ptr) stmemsc_spi_read, \
.write_reg = \
(stmdev_write_ptr) stmemsc_spi_write, \
.mdelay = \
(stmdev_mdelay_ptr) stmemsc_mdelay, \
.handle = \
(void *)&lis2mdl_config_##inst.stmemsc_cfg, \
}, \
STMEMSC_CTX_SPI(&lis2mdl_config_##inst.stmemsc_cfg), \
.stmemsc_cfg = { \
.spi = SPI_DT_SPEC_INST_GET(inst, \
LIS2MDL_SPI_OPERATION, \
0), \
}, \
.cancel_offset = DT_INST_PROP(inst, cancel_offset), \
.single_mode = DT_INST_PROP(inst, single_mode), \
.spi_4wires = DT_INST_PROP(inst, spi_full_duplex), \
COND_CODE_1(DT_INST_NODE_HAS_PROP(inst, irq_gpios), \
(LIS2MDL_CFG_IRQ(inst)), ()) \
LIS2MDL_CONFIG_COMMON(inst) \
}
/*
@ -547,23 +541,11 @@ static int lis2mdl_pm_action(const struct device *dev,
#define LIS2MDL_CONFIG_I2C(inst) \
{ \
.ctx = { \
.read_reg = \
(stmdev_read_ptr) stmemsc_i2c_read, \
.write_reg = \
(stmdev_write_ptr) stmemsc_i2c_write, \
.mdelay = \
(stmdev_mdelay_ptr) stmemsc_mdelay, \
.handle = \
(void *)&lis2mdl_config_##inst.stmemsc_cfg, \
}, \
STMEMSC_CTX_I2C(&lis2mdl_config_##inst.stmemsc_cfg), \
.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), \
COND_CODE_1(DT_INST_NODE_HAS_PROP(inst, irq_gpios), \
(LIS2MDL_CFG_IRQ(inst)), ()) \
LIS2MDL_CONFIG_COMMON(inst) \
}
/*

View file

@ -258,6 +258,11 @@ static int lps22hh_init(const struct device *dev)
#define LPS22HH_CFG_IRQ(inst)
#endif /* CONFIG_LPS22HH_TRIGGER */
#define LPS22HH_CONFIG_COMMON(inst) \
.odr = DT_INST_PROP(inst, odr), \
COND_CODE_1(DT_INST_NODE_HAS_PROP(inst, drdy_gpios), \
(LPS22HH_CFG_IRQ(inst)), ())
#define LPS22HH_SPI_OPERATION (SPI_WORD_SET(8) | \
SPI_OP_MODE_MASTER | \
SPI_MODE_CPOL | \
@ -265,24 +270,13 @@ static int lps22hh_init(const struct device *dev)
#define LPS22HH_CONFIG_SPI(inst) \
{ \
.ctx = { \
.read_reg = \
(stmdev_read_ptr) stmemsc_spi_read, \
.write_reg = \
(stmdev_write_ptr) stmemsc_spi_write, \
.mdelay = \
(stmdev_mdelay_ptr) stmemsc_mdelay, \
.handle = \
(void *)&lps22hh_config_##inst.stmemsc_cfg, \
}, \
STMEMSC_CTX_SPI(&lps22hh_config_##inst.stmemsc_cfg), \
.stmemsc_cfg = { \
.spi = SPI_DT_SPEC_INST_GET(inst, \
LPS22HH_SPI_OPERATION, \
0), \
}, \
.odr = DT_INST_PROP(inst, odr), \
COND_CODE_1(DT_INST_NODE_HAS_PROP(inst, drdy_gpios), \
(LPS22HH_CFG_IRQ(inst)), ()) \
LPS22HH_CONFIG_COMMON(inst) \
}
/*
@ -291,22 +285,11 @@ static int lps22hh_init(const struct device *dev)
#define LPS22HH_CONFIG_I2C(inst) \
{ \
.ctx = { \
.read_reg = \
(stmdev_read_ptr) stmemsc_i2c_read, \
.write_reg = \
(stmdev_write_ptr) stmemsc_i2c_write, \
.mdelay = \
(stmdev_mdelay_ptr) stmemsc_mdelay, \
.handle = \
(void *)&lps22hh_config_##inst.stmemsc_cfg, \
}, \
STMEMSC_CTX_I2C(&lps22hh_config_##inst.stmemsc_cfg), \
.stmemsc_cfg = { \
.i2c = I2C_DT_SPEC_INST_GET(inst), \
}, \
.odr = DT_INST_PROP(inst, odr), \
COND_CODE_1(DT_INST_NODE_HAS_PROP(inst, drdy_gpios), \
(LPS22HH_CFG_IRQ(inst)), ()) \
LPS22HH_CONFIG_COMMON(inst) \
}
/*
@ -315,20 +298,13 @@ static int lps22hh_init(const struct device *dev)
#define LPS22HH_CONFIG_I3C(inst) \
{ \
.ctx = { \
.read_reg = \
(stmdev_read_ptr) stmemsc_i3c_read, \
.write_reg = \
(stmdev_write_ptr) stmemsc_i3c_write, \
.handle = \
(void *)&lps22hh_config_##inst.stmemsc_cfg, \
}, \
STMEMSC_CTX_I3C(&lps22hh_config_##inst.stmemsc_cfg), \
.stmemsc_cfg = { \
.i3c = &lps22hh_data_##inst.i3c_dev, \
}, \
.odr = DT_INST_PROP(inst, odr), \
.i3c.bus = DEVICE_DT_GET(DT_INST_BUS(inst)), \
.i3c.dev_id = I3C_DEVICE_ID_DT_INST(inst), \
LPS22HH_CONFIG_COMMON(inst) \
}
#define LPS22HH_CONFIG_I3C_OR_I2C(inst) \

View file

@ -923,16 +923,7 @@ static int lsm6dso_init(const struct device *dev)
#define LSM6DSO_CONFIG_SPI(inst) \
{ \
.ctx = { \
.read_reg = \
(stmdev_read_ptr) stmemsc_spi_read, \
.write_reg = \
(stmdev_write_ptr) stmemsc_spi_write, \
.mdelay = \
(stmdev_mdelay_ptr) stmemsc_mdelay, \
.handle = \
(void *)&lsm6dso_config_##inst.stmemsc_cfg, \
}, \
STMEMSC_CTX_SPI(&lsm6dso_config_##inst.stmemsc_cfg), \
.stmemsc_cfg = { \
.spi = SPI_DT_SPEC_INST_GET(inst, \
LSM6DSO_SPI_OP, \
@ -947,16 +938,7 @@ static int lsm6dso_init(const struct device *dev)
#define LSM6DSO_CONFIG_I2C(inst) \
{ \
.ctx = { \
.read_reg = \
(stmdev_read_ptr) stmemsc_i2c_read, \
.write_reg = \
(stmdev_write_ptr) stmemsc_i2c_write, \
.mdelay = \
(stmdev_mdelay_ptr) stmemsc_mdelay, \
.handle = \
(void *)&lsm6dso_config_##inst.stmemsc_cfg, \
}, \
STMEMSC_CTX_I2C(&lsm6dso_config_##inst.stmemsc_cfg), \
.stmemsc_cfg = { \
.i2c = I2C_DT_SPEC_INST_GET(inst), \
}, \

View file

@ -15,12 +15,25 @@
#include <zephyr/drivers/i3c.h>
#include <zephyr/drivers/spi.h>
static inline void stmemsc_mdelay(uint32_t millisec)
{
k_msleep(millisec);
}
#ifdef CONFIG_I2C
/*
* Populate the stmdev_ctx_t structure pointed by stmdev_ctx_ptr with
* stmemsc i2c APIs.
*/
#define STMEMSC_CTX_I2C(stmdev_ctx_ptr) \
.ctx = { \
.read_reg = (stmdev_read_ptr) stmemsc_i2c_read, \
.write_reg = (stmdev_write_ptr) stmemsc_i2c_write, \
.mdelay = (stmdev_mdelay_ptr) stmemsc_mdelay, \
.handle = (void *)stmdev_ctx_ptr \
}
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 i2c_dt_spec *stmemsc,
@ -28,6 +41,18 @@ int stmemsc_i2c_write(const struct i2c_dt_spec *stmemsc,
#endif
#ifdef CONFIG_I3C
/*
* Populate the stmdev_ctx_t structure pointed by stmdev_ctx_ptr with
* stmemsc i3c APIs.
*/
#define STMEMSC_CTX_I3C(stmdev_ctx_ptr) \
.ctx = { \
.read_reg = (stmdev_read_ptr) stmemsc_i3c_read, \
.write_reg = (stmdev_write_ptr) stmemsc_i3c_write, \
.mdelay = (stmdev_mdelay_ptr) stmemsc_mdelay, \
.handle = (void *)stmdev_ctx_ptr \
}
int stmemsc_i3c_read(void *stmemsc,
uint8_t reg_addr, uint8_t *value, uint8_t len);
int stmemsc_i3c_write(void *stmemsc,
@ -35,6 +60,18 @@ int stmemsc_i3c_write(void *stmemsc,
#endif
#ifdef CONFIG_SPI
/*
* Populate the stmdev_ctx_t structure pointed by stmdev_ctx_ptr with
* stmemsc spi APIs.
*/
#define STMEMSC_CTX_SPI(stmdev_ctx_ptr) \
.ctx = { \
.read_reg = (stmdev_read_ptr) stmemsc_spi_read, \
.write_reg = (stmdev_write_ptr) stmemsc_spi_write, \
.mdelay = (stmdev_mdelay_ptr) stmemsc_mdelay, \
.handle = (void *)stmdev_ctx_ptr \
}
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 spi_dt_spec *stmemsc,