Skip to content

Commit c12fdea

Browse files
committed
drivers/sensor: lsm6dsvxxx: add High-g data support in FIFO
Add support for High-g data in FIFO. The HG data wiil be marked in FIFO with LSM6DSV80X_XL_HG_TAG. Signed-off-by: Armando Visconti <[email protected]>
1 parent f96ce07 commit c12fdea

File tree

3 files changed

+8
-0
lines changed

3 files changed

+8
-0
lines changed

drivers/sensor/st/lsm6dsvxxx/lsm6dsv320x.c

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -664,6 +664,7 @@ static void lsm6dsv320x_config_fifo(const struct device *dev, struct trigger_con
664664
lsm6dsv320x_sflp_data_rate_t sflp_odr = LSM6DSV320X_SFLP_120Hz;
665665
lsm6dsv320x_fifo_sflp_raw_t sflp_fifo = {0};
666666
lsm6dsv320x_sflp_gbias_t gbias;
667+
uint8_t xl_hg_batch = 0;
667668

668669
/* disable FIFO as first thing */
669670
lsm6dsv320x_fifo_mode_set(ctx, LSM6DSV320X_BYPASS_MODE);
@@ -678,6 +679,7 @@ static void lsm6dsv320x_config_fifo(const struct device *dev, struct trigger_con
678679
xl_batch = config->accel_batch;
679680
gy_batch = config->gyro_batch;
680681
temp_batch = config->temp_batch;
682+
xl_hg_batch = (lsm6dsv320x_is_hg_fs(config->accel_range)) ? 1 : 0;
681683

682684
fifo_mode = LSM6DSV320X_STREAM_MODE;
683685
fifo_wtm = config->fifo_wtm;
@@ -709,6 +711,7 @@ static void lsm6dsv320x_config_fifo(const struct device *dev, struct trigger_con
709711
/* Set FIFO batch rates */
710712
lsm6dsv320x_fifo_xl_batch_set(ctx, xl_batch);
711713
data->accel_batch_odr = xl_batch;
714+
lsm6dsv320x_fifo_hg_xl_batch_set(ctx, xl_hg_batch);
712715
lsm6dsv320x_fifo_gy_batch_set(ctx, gy_batch);
713716
data->gyro_batch_odr = gy_batch;
714717
#if defined(CONFIG_LSM6DSVXXX_ENABLE_TEMP)

drivers/sensor/st/lsm6dsvxxx/lsm6dsv80x.c

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -651,6 +651,7 @@ static void lsm6dsv80x_config_fifo(const struct device *dev, struct trigger_conf
651651
lsm6dsv80x_sflp_data_rate_t sflp_odr = LSM6DSV80X_SFLP_120Hz;
652652
lsm6dsv80x_fifo_sflp_raw_t sflp_fifo = {0};
653653
lsm6dsv80x_sflp_gbias_t gbias;
654+
uint8_t xl_hg_batch = 0;
654655

655656
/* disable FIFO as first thing */
656657
lsm6dsv80x_fifo_mode_set(ctx, LSM6DSV80X_BYPASS_MODE);
@@ -665,6 +666,7 @@ static void lsm6dsv80x_config_fifo(const struct device *dev, struct trigger_conf
665666
xl_batch = config->accel_batch;
666667
gy_batch = config->gyro_batch;
667668
temp_batch = config->temp_batch;
669+
xl_hg_batch = (lsm6dsv80x_is_hg_fs(config->accel_range)) ? 1 : 0;
668670

669671
fifo_mode = LSM6DSV80X_STREAM_MODE;
670672
fifo_wtm = config->fifo_wtm;
@@ -696,6 +698,7 @@ static void lsm6dsv80x_config_fifo(const struct device *dev, struct trigger_conf
696698
/* Set FIFO batch rates */
697699
lsm6dsv80x_fifo_xl_batch_set(ctx, xl_batch);
698700
data->accel_batch_odr = xl_batch;
701+
lsm6dsv80x_fifo_hg_xl_batch_set(ctx, xl_hg_batch);
699702
lsm6dsv80x_fifo_gy_batch_set(ctx, gy_batch);
700703
data->gyro_batch_odr = gy_batch;
701704
#if defined(CONFIG_LSM6DSVXXX_ENABLE_TEMP)

drivers/sensor/st/lsm6dsvxxx/lsm6dsvxxx_decoder.c

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -162,6 +162,7 @@ static int lsm6dsvxxx_decoder_get_frame_count(const uint8_t *buffer,
162162
fifo_tag = (buffer[0] >> 3);
163163

164164
switch (fifo_tag) {
165+
case LSM6DSVXXX_XL_HG_TAG:
165166
case LSM6DSVXXX_XL_NC_TAG:
166167
tot_accel_fifo_words++;
167168
break;
@@ -523,6 +524,7 @@ static int lsm6dsvxxx_decode_fifo(const uint8_t *buffer, struct sensor_chan_spec
523524
fifo_tag = (buffer[0] >> 3);
524525

525526
switch (fifo_tag) {
527+
case LSM6DSVXXX_XL_HG_TAG:
526528
case LSM6DSVXXX_XL_NC_TAG:
527529
xl_count++;
528530
skip = generate_accel_output(buffer, count, xl_count,

0 commit comments

Comments
 (0)