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

description: |
  LPC pinctrl node. This node defines pin configurations in pin groups, and has
  the 'pinctrl' node identifier in the SOC's devicetree. Each group within the
  pin configuration defines a peripheral's pin configuration. Each numbered
  subgroup represents pins with shared configuration for that peripheral. The
  'pinmux' property of each group selects the pins to be configured with these
  properties. For example, here is a configuration for FLEXCOMM0 pins:

  pinmux_flexcomm0_usart: pinmux_flexcomm0_usart {
    group0 {
      pinmux = <FC0_TXD_SCL_MISO_WS_PIO0_30>,
              <FC0_RXD_SDA_MOSI_DATA_PIO0_29>;
      slew-rate = "standard";
    };
  };

  If only the required properties are supplied, the ICON_PIO register will
  be assigned the following values:
  IOCON_FUNC=<pin mux selection>,
  IOCON_MODE=0,
  IOCON_SLEW=<slew-rate selection>,
  IOCON_INVERT=0,
  IOCON_DIGIMODE=1,
  IOCON_OD=0,

  Values for I2C type and analog type pins have the following defaults:
  IOCON_ASW=0
  IOCON_SSEL=0
  IOCON_FILTEROFF=1
  IOCON_ECS=0
  IOCON_EGP=1
  IOCON_I2CFILTER=1

  Note the inherited pinctrl properties defined below have the following effects:
  drive-open-drain: IOCON_OD=1
  bias-pull-up: IOCON_MODE=2
  bias-pull-down: IOCON_MODE=1
  drive-push-pull: IOCON_MODE=3

  Note: for the LPC11u6x, the following fields are also supported:
  IOCON_HYS- set by input-schmitt-enable
  IOCON_S_MODE- set by nxp,digital-filter
  IOCON_CLKDIV- set by nxp,filter-clock-div
  IOCON_FILTR- set by nxp,analog-filter


compatible: "nxp,lpc-iocon-pinctrl"

include: base.yaml

child-binding:
  description: LPC IOCON pin controller pin group
  child-binding:
    description: |
      LPC IOCON pin controller pin configuration node

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

    properties:
      pinmux:
        required: true
        type: array
        description: |
          Pin mux selection for this group. See the SOC level pinctrl header
          file in NXP's HAL for a defined list of these options.
      slew-rate:
        default: "standard"
        type: string
        enum:
          - "standard"
          - "fast"
        description: |
          Pin output slew rate. Sets the SLEW field in the IOCON register.
          defaults to standard slew rate, due to this being the reset value of
          the field.
          0 SLEW_0- standard mode, output slew rate is slower
          1 SLEW_1- fast mode, output slew rate is faster
      nxp,invert:
        type: boolean
        description: |
          Invert the pin input logic level
      nxp,analog-mode:
        type: boolean
        description: |
          Set the pin to analog mode. Sets DIGIMODE=0, and ASW=1. Only valid for
          analog type pins. Selects ASW0 on LPC55s3x family
      nxp,analog-alt-mode:
        type: boolean
        description: |
          Select the pin's alternate analog mode. Valid on LPC55s3x family SOCs
          when DIGIMODE=0. Only valid for analog type pins. Sets ASW1.
      power-source:
        type: string
        enum:
          - "3v3"
          - "1v8"
        description: |
          Pin output power source. Only valid for I2C mode pins running in I2C
          mode.
      nxp,digital-filter:
        type: boolean
        description: |
          Digital input filter. Noise pulses below 10ms are filtered out.
      nxp,i2c-filter:
        type: string
        enum:
          - "slow"
          - "fast"
        description: |
          I2C glitch filter speed. Only valid for I2C mode pins. Fast mode
          typically only required for High speed I2C.
      nxp,i2c-speed:
        type: string
        enum:
          - "slow"
          - "fast"
        description: |
          I2C speed. Only valid for I2C mode pins. Fast mode should be used for
          fast mode plus I2C.
      nxp,i2c-pullup:
        type: boolean
        description: |
          Enable I2C pullup resistor. If not present, pin is open drain in I2C
          mode. Only valid for I2C mode pins in I2C mode
      nxp,i2c-mode:
        type: boolean
        description: |
          Enable I2C mode for a pin. If not present, pin is in GPIO mode. Only
          valid for I2C mode pins
