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

description: FXOS8700 6-axis accelerometer/magnetometer sensor

include: sensor-device.yaml

properties:
    reset-gpios:
      type: phandle-array
      description: |
        RST pin
        This pin defaults to active high when consumed by the sensor.
        The property value should ensure the flags properly describe
        the signal that is presented to the driver.

    int1-gpios:
      type: phandle-array
      description: |
        INT1 pin
        This pin defaults to active low when produced by the sensor.
        The property value should ensure the flags properly describe
        the signal that is presented to the driver.

    int2-gpios:
      type: phandle-array
      description: |
        INT2 pin
        This pin defaults to active low when produced by the sensor.
        The property value should ensure the flags properly describe
        the signal that is presented to the driver.

    range:
      type: int
      default: 8
      description: Range in g
      enum:
        - 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: Power mode
      enum:
        - 0 # Normal
        - 1 # Low noise, low power
        - 2 # High resolution
        - 3 # Low power

    pulse-cfg:
      type: int
      default: 0x3f
      description: Pulse configuration register

    pulse-thsx:
      type: int
      default: 0x20
      description: |
        Pulse X-axis threshold
        Threshold to start the pulse-event detection procedure on the X-axis.
        Threshold values for each axis are unsigned 7-bit numbers with a fixed
        resolution of 0.063 g/LSB, corresponding to an 8g acceleration
        full-scale range.

    pulse-thsy:
      type: int
      default: 0x20
      description: |
        Pulse Y-axis threshold
        Threshold to start the pulse-event detection procedure on the Y-axis.
        Threshold values for each axis are unsigned 7-bit numbers with a fixed
        resolution of 0.063 g/LSB, corresponding to an 8g acceleration
        full-scale range.

    pulse-thsz:
      type: int
      default: 0x40
      description: |
        Pulse Z-axis threshold
        Threshold to start the pulse-event detection procedure on the Z-axis.
        Threshold values for each axis are unsigned 7-bit numbers with a fixed
        resolution of 0.063 g/LSB, corresponding to an 8g acceleration
        full-scale range.

    pulse-tmlt:
      type: int
      default: 0x18
      description: |
        Pulse time limit
        The maximum time interval that can elapse between the start of the
        acceleration on the selected channel exceeding the specified threshold
        and the end when the channel acceleration goes back below the specified
        threshold. The resolution depends upon the sample rate (ODR) and the
        high-pass filter configuration (HP_FILTER_CUTOFF[pls_hpf_en]). For
        ODR=800 Hz and pls_hpf_en=0, the resolution is 0.625 ms/LSB.

    pulse-ltcy:
      type: int
      default: 0x28
      description: |
        Pulse latency
        The time interval that starts after the first pulse detection where the
        pulse-detection function ignores the start of a new pulse. The
        resolution depends upon the sample rate (ODR) and the high-pass filter
        configuration (HP_FILTER_CUTOFF[pls_hpf_en]). For ODR=800 Hz and
        pls_hpf_en=0, the resolution is 1.25 ms/LSB.

    pulse-wind:
      type: int
      default: 0x3c
      description: |
        Pulse window
        The maximum interval of time that can elapse after the end of the
        latency interval in which the start of the second pulse event must be
        detected provided the device has been configured for double pulse
        detection. The detected second pulse width must be shorter than the
        time limit constraint specified by the PULSE_TMLT register, but the end
        of the double pulse need not finish within the time specified by the
        PULSE_WIND register. The resolution depends upon the sample rate (ODR)
        and the high-pass filter configuration (HP_FILTER_CUTOFF[pls_hpf_en]).
        For ODR=800 Hz and pls_hpf_en=0, the resolution is 1.25 ms/LSB.

    mag-vecm-cfg:
      type: int
      default: 0x4e
      description: Magnetic vector-magnitude configuration register

    mag-vecm-ths-msb:
      type: int
      default: 0x00
      description: |
        Magnetic vector-magnitude threshold most significant byte.
        Resolution is 0.1 uT/LSB.

    mag-vecm-ths-lsb:
      type: int
      default: 0x5a
      description: |
        Magnetic vector-magnitude threshold least significant byte.
        Resolution is 0.1 uT/LSB.
