Commit ba7c85d6 authored by Mayank Narang's avatar Mayank Narang Committed by Anas Nashif
Browse files

drivers: sensor: lis2de12: fix read accel via spi

The lis2de12 sensor driver spi interface was calling spi read api.
This leads to a single byte operation on reading acceleration data
which is a multi byte operation. Fix it by adding a call to spi read
incr api instead. Added a length check to handle both single and multi
byte read properly.

Signed-off-by: default avatarMayank Narang <narang.may77@gmail.com>
(cherry picked from commit 7b062f5b)
parent 4aa3e562
Loading
Loading
Loading
Loading
+1 −1
Changes for drivers/sensor/st/lis2de12/lis2de12.c: 1 added line, 1 removed line.
Original line number Diff line number Diff line
@@ -435,7 +435,7 @@ static int lis2de12_init(const struct device *dev)

#define LIS2DE12_CONFIG_SPI(inst)						\
	{									\
		STMEMSC_CTX_SPI(&lis2de12_config_##inst.stmemsc_cfg),		\
		STMEMSC_CTX_SPI_INCR(&lis2de12_config_##inst.stmemsc_cfg),		\
		.stmemsc_cfg = {						\
			.spi = SPI_DT_SPEC_INST_GET(inst, LIS2DE12_SPI_OP, 0),	\
		},								\
+3 −0
Changes for drivers/sensor/st/stmemsc/stmemsc_spi.c: 3 added lines, 0 removed lines.
Original line number Diff line number Diff line
@@ -63,7 +63,10 @@ int stmemsc_spi_write(const struct spi_dt_spec *stmemsc,
int stmemsc_spi_read_incr(const struct spi_dt_spec *stmemsc,
			  uint8_t reg_addr, uint8_t *value, uint8_t len)
{
	if (len > 1) {
		reg_addr |= STMEMSC_SPI_ADDR_AUTO_INCR;
	}

	return stmemsc_spi_read(stmemsc, reg_addr, value, len);
}