~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

TOMOYO Linux Cross Reference
Linux/Documentation/devicetree/bindings/pinctrl/starfive,jh7100-pinctrl.yaml

Version: ~ [ linux-6.12-rc7 ] ~ [ linux-6.11.7 ] ~ [ linux-6.10.14 ] ~ [ linux-6.9.12 ] ~ [ linux-6.8.12 ] ~ [ linux-6.7.12 ] ~ [ linux-6.6.60 ] ~ [ linux-6.5.13 ] ~ [ linux-6.4.16 ] ~ [ linux-6.3.13 ] ~ [ linux-6.2.16 ] ~ [ linux-6.1.116 ] ~ [ linux-6.0.19 ] ~ [ linux-5.19.17 ] ~ [ linux-5.18.19 ] ~ [ linux-5.17.15 ] ~ [ linux-5.16.20 ] ~ [ linux-5.15.171 ] ~ [ linux-5.14.21 ] ~ [ linux-5.13.19 ] ~ [ linux-5.12.19 ] ~ [ linux-5.11.22 ] ~ [ linux-5.10.229 ] ~ [ linux-5.9.16 ] ~ [ linux-5.8.18 ] ~ [ linux-5.7.19 ] ~ [ linux-5.6.19 ] ~ [ linux-5.5.19 ] ~ [ linux-5.4.285 ] ~ [ linux-5.3.18 ] ~ [ linux-5.2.21 ] ~ [ linux-5.1.21 ] ~ [ linux-5.0.21 ] ~ [ linux-4.20.17 ] ~ [ linux-4.19.323 ] ~ [ linux-4.18.20 ] ~ [ linux-4.17.19 ] ~ [ linux-4.16.18 ] ~ [ linux-4.15.18 ] ~ [ linux-4.14.336 ] ~ [ linux-4.13.16 ] ~ [ linux-4.12.14 ] ~ [ linux-4.11.12 ] ~ [ linux-4.10.17 ] ~ [ linux-4.9.337 ] ~ [ linux-4.4.302 ] ~ [ linux-3.10.108 ] ~ [ linux-2.6.32.71 ] ~ [ linux-2.6.0 ] ~ [ linux-2.4.37.11 ] ~ [ unix-v6-master ] ~ [ ccs-tools-1.8.12 ] ~ [ policy-sample ] ~
Architecture: ~ [ i386 ] ~ [ alpha ] ~ [ m68k ] ~ [ mips ] ~ [ ppc ] ~ [ sparc ] ~ [ sparc64 ] ~

  1 # SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
  2 %YAML 1.2
  3 ---
  4 $id: http://devicetree.org/schemas/pinctrl/starfive,jh7100-pinctrl.yaml#
  5 $schema: http://devicetree.org/meta-schemas/core.yaml#
  6 
  7 title: StarFive JH7100 Pin Controller
  8 
  9 description: |
 10   Bindings for the JH7100 RISC-V SoC from StarFive Ltd.
 11 
 12   Out of the SoC's many pins only the ones named PAD_GPIO[0] to PAD_GPIO[63]
 13   and PAD_FUNC_SHARE[0] to PAD_FUNC_SHARE[141] can be multiplexed and have
 14   configurable bias, drive strength, schmitt trigger etc. The SoC has an
 15   interesting 2-layered approach to pin muxing best illustrated by the diagram
 16   below.
 17 
 18                           Signal group 0, 1, ... or 6
 19                                  ___|___
 20                                 |       |
 21     LCD output -----------------|       |
 22     CMOS Camera interface ------|       |--- PAD_GPIO[0]
 23     Ethernet PHY interface -----|  MUX  |--- PAD_GPIO[1]
 24       ...                       |       |      ...
 25                                 |       |--- PAD_GPIO[63]
 26      -------- GPIO0 ------------|       |
 27     |  -------|-- GPIO1 --------|       |--- PAD_FUNC_SHARE[0]
 28     | |       |   |             |       |--- PAD_FUNC_SHARE[1]
 29     | |       |   |  ...        |       |       ...
 30     | |       |   |             |       |--- PAD_FUNC_SHARE[141]
 31     | |  -----|---|-- GPIO63 ---|       |
 32     | | |     |   |   |          -------
 33     UART0     UART1 --
 34 
 35 
 36   The big MUX in the diagram only has 7 different ways of mapping peripherals
 37   on the left to pins on the right. StarFive calls the 7 configurations "signal
 38   groups".
 39   However some peripherals have their I/O go through the 64 "GPIOs". The
 40   diagram only shows UART0 and UART1, but this also includes a number of other
 41   UARTs, I2Cs, SPIs, PWMs etc. All these peripherals are connected to all 64
 42   GPIOs such that any GPIO can be set up to be controlled by any of the
 43   peripherals.
 44   Note that signal group 0 doesn't map any of the GPIOs to pins, and only
 45   signal group 1 maps the GPIOs to the pins named PAD_GPIO[0] to PAD_GPIO[63].
 46 
 47 maintainers:
 48   - Emil Renner Berthing <kernel@esmil.dk>
 49   - Drew Fustini <drew@beagleboard.org>
 50 
 51 properties:
 52   compatible:
 53     const: starfive,jh7100-pinctrl
 54 
 55   reg:
 56     minItems: 2
 57     maxItems: 2
 58 
 59   reg-names:
 60     items:
 61       - const: gpio
 62       - const: padctl
 63 
 64   clocks:
 65     maxItems: 1
 66 
 67   resets:
 68     maxItems: 1
 69 
 70   gpio-controller: true
 71 
 72   "#gpio-cells":
 73     const: 2
 74 
 75   interrupts:
 76     maxItems: 1
 77     description: The GPIO parent interrupt.
 78 
 79   interrupt-controller: true
 80 
 81   "#interrupt-cells":
 82     const: 2
 83 
 84   starfive,signal-group:
 85     description: |
 86       Select one of the 7 signal groups. If this property is not set it
 87       defaults to the configuration already chosen by the earlier boot stages.
 88     $ref: /schemas/types.yaml#/definitions/uint32
 89     enum: [0, 1, 2, 3, 4, 5, 6]
 90 
 91 required:
 92   - compatible
 93   - reg
 94   - reg-names
 95   - clocks
 96   - gpio-controller
 97   - "#gpio-cells"
 98   - interrupts
 99   - interrupt-controller
100   - "#interrupt-cells"
101 
102 patternProperties:
103   '-[0-9]+$':
104     type: object
105     patternProperties:
106       '-pins$':
107         type: object
108         description: |
109           A pinctrl node should contain at least one subnode representing the
110           pinctrl groups available on the machine. Each subnode will list the
111           pins it needs, and how they should be configured, with regard to
112           muxer configuration, bias, input enable/disable, input schmitt
113           trigger enable/disable, slew-rate and drive strength.
114         $ref: /schemas/pinctrl/pincfg-node.yaml
115 
116         properties:
117           pins:
118             description: |
119               The list of pin identifiers that properties in the node apply to.
120               This should be set using either the PAD_GPIO or PAD_FUNC_SHARE
121               macros.
122               Either this or "pinmux" has to be specified, but not both.
123             $ref: /schemas/pinctrl/pinmux-node.yaml#/properties/pins
124 
125           pinmux:
126             description: |
127               The list of GPIOs and their mux settings that properties in the
128               node apply to. This should be set using the GPIOMUX macro.
129               Either this or "pins" has to be specified, but not both.
130             $ref: /schemas/pinctrl/pinmux-node.yaml#/properties/pinmux
131 
132           bias-disable: true
133 
134           bias-pull-up:
135             type: boolean
136 
137           bias-pull-down:
138             type: boolean
139 
140           drive-strength:
141             enum: [ 14, 21, 28, 35, 42, 49, 56, 63 ]
142 
143           input-enable: true
144 
145           input-disable: true
146 
147           input-schmitt-enable: true
148 
149           input-schmitt-disable: true
150 
151           slew-rate:
152             maximum: 7
153 
154           starfive,strong-pull-up:
155             description: enable strong pull-up.
156             type: boolean
157 
158         additionalProperties: false
159 
160     additionalProperties: false
161 
162 additionalProperties: false
163 
164 examples:
165   - |
166     #include <dt-bindings/clock/starfive-jh7100.h>
167     #include <dt-bindings/reset/starfive-jh7100.h>
168     #include <dt-bindings/pinctrl/pinctrl-starfive-jh7100.h>
169 
170     soc {
171         #address-cells = <2>;
172         #size-cells = <2>;
173 
174         pinctrl@11910000 {
175             compatible = "starfive,jh7100-pinctrl";
176             reg = <0x0 0x11910000 0x0 0x10000>,
177                   <0x0 0x11858000 0x0 0x1000>;
178             reg-names = "gpio", "padctl";
179             clocks = <&clkgen JH7100_CLK_GPIO_APB>;
180             resets = <&clkgen JH7100_RSTN_GPIO_APB>;
181             interrupts = <32>;
182             gpio-controller;
183             #gpio-cells = <2>;
184             interrupt-controller;
185             #interrupt-cells = <2>;
186             starfive,signal-group = <6>;
187 
188             gmac_pins_default: gmac-0 {
189                 gtxclk-pins {
190                     pins = <PAD_FUNC_SHARE(115)>;
191                     bias-pull-up;
192                     drive-strength = <35>;
193                     input-enable;
194                     input-schmitt-enable;
195                     slew-rate = <0>;
196                 };
197                 miitxclk-pins {
198                     pins = <PAD_FUNC_SHARE(116)>;
199                     bias-pull-up;
200                     drive-strength = <14>;
201                     input-enable;
202                     input-schmitt-disable;
203                     slew-rate = <0>;
204                 };
205                 tx-pins {
206                     pins = <PAD_FUNC_SHARE(117)>,
207                            <PAD_FUNC_SHARE(119)>,
208                            <PAD_FUNC_SHARE(120)>,
209                            <PAD_FUNC_SHARE(121)>,
210                            <PAD_FUNC_SHARE(122)>,
211                            <PAD_FUNC_SHARE(123)>,
212                            <PAD_FUNC_SHARE(124)>,
213                            <PAD_FUNC_SHARE(125)>,
214                            <PAD_FUNC_SHARE(126)>;
215                     bias-disable;
216                     drive-strength = <35>;
217                     input-disable;
218                     input-schmitt-disable;
219                     slew-rate = <0>;
220                 };
221                 rxclk-pins {
222                     pins = <PAD_FUNC_SHARE(127)>;
223                     bias-pull-up;
224                     drive-strength = <14>;
225                     input-enable;
226                     input-schmitt-disable;
227                     slew-rate = <6>;
228                 };
229                 rxer-pins {
230                     pins = <PAD_FUNC_SHARE(129)>;
231                     bias-pull-up;
232                     drive-strength = <14>;
233                     input-enable;
234                     input-schmitt-disable;
235                     slew-rate = <0>;
236                 };
237                 rx-pins {
238                     pins = <PAD_FUNC_SHARE(128)>,
239                            <PAD_FUNC_SHARE(130)>,
240                            <PAD_FUNC_SHARE(131)>,
241                            <PAD_FUNC_SHARE(132)>,
242                            <PAD_FUNC_SHARE(133)>,
243                            <PAD_FUNC_SHARE(134)>,
244                            <PAD_FUNC_SHARE(135)>,
245                            <PAD_FUNC_SHARE(136)>,
246                            <PAD_FUNC_SHARE(137)>,
247                            <PAD_FUNC_SHARE(138)>,
248                            <PAD_FUNC_SHARE(139)>,
249                            <PAD_FUNC_SHARE(140)>,
250                            <PAD_FUNC_SHARE(141)>;
251                     bias-pull-up;
252                     drive-strength = <14>;
253                     input-enable;
254                     input-schmitt-enable;
255                     slew-rate = <0>;
256                 };
257             };
258 
259             i2c0_pins_default: i2c0-0 {
260                 i2c-pins {
261                     pinmux = <GPIOMUX(62, GPO_LOW,
262                               GPO_I2C0_PAD_SCK_OEN,
263                               GPI_I2C0_PAD_SCK_IN)>,
264                              <GPIOMUX(61, GPO_LOW,
265                               GPO_I2C0_PAD_SDA_OEN,
266                               GPI_I2C0_PAD_SDA_IN)>;
267                     bias-disable; /* external pull-up */
268                     input-enable;
269                     input-schmitt-enable;
270                 };
271             };
272 
273             uart3_pins_default: uart3-0 {
274                 rx-pins {
275                     pinmux = <GPIOMUX(13, GPO_LOW, GPO_DISABLE,
276                               GPI_UART3_PAD_SIN)>;
277                     bias-pull-up;
278                     input-enable;
279                     input-schmitt-enable;
280                 };
281                 tx-pins {
282                     pinmux = <GPIOMUX(14, GPO_UART3_PAD_SOUT,
283                               GPO_ENABLE, GPI_NONE)>;
284                     bias-disable;
285                     input-disable;
286                     input-schmitt-disable;
287                 };
288             };
289         };
290 
291         gmac {
292             pinctrl-0 = <&gmac_pins_default>;
293             pinctrl-names = "default";
294         };
295 
296         i2c {
297             pinctrl-0 = <&i2c0_pins_default>;
298             pinctrl-names = "default";
299         };
300 
301         uart3 {
302             pinctrl-0 = <&uart3_pins_default>;
303             pinctrl-names = "default";
304         };
305     };
306 
307 ...

~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

kernel.org | git.kernel.org | LWN.net | Project Home | SVN repository | Mail admin

Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.

sflogo.php