# Copyright (c) 2022 Espressif Systems (Shanghai) Co., Ltd.
# SPDX-License-Identifier: Apache-2.0

description: |

  Espressif's Motor Control Pulse Width Modulator (MCPWM) controller Node

  The MCPWM peripheral is intended for motor and power control.
  It provides six PWM outputs that can be set up to operate in several topologies

  ESP32 contains two MCPWM peripherals: MCPWM0 and MCPWM1

  Each MCPWM peripheral has one clock divider (prescaler), three PWM timers, three PWM operators,
  and a capture module.

  Every PWM operator has two PWM outputs: PWMxA and PWMxB. They can work independently, in symmetric
  and asymmetric configuration. MCPWMxA and MCPWMxB will share the same timer, thus having the same
  operating frequency.

  The driver currently always use the timer x for operator x. Timer 0 will use operator 0 for PWM0A/B.
  Timer 1 will use operator 1 for PWM1A/B, and so on.

  Mapping channel ID:
  Channel 0 -> Timer 0, Operator 0, output PWM0A
  Channel 1 -> Timer 0, Operator 0, output PWM0B
  Channel 2 -> Timer 1, Operator 1, output PWM1A
  Channel 3 -> Timer 1, Operator 1, output PWM1B
  Channel 4 -> Timer 2, Operator 2, output PWM2A
  Channel 5 -> Timer 2, Operator 2, output PWM2B
  Channel 6 -> Capture 0
  Channel 7 -> Capture 1
  Channel 8 -> Capture 2

  Example: Use PWM0A output and capture 0:

  pwm_loopback_0 {
    compatible = "test-pwm-loopback";
    pwms = <&mcpwm0 0 0 PWM_POLARITY_NORMAL>, #Channel 0 -> Output PWM0A
           <&mcpwm0 6 0 PWM_POLARITY_NORMAL>; #Channel 6 -> Capture 0;
  };

  The mapping between the output PWMxA/B or CaptureX and GPIO is done through pinctrl:

    &mcpwm0 {
      pinctrl-0 = <&mcpwm0_default>;
      pinctrl-names = "default";
    }

  The 'mcpwm0_default' node is defined inside the pinctrl node.

    &pinctrl {
      mcpwm0_default: mcpwm0_default {
        group1 {
          pinmux = <MCPWM0_OUT0A_GPIO0>,
            <MCPWM0_OUT0B_GPIO2>,
            <MCPWM0_OUT1A_GPIO4>;
          output-enable;
        };
        group2 {
          pinmux = <MCPWM0_CAP0_GPIO5>;
        };
      };
    };

  Note: Check espressif,esp32-pinctrl.yaml for complete documentation regarding pinctrl.

  Use the prescale-timerX property to configure the timers:

    &mcpwm0 {
      pinctrl-0 = <&mcpwm0_default>;
      pinctrl-names = "default";
      prescale = <255>;
      prescale-timer0 = <103>;
      prescale-timer1 = <0>;
      prescale-timer2 = <255>;
      status = "okay";
    };

compatible: "espressif,esp32-mcpwm"

include: [pwm-controller.yaml, pinctrl-device.yaml, base.yaml]

properties:
  prescale:
    type: int
    required: true
    description: |
      8 bit timer prescale for the global clock.
      Period of PWM_clk = 6.25ns * (PWM_CLK_PRESCALE + 1).

  "#pwm-cells":
    const: 3

  prescale-timer0:
    type: int
    description: |
      8 bit timer prescale for timer 0.
      Period of PT0_clk = Period of PWM_clk * (PWM_TIMER0_PRESCALE + 1).

  prescale-timer1:
    type: int
    description: |
      8 bit timer prescale for timer 1.
      Period of PT1_clk = Period of PWM_clk * (PWM_TIMER1_PRESCALE + 1).

  prescale-timer2:
    type: int
    description: |
      8 bit timer prescale for timer 2.
      Period of PT2_clk = Period of PWM_clk * (PWM_TIMER2_PRESCALE + 1).

pwm-cells:
  - channel
  - period
  - flags
