# 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
