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