brintos

brintos / linux-shallow public Read only

0
0
Text · 9.1 KiB · 33cb717 Raw
287 lines · yaml
1# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)2%YAML 1.23---4$id: http://devicetree.org/schemas/pinctrl/mediatek,mt8195-pinctrl.yaml#5$schema: http://devicetree.org/meta-schemas/core.yaml#6 7title: MediaTek MT8195 Pin Controller8 9maintainers:10  - Sean Wang <sean.wang@mediatek.com>11 12description:13  The MediaTek's MT8195 Pin controller is used to control SoC pins.14 15properties:16  compatible:17    const: mediatek,mt8195-pinctrl18 19  gpio-controller: true20 21  '#gpio-cells':22    description:23      Number of cells in GPIO specifier. Since the generic GPIO binding is used,24      the amount of cells must be specified as 2. See the below mentioned gpio25      binding representation for description of particular cells.26    const: 227 28  gpio-ranges:29    description: GPIO valid number range.30    maxItems: 131 32  gpio-line-names: true33 34  reg:35    description:36      Physical address base for GPIO base registers. There are 8 GPIO physical37      address base in mt8195.38    maxItems: 839 40  reg-names:41    description:42      GPIO base register names.43    maxItems: 844 45  interrupt-controller: true46 47  '#interrupt-cells':48    const: 249 50  interrupts:51    description: The interrupt outputs to sysirq.52    maxItems: 153 54  mediatek,rsel-resistance-in-si-unit:55    type: boolean56    description:57      Identifying i2c pins pull up/down type which is RSEL. It can support RSEL58      define or si unit value(ohm) to set different resistance.59 60# PIN CONFIGURATION NODES61patternProperties:62  '-pins$':63    type: object64    additionalProperties: false65    patternProperties:66      '^pins':67        type: object68        additionalProperties: false69        description: |70          A pinctrl node should contain at least one subnodes representing the71          pinctrl groups available on the machine. Each subnode will list the72          pins it needs, and how they should be configured, with regard to muxer73          configuration, pullups, drive strength, input enable/disable and input74          schmitt.75          An example of using macro:76          pincontroller {77            /* GPIO0 set as multifunction GPIO0 */78            gpio-pins {79              pins {80                pinmux = <PINMUX_GPIO0__FUNC_GPIO0>;81              }82            };83            /* GPIO8 set as multifunction SDA0 */84            i2c0-pins {85              pins {86                pinmux = <PINMUX_GPIO8__FUNC_SDA0>;87              }88            };89          };90        $ref: pinmux-node.yaml91 92        properties:93          pinmux:94            description:95              Integer array, represents gpio pin number and mux setting.96              Supported pin number and mux varies for different SoCs, and are97              defined as macros in dt-bindings/pinctrl/<soc>-pinfunc.h directly.98 99          drive-strength:100            enum: [2, 4, 6, 8, 10, 12, 14, 16]101 102          drive-strength-microamp:103            enum: [125, 250, 500, 1000]104 105          bias-pull-down:106            oneOf:107              - type: boolean108              - enum: [100, 101, 102, 103]109                description: mt8195 pull down PUPD/R0/R1 type define value.110              - enum: [200, 201, 202, 203, 204, 205, 206, 207]111                description: mt8195 pull down RSEL type define value.112              - enum: [75000, 5000]113                description: mt8195 pull down RSEL type si unit value(ohm).114            description: |115              For pull down type is normal, it don't need add RSEL & R1R0 define116              and resistance value.117              For pull down type is PUPD/R0/R1 type, it can add R1R0 define to118              set different resistance. It can support "MTK_PUPD_SET_R1R0_00" &119              "MTK_PUPD_SET_R1R0_01" & "MTK_PUPD_SET_R1R0_10" &120              "MTK_PUPD_SET_R1R0_11" define in mt8195.121              For pull down type is RSEL, it can add RSEL define & resistance122              value(ohm) to set different resistance by identifying property123              "mediatek,rsel-resistance-in-si-unit".124              It can support "MTK_PULL_SET_RSEL_000" & "MTK_PULL_SET_RSEL_001"125              & "MTK_PULL_SET_RSEL_010" & "MTK_PULL_SET_RSEL_011"126              & "MTK_PULL_SET_RSEL_100" & "MTK_PULL_SET_RSEL_101"127              & "MTK_PULL_SET_RSEL_110" & "MTK_PULL_SET_RSEL_111"128              define in mt8195. It can also support resistance value(ohm)129              "75000" & "5000" in mt8195.130 131              An example of using RSEL define:132              pincontroller {133                i2c0_pin {134                  pins {135                    pinmux = <PINMUX_GPIO8__FUNC_SDA0>;136                    bias-pull-down = <MTK_PULL_SET_RSEL_001>;137                  }138                };139              };140              An example of using si unit resistance value(ohm):141              &pio {142                mediatek,rsel-resistance-in-si-unit;143              }144              pincontroller {145                i2c0_pin {146                  pins {147                    pinmux = <PINMUX_GPIO8__FUNC_SDA0>;148                    bias-pull-down = <75000>;149                  }150                };151              };152 153          bias-pull-up:154            oneOf:155              - type: boolean156              - enum: [100, 101, 102, 103]157                description: mt8195 pull up PUPD/R0/R1 type define value.158              - enum: [200, 201, 202, 203, 204, 205, 206, 207]159                description: mt8195 pull up RSEL type define value.160              - enum: [1000, 1500, 2000, 3000, 4000, 5000, 10000, 75000]161                description: mt8195 pull up RSEL type si unit value(ohm).162            description: |163              For pull up type is normal, it don't need add RSEL & R1R0 define164              and resistance value.165              For pull up type is PUPD/R0/R1 type, it can add R1R0 define to166              set different resistance. It can support "MTK_PUPD_SET_R1R0_00" &167              "MTK_PUPD_SET_R1R0_01" & "MTK_PUPD_SET_R1R0_10" &168              "MTK_PUPD_SET_R1R0_11" define in mt8195.169              For pull up type is RSEL, it can add RSEL define & resistance170              value(ohm) to set different resistance by identifying property171              "mediatek,rsel-resistance-in-si-unit".172              It can support "MTK_PULL_SET_RSEL_000" & "MTK_PULL_SET_RSEL_001"173              & "MTK_PULL_SET_RSEL_010" & "MTK_PULL_SET_RSEL_011"174              & "MTK_PULL_SET_RSEL_100" & "MTK_PULL_SET_RSEL_101"175              & "MTK_PULL_SET_RSEL_110" & "MTK_PULL_SET_RSEL_111"176              define in mt8195. It can also support resistance value(ohm) "1000"177              & "1500" & "2000" & "3000" & "4000" & "5000" & "10000" & "75000"178              in mt8195.179              An example of using RSEL define:180              pincontroller {181                i2c0-pins {182                  pins {183                    pinmux = <PINMUX_GPIO8__FUNC_SDA0>;184                    bias-pull-up = <MTK_PULL_SET_RSEL_001>;185                  }186                };187              };188              An example of using si unit resistance value(ohm):189              &pio {190                mediatek,rsel-resistance-in-si-unit;191              }192              pincontroller {193                i2c0-pins {194                  pins {195                    pinmux = <PINMUX_GPIO8__FUNC_SDA0>;196                    bias-pull-up = <1000>;197                  }198                };199              };200 201          bias-disable: true202 203          output-high: true204 205          output-low: true206 207          input-enable: true208 209          input-disable: true210 211          input-schmitt-enable: true212 213          input-schmitt-disable: true214 215        required:216          - pinmux217 218allOf:219  - $ref: pinctrl.yaml#220 221required:222  - compatible223  - reg224  - interrupts225  - interrupt-controller226  - '#interrupt-cells'227  - gpio-controller228  - '#gpio-cells'229  - gpio-ranges230 231additionalProperties: false232 233examples:234  - |235    #include <dt-bindings/pinctrl/mt8195-pinfunc.h>236    #include <dt-bindings/interrupt-controller/arm-gic.h>237    #238    pio: pinctrl@10005000 {239      compatible = "mediatek,mt8195-pinctrl";240      reg = <0x10005000 0x1000>,241            <0x11d10000 0x1000>,242            <0x11d30000 0x1000>,243            <0x11d40000 0x1000>,244            <0x11e20000 0x1000>,245            <0x11eb0000 0x1000>,246            <0x11f40000 0x1000>,247            <0x1000b000 0x1000>;248      reg-names = "iocfg0", "iocfg_bm", "iocfg_bl",249                  "iocfg_br", "iocfg_lm", "iocfg_rb",250                  "iocfg_tl", "eint";251      gpio-controller;252      #gpio-cells = <2>;253      gpio-ranges = <&pio 0 0 144>;254      interrupt-controller;255      interrupts = <GIC_SPI 225 IRQ_TYPE_LEVEL_HIGH 0>;256      #interrupt-cells = <2>;257 258      pio-pins {259        pins {260          pinmux = <PINMUX_GPIO0__FUNC_GPIO0>;261          output-low;262        };263      };264 265      spi0-pins {266        pins-spi {267          pinmux = <PINMUX_GPIO132__FUNC_SPIM0_CSB>,268                   <PINMUX_GPIO134__FUNC_SPIM0_MO>,269                   <PINMUX_GPIO133__FUNC_SPIM0_CLK>;270          bias-disable;271        };272        pins-spi-mi {273          pinmux = <PINMUX_GPIO135__FUNC_SPIM0_MI>;274          bias-pull-down;275        };276      };277 278      i2c0-pins {279        pins {280          pinmux = <PINMUX_GPIO8__FUNC_SDA0>,281                   <PINMUX_GPIO9__FUNC_SCL0>;282          bias-disable;283          drive-strength-microamp = <1000>;284        };285      };286    };287