| # SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause |
| %YAML 1.2 |
| --- |
| $id: http://devicetree.org/schemas/pinctrl/spacemit,k1-pinctrl.yaml# |
| $schema: http://devicetree.org/meta-schemas/core.yaml# |
| |
| title: SpacemiT K1 SoC Pin Controller |
| |
| maintainers: |
| - Yixun Lan <dlan@gentoo.org> |
| |
| properties: |
| compatible: |
| enum: |
| - spacemit,k1-pinctrl |
| - spacemit,k3-pinctrl |
| |
| reg: |
| items: |
| - description: pinctrl io memory base |
| |
| clocks: |
| items: |
| - description: Functional Clock |
| - description: Bus Clock |
| |
| clock-names: |
| items: |
| - const: func |
| - const: bus |
| |
| resets: |
| maxItems: 1 |
| |
| spacemit,apbc: |
| $ref: /schemas/types.yaml#/definitions/phandle |
| description: Phandle to syscon that access the protected register |
| |
| patternProperties: |
| '-cfg$': |
| type: object |
| additionalProperties: false |
| |
| description: |
| A pinctrl node should contain at least one subnode representing the |
| pinctrl groups available on the machine. |
| |
| patternProperties: |
| '-pins$': |
| type: object |
| additionalProperties: false |
| |
| description: |
| Each subnode will list the pins it needs, and how they should |
| be configured, with regard to muxer configuration, bias pull, |
| drive strength, input schmitt trigger, slew rate, power source. |
| |
| allOf: |
| - $ref: pincfg-node.yaml# |
| - $ref: pinmux-node.yaml# |
| |
| properties: |
| pinmux: |
| description: |
| The list of GPIOs and their mux settings that properties in the |
| node apply to. This should be set using the K1_PADCONF macro to |
| construct the value. |
| |
| bias-disable: true |
| |
| bias-pull-down: true |
| |
| bias-pull-up: |
| description: | |
| typical value for selecting bias pull up or strong pull up. |
| 0: normal bias pull up |
| 1: strong bias pull up |
| enum: [ 0, 1 ] |
| |
| drive-strength: |
| description: |
| typical current (in mA) when the output at high level. |
| anyOf: |
| - enum: [ 11, 21, 32, 42 ] |
| description: For K1 SoC, 1.8V voltage output |
| |
| - enum: [ 7, 10, 13, 16, 19, 23, 26, 29 ] |
| description: For K1 SoC, 3.3V voltage output |
| |
| - enum: [ 2, 4, 6, 7, 9, 11, 13, 14, 21, 23, 25, 26, 28, 30, 31, 33 ] |
| description: For K3 SoC, 1.8V voltage output |
| |
| - enum: [ 3, 5, 7, 9, 11, 13, 15, 17, 25, 27, 29, 31, 33, 35, 37, 38 ] |
| description: For K3 SoC, 3.3V voltage output |
| |
| input-schmitt: |
| description: | |
| typical threshold for schmitt trigger. |
| 0: buffer mode |
| 1: trigger mode |
| 2, 3: trigger mode |
| $ref: /schemas/types.yaml#/definitions/uint32 |
| enum: [ 0, 1, 2, 3 ] |
| |
| power-source: |
| description: external power supplies at 1.8v or 3.3v. |
| enum: [ 1800, 3300 ] |
| |
| slew-rate: |
| description: | |
| slew rate for output buffer. |
| 0: disable it |
| 1: enable it (via bundled value from drive strength) |
| 2: slow speed 0 |
| 3: slow speed 1 |
| 4: medium speed |
| 5: fast speed |
| enum: [ 0, 1, 2, 3, 4, 5 ] |
| |
| required: |
| - pinmux |
| |
| required: |
| - compatible |
| - reg |
| - clocks |
| - clock-names |
| |
| additionalProperties: false |
| |
| examples: |
| - | |
| #define K1_PADCONF(pin, func) (((pin) << 16) | (func)) |
| |
| soc { |
| #address-cells = <2>; |
| #size-cells = <2>; |
| |
| pinctrl@d401e000 { |
| compatible = "spacemit,k1-pinctrl"; |
| reg = <0x0 0xd401e000 0x0 0x400>; |
| clocks = <&syscon_apbc 42>, |
| <&syscon_apbc 94>; |
| clock-names = "func", "bus"; |
| spacemit,apbc = <&syscon_apbc>; |
| |
| uart0_2_cfg: uart0-2-cfg { |
| uart0-2-pins { |
| pinmux = <K1_PADCONF(68, 2)>, |
| <K1_PADCONF(69, 2)>; |
| |
| bias-pull-up = <0>; |
| drive-strength = <32>; |
| }; |
| }; |
| }; |
| }; |
| |
| ... |