Commit 34fed86b authored by Armando Visconti's avatar Armando Visconti Committed by Christopher Friedt
Browse files

drivers/sensor: lsm6dso: Add power mode properties to DTS



Add power mode properties for bot accelerometer and gyrometer
to Device Tree.

Signed-off-by: default avatarArmando Visconti <armando.visconti@st.com>
parent 18e8cada
Loading
Loading
Loading
Loading
+31 −0
Original line number Diff line number Diff line
@@ -744,6 +744,21 @@ static int lsm6dso_init_chip(const struct device *dev)

	k_busy_wait(100);

	/* set accel power mode */
	LOG_DBG("accel pm is %d", cfg->accel_pm);
	switch (cfg->accel_pm) {
	default:
	case 0:
		lsm6dso_xl_power_mode_set(ctx, LSM6DSO_HIGH_PERFORMANCE_MD);
		break;
	case 1:
		lsm6dso_xl_power_mode_set(ctx, LSM6DSO_LOW_NORMAL_POWER_MD);
		break;
	case 2:
		lsm6dso_xl_power_mode_set(ctx, LSM6DSO_ULTRA_LOW_POWER_MD);
		break;
	}

	fs = cfg->accel_range;
	LOG_DBG("accel range is %d", fs);
	if (lsm6dso_accel_set_fs_raw(dev, fs) < 0) {
@@ -760,6 +775,18 @@ static int lsm6dso_init_chip(const struct device *dev)
		return -EIO;
	}

	/* set gyro power mode */
	LOG_DBG("gyro pm is %d", cfg->gyro_pm);
	switch (cfg->gyro_pm) {
	default:
	case 0:
		lsm6dso_gy_power_mode_set(ctx, LSM6DSO_GY_HIGH_PERFORMANCE);
		break;
	case 1:
		lsm6dso_gy_power_mode_set(ctx, LSM6DSO_GY_NORMAL);
		break;
	}

	fs = cfg->gyro_range;
	LOG_DBG("gyro range is %d", fs);
	if (lsm6dso_gyro_set_fs_raw(dev, fs) < 0) {
@@ -877,8 +904,10 @@ static int lsm6dso_init(const struct device *dev)
					   LSM6DSO_SPI_OP,		\
					   0),				\
		},							\
		.accel_pm = DT_INST_PROP(inst, accel_pm),		\
		.accel_odr = DT_INST_PROP(inst, accel_odr),		\
		.accel_range = DT_INST_PROP(inst, accel_range),		\
		.gyro_pm = DT_INST_PROP(inst, gyro_pm),			\
		.gyro_odr = DT_INST_PROP(inst, gyro_odr),		\
		.gyro_range = DT_INST_PROP(inst, gyro_range),		\
		COND_CODE_1(DT_INST_NODE_HAS_PROP(inst, irq_gpios),	\
@@ -902,8 +931,10 @@ static int lsm6dso_init(const struct device *dev)
		.stmemsc_cfg = {					\
			.i2c = I2C_DT_SPEC_INST_GET(inst),		\
		},							\
		.accel_pm = DT_INST_PROP(inst, accel_pm),		\
		.accel_odr = DT_INST_PROP(inst, accel_odr),		\
		.accel_range = DT_INST_PROP(inst, accel_range),		\
		.gyro_pm = DT_INST_PROP(inst, gyro_pm),			\
		.gyro_odr = DT_INST_PROP(inst, gyro_odr),		\
		.gyro_range = DT_INST_PROP(inst, gyro_range),		\
		COND_CODE_1(DT_INST_NODE_HAS_PROP(inst, irq_gpios),	\
+2 −0
Original line number Diff line number Diff line
@@ -50,8 +50,10 @@ struct lsm6dso_config {
		const struct spi_dt_spec spi;
#endif
	} stmemsc_cfg;
	uint8_t accel_pm;
	uint8_t accel_odr;
	uint8_t accel_range;
	uint8_t gyro_pm;
	uint8_t gyro_odr;
	uint8_t gyro_range;
#ifdef CONFIG_LSM6DSO_TRIGGER
+23 −0
Original line number Diff line number Diff line
@@ -27,6 +27,18 @@ properties:
        mandatory and if not present it defaults to 1 which is the
        configuration at power-up.

    accel-pm:
      type: int
      required: false
      default: 0
      description: |
        Specify the accelerometer power mode.
        Default is power-up configuration.
      enum:
        - 0 # High Performance mode (default)
        - 1 # Low/Normal Power mode
        - 2 # Ultra Low Power mode

    accel-range:
      type: int
      required: false
@@ -59,6 +71,17 @@ properties:
        - 9  # 3333Hz
        - 10 # 6667Hz

    gyro-pm:
      type: int
      required: false
      default: 0
      description: |
        Specify the gyrometer power mode.
        Default is power-up configuration.
      enum:
        - 0 # High Performance mode (default)
        - 1 # Low/Normal Power mode

    gyro-range:
      type: int
      required: false