1*4882a593Smuzhiyun# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) 2*4882a593Smuzhiyun%YAML 1.2 3*4882a593Smuzhiyun--- 4*4882a593Smuzhiyun$id: http://devicetree.org/schemas/pinctrl/pinctrl-mt8192.yaml# 5*4882a593Smuzhiyun$schema: http://devicetree.org/meta-schemas/core.yaml# 6*4882a593Smuzhiyun 7*4882a593Smuzhiyuntitle: Mediatek MT8192 Pin Controller 8*4882a593Smuzhiyun 9*4882a593Smuzhiyunmaintainers: 10*4882a593Smuzhiyun - Sean Wang <sean.wang@mediatek.com> 11*4882a593Smuzhiyun 12*4882a593Smuzhiyundescription: | 13*4882a593Smuzhiyun The Mediatek's Pin controller is used to control SoC pins. 14*4882a593Smuzhiyun 15*4882a593Smuzhiyunproperties: 16*4882a593Smuzhiyun compatible: 17*4882a593Smuzhiyun const: mediatek,mt8192-pinctrl 18*4882a593Smuzhiyun 19*4882a593Smuzhiyun gpio-controller: true 20*4882a593Smuzhiyun 21*4882a593Smuzhiyun '#gpio-cells': 22*4882a593Smuzhiyun description: | 23*4882a593Smuzhiyun Number of cells in GPIO specifier. Since the generic GPIO binding is used, 24*4882a593Smuzhiyun the amount of cells must be specified as 2. See the below 25*4882a593Smuzhiyun mentioned gpio binding representation for description of particular cells. 26*4882a593Smuzhiyun const: 2 27*4882a593Smuzhiyun 28*4882a593Smuzhiyun gpio-ranges: 29*4882a593Smuzhiyun description: gpio valid number range. 30*4882a593Smuzhiyun maxItems: 1 31*4882a593Smuzhiyun 32*4882a593Smuzhiyun reg: 33*4882a593Smuzhiyun description: | 34*4882a593Smuzhiyun Physical address base for gpio base registers. There are 11 GPIO 35*4882a593Smuzhiyun physical address base in mt8192. 36*4882a593Smuzhiyun maxItems: 11 37*4882a593Smuzhiyun 38*4882a593Smuzhiyun reg-names: 39*4882a593Smuzhiyun description: | 40*4882a593Smuzhiyun Gpio base register names. 41*4882a593Smuzhiyun maxItems: 11 42*4882a593Smuzhiyun 43*4882a593Smuzhiyun interrupt-controller: true 44*4882a593Smuzhiyun 45*4882a593Smuzhiyun '#interrupt-cells': 46*4882a593Smuzhiyun const: 2 47*4882a593Smuzhiyun 48*4882a593Smuzhiyun interrupts: 49*4882a593Smuzhiyun description: The interrupt outputs to sysirq. 50*4882a593Smuzhiyun maxItems: 1 51*4882a593Smuzhiyun 52*4882a593Smuzhiyun#PIN CONFIGURATION NODES 53*4882a593SmuzhiyunpatternProperties: 54*4882a593Smuzhiyun '^pins': 55*4882a593Smuzhiyun type: object 56*4882a593Smuzhiyun description: | 57*4882a593Smuzhiyun A pinctrl node should contain at least one subnodes representing the 58*4882a593Smuzhiyun pinctrl groups available on the machine. Each subnode will list the 59*4882a593Smuzhiyun pins it needs, and how they should be configured, with regard to muxer 60*4882a593Smuzhiyun configuration, pullups, drive strength, input enable/disable and 61*4882a593Smuzhiyun input schmitt. 62*4882a593Smuzhiyun An example of using macro: 63*4882a593Smuzhiyun pincontroller { 64*4882a593Smuzhiyun /* GPIO0 set as multifunction GPIO0 */ 65*4882a593Smuzhiyun state_0_node_a { 66*4882a593Smuzhiyun pinmux = <PINMUX_GPIO0__FUNC_GPIO0>; 67*4882a593Smuzhiyun }; 68*4882a593Smuzhiyun /* GPIO1 set as multifunction PWM */ 69*4882a593Smuzhiyun state_0_node_b { 70*4882a593Smuzhiyun pinmux = <PINMUX_GPIO1__FUNC_PWM_1>; 71*4882a593Smuzhiyun }; 72*4882a593Smuzhiyun }; 73*4882a593Smuzhiyun $ref: "pinmux-node.yaml" 74*4882a593Smuzhiyun 75*4882a593Smuzhiyun properties: 76*4882a593Smuzhiyun pinmux: 77*4882a593Smuzhiyun description: | 78*4882a593Smuzhiyun Integer array, represents gpio pin number and mux setting. 79*4882a593Smuzhiyun Supported pin number and mux varies for different SoCs, and are defined 80*4882a593Smuzhiyun as macros in dt-bindings/pinctrl/<soc>-pinfunc.h directly. 81*4882a593Smuzhiyun 82*4882a593Smuzhiyun drive-strength: 83*4882a593Smuzhiyun description: | 84*4882a593Smuzhiyun It can support some arguments, such as MTK_DRIVE_4mA, MTK_DRIVE_6mA, etc. See 85*4882a593Smuzhiyun dt-bindings/pinctrl/mt65xx.h. It can only support 2/4/6/8/10/12/14/16mA in mt8192. 86*4882a593Smuzhiyun enum: [2, 4, 6, 8, 10, 12, 14, 16] 87*4882a593Smuzhiyun 88*4882a593Smuzhiyun bias-pull-down: true 89*4882a593Smuzhiyun 90*4882a593Smuzhiyun bias-pull-up: true 91*4882a593Smuzhiyun 92*4882a593Smuzhiyun bias-disable: true 93*4882a593Smuzhiyun 94*4882a593Smuzhiyun output-high: true 95*4882a593Smuzhiyun 96*4882a593Smuzhiyun output-low: true 97*4882a593Smuzhiyun 98*4882a593Smuzhiyun input-enable: true 99*4882a593Smuzhiyun 100*4882a593Smuzhiyun input-disable: true 101*4882a593Smuzhiyun 102*4882a593Smuzhiyun input-schmitt-enable: true 103*4882a593Smuzhiyun 104*4882a593Smuzhiyun input-schmitt-disable: true 105*4882a593Smuzhiyun 106*4882a593Smuzhiyun required: 107*4882a593Smuzhiyun - pinmux 108*4882a593Smuzhiyun 109*4882a593Smuzhiyun additionalProperties: false 110*4882a593Smuzhiyun 111*4882a593Smuzhiyunrequired: 112*4882a593Smuzhiyun - compatible 113*4882a593Smuzhiyun - reg 114*4882a593Smuzhiyun - interrupts 115*4882a593Smuzhiyun - interrupt-controller 116*4882a593Smuzhiyun - '#interrupt-cells' 117*4882a593Smuzhiyun - gpio-controller 118*4882a593Smuzhiyun - '#gpio-cells' 119*4882a593Smuzhiyun - gpio-ranges 120*4882a593Smuzhiyun 121*4882a593SmuzhiyunadditionalProperties: false 122*4882a593Smuzhiyun 123*4882a593Smuzhiyunexamples: 124*4882a593Smuzhiyun - | 125*4882a593Smuzhiyun #include <dt-bindings/pinctrl/mt8192-pinfunc.h> 126*4882a593Smuzhiyun #include <dt-bindings/interrupt-controller/arm-gic.h> 127*4882a593Smuzhiyun pio: pinctrl@10005000 { 128*4882a593Smuzhiyun compatible = "mediatek,mt8192-pinctrl"; 129*4882a593Smuzhiyun reg = <0x10005000 0x1000>, 130*4882a593Smuzhiyun <0x11c20000 0x1000>, 131*4882a593Smuzhiyun <0x11d10000 0x1000>, 132*4882a593Smuzhiyun <0x11d30000 0x1000>, 133*4882a593Smuzhiyun <0x11d40000 0x1000>, 134*4882a593Smuzhiyun <0x11e20000 0x1000>, 135*4882a593Smuzhiyun <0x11e70000 0x1000>, 136*4882a593Smuzhiyun <0x11ea0000 0x1000>, 137*4882a593Smuzhiyun <0x11f20000 0x1000>, 138*4882a593Smuzhiyun <0x11f30000 0x1000>, 139*4882a593Smuzhiyun <0x1000b000 0x1000>; 140*4882a593Smuzhiyun reg-names = "iocfg0", "iocfg_rm", "iocfg_bm", 141*4882a593Smuzhiyun "iocfg_bl", "iocfg_br", "iocfg_lm", 142*4882a593Smuzhiyun "iocfg_lb", "iocfg_rt", "iocfg_lt", 143*4882a593Smuzhiyun "iocfg_tl", "eint"; 144*4882a593Smuzhiyun gpio-controller; 145*4882a593Smuzhiyun #gpio-cells = <2>; 146*4882a593Smuzhiyun gpio-ranges = <&pio 0 0 220>; 147*4882a593Smuzhiyun interrupt-controller; 148*4882a593Smuzhiyun interrupts = <GIC_SPI 212 IRQ_TYPE_LEVEL_HIGH 0>; 149*4882a593Smuzhiyun #interrupt-cells = <2>; 150*4882a593Smuzhiyun 151*4882a593Smuzhiyun pins { 152*4882a593Smuzhiyun pinmux = <PINMUX_GPIO0__FUNC_GPIO0>; 153*4882a593Smuzhiyun output-low; 154*4882a593Smuzhiyun }; 155*4882a593Smuzhiyun }; 156