225 lines
		
	
	
		
			7.0 KiB
		
	
	
	
		
			YAML
		
	
	
	
	
	
			
		
		
	
	
			225 lines
		
	
	
		
			7.0 KiB
		
	
	
	
		
			YAML
		
	
	
	
	
	
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
 | 
						|
%YAML 1.2
 | 
						|
---
 | 
						|
$id: http://devicetree.org/schemas/pinctrl/mediatek,pinctrl-mt6795.yaml#
 | 
						|
$schema: http://devicetree.org/meta-schemas/core.yaml#
 | 
						|
 | 
						|
title: Mediatek MT6795 Pin Controller
 | 
						|
 | 
						|
maintainers:
 | 
						|
  - AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
 | 
						|
  - Sean Wang <sean.wang@kernel.org>
 | 
						|
 | 
						|
description: |
 | 
						|
  The Mediatek's Pin controller is used to control SoC pins.
 | 
						|
 | 
						|
properties:
 | 
						|
  compatible:
 | 
						|
    const: mediatek,mt6795-pinctrl
 | 
						|
 | 
						|
  gpio-controller: true
 | 
						|
 | 
						|
  '#gpio-cells':
 | 
						|
    description: |
 | 
						|
      Number of cells in GPIO specifier. Since the generic GPIO binding is used,
 | 
						|
      the amount of cells must be specified as 2. See the below
 | 
						|
      mentioned gpio binding representation for description of particular cells.
 | 
						|
    const: 2
 | 
						|
 | 
						|
  gpio-ranges:
 | 
						|
    description: GPIO valid number range.
 | 
						|
    maxItems: 1
 | 
						|
 | 
						|
  reg:
 | 
						|
    description:
 | 
						|
      Physical address base for gpio base and eint registers.
 | 
						|
    minItems: 2
 | 
						|
 | 
						|
  reg-names:
 | 
						|
    items:
 | 
						|
      - const: base
 | 
						|
      - const: eint
 | 
						|
 | 
						|
  interrupt-controller: true
 | 
						|
 | 
						|
  '#interrupt-cells':
 | 
						|
    const: 2
 | 
						|
 | 
						|
  interrupts:
 | 
						|
    description: The interrupt outputs to sysirq.
 | 
						|
    maxItems: 1
 | 
						|
 | 
						|
# PIN CONFIGURATION NODES
 | 
						|
patternProperties:
 | 
						|
  '-pins$':
 | 
						|
    type: object
 | 
						|
    additionalProperties: false
 | 
						|
    patternProperties:
 | 
						|
      '^pins':
 | 
						|
        type: object
 | 
						|
        additionalProperties: false
 | 
						|
        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, input enable/disable and
 | 
						|
          input schmitt.
 | 
						|
          An example of using macro:
 | 
						|
          pincontroller {
 | 
						|
            /* GPIO0 set as multifunction GPIO0 */
 | 
						|
            gpio-pins {
 | 
						|
              pins {
 | 
						|
                pinmux = <PINMUX_GPIO0__FUNC_GPIO0>;
 | 
						|
              }
 | 
						|
            };
 | 
						|
            /* GPIO45 set as multifunction SDA0 */
 | 
						|
            i2c0-pins {
 | 
						|
              pins {
 | 
						|
                pinmux = <PINMUX_GPIO45__FUNC_SDA0>;
 | 
						|
              }
 | 
						|
            };
 | 
						|
          };
 | 
						|
        $ref: "pinmux-node.yaml"
 | 
						|
 | 
						|
        properties:
 | 
						|
          pinmux:
 | 
						|
            description: |
 | 
						|
              Integer array, represents gpio pin number and mux setting.
 | 
						|
              Supported pin number and mux varies for different SoCs, and are
 | 
						|
              defined as macros in dt-bindings/pinctrl/<soc>-pinfunc.h
 | 
						|
              directly.
 | 
						|
 | 
						|
          drive-strength:
 | 
						|
            enum: [2, 4, 6, 8, 10, 12, 14, 16]
 | 
						|
 | 
						|
          bias-pull-down:
 | 
						|
            oneOf:
 | 
						|
              - type: boolean
 | 
						|
              - enum: [100, 101, 102, 103]
 | 
						|
                description: mt6795 pull down PUPD/R0/R1 type define value.
 | 
						|
            description: |
 | 
						|
               For normal pull down type, it is not necessary to specify R1R0
 | 
						|
               values; When pull down type is PUPD/R0/R1, adding R1R0 defines
 | 
						|
               will set different resistance values.
 | 
						|
 | 
						|
          bias-pull-up:
 | 
						|
            oneOf:
 | 
						|
              - type: boolean
 | 
						|
              - enum: [100, 101, 102, 103]
 | 
						|
                description: mt6795 pull up PUPD/R0/R1 type define value.
 | 
						|
            description: |
 | 
						|
               For normal pull up type, it is not necessary to specify R1R0
 | 
						|
               values; When pull up type is PUPD/R0/R1, adding R1R0 defines
 | 
						|
               will set different resistance values.
 | 
						|
 | 
						|
          bias-disable: true
 | 
						|
 | 
						|
          output-high: true
 | 
						|
 | 
						|
          output-low: true
 | 
						|
 | 
						|
          input-enable: true
 | 
						|
 | 
						|
          input-disable: true
 | 
						|
 | 
						|
          input-schmitt-enable: true
 | 
						|
 | 
						|
          input-schmitt-disable: true
 | 
						|
 | 
						|
          mediatek,pull-up-adv:
 | 
						|
            description: |
 | 
						|
              Pull up setings for 2 pull resistors, R0 and R1. User can
 | 
						|
              configure those special pins. Valid arguments are described as below:
 | 
						|
              0: (R1, R0) = (0, 0) which means R1 disabled and R0 disabled.
 | 
						|
              1: (R1, R0) = (0, 1) which means R1 disabled and R0 enabled.
 | 
						|
              2: (R1, R0) = (1, 0) which means R1 enabled and R0 disabled.
 | 
						|
              3: (R1, R0) = (1, 1) which means R1 enabled and R0 enabled.
 | 
						|
            $ref: /schemas/types.yaml#/definitions/uint32
 | 
						|
            enum: [0, 1, 2, 3]
 | 
						|
 | 
						|
          mediatek,pull-down-adv:
 | 
						|
            description: |
 | 
						|
              Pull down settings for 2 pull resistors, R0 and R1. User can
 | 
						|
              configure those special pins. Valid arguments are described as below:
 | 
						|
              0: (R1, R0) = (0, 0) which means R1 disabled and R0 disabled.
 | 
						|
              1: (R1, R0) = (0, 1) which means R1 disabled and R0 enabled.
 | 
						|
              2: (R1, R0) = (1, 0) which means R1 enabled and R0 disabled.
 | 
						|
              3: (R1, R0) = (1, 1) which means R1 enabled and R0 enabled.
 | 
						|
            $ref: /schemas/types.yaml#/definitions/uint32
 | 
						|
            enum: [0, 1, 2, 3]
 | 
						|
 | 
						|
        required:
 | 
						|
          - pinmux
 | 
						|
 | 
						|
allOf:
 | 
						|
  - $ref: "pinctrl.yaml#"
 | 
						|
 | 
						|
required:
 | 
						|
  - compatible
 | 
						|
  - reg
 | 
						|
  - reg-names
 | 
						|
  - interrupts
 | 
						|
  - interrupt-controller
 | 
						|
  - '#interrupt-cells'
 | 
						|
  - gpio-controller
 | 
						|
  - '#gpio-cells'
 | 
						|
  - gpio-ranges
 | 
						|
 | 
						|
additionalProperties: false
 | 
						|
 | 
						|
examples:
 | 
						|
  - |
 | 
						|
    #include <dt-bindings/interrupt-controller/arm-gic.h>
 | 
						|
    #include <dt-bindings/interrupt-controller/irq.h>
 | 
						|
    #include <dt-bindings/pinctrl/mt6795-pinfunc.h>
 | 
						|
 | 
						|
    soc {
 | 
						|
        #address-cells = <2>;
 | 
						|
        #size-cells = <2>;
 | 
						|
 | 
						|
        pio: pinctrl@10005000 {
 | 
						|
            compatible = "mediatek,mt6795-pinctrl";
 | 
						|
            reg = <0 0x10005000 0 0x1000>, <0 0x1000b000 0 0x1000>;
 | 
						|
            reg-names = "base", "eint";
 | 
						|
            gpio-controller;
 | 
						|
            #gpio-cells = <2>;
 | 
						|
            gpio-ranges = <&pio 0 0 196>;
 | 
						|
            interrupt-controller;
 | 
						|
            interrupts = <GIC_SPI 153 IRQ_TYPE_LEVEL_HIGH>;
 | 
						|
            #interrupt-cells = <2>;
 | 
						|
 | 
						|
            i2c0-pins {
 | 
						|
                pins-sda-scl {
 | 
						|
                    pinmux = <PINMUX_GPIO45__FUNC_SDA0>,
 | 
						|
                             <PINMUX_GPIO46__FUNC_SCL0>;
 | 
						|
                };
 | 
						|
            };
 | 
						|
 | 
						|
            mmc0-pins {
 | 
						|
                pins-cmd-dat {
 | 
						|
                    pinmux = <PINMUX_GPIO154__FUNC_MSDC0_DAT0>,
 | 
						|
                             <PINMUX_GPIO155__FUNC_MSDC0_DAT1>,
 | 
						|
                             <PINMUX_GPIO156__FUNC_MSDC0_DAT2>,
 | 
						|
                             <PINMUX_GPIO157__FUNC_MSDC0_DAT3>,
 | 
						|
                             <PINMUX_GPIO158__FUNC_MSDC0_DAT4>,
 | 
						|
                             <PINMUX_GPIO159__FUNC_MSDC0_DAT5>,
 | 
						|
                             <PINMUX_GPIO160__FUNC_MSDC0_DAT6>,
 | 
						|
                             <PINMUX_GPIO161__FUNC_MSDC0_DAT7>,
 | 
						|
                             <PINMUX_GPIO162__FUNC_MSDC0_CMD>;
 | 
						|
                    input-enable;
 | 
						|
                    bias-pull-up = <MTK_PUPD_SET_R1R0_01>;
 | 
						|
                };
 | 
						|
 | 
						|
                pins-clk {
 | 
						|
                    pinmux = <PINMUX_GPIO163__FUNC_MSDC0_CLK>;
 | 
						|
                    bias-pull-down = <MTK_PUPD_SET_R1R0_10>;
 | 
						|
                };
 | 
						|
 | 
						|
                pins-rst {
 | 
						|
                    pinmux = <PINMUX_GPIO165__FUNC_MSDC0_RSTB>;
 | 
						|
                    bias-pull-up = <MTK_PUPD_SET_R1R0_10>;
 | 
						|
                };
 | 
						|
            };
 | 
						|
        };
 | 
						|
    };
 |