File Index
Files and directories
Sign in
FILE

canaan,k210-fpioa.yaml

File preview with syntax highlighting.

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