# Copyright (c) 2022 Nuvoton Technology Corporation.
# SPDX-License-Identifier: Apache-2.0

description: |
  The Nuvoton pin controller is a singleton node responsible for controlling
  pin function selection and pin properties. For example, you can use these
  nodes to select peripheral pin functions.

  Here is a list of supported standard pin properties:
    - bias-pull-down: Enable pull-down resistor.
    - bias-pull-up: Enable pull-up resistor.
    - drive-open-drain: Output driver is open-drain.

  Custom pin properties for npcx series are available also:
    - pinmux-locked: Lock pinmux configuration for peripheral device
    - pinmux-gpio: Inverse pinmux back to gpio
    - psl-in-mode: Select the assertion detection mode of PSL input
    - psl-in-pol: Select the assertion detection polarity of PSL input

  An example for NPCX7 family, include the chip level pinctrl DTSI file in the
  board level DTS:

    #include <nuvoton/npcx/npcx7/npcx7-pinctrl.dtsi>

  We want to use the I2C0_0 port of the NPCX7M6FB controller and enable the
  internal 3.3V pull-up if its i2c frequency won't exceed 400kHz.

  To change a pin's pinctrl default properties, add a reference to the
  pin in the board's DTS file and set the properties as below:

    &i2c0_0_sda_scl_gpb4_b5 {
      bias-pull-up; /* Enable internal pull-up for i2c0_0 */
      pinmux-locked; /* Lock pinmuxing */
    };

    &i2c0_0 {
      pinctrl-0 = <&i2c0_0_sda_scl_gpb4_b5>;
      pinctrl-names = "default";
    }

compatible: "nuvoton,npcx-pinctrl"

include: base.yaml

child-binding:
    description: |
      NPCX pin controller pin configuration nodes

    include:
      - name: pincfg-node.yaml
        property-allowlist:
          - bias-pull-down
          - bias-pull-up
          - drive-open-drain

    properties:
      pinmux:
        type: phandle
        description: Configurations of pinmux selection
      periph-pupd:
        type: array
        description: |
          A map to PUPD_ENn register/bit that enable pull-up/down of NPCX peripheral devices.
          Please don't overwrite this property in the board-level DT driver.
      psl-offset:
        type: int
        description: |
          Offset to PSL_CTS register that is used for PSL input's status and detection mode.
          Please don't overwrite this property in the board-level DT driver.
      psl-polarity:
        type: phandle
        description: |
          A map to DEVALTn that configures detection polarity of PSL input pads.
          Please don't overwrite this property in the board-level DT driver.
      pinmux-locked:
        type: boolean
        description: Lock pinmux selection
      pinmux-gpio:
        type: boolean
        description: Inverse pinmux selection to GPIO
      psl-in-mode:
        type: string
        description: |
          The assertion detection mode of PSL input selection
          - "level": Select the detection mode to level detection
          - "edge": Select the detection mode to edge detection
        enum:
          - "level"
          - "edge"
      psl-in-pol:
        type: string
        description: |
          The assertion detection polarity of PSL input selection
          - "low-falling": Select the detection polarity to low/falling
          - "high-rising": Select the detection polarity to high/rising
        enum:
          - "low-falling"
          - "high-rising"
