# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
%YAML 1.2
---
$id: http://devicetree.org/schemas/pinctrl/toshiba,visconti-pinctrl.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#

title: Toshiba Visconti TMPV770x pin mux/config controller

maintainers:
  - Nobuhiro Iwamatsu <nobuhiro1.iwamatsu@toshiba.co.jp>

description:
  Toshiba's Visconti ARM SoC a pin mux/config controller.

properties:
  compatible:
    enum:
      - toshiba,tmpv7708-pinctrl

  reg:
    maxItems: 1

allOf:
  - $ref: "pinctrl.yaml#"

required:
  - compatible
  - reg

patternProperties:
  '-pins$':
    type: object
    description: |
      A pinctrl node should contain at least one subnodes representing the
      pinctrl groups available on the machine. Each subnode will list the
      pins it needs, and how they should be configured, with regard to muxer
      configuration, pullups, drive strength.
    $ref: "pinmux-node.yaml"
    additionalProperties: false

    properties:
      function:
        description:
          Function to mux.
        $ref: "/schemas/types.yaml#/definitions/string"
        enum: [i2c0, i2c1, i2c2, i2c3, i2c4, i2c5, i2c6, i2c7, i2c8,
               spi0, spi1, spi2, spi3, spi4, spi5, spi6,
               uart0, uart1, uart2, uart3, pwm, pcmif_out, pcmif_in]

      groups:
        description:
          Name of the pin group to use for the functions.
        $ref: "/schemas/types.yaml#/definitions/string"
        enum: [i2c0_grp, i2c1_grp, i2c2_grp, i2c3_grp, i2c4_grp,
               i2c5_grp, i2c6_grp, i2c7_grp, i2c8_grp,
               spi0_grp, spi0_cs0_grp, spi0_cs1_grp, spi0_cs2_grp,
               spi1_grp, spi2_grp, spi3_grp, spi4_grp, spi5_grp, spi6_grp,
               uart0_grp, uart1_grp, uart2_grp, uart3_grp,
               pwm0_gpio4_grp, pwm0_gpio8_grp, pwm0_gpio12_grp,
               pwm0_gpio16_grp, pwm1_gpio5_grp, pwm1_gpio9_grp,
               pwm1_gpio13_grp, pwm1_gpio17_grp, pwm2_gpio6_grp,
               pwm2_gpio10_grp, pwm2_gpio14_grp, pwm2_gpio18_grp,
               pwm3_gpio7_grp, pwm3_gpio11_grp, pwm3_gpio15_grp,
               pwm3_gpio19_grp, pcmif_out_grp, pcmif_in_grp]

      drive-strength:
        enum: [2, 4, 6, 8, 16, 24, 32]
        default: 2
        description:
          Selects the drive strength for the specified pins, in mA.

      bias-pull-up: true

      bias-pull-down: true

      bias-disable: true

additionalProperties: false

examples:
  # Pinmux controller node
  - |
    soc {
        #address-cells = <2>;
        #size-cells = <2>;

        pmux: pinmux@24190000 {
            compatible = "toshiba,tmpv7708-pinctrl";
            reg = <0 0x24190000 0 0x10000>;

            spi0_pins: spi0-pins {
                function = "spi0";
                groups = "spi0_grp";
            };
        };
    };
