162306a36Sopenharmony_ciCSR SiRFprimaII pinmux controller
262306a36Sopenharmony_ci
362306a36Sopenharmony_ciRequired properties:
462306a36Sopenharmony_ci- compatible	: "sirf,prima2-pinctrl"
562306a36Sopenharmony_ci- reg		: Address range of the pinctrl registers
662306a36Sopenharmony_ci- interrupts    : Interrupts used by every GPIO group
762306a36Sopenharmony_ci- gpio-controller : Indicates this device is a GPIO controller
862306a36Sopenharmony_ci- interrupt-controller  : Marks the device node as an interrupt controller
962306a36Sopenharmony_ciOptional properties:
1062306a36Sopenharmony_ci- sirf,pullups : if n-th bit of m-th bank is set, set a pullup on GPIO-n of bank m
1162306a36Sopenharmony_ci- sirf,pulldowns : if n-th bit of m-th bank is set, set a pulldown on GPIO-n of bank m
1262306a36Sopenharmony_ci
1362306a36Sopenharmony_ciPlease refer to pinctrl-bindings.txt in this directory for details of the common
1462306a36Sopenharmony_cipinctrl bindings used by client devices.
1562306a36Sopenharmony_ci
1662306a36Sopenharmony_ciSiRFprimaII's pinmux nodes act as a container for an arbitrary number of subnodes.
1762306a36Sopenharmony_ciEach of these subnodes represents some desired configuration for a group of pins.
1862306a36Sopenharmony_ci
1962306a36Sopenharmony_ciRequired subnode-properties:
2062306a36Sopenharmony_ci- sirf,pins : An array of strings. Each string contains the name of a group.
2162306a36Sopenharmony_ci- sirf,function: A string containing the name of the function to mux to the
2262306a36Sopenharmony_ci  group.
2362306a36Sopenharmony_ci
2462306a36Sopenharmony_ci  Valid values for group and function names can be found from looking at the
2562306a36Sopenharmony_ci  group and function arrays in driver files:
2662306a36Sopenharmony_ci  drivers/pinctrl/pinctrl-sirf.c
2762306a36Sopenharmony_ci
2862306a36Sopenharmony_ciFor example, pinctrl might have subnodes like the following:
2962306a36Sopenharmony_ci uart2_pins_a: uart2@0 {
3062306a36Sopenharmony_ci         uart {
3162306a36Sopenharmony_ci                 sirf,pins = "uart2grp";
3262306a36Sopenharmony_ci                 sirf,function = "uart2";
3362306a36Sopenharmony_ci         };
3462306a36Sopenharmony_ci };
3562306a36Sopenharmony_ci uart2_noflow_pins_a: uart2@1 {
3662306a36Sopenharmony_ci         uart {
3762306a36Sopenharmony_ci                 sirf,pins = "uart2_nostreamctrlgrp";
3862306a36Sopenharmony_ci                 sirf,function = "uart2_nostreamctrl";
3962306a36Sopenharmony_ci         };
4062306a36Sopenharmony_ci };
4162306a36Sopenharmony_ci
4262306a36Sopenharmony_ciFor a specific board, if it wants to use uart2 without hardware flow control,
4362306a36Sopenharmony_ciit can add the following to its board-specific .dts file.
4462306a36Sopenharmony_ciuart2: uart@b0070000 {
4562306a36Sopenharmony_ci	pinctrl-names = "default";
4662306a36Sopenharmony_ci	pinctrl-0 = <&uart2_noflow_pins_a>;
4762306a36Sopenharmony_ci}
48