xref: /openbmc/linux/Documentation/devicetree/bindings/pinctrl/nuvoton,wpcm450-pinctrl.yaml (revision 4f2c0a4acffbec01079c28f839422e64ddeff004)
11a1e33b3SJonathan Neuschäfer# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
21a1e33b3SJonathan Neuschäfer%YAML 1.2
31a1e33b3SJonathan Neuschäfer---
41a1e33b3SJonathan Neuschäfer$id: http://devicetree.org/schemas/pinctrl/nuvoton,wpcm450-pinctrl.yaml#
51a1e33b3SJonathan Neuschäfer$schema: http://devicetree.org/meta-schemas/core.yaml#
61a1e33b3SJonathan Neuschäfer
71a1e33b3SJonathan Neuschäfertitle: Nuvoton WPCM450 pin control and GPIO
81a1e33b3SJonathan Neuschäfer
91a1e33b3SJonathan Neuschäfermaintainers:
101a1e33b3SJonathan Neuschäfer  - Jonathan Neuschäfer <j.neuschaefer@gmx.net>
111a1e33b3SJonathan Neuschäfer
121a1e33b3SJonathan Neuschäferproperties:
131a1e33b3SJonathan Neuschäfer  compatible:
141a1e33b3SJonathan Neuschäfer    const: nuvoton,wpcm450-pinctrl
151a1e33b3SJonathan Neuschäfer
161a1e33b3SJonathan Neuschäfer  reg:
171a1e33b3SJonathan Neuschäfer    maxItems: 1
181a1e33b3SJonathan Neuschäfer
191a1e33b3SJonathan Neuschäfer  '#address-cells':
201a1e33b3SJonathan Neuschäfer    const: 1
211a1e33b3SJonathan Neuschäfer
221a1e33b3SJonathan Neuschäfer  '#size-cells':
231a1e33b3SJonathan Neuschäfer    const: 0
241a1e33b3SJonathan Neuschäfer
251a1e33b3SJonathan NeuschäferpatternProperties:
261a1e33b3SJonathan Neuschäfer  # There are three kinds of subnodes:
271a1e33b3SJonathan Neuschäfer  # 1. a GPIO controller node for each GPIO bank
281a1e33b3SJonathan Neuschäfer  # 2. a pinmux node configures pin muxing for a group of pins (e.g. rmii2)
291a1e33b3SJonathan Neuschäfer  # 3. a pinconf node configures properties of a single pin
301a1e33b3SJonathan Neuschäfer
311a1e33b3SJonathan Neuschäfer  "^gpio@[0-7]$":
321a1e33b3SJonathan Neuschäfer    type: object
33*9194e0f8SRob Herring    additionalProperties: false
341a1e33b3SJonathan Neuschäfer
351a1e33b3SJonathan Neuschäfer    description:
361a1e33b3SJonathan Neuschäfer      Eight GPIO banks (gpio@0 to gpio@7), that each contain between 14 and 18
371a1e33b3SJonathan Neuschäfer      GPIOs. Some GPIOs support interrupts.
381a1e33b3SJonathan Neuschäfer
391a1e33b3SJonathan Neuschäfer    properties:
401a1e33b3SJonathan Neuschäfer      reg:
411a1e33b3SJonathan Neuschäfer        minimum: 0
421a1e33b3SJonathan Neuschäfer        maximum: 7
431a1e33b3SJonathan Neuschäfer
441a1e33b3SJonathan Neuschäfer      gpio-controller: true
451a1e33b3SJonathan Neuschäfer
461a1e33b3SJonathan Neuschäfer      "#gpio-cells":
471a1e33b3SJonathan Neuschäfer        const: 2
481a1e33b3SJonathan Neuschäfer
491a1e33b3SJonathan Neuschäfer      interrupt-controller: true
501a1e33b3SJonathan Neuschäfer
511a1e33b3SJonathan Neuschäfer      "#interrupt-cells":
521a1e33b3SJonathan Neuschäfer        const: 2
531a1e33b3SJonathan Neuschäfer
541a1e33b3SJonathan Neuschäfer      interrupts:
551a1e33b3SJonathan Neuschäfer        maxItems: 3
561a1e33b3SJonathan Neuschäfer        description:
571a1e33b3SJonathan Neuschäfer          The interrupts associated with this GPIO bank
581a1e33b3SJonathan Neuschäfer
591a1e33b3SJonathan Neuschäfer    required:
601a1e33b3SJonathan Neuschäfer      - reg
611a1e33b3SJonathan Neuschäfer      - gpio-controller
621a1e33b3SJonathan Neuschäfer      - '#gpio-cells'
631a1e33b3SJonathan Neuschäfer
641a1e33b3SJonathan Neuschäfer  "^mux-":
651a1e33b3SJonathan Neuschäfer    $ref: pinmux-node.yaml#
661a1e33b3SJonathan Neuschäfer
671a1e33b3SJonathan Neuschäfer    properties:
681a1e33b3SJonathan Neuschäfer      groups:
691a1e33b3SJonathan Neuschäfer        description:
701a1e33b3SJonathan Neuschäfer          One or more groups of pins to mux to a certain function
711a1e33b3SJonathan Neuschäfer        items:
721a1e33b3SJonathan Neuschäfer          enum: [ smb3, smb4, smb5, scs1, scs2, scs3, smb0, smb1, smb2, bsp,
731a1e33b3SJonathan Neuschäfer                  hsp1, hsp2, r1err, r1md, rmii2, r2err, r2md, kbcc, dvo,
741a1e33b3SJonathan Neuschäfer                  clko, smi, uinc, gspi, mben, xcs2, xcs1, sdio, sspi, fi0,
751a1e33b3SJonathan Neuschäfer                  fi1, fi2, fi3, fi4, fi5, fi6, fi7, fi8, fi9, fi10, fi11,
761a1e33b3SJonathan Neuschäfer                  fi12, fi13, fi14, fi15, pwm0, pwm1, pwm2, pwm3, pwm4, pwm5,
771a1e33b3SJonathan Neuschäfer                  pwm6, pwm7, hg0, hg1, hg2, hg3, hg4, hg5, hg6, hg7 ]
781a1e33b3SJonathan Neuschäfer      function:
791a1e33b3SJonathan Neuschäfer        description:
801a1e33b3SJonathan Neuschäfer          The function that a group of pins is muxed to
811a1e33b3SJonathan Neuschäfer        enum: [ smb3, smb4, smb5, scs1, scs2, scs3, smb0, smb1, smb2, bsp,
821a1e33b3SJonathan Neuschäfer                hsp1, hsp2, r1err, r1md, rmii2, r2err, r2md, kbcc, dvo0,
831a1e33b3SJonathan Neuschäfer                dvo1, dvo2, dvo3, dvo4, dvo5, dvo6, dvo7, clko, smi, uinc,
841a1e33b3SJonathan Neuschäfer                gspi, mben, xcs2, xcs1, sdio, sspi, fi0, fi1, fi2, fi3, fi4,
851a1e33b3SJonathan Neuschäfer                fi5, fi6, fi7, fi8, fi9, fi10, fi11, fi12, fi13, fi14, fi15,
861a1e33b3SJonathan Neuschäfer                pwm0, pwm1, pwm2, pwm3, pwm4, pwm5, pwm6, pwm7, hg0, hg1,
871a1e33b3SJonathan Neuschäfer                hg2, hg3, hg4, hg5, hg6, hg7, gpio ]
881a1e33b3SJonathan Neuschäfer
891a1e33b3SJonathan Neuschäfer    dependencies:
901a1e33b3SJonathan Neuschäfer      groups: [ function ]
911a1e33b3SJonathan Neuschäfer      function: [ groups ]
921a1e33b3SJonathan Neuschäfer
931a1e33b3SJonathan Neuschäfer    additionalProperties: false
941a1e33b3SJonathan Neuschäfer
951a1e33b3SJonathan Neuschäfer  "^cfg-":
961a1e33b3SJonathan Neuschäfer    $ref: pincfg-node.yaml#
971a1e33b3SJonathan Neuschäfer
981a1e33b3SJonathan Neuschäfer    properties:
991a1e33b3SJonathan Neuschäfer      pins:
1001a1e33b3SJonathan Neuschäfer        description:
1011a1e33b3SJonathan Neuschäfer          A list of pins to configure in certain ways, such as enabling
1021a1e33b3SJonathan Neuschäfer          debouncing
1031a1e33b3SJonathan Neuschäfer        items:
1041a1e33b3SJonathan Neuschäfer          pattern: "^gpio1?[0-9]{1,2}$"
1051a1e33b3SJonathan Neuschäfer
1061a1e33b3SJonathan Neuschäfer      input-debounce: true
1071a1e33b3SJonathan Neuschäfer
1081a1e33b3SJonathan Neuschäfer    additionalProperties: false
1091a1e33b3SJonathan Neuschäfer
1101a1e33b3SJonathan Neuschäferrequired:
1111a1e33b3SJonathan Neuschäfer  - compatible
1121a1e33b3SJonathan Neuschäfer  - reg
1131a1e33b3SJonathan Neuschäfer
1141a1e33b3SJonathan NeuschäferadditionalProperties: false
1151a1e33b3SJonathan Neuschäfer
1161a1e33b3SJonathan Neuschäferexamples:
1171a1e33b3SJonathan Neuschäfer  - |
1181a1e33b3SJonathan Neuschäfer    #include <dt-bindings/interrupt-controller/irq.h>
1191a1e33b3SJonathan Neuschäfer    #include <dt-bindings/gpio/gpio.h>
1201a1e33b3SJonathan Neuschäfer    pinctrl: pinctrl@b8003000 {
1211a1e33b3SJonathan Neuschäfer      compatible = "nuvoton,wpcm450-pinctrl";
1221a1e33b3SJonathan Neuschäfer      reg = <0xb8003000 0x1000>;
1231a1e33b3SJonathan Neuschäfer      #address-cells = <1>;
1241a1e33b3SJonathan Neuschäfer      #size-cells = <0>;
1251a1e33b3SJonathan Neuschäfer
1261a1e33b3SJonathan Neuschäfer      gpio0: gpio@0 {
1271a1e33b3SJonathan Neuschäfer        reg = <0>;
1281a1e33b3SJonathan Neuschäfer        gpio-controller;
1291a1e33b3SJonathan Neuschäfer        #gpio-cells = <2>;
1301a1e33b3SJonathan Neuschäfer        interrupts = <2 IRQ_TYPE_LEVEL_HIGH>,
1311a1e33b3SJonathan Neuschäfer                     <3 IRQ_TYPE_LEVEL_HIGH>,
1321a1e33b3SJonathan Neuschäfer                     <4 IRQ_TYPE_LEVEL_HIGH>;
1331a1e33b3SJonathan Neuschäfer      };
1341a1e33b3SJonathan Neuschäfer
1351a1e33b3SJonathan Neuschäfer      mux-rmii2 {
1361a1e33b3SJonathan Neuschäfer        groups = "rmii2";
1371a1e33b3SJonathan Neuschäfer        function = "rmii2";
1381a1e33b3SJonathan Neuschäfer      };
1391a1e33b3SJonathan Neuschäfer
1401a1e33b3SJonathan Neuschäfer      pinmux_uid: mux-uid {
1411a1e33b3SJonathan Neuschäfer        groups = "gspi", "sspi";
1421a1e33b3SJonathan Neuschäfer        function = "gpio";
1431a1e33b3SJonathan Neuschäfer      };
1441a1e33b3SJonathan Neuschäfer
1451a1e33b3SJonathan Neuschäfer      pinctrl_uid: cfg-uid {
1461a1e33b3SJonathan Neuschäfer        pins = "gpio14";
1471a1e33b3SJonathan Neuschäfer        input-debounce = <1>;
1481a1e33b3SJonathan Neuschäfer      };
1491a1e33b3SJonathan Neuschäfer    };
1501a1e33b3SJonathan Neuschäfer
1511a1e33b3SJonathan Neuschäfer    gpio-keys {
1521a1e33b3SJonathan Neuschäfer      compatible = "gpio-keys";
1531a1e33b3SJonathan Neuschäfer      pinctrl-names = "default";
1541a1e33b3SJonathan Neuschäfer      pinctrl-0 = <&pinctrl_uid>, <&pinmux_uid>;
1551a1e33b3SJonathan Neuschäfer
156b1f35971SKrzysztof Kozlowski      button-uid {
1571a1e33b3SJonathan Neuschäfer        label = "UID";
1581a1e33b3SJonathan Neuschäfer        linux,code = <102>;
1591a1e33b3SJonathan Neuschäfer        gpios = <&gpio0 14 GPIO_ACTIVE_HIGH>;
1601a1e33b3SJonathan Neuschäfer      };
1611a1e33b3SJonathan Neuschäfer    };
162