# 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:
  - name: base.yaml
  - name: pincfg-node-group.yaml
    child-binding:
      child-binding:
        property-allowlist:
          - drive-open-drain
          - bias-pull-up
          - bias-pull-down
          - drive-push-pull
          - input-schmitt-enable

child-binding:
  description: LPC IOCON pin controller pin group
  child-binding:
    description: |
      LPC IOCON pin controller pin configuration node
    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:
        required: false
        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
