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

include: sensor-device.yaml

properties:
    drdy-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.

    drdy-int:
      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.

    range:
      type: int
      default: 2
      description: Range in g. Default is power-up configuration.
      enum:
        - 16 # 16g (1.952 mg/LSB)
        -  8 #  8g (0.976 mg/LSB)
        -  4 #  4g (0.488 mg/LSB)
        -  2 #  2g (0.244 mg/LSB)

    power-mode:
      type: int
      default: 0
      description: Specify the sensor power mode. Default is power-up configuration.
      enum:
        - 0 # Low Power M1
        - 1 # Low Power M2
        - 2 # Low Power M3
        - 3 # Low Power M4
        - 4 # High Performance

    # tap and tap-tap configuration section
    # All default values are selected to match the power-up values.
    # tap and tap-tap events can be generated on INT1 only.

    tap-mode:
      type: int
      default: 0
      description: Tap mode. Default is power-up configuration.
      enum:
        - 0 # Only Single Tap
        - 1 # Single and Double Tap

    tap-threshold:
      type: array
      default: [0, 0, 0]
      description: |
        Tap X/Y/Z axes threshold. Default is power-up configuration.
        (X/Y/Z values range from 0x00 to 0x1F)

        Thresholds to start the tap-event detection procedure on the X/Y/Z axes.
        Threshold values for each axis are unsigned 5-bit corresponding
        to a 2g acceleration full-scale range. A threshold value equal to zero
        corresponds to disable the tap detection on that axis.

        For example, if you want to set the threshold for X to 12, for Z to 14
        and want to disable tap detection on Y, you should specify in Device Tree

            tap-threshold = <12>, <0>, <14>

        which is equivalent to X = 12 * 2g/32 = 750mg and Z = 14 * 2g/32 = 875mg.

    tap-shock:
      type: int
      default: 0x0
      description: |
        Tap shock value. Default is power-up configuration.
        (values range from 0x0 to 0x3)
        This register represents the maximum time of an over-threshold signal
        detection to be recognized as a tap event. Where 0 equals 4*1/ODR and
        1LSB = 8*1/ODR.

    tap-latency:
      type: int
      default: 0x0
      description: |
        Tap latency. Default is power-up configuration.
        (values range from 0x0 to 0xF)
        When double-tap recognition is enabled, this register expresses the
        maximum time between two successive detected taps to determine a
        double-tap event. Where 0 equals 16*1/ODR and 1LSB = 32*1/ODR.

    tap-quiet:
      type: int
      default: 0x0
      description: |
        Expected quiet time after a tap detection. Default is power-up configuration.
        (values range from 0x0 to 0x3)
        This register represents the time after the first detected tap in which
        there must not be any overthreshold event. Where 0 equals 2*1/ODR
        and 1LSB = 4*1/ODR.
