# Copyright 2023 NXP
# SPDX-License-Identifier: Apache-2.0

description: |
  Quadrature Decoder driver which processes encoder signals to determine motor revs
  with the cooperation of S32 IP blocks- eMIOS, TRGMUX and LCU.
  The sensor qdec application can be used for testing this driver.
  The following example uses TRGMUX IN2 and IN3 to connect to LCU1 LC0 I0 and I1.
  LCU1 LC0 O2 and O3 connect to eMIOS0 CH6(Clockwise rotation) and
  CH7(Counter Clockwise rotation) via TRGMUX_INT_OUT37 and TRGMUX_INT_OUT38
  micro-ticks-per-rev is set as per vehicle gearbox reduction.
  lcu output filters are set to capture maximum speed sensitivity and avoid channel noise.

   qdec0 {
        compatible = "nxp,qdec-s32";
        pinctrl-0 = <&qdec_s32>;
        pinctrl-names = "default";
        micro-ticks-per-rev = <685440000>;
        status = "okay";
        trgmux = <&trgmux>;
        trgmux-io-config =
            <0 TRGMUX_IP_OUTPUT_EMIOS0_CH5_9_IPP_IND_CH6 TRGMUX_IP_INPUT_LCU1_LC0_OUT_I2>,
            <1 TRGMUX_IP_OUTPUT_EMIOS0_CH5_9_IPP_IND_CH7 TRGMUX_IP_INPUT_LCU1_LC0_OUT_I3>,
            <2 TRGMUX_IP_OUTPUT_LCU1_0_INP_I0            TRGMUX_IP_INPUT_SIUL2_IN2>,
            <3 TRGMUX_IP_OUTPUT_LCU1_0_INP_I1            TRGMUX_IP_INPUT_SIUL2_IN3>;
        lcu = <&lcu1>;
        lcu-input-idx = <1>;
            <LCU_IP_IN_0 LCU_IP_IN_1
            LCU_IP_IN_2 LCU_IP_IN_3>;
        lcu-mux-sel =
            <LCU_IP_MUX_SEL_LU_IN_0 LCU_IP_MUX_SEL_LU_IN_1
            LCU_IP_MUX_SEL_LU_OUT_0 LCU_IP_MUX_SEL_LU_OUT_1>;
        lcu-output-filter-config =
            /* LCU Out HW ID, Rise Filter, Fall Filter */
            <0 5 5>, /* LCU O0 */
            <1 5 5>, /* LCU O1 */
            <2 2 2>, /* LCU O2 */
            <3 2 2>; /* LCU O3 */
        emios = <&emios0>;
        emios-channels = <6 7>;
   };

compatible: "nxp,qdec-s32"

include: [pinctrl-device.yaml, sensor-device.yaml]

properties:
  micro-ticks-per-rev:
    type: int
    description: |
      This is a number that is used to determine how many revolutions * 1000000
      were done based on the current counter's value.

  trgmux:
    type: phandle
    description: |
      phandle to the TRGMUX node.

  trgmux-io-config:
    type: array
    description: |
      This gives the logic triggers configuration of TRGMUX module.
      It contains 3 values for each of the 4 logic triggers used:
        logic trigger number, output, input.
      Hence, it's length should be '12'.
      Ex:
        trgmux-io-config =
          <0 TRGMUX_IP_OUTPUT_EMIOS0_CH5_9_IPP_IND_CH6 TRGMUX_IP_INPUT_LCU1_LC0_OUT_I2>,
          <1 TRGMUX_IP_OUTPUT_EMIOS0_CH5_9_IPP_IND_CH7 TRGMUX_IP_INPUT_LCU1_LC0_OUT_I3>,
          <2 TRGMUX_IP_OUTPUT_LCU1_0_INP_I0            TRGMUX_IP_INPUT_SIUL2_IN2>,
          <3 TRGMUX_IP_OUTPUT_LCU1_0_INP_I1            TRGMUX_IP_INPUT_SIUL2_IN3>;

  lcu:
    type: phandle
    description: |
      phandle to the LCU node.

  emios:
    type: phandle
    description: |
      phandle to the eMIOS node.

  lcu-output-filter-config:
    type: array
    description: |
      This array gives the configuration for each of the four outputs of LCU module.
      It contains the following for each output: hardware output id, rise filter and fall filter.
      The filters specify the delay in terms of CORE_CLK between the input and output line of LC.
        We use this delay to generate short pulses at the rising and falling edges of input pulse.
      It's length should be '12' - 3 entries for each of the four LCU outputs.
      Ex: lcu-output-filter-config =
        /* LCU Out HW ID, Rise Filter, Fall Filter */
        <0 5 5>, /* LCU O0 */
        <1 5 5>, /* LCU O1 */
        <2 2 2>, /* LCU O2 */
        <3 2 2>; /* LCU O3 */

  lcu-mux-sel:
    type: array
    description: |
      This array configures the sources of input to the LCU module by programming the muxsel.

  lcu-input-idx:
    type: array
    description: |
      This array configures the input indices to the LCU module which help to determine the
      Logic Cell number used inside an LCU instance.

  emios-channels:
    type: array
    description: |
      This is the array containing 2 emios channel TypeG numbers used by the qdec.
