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

description: |
    When setting the accel-odr and gyro-odr properties in a .dts or .dtsi file you may include
    ism330dhcx.h and use the macros defined there.

    Example:
    #include <zephyr/dt-bindings/sensor/ism330dhcx.h>

    ism330dhcx: ism330dhcx@0 {
      ...

      accel-odr = <ISM330DHCX_DT_ODR_104Hz>;
      gyro-odr = <ISM330DHCX_DT_ODR_104Hz>;
    };

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.

      - 0 # ISM330DHCX_DT_ODR_OFF
      - 1 # ISM330DHCX_DT_ODR_12Hz5
      - 2 # ISM330DHCX_DT_ODR_26H
      - 3 # ISM330DHCX_DT_ODR_52Hz
      - 4 # ISM330DHCX_DT_ODR_104Hz
      - 5 # ISM330DHCX_DT_ODR_208Hz
      - 6 # ISM330DHCX_DT_ODR_416Hz
      - 7 # ISM330DHCX_DT_ODR_833Hz
      - 8 # ISM330DHCX_DT_ODR_1666Hz
      - 9 # ISM330DHCX_DT_ODR_3332Hz
      - 10 # ISM330DHCX_DT_ODR_6667Hz
      - 11 # ISM330DHCX_DT_ODR_1Hz6

    enum: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]

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

      - 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.

      - 0 # ISM330DHCX_DT_ODR_OFF
      - 1 # ISM330DHCX_DT_ODR_12Hz5
      - 2 # ISM330DHCX_DT_ODR_26H
      - 3 # ISM330DHCX_DT_ODR_52Hz
      - 4 # ISM330DHCX_DT_ODR_104Hz
      - 5 # ISM330DHCX_DT_ODR_208Hz
      - 6 # ISM330DHCX_DT_ODR_416Hz
      - 7 # ISM330DHCX_DT_ODR_833Hz
      - 8 # ISM330DHCX_DT_ODR_1666Hz
      - 9 # ISM330DHCX_DT_ODR_3332Hz
      - 10 # ISM330DHCX_DT_ODR_6667Hz

    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.

      - 125  # +/- 125dps
      - 250  # +/- 250dps
      - 500  # +/- 500dps
      - 1000 # +/- 1000dps
      - 2000 # +/- 2000dps

    enum: [125, 250, 500, 1000, 2000]
