Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion drivers/sensor/st/iis2dlpc/iis2dlpc.c
Original file line number Diff line number Diff line change
Expand Up @@ -298,7 +298,7 @@ static int iis2dlpc_init(const struct device *dev)
}

/* reset device */
if (iis2dlpc_reset_set(ctx, PROPERTY_ENABLE) < 0) {
if (iis2dlpc_reset_set(ctx) < 0) {
return -EIO;
}

Expand Down
32 changes: 20 additions & 12 deletions drivers/sensor/st/lis2dux12/lis2dux12_api.c
Original file line number Diff line number Diff line change
Expand Up @@ -164,14 +164,17 @@ static void st_lis2dux12_stream_config_fifo(const struct device *dev,
stmdev_ctx_t *ctx = (stmdev_ctx_t *)&config->ctx;
lis2dux12_pin_int_route_t pin_int = { 0 };
lis2dux12_fifo_mode_t fifo_mode = { 0 };
lis2dux12_fifo_batch_t batch = { 0 };
lis2dux12_fifo_event_t fifo_event = { 0 };
uint16_t watermark = 0;

/* disable FIFO as first thing */
fifo_mode.store = LIS2DUX12_FIFO_1X;
fifo_mode.xl_only = 0;
fifo_mode.watermark = 0;
fifo_mode.operation = LIS2DUX12_BYPASS_MODE;
fifo_mode.batch.dec_ts = LIS2DUX12_DEC_TS_OFF;
fifo_mode.batch.bdr_xl = LIS2DUX12_BDR_XL_ODR_OFF;
batch.dec_ts = LIS2DUX12_DEC_TS_OFF;
batch.bdr_xl = LIS2DUX12_BDR_XL_ODR_OFF;
watermark = 0;

pin_int.fifo_th = PROPERTY_DISABLE;
pin_int.fifo_full = PROPERTY_DISABLE;
Expand All @@ -181,9 +184,9 @@ static void st_lis2dux12_stream_config_fifo(const struct device *dev,
pin_int.fifo_full = (trig_cfg.int_fifo_full) ? PROPERTY_ENABLE : PROPERTY_DISABLE;

if (pin_int.fifo_th) {
fifo_mode.fifo_event = LIS2DUX12_FIFO_EV_WTM;
fifo_event = LIS2DUX12_FIFO_EV_WTM;
} else if (pin_int.fifo_full) {
fifo_mode.fifo_event = LIS2DUX12_FIFO_EV_FULL;
fifo_event = LIS2DUX12_FIFO_EV_FULL;
}

switch (config->fifo_mode_sel) {
Expand All @@ -202,27 +205,32 @@ static void st_lis2dux12_stream_config_fifo(const struct device *dev,
}

fifo_mode.operation = LIS2DUX12_STREAM_MODE;
fifo_mode.batch.dec_ts = config->ts_batch;
fifo_mode.batch.bdr_xl = config->accel_batch;
fifo_mode.watermark = config->fifo_wtm;
batch.dec_ts = config->ts_batch;
batch.bdr_xl = config->accel_batch;
watermark = config->fifo_wtm;

/* In case each FIFO word contains 2x accelerometer samples,
* then watermark can be divided by two to match user expectation.
*/
if (config->fifo_mode_sel == 2) {
fifo_mode.watermark /= 2;
watermark /= 2;
}
}

lis2dux12_fifo_mode_set(ctx, fifo_mode);

/*
* Set FIFO watermark (number of unread sensor data TAG + 6 bytes
* stored in FIFO) to FIFO_WATERMARK samples
*/
lis2dux12_fifo_mode_set(ctx, fifo_mode);
lis2dux12_fifo_watermark_set(ctx, watermark);

lis2dux12_fifo_batch_set(ctx, batch);
lis2dux12_fifo_stop_on_wtm_set(ctx, fifo_event);

/* Set FIFO batch rates */
lis2dux12->accel_batch_odr = fifo_mode.batch.bdr_xl;
lis2dux12->ts_batch_odr = fifo_mode.batch.dec_ts;
lis2dux12->accel_batch_odr = batch.bdr_xl;
lis2dux12->ts_batch_odr = batch.dec_ts;

/* Set pin interrupt (fifo_th could be on or off) */
if (config->drdy_pin == 1) {
Expand Down
32 changes: 20 additions & 12 deletions drivers/sensor/st/lis2dux12/lis2duxs12_api.c
Original file line number Diff line number Diff line change
Expand Up @@ -164,14 +164,17 @@ static void st_lis2duxs12_stream_config_fifo(const struct device *dev,
stmdev_ctx_t *ctx = (stmdev_ctx_t *)&config->ctx;
lis2duxs12_pin_int_route_t pin_int = { 0 };
lis2duxs12_fifo_mode_t fifo_mode = { 0 };
lis2duxs12_fifo_batch_t batch = { 0 };
lis2duxs12_fifo_event_t fifo_event = { 0 };
uint16_t watermark = 0;

/* disable FIFO as first thing */
fifo_mode.store = LIS2DUXS12_FIFO_1X;
fifo_mode.xl_only = 0;
fifo_mode.watermark = 0;
fifo_mode.operation = LIS2DUXS12_BYPASS_MODE;
fifo_mode.batch.dec_ts = LIS2DUXS12_DEC_TS_OFF;
fifo_mode.batch.bdr_xl = LIS2DUXS12_BDR_XL_ODR_OFF;
batch.dec_ts = LIS2DUXS12_DEC_TS_OFF;
batch.bdr_xl = LIS2DUXS12_BDR_XL_ODR_OFF;
watermark = 0;

pin_int.fifo_th = PROPERTY_DISABLE;
pin_int.fifo_full = PROPERTY_DISABLE;
Expand All @@ -181,9 +184,9 @@ static void st_lis2duxs12_stream_config_fifo(const struct device *dev,
pin_int.fifo_full = (trig_cfg.int_fifo_full) ? PROPERTY_ENABLE : PROPERTY_DISABLE;

if (pin_int.fifo_th) {
fifo_mode.fifo_event = LIS2DUXS12_FIFO_EV_WTM;
fifo_event = LIS2DUXS12_FIFO_EV_WTM;
} else if (pin_int.fifo_full) {
fifo_mode.fifo_event = LIS2DUXS12_FIFO_EV_FULL;
fifo_event = LIS2DUXS12_FIFO_EV_FULL;
}

switch (config->fifo_mode_sel) {
Expand All @@ -202,27 +205,32 @@ static void st_lis2duxs12_stream_config_fifo(const struct device *dev,
}

fifo_mode.operation = LIS2DUXS12_STREAM_MODE;
fifo_mode.batch.dec_ts = config->ts_batch;
fifo_mode.batch.bdr_xl = config->accel_batch;
fifo_mode.watermark = config->fifo_wtm;
batch.dec_ts = config->ts_batch;
batch.bdr_xl = config->accel_batch;
watermark = config->fifo_wtm;

/* In case each FIFO word contains 2x accelerometer samples,
* then watermark can be divided by two to match user expectation.
*/
if (config->fifo_mode_sel == 2) {
fifo_mode.watermark /= 2;
watermark /= 2;
}
}

lis2duxs12_fifo_mode_set(ctx, fifo_mode);

/*
* Set FIFO watermark (number of unread sensor data TAG + 6 bytes
* stored in FIFO) to FIFO_WATERMARK samples
*/
lis2duxs12_fifo_mode_set(ctx, fifo_mode);
lis2duxs12_fifo_watermark_set(ctx, watermark);

lis2duxs12_fifo_batch_set(ctx, batch);
lis2duxs12_fifo_stop_on_wtm_set(ctx, fifo_event);

/* Set FIFO batch rates */
lis2dux12->accel_batch_odr = fifo_mode.batch.bdr_xl;
lis2dux12->ts_batch_odr = fifo_mode.batch.dec_ts;
lis2dux12->accel_batch_odr = batch.bdr_xl;
lis2dux12->ts_batch_odr = batch.dec_ts;

/* Set pin interrupt (fifo_th could be on or off) */
if (config->drdy_pin == 1) {
Expand Down
2 changes: 1 addition & 1 deletion west.yml
Original file line number Diff line number Diff line change
Expand Up @@ -245,7 +245,7 @@ manifest:
groups:
- hal
- name: hal_st
revision: 9f81b4427e955885398805b7bca0da3a8cd9109c
revision: pull/27/head
path: modules/hal/st
groups:
- hal
Expand Down
Loading