191 lines
		
	
	
		
			4.8 KiB
		
	
	
	
		
			YAML
		
	
	
	
	
	
			
		
		
	
	
			191 lines
		
	
	
		
			4.8 KiB
		
	
	
	
		
			YAML
		
	
	
	
	
	
# SPDX-License-Identifier: GPL-2.0
 | 
						|
%YAML 1.2
 | 
						|
---
 | 
						|
$id: http://devicetree.org/schemas/pinctrl/rockchip,pinctrl.yaml#
 | 
						|
$schema: http://devicetree.org/meta-schemas/core.yaml#
 | 
						|
 | 
						|
title: Rockchip Pinmux Controller
 | 
						|
 | 
						|
maintainers:
 | 
						|
  - Heiko Stuebner <heiko@sntech.de>
 | 
						|
 | 
						|
description: |
 | 
						|
  The Rockchip Pinmux Controller enables the IC to share one PAD
 | 
						|
  to several functional blocks. The sharing is done by multiplexing
 | 
						|
  the PAD input/output signals. For each PAD there are several muxing
 | 
						|
  options with option 0 being used as a GPIO.
 | 
						|
 | 
						|
  Please refer to pinctrl-bindings.txt in this directory for details of the
 | 
						|
  common pinctrl bindings used by client devices, including the meaning of the
 | 
						|
  phrase "pin configuration node".
 | 
						|
 | 
						|
  The Rockchip pin configuration node is a node of a group of pins which can be
 | 
						|
  used for a specific device or function. This node represents both mux and
 | 
						|
  config of the pins in that group. The 'pins' selects the function mode
 | 
						|
  (also named pin mode) this pin can work on and the 'config' configures
 | 
						|
  various pad settings such as pull-up, etc.
 | 
						|
 | 
						|
  The pins are grouped into up to 9 individual pin banks which need to be
 | 
						|
  defined as gpio sub-nodes of the pinmux controller.
 | 
						|
 | 
						|
properties:
 | 
						|
  compatible:
 | 
						|
    enum:
 | 
						|
      - rockchip,px30-pinctrl
 | 
						|
      - rockchip,rk2928-pinctrl
 | 
						|
      - rockchip,rk3036-pinctrl
 | 
						|
      - rockchip,rk3066a-pinctrl
 | 
						|
      - rockchip,rk3066b-pinctrl
 | 
						|
      - rockchip,rk3128-pinctrl
 | 
						|
      - rockchip,rk3188-pinctrl
 | 
						|
      - rockchip,rk3228-pinctrl
 | 
						|
      - rockchip,rk3288-pinctrl
 | 
						|
      - rockchip,rk3308-pinctrl
 | 
						|
      - rockchip,rk3328-pinctrl
 | 
						|
      - rockchip,rk3368-pinctrl
 | 
						|
      - rockchip,rk3399-pinctrl
 | 
						|
      - rockchip,rk3568-pinctrl
 | 
						|
      - rockchip,rk3588-pinctrl
 | 
						|
      - rockchip,rv1108-pinctrl
 | 
						|
      - rockchip,rv1126-pinctrl
 | 
						|
 | 
						|
  rockchip,grf:
 | 
						|
    $ref: "/schemas/types.yaml#/definitions/phandle"
 | 
						|
    description:
 | 
						|
      The phandle of the syscon node for the GRF registers.
 | 
						|
 | 
						|
  rockchip,pmu:
 | 
						|
    $ref: "/schemas/types.yaml#/definitions/phandle"
 | 
						|
    description:
 | 
						|
      The phandle of the syscon node for the PMU registers,
 | 
						|
      as some SoCs carry parts of the iomux controller registers there.
 | 
						|
      Required for at least rk3188 and rk3288. On the rk3368 this should
 | 
						|
      point to the PMUGRF syscon.
 | 
						|
 | 
						|
  "#address-cells":
 | 
						|
    enum: [1, 2]
 | 
						|
 | 
						|
  "#size-cells":
 | 
						|
    enum: [1, 2]
 | 
						|
 | 
						|
  ranges: true
 | 
						|
 | 
						|
allOf:
 | 
						|
  - $ref: "pinctrl.yaml#"
 | 
						|
 | 
						|
required:
 | 
						|
  - compatible
 | 
						|
  - rockchip,grf
 | 
						|
  - "#address-cells"
 | 
						|
  - "#size-cells"
 | 
						|
  - ranges
 | 
						|
 | 
						|
