mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-15 00:04:15 +08:00
iio: imu: st_lsm6dsx: enable LIR for sensor events
Enable Latched interrupt by default for sensor events Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org> Tested-by: Sean Nyekjaer <sean@geanix.com> Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
This commit is contained in:
parent
c270bbf7bb
commit
9db02d32b8
@ -215,6 +215,7 @@ struct st_lsm6dsx_ext_dev_settings {
|
||||
* @fs_table: Hw sensors gain table (gain + val).
|
||||
* @decimator: List of decimator register info (addr + mask).
|
||||
* @batch: List of FIFO batching register info (addr + mask).
|
||||
* @lir: Latched interrupt register info (addr + mask).
|
||||
* @fifo_ops: Sensor hw FIFO parameters.
|
||||
* @ts_settings: Hw timer related settings.
|
||||
* @shub_settings: i2c controller related settings.
|
||||
@ -237,6 +238,7 @@ struct st_lsm6dsx_settings {
|
||||
struct st_lsm6dsx_fs_table_entry fs_table[2];
|
||||
struct st_lsm6dsx_reg decimator[ST_LSM6DSX_MAX_ID];
|
||||
struct st_lsm6dsx_reg batch[ST_LSM6DSX_MAX_ID];
|
||||
struct st_lsm6dsx_reg lir;
|
||||
struct st_lsm6dsx_fifo_ops fifo_ops;
|
||||
struct st_lsm6dsx_hw_ts_settings ts_settings;
|
||||
struct st_lsm6dsx_shub_settings shub_settings;
|
||||
|
@ -237,6 +237,10 @@ static const struct st_lsm6dsx_settings st_lsm6dsx_sensor_settings[] = {
|
||||
.mask = GENMASK(5, 3),
|
||||
},
|
||||
},
|
||||
.lir = {
|
||||
.addr = 0x58,
|
||||
.mask = BIT(0),
|
||||
},
|
||||
.fifo_ops = {
|
||||
.update_fifo = st_lsm6dsx_update_fifo,
|
||||
.read_fifo = st_lsm6dsx_read_fifo,
|
||||
@ -349,6 +353,10 @@ static const struct st_lsm6dsx_settings st_lsm6dsx_sensor_settings[] = {
|
||||
.mask = GENMASK(5, 3),
|
||||
},
|
||||
},
|
||||
.lir = {
|
||||
.addr = 0x58,
|
||||
.mask = BIT(0),
|
||||
},
|
||||
.fifo_ops = {
|
||||
.update_fifo = st_lsm6dsx_update_fifo,
|
||||
.read_fifo = st_lsm6dsx_read_fifo,
|
||||
@ -470,6 +478,10 @@ static const struct st_lsm6dsx_settings st_lsm6dsx_sensor_settings[] = {
|
||||
.mask = GENMASK(5, 3),
|
||||
},
|
||||
},
|
||||
.lir = {
|
||||
.addr = 0x58,
|
||||
.mask = BIT(0),
|
||||
},
|
||||
.fifo_ops = {
|
||||
.update_fifo = st_lsm6dsx_update_fifo,
|
||||
.read_fifo = st_lsm6dsx_read_fifo,
|
||||
@ -585,6 +597,10 @@ static const struct st_lsm6dsx_settings st_lsm6dsx_sensor_settings[] = {
|
||||
.mask = GENMASK(7, 4),
|
||||
},
|
||||
},
|
||||
.lir = {
|
||||
.addr = 0x56,
|
||||
.mask = BIT(0),
|
||||
},
|
||||
.fifo_ops = {
|
||||
.update_fifo = st_lsm6dsx_update_fifo,
|
||||
.read_fifo = st_lsm6dsx_read_tagged_fifo,
|
||||
@ -715,6 +731,10 @@ static const struct st_lsm6dsx_settings st_lsm6dsx_sensor_settings[] = {
|
||||
.mask = GENMASK(7, 4),
|
||||
},
|
||||
},
|
||||
.lir = {
|
||||
.addr = 0x56,
|
||||
.mask = BIT(0),
|
||||
},
|
||||
.fifo_ops = {
|
||||
.update_fifo = st_lsm6dsx_update_fifo,
|
||||
.read_fifo = st_lsm6dsx_read_tagged_fifo,
|
||||
@ -822,6 +842,10 @@ static const struct st_lsm6dsx_settings st_lsm6dsx_sensor_settings[] = {
|
||||
.mask = GENMASK(7, 4),
|
||||
},
|
||||
},
|
||||
.lir = {
|
||||
.addr = 0x56,
|
||||
.mask = BIT(0),
|
||||
},
|
||||
.fifo_ops = {
|
||||
.update_fifo = st_lsm6dsx_update_fifo,
|
||||
.read_fifo = st_lsm6dsx_read_tagged_fifo,
|
||||
@ -1416,6 +1440,17 @@ static int st_lsm6dsx_init_device(struct st_lsm6dsx_hw *hw)
|
||||
if (err < 0)
|
||||
return err;
|
||||
|
||||
/* enable Latched interrupts for device events */
|
||||
if (hw->settings->lir.addr) {
|
||||
unsigned int data;
|
||||
|
||||
data = ST_LSM6DSX_SHIFT_VAL(1, hw->settings->lir.mask);
|
||||
err = regmap_update_bits(hw->regmap, hw->settings->lir.addr,
|
||||
hw->settings->lir.mask, data);
|
||||
if (err < 0)
|
||||
return err;
|
||||
}
|
||||
|
||||
err = st_lsm6dsx_init_shub(hw);
|
||||
if (err < 0)
|
||||
return err;
|
||||
|
Loading…
Reference in New Issue
Block a user