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

properties:
    irq-gpios:
      type: phandle-array
      required: false
      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
      required: false
      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
      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
      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
      required: false
      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
      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
      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
      required: false
      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
