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

include: sensor-device.yaml

properties:
    drdy-gpios:
      type: phandle-array
      description: |
        DRDY gpio 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
      description: |
        Select DRDY pin number (1 or 2).

          Selection
            1  drdy is generated from INT1
            2  drdy is generated from INT2

        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.
      enum:
        - 1
        - 2

    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.

          Selection
            0   Power-Down
            1   12.5Hz
            2   26Hz
            3   52Hz
            4   104Hz
            5   208Hz
            6   416Hz
            7   833Hz
            8   1660Hz
            9   3330Hz
            10  6660Hz
      enum:
        - 0
        - 1
        - 2
        - 3
        - 4
        - 5
        - 6
        - 7
        - 8
        - 9
        - 10

    accel-range:
      type: int
      default: 2
      description: |
        Range in g. Default is power-up configuration.

          Selection
            16  16g (0.488 mg/LSB)
             8   8g (0.244 mg/LSB)
             4   4g (0.122 mg/LSB)
             2   2g (0.061 mg/LSB)
      enum:
        - 16
        -  8
        -  4
        -  2

    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.

          Selection
            0   Power-Down
            1   12.5Hz
            2   26Hz
            3   52Hz
            4   104Hz
            5   208Hz
            6   416Hz
            7   833Hz
            8   1660Hz
            9   3330Hz
            10  6660Hz
      enum:
        - 0
        - 1
        - 2
        - 3
        - 4
        - 5
        - 6
        - 7
        - 8
        - 9
        - 10

    gyro-range:
      type: int
      default: 125
      description: |
        Range in dps. Default is power-up configuration.

          Selection
            125    +/- 125dps
            250    +/- 250dps
            500    +/- 500dps
            1000   +/- 1000dps
            2000   +/- 2000dps
      enum:
        - 125
        - 250
        - 500
        - 1000
        - 2000
