1# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) 2%YAML 1.2 3--- 4$id: http://devicetree.org/schemas/pinctrl/canaan,k210-fpioa.yaml# 5$schema: http://devicetree.org/meta-schemas/core.yaml# 6 7title: Canaan Kendryte K210 FPIOA Device Tree Bindings 8 9maintainers: 10 - Damien Le Moal <damien.lemoal@wdc.com> 11 12description: 13 The Canaan Kendryte K210 SoC Fully Programmable IO Array (FPIOA) 14 controller allows assiging any of 256 possible functions to any of 15 48 IO pins of the SoC. Pin function configuration is performed on 16 a per-pin basis. 17 18properties: 19 compatible: 20 const: canaan,k210-fpioa 21 22 reg: 23 maxItems: 1 24 description: 25 Address and length of the register set for the FPIOA controller. 26 27 clocks: 28 items: 29 - description: Controller reference clock source 30 - description: APB interface clock source 31 32 clock-names: 33 items: 34 - const: ref 35 - const: pclk 36 37 resets: 38 maxItems: 1 39 40 canaan,k210-sysctl-power: 41 $ref: /schemas/types.yaml#/definitions/phandle-array 42 description: | 43 phandle of the K210 system controller node and offset of its 44 power domain control register. 45 46patternProperties: 47 '-pinmux$': 48 type: object 49 $ref: /schemas/pinctrl/pinmux-node.yaml 50 description: 51 FPIOA client devices use sub-nodes to define the desired pin 52 configuration. Client device sub-nodes use the pinux property 53 below. 54 55 properties: 56 pinmux: 57 description: 58 List of IO pins alternate functions. The values for each IO 59 pin is a combination of an IO pin number (0 to 47) with the 60 desired function for the IO pin. Functions are defined as 61 macros in include/dt-bindings/pinctrl/k210-fpioa.h. 62 The K210_FPIOA(IO pin, function) macro is provided to 63 facilitate the combination of IO pin numbers and functions. 64 65 required: 66 - pinmux 67 68 additionalProperties: false 69 70 '-pins$': 71 type: object 72 $ref: /schemas/pinctrl/pincfg-node.yaml 73 description: 74 FPIOA client devices use sub-nodes to define the desired 75 configuration of pins. Client device sub-nodes use the 76 properties below. 77 78 properties: 79 pins: 80 description: 81 List of IO pins affected by the properties specified in this 82 subnode. IO pins are identified using the pin names "IO_xx". 83 Pin configuration nodes can also define the power domain to 84 be used for the SoC pin groups A0 (IO pins 0-5), 85 A1 (IO pins 6-11), A2 (IO pins 12-17), B0 (IO pins 18-23), 86 B1 (IO pins 24-29), B2 (IO pins 30-35), B3 (IO pins 30-35), 87 C0 (IO pins 36-41) and C1 (IO pins 42-47) using the 88 power-source property. 89 items: 90 anyOf: 91 - pattern: "^(IO_([0-9]*))|(A[0-2])|(B[3-5])|(C[6-7])$" 92 - enum: [ IO_0, IO_1, IO_2, IO_3, IO_4, IO_5, IO_6, IO_7, 93 IO_8, IO_9, IO_10, IO_11, IO_12, IO_13, IO_14, 94 IO_15, IO_16, IO_17, IO_18, IO_19, IO_20, IO_21, 95 IO_22, IO_23, IO_24, IO_25, IO_26, IO_27, IO_28, 96 IO_29, IO_30, IO_31, IO_32, IO_33, IO_34, IO_35, 97 IO_36, IO_37, IO_38, IO_39, IO_40, IO_41, IO_42, 98 IO_43, IO_44, IO_45, IO_46, IO_47, 99 A0, A1, A2, B3, B4, B5, C6, C7 ] 100 bias-disable: true 101 102 bias-pull-down: true 103 104 bias-pull-up: true 105 106 drive-strength: true 107 108 drive-strength-microamp: true 109 110 input-enable: true 111 112 input-disable: true 113 114 input-schmitt-enable: true 115 116 input-schmitt-disable: true 117 118 input-polarity-invert: 119 description: 120 Enable or disable pin input polarity inversion. 121 122 output-enable: true 123 124 output-disable: true 125 126 output-high: true 127 128 output-low: true 129 130 output-polarity-invert: 131 description: 132 Enable or disable pin output polarity inversion. 133 134 slew-rate: true 135 136 power-source: true 137 138 additionalProperties: false 139 140allOf: 141 - $ref: "pinctrl.yaml#" 142 143required: 144 - compatible 145 - reg 146 - clocks 147 - canaan,k210-sysctl-power 148 149additionalProperties: false 150 151examples: 152 - | 153 #include <dt-bindings/pinctrl/k210-fpioa.h> 154 #include <dt-bindings/clock/k210-clk.h> 155 #include <dt-bindings/reset/k210-rst.h> 156 157 fpioa: pinmux@502b0000 { 158 compatible = "canaan,k210-fpioa"; 159 reg = <0x502b0000 0x100>; 160 clocks = <&sysclk K210_CLK_FPIOA>, 161 <&sysclk K210_CLK_APB0>; 162 clock-names = "ref", "pclk"; 163 resets = <&sysrst K210_RST_FPIOA>; 164 canaan,k210-sysctl-power = <&sysctl 108>; 165 pinctrl-0 = <&jtag_pinctrl>; 166 pinctrl-names = "default"; 167 168 jtag_pinctrl: jtag-pinmux { 169 pinmux = <K210_FPIOA(0, K210_PCF_JTAG_TCLK)>, 170 <K210_FPIOA(1, K210_PCF_JTAG_TDI)>, 171 <K210_FPIOA(2, K210_PCF_JTAG_TMS)>, 172 <K210_FPIOA(3, K210_PCF_JTAG_TDO)>; 173 }; 174 }; 175