# Copyright (c) 2021 STMicroelectronics
# SPDX-License-Identifier: Apache-2.0

include: sensor-device.yaml

properties:
    irq-gpios:
      type: phandle-array
      description: |
        DRDY pin

        This pin defaults to active high when produced by the sensor.
        The property value should ensure the flags properly describe
        the signal that is presented to the driver.

    int-pin:
      type: int
      default: 1
      enum:
        - 1 # drdy is generated from INT1
        - 2 # drdy is generated from INT2
      description: |
        Select DRDY pin number (1 or 2).

        This number represents which of the two interrupt pins
        (INT1 or INT2) the drdy line is attached to. This property is not
        mandatory and if not present it defaults to 1 which is the
        configuration at power-up.

    accel-pm:
      type: int
      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
      default: 0
      description: |
        Range in g. Default is power-up configuration.
      enum:
        - 0 # 2g  (0.061 mg/LSB) (LSM6DSO32 will be double these values)
        - 1 # 16g (0.488 mg/LSB)
        - 2 # 4g  (0.122 mg/LSB)
        - 3 # 8g  (0.244 mg/LSB)

    accel-odr:
      type: int
      default: 0
      description: |
        Specify the default accelerometer output data rate expressed in samples per second (Hz).
        Default is power-up configuration.
      enum:
        - 0  # Power-Down
        - 1  # 12.5Hz
        - 2  # 26Hz
        - 3  # 52Hz
        - 4  # 104Hz
        - 5  # 208Hz
        - 6  # 417Hz
        - 7  # 833Hz
        - 8  # 1667Hz
        - 9  # 3333Hz
        - 10 # 6667Hz

    gyro-pm:
      type: int
      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
      default: 0
      description: |
        Range in dps. Default is power-up configuration.
      enum:
        - 0 # 250 dps  (8.75 mdps/LSB)
        - 1 # 125 dps  (4.375 mdps/LSB)
        - 2 # 500 dps  (17.50 mdps/LSB)
        - 4 # 1000 dps (35 mdps/LSB)
        - 6 # 2000 dps (70 mdps/LSB)

    gyro-odr:
      type: int
      default: 0
      description: |
        Specify the default gyro output data rate expressed in samples per second (Hz).
        Default is power-up configuration.
      enum:
        - 0  # Power-Down
        - 1  # 12.5Hz
        - 2  # 26Hz
        - 3  # 52Hz
        - 4  # 104Hz
        - 5  # 208Hz
        - 6  # 417Hz
        - 7  # 833Hz
        - 8  # 1667Hz
        - 9  # 3333Hz
        - 10 # 6667Hz