patternProperties:
 | 
						|
  "gpio@[0-9a-f]+$":
 | 
						|
    type: object
 | 
						|
 | 
						|
    $ref: "/schemas/gpio/rockchip,gpio-bank.yaml#"
 | 
						|
 | 
						|
    unevaluatedProperties: false
 | 
						|
 | 
						|
  "pcfg-[a-z0-9-]+$":
 | 
						|
    type: object
 | 
						|
    properties:
 | 
						|
      bias-disable: true
 | 
						|
 | 
						|
      bias-pull-down: true
 | 
						|
 | 
						|
      bias-pull-pin-default: true
 | 
						|
 | 
						|
      bias-pull-up: true
 | 
						|
 | 
						|
      drive-strength:
 | 
						|
        minimum: 0
 | 
						|
        maximum: 20
 | 
						|
 | 
						|
      input-enable: true
 | 
						|
 | 
						|
      input-schmitt-enable: true
 | 
						|
 | 
						|
      output-high: true
 | 
						|
 | 
						|
      output-low: true
 | 
						|
 | 
						|
    additionalProperties: false
 | 
						|
 | 
						|
additionalProperties:
 | 
						|
  type: object
 | 
						|
  additionalProperties:
 | 
						|
    type: object
 | 
						|
    properties:
 | 
						|
      rockchip,pins:
 | 
						|
        $ref: "/schemas/types.yaml#/definitions/uint32-matrix"
 | 
						|
        minItems: 1
 | 
						|
        items:
 | 
						|
          items:
 | 
						|
            - minimum: 0
 | 
						|
              maximum: 8
 | 
						|
              description:
 | 
						|
                Pin bank.
 | 
						|
            - minimum: 0
 | 
						|
              maximum: 31
 | 
						|
              description:
 | 
						|
                Pin bank index.
 | 
						|
            - minimum: 0
 | 
						|
              maximum: 10
 | 
						|
              description:
 | 
						|
                Mux 0 means GPIO and mux 1 to N means
 | 
						|
                the specific device function.
 | 
						|
            - description:
 | 
						|
                The phandle of a node contains the generic pinconfig options
 | 
						|
                to use as described in pinctrl-bindings.txt.
 | 
						|
 | 
						|
examples:
 | 
						|
  - |
 | 
						|
    #include <dt-bindings/interrupt-controller/arm-gic.h>
 | 
						|
    #include <dt-bindings/pinctrl/rockchip.h>
 | 
						|
 | 
						|
    pinctrl: pinctrl {
 | 
						|
      compatible = "rockchip,rk3066a-pinctrl";
 | 
						|
      rockchip,grf = <&grf>;
 | 
						|
 | 
						|
      #address-cells = <1>;
 | 
						|
      #size-cells = <1>;
 | 
						|
      ranges;
 | 
						|
 | 
						|
      gpio0: gpio@20034000 {
 | 
						|
        compatible = "rockchip,gpio-bank";
 | 
						|
        reg = <0x20034000 0x100>;
 | 
						|
        interrupts = <GIC_SPI 54 IRQ_TYPE_LEVEL_HIGH>;
 | 
						|
        clocks = <&clk_gates8 9>;
 | 
						|
 | 
						|
        gpio-controller;
 | 
						|
        #gpio-cells = <2>;
 | 
						|
 | 
						|
        interrupt-controller;
 | 
						|
        #interrupt-cells = <2>;
 | 
						|
      };
 | 
						|
 | 
						|
      pcfg_pull_default: pcfg-pull-default {
 | 
						|
        bias-pull-pin-default;
 | 
						|
      };
 | 
						|
 | 
						|
      uart2 {
 | 
						|
        uart2_xfer: uart2-xfer {
 | 
						|
          rockchip,pins = <1 RK_PB0 1 &pcfg_pull_default>,
 | 
						|
                          <1 RK_PB1 1 &pcfg_pull_default>;
 | 
						|
        };
 | 
						|
      };
 | 
						|
    };
 | 
						|
 | 
						|
    uart2: serial@20064000 {
 | 
						|
      compatible = "snps,dw-apb-uart";
 | 
						|
      reg = <0x20064000 0x400>;
 | 
						|
      interrupts = <GIC_SPI 36 IRQ_TYPE_LEVEL_HIGH>;
 | 
						|
      clocks = <&mux_uart2>;
 | 
						|
      pinctrl-0 = <&uart2_xfer>;
 | 
						|
      pinctrl-names = "default";
 | 
						|
      reg-io-width = <1>;
 | 
						|
      reg-shift = <2>;
 | 
						|
    };
 |