Commit ee978bb8 authored by Lorenzo Bianconi's avatar Lorenzo Bianconi Committed by Jonathan Cameron

iio: imu: st_lsm6dsx: export max num of slave devices in st_lsm6dsx_shub_settings

Export max number of slave devices supported by the i2c master
controller in st_lsm6dsx_shub_settings data structure.
This is a preliminary patch to support i2c master controller
on lsm6dsm sensors
Signed-off-by: default avatarLorenzo Bianconi <lorenzo@kernel.org>
Signed-off-by: default avatarJonathan Cameron <Jonathan.Cameron@huawei.com>
parent 4dae3d61
...@@ -176,6 +176,7 @@ struct st_lsm6dsx_hw_ts_settings { ...@@ -176,6 +176,7 @@ struct st_lsm6dsx_hw_ts_settings {
* @pullup_en: i2c controller pull-up register info (addr + mask). * @pullup_en: i2c controller pull-up register info (addr + mask).
* @aux_sens: aux sensor register info (addr + mask). * @aux_sens: aux sensor register info (addr + mask).
* @wr_once: write_once register info (addr + mask). * @wr_once: write_once register info (addr + mask).
* @num_ext_dev: max number of slave devices.
* @shub_out: sensor hub first output register info. * @shub_out: sensor hub first output register info.
* @slv0_addr: slave0 address in secondary page. * @slv0_addr: slave0 address in secondary page.
* @dw_slv0_addr: slave0 write register address in secondary page. * @dw_slv0_addr: slave0 write register address in secondary page.
...@@ -187,6 +188,7 @@ struct st_lsm6dsx_shub_settings { ...@@ -187,6 +188,7 @@ struct st_lsm6dsx_shub_settings {
struct st_lsm6dsx_reg pullup_en; struct st_lsm6dsx_reg pullup_en;
struct st_lsm6dsx_reg aux_sens; struct st_lsm6dsx_reg aux_sens;
struct st_lsm6dsx_reg wr_once; struct st_lsm6dsx_reg wr_once;
u8 num_ext_dev;
u8 shub_out; u8 shub_out;
u8 slv0_addr; u8 slv0_addr;
u8 dw_slv0_addr; u8 dw_slv0_addr;
......
...@@ -883,6 +883,7 @@ static const struct st_lsm6dsx_settings st_lsm6dsx_sensor_settings[] = { ...@@ -883,6 +883,7 @@ static const struct st_lsm6dsx_settings st_lsm6dsx_sensor_settings[] = {
.addr = 0x14, .addr = 0x14,
.mask = BIT(6), .mask = BIT(6),
}, },
.num_ext_dev = 3,
.shub_out = 0x02, .shub_out = 0x02,
.slv0_addr = 0x15, .slv0_addr = 0x15,
.dw_slv0_addr = 0x21, .dw_slv0_addr = 0x21,
...@@ -1257,6 +1258,7 @@ static const struct st_lsm6dsx_settings st_lsm6dsx_sensor_settings[] = { ...@@ -1257,6 +1258,7 @@ static const struct st_lsm6dsx_settings st_lsm6dsx_sensor_settings[] = {
.addr = 0x14, .addr = 0x14,
.mask = BIT(6), .mask = BIT(6),
}, },
.num_ext_dev = 3,
.shub_out = 0x02, .shub_out = 0x02,
.slv0_addr = 0x15, .slv0_addr = 0x15,
.dw_slv0_addr = 0x21, .dw_slv0_addr = 0x21,
......
...@@ -30,7 +30,6 @@ ...@@ -30,7 +30,6 @@
#include "st_lsm6dsx.h" #include "st_lsm6dsx.h"
#define ST_LSM6DSX_MAX_SLV_NUM 3
#define ST_LSM6DSX_SLV_ADDR(n, base) ((base) + (n) * 3) #define ST_LSM6DSX_SLV_ADDR(n, base) ((base) + (n) * 3)
#define ST_LSM6DSX_SLV_SUB_ADDR(n, base) ((base) + 1 + (n) * 3) #define ST_LSM6DSX_SLV_SUB_ADDR(n, base) ((base) + 1 + (n) * 3)
#define ST_LSM6DSX_SLV_CONFIG(n, base) ((base) + 2 + (n) * 3) #define ST_LSM6DSX_SLV_CONFIG(n, base) ((base) + 2 + (n) * 3)
...@@ -770,7 +769,7 @@ int st_lsm6dsx_shub_probe(struct st_lsm6dsx_hw *hw, const char *name) ...@@ -770,7 +769,7 @@ int st_lsm6dsx_shub_probe(struct st_lsm6dsx_hw *hw, const char *name)
if (err < 0) if (err < 0)
return err; return err;
if (++num_ext_dev >= ST_LSM6DSX_MAX_SLV_NUM) if (++num_ext_dev >= hw->settings->shub_settings.num_ext_dev)
break; break;
id++; id++;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment