162306a36Sopenharmony_ciImagination Technologies Pistachio SoC pin controllers
262306a36Sopenharmony_ci======================================================
362306a36Sopenharmony_ci
462306a36Sopenharmony_ciThe pin controllers on Pistachio are a combined GPIO controller, (GPIO)
562306a36Sopenharmony_ciinterrupt controller, and pinmux + pinconf device. The system ("east") pin
662306a36Sopenharmony_cicontroller on Pistachio has 99 pins, 90 of which are MFIOs which can be
762306a36Sopenharmony_ciconfigured as GPIOs. The 90 GPIOs are divided into 6 banks of up to 16 GPIOs
862306a36Sopenharmony_cieach. The GPIO banks are represented as sub-nodes of the pad controller node.
962306a36Sopenharmony_ci
1062306a36Sopenharmony_ciPlease refer to pinctrl-bindings.txt, ../gpio/gpio.txt, and
1162306a36Sopenharmony_ci../interrupt-controller/interrupts.txt for generic information regarding
1262306a36Sopenharmony_cipin controller, GPIO, and interrupt bindings.
1362306a36Sopenharmony_ci
1462306a36Sopenharmony_ciRequired properties for pin controller node:
1562306a36Sopenharmony_ci--------------------------------------------
1662306a36Sopenharmony_ci - compatible: "img,pistachio-system-pinctrl".
1762306a36Sopenharmony_ci - reg: Address range of the pinctrl registers.
1862306a36Sopenharmony_ci
1962306a36Sopenharmony_ciRequired properties for GPIO bank sub-nodes:
2062306a36Sopenharmony_ci--------------------------------------------
2162306a36Sopenharmony_ci - interrupts: Interrupt line for the GPIO bank.
2262306a36Sopenharmony_ci - gpio-controller: Indicates the device is a GPIO controller.
2362306a36Sopenharmony_ci - #gpio-cells: Must be two. The first cell is the GPIO pin number and the
2462306a36Sopenharmony_ci   second cell indicates the polarity. See <dt-bindings/gpio/gpio.h> for
2562306a36Sopenharmony_ci   a list of possible values.
2662306a36Sopenharmony_ci - interrupt-controller: Indicates the device is an interrupt controller.
2762306a36Sopenharmony_ci - #interrupt-cells: Must be two. The first cell is the GPIO pin number and
2862306a36Sopenharmony_ci   the second cell encodes the interrupt flags. See
2962306a36Sopenharmony_ci   <dt-bindings/interrupt-controller/irq.h> for a list of valid flags.
3062306a36Sopenharmony_ci
3162306a36Sopenharmony_ciNote that the N GPIO bank sub-nodes *must* be named gpio0, gpio1, ... gpioN-1.
3262306a36Sopenharmony_ci
3362306a36Sopenharmony_ciRequired properties for pin configuration sub-nodes:
3462306a36Sopenharmony_ci----------------------------------------------------
3562306a36Sopenharmony_ci - pins: List of pins to which the configuration applies. See below for a
3662306a36Sopenharmony_ci   list of possible pins.
3762306a36Sopenharmony_ci
3862306a36Sopenharmony_ciOptional properties for pin configuration sub-nodes:
3962306a36Sopenharmony_ci----------------------------------------------------
4062306a36Sopenharmony_ci - function: Mux function for the specified pins. This is not applicable for
4162306a36Sopenharmony_ci   non-MFIO pins. See below for a list of valid functions for each pin.
4262306a36Sopenharmony_ci - bias-high-impedance: Enable high-impedance mode.
4362306a36Sopenharmony_ci - bias-pull-up: Enable weak pull-up.
4462306a36Sopenharmony_ci - bias-pull-down: Enable weak pull-down.
4562306a36Sopenharmony_ci - bias-bus-hold: Enable bus-keeper mode.
4662306a36Sopenharmony_ci - drive-strength: Drive strength in mA. Supported values: 2, 4, 8, 12.
4762306a36Sopenharmony_ci - input-schmitt-enable: Enable Schmitt trigger.
4862306a36Sopenharmony_ci - input-schmitt-disable: Disable Schmitt trigger.
4962306a36Sopenharmony_ci - slew-rate: Slew rate control. 0 for slow, 1 for fast.
5062306a36Sopenharmony_ci
5162306a36Sopenharmony_ciPin		Functions
5262306a36Sopenharmony_ci---		---------
5362306a36Sopenharmony_cimfio0		spim1
5462306a36Sopenharmony_cimfio1		spim1, spim0, uart1
5562306a36Sopenharmony_cimfio2		spim1, spim0, uart1
5662306a36Sopenharmony_cimfio3		spim1
5762306a36Sopenharmony_cimfio4		spim1
5862306a36Sopenharmony_cimfio5		spim1
5962306a36Sopenharmony_cimfio6		spim1
6062306a36Sopenharmony_cimfio7		spim1
6162306a36Sopenharmony_cimfio8		spim0
6262306a36Sopenharmony_cimfio9		spim0
6362306a36Sopenharmony_cimfio10		spim0
6462306a36Sopenharmony_cimfio11		spis
6562306a36Sopenharmony_cimfio12		spis
6662306a36Sopenharmony_cimfio13		spis
6762306a36Sopenharmony_cimfio14		spis
6862306a36Sopenharmony_cimfio15		sdhost, mips_trace_clk, mips_trace_data
6962306a36Sopenharmony_cimfio16		sdhost, mips_trace_dint, mips_trace_data
7062306a36Sopenharmony_cimfio17		sdhost, mips_trace_trigout, mips_trace_data
7162306a36Sopenharmony_cimfio18		sdhost, mips_trace_trigin, mips_trace_data
7262306a36Sopenharmony_cimfio19		sdhost, mips_trace_dm, mips_trace_data
7362306a36Sopenharmony_cimfio20		sdhost, mips_trace_probe_n, mips_trace_data
7462306a36Sopenharmony_cimfio21		sdhost, mips_trace_data
7562306a36Sopenharmony_cimfio22		sdhost, mips_trace_data
7662306a36Sopenharmony_cimfio23		sdhost
7762306a36Sopenharmony_cimfio24		sdhost
7862306a36Sopenharmony_cimfio25		sdhost
7962306a36Sopenharmony_cimfio26		sdhost
8062306a36Sopenharmony_cimfio27		sdhost
8162306a36Sopenharmony_cimfio28		i2c0, spim0
8262306a36Sopenharmony_cimfio29		i2c0, spim0
8362306a36Sopenharmony_cimfio30		i2c1, spim0
8462306a36Sopenharmony_cimfio31		i2c1, spim1
8562306a36Sopenharmony_cimfio32		i2c2
8662306a36Sopenharmony_cimfio33		i2c2
8762306a36Sopenharmony_cimfio34		i2c3
8862306a36Sopenharmony_cimfio35		i2c3
8962306a36Sopenharmony_cimfio36		i2s_out, audio_clk_in
9062306a36Sopenharmony_cimfio37		i2s_out, debug_raw_cca_ind
9162306a36Sopenharmony_cimfio38		i2s_out, debug_ed_sec20_cca_ind
9262306a36Sopenharmony_cimfio39		i2s_out, debug_ed_sec40_cca_ind
9362306a36Sopenharmony_cimfio40		i2s_out, debug_agc_done_0
9462306a36Sopenharmony_cimfio41		i2s_out, debug_agc_done_1
9562306a36Sopenharmony_cimfio42		i2s_out, debug_ed_cca_ind
9662306a36Sopenharmony_cimfio43		i2s_out, debug_s2l_done
9762306a36Sopenharmony_cimfio44		i2s_out
9862306a36Sopenharmony_cimfio45		i2s_dac_clk, audio_sync
9962306a36Sopenharmony_cimfio46		audio_trigger
10062306a36Sopenharmony_cimfio47		i2s_in
10162306a36Sopenharmony_cimfio48		i2s_in
10262306a36Sopenharmony_cimfio49		i2s_in
10362306a36Sopenharmony_cimfio50		i2s_in
10462306a36Sopenharmony_cimfio51		i2s_in
10562306a36Sopenharmony_cimfio52		i2s_in
10662306a36Sopenharmony_cimfio53		i2s_in
10762306a36Sopenharmony_cimfio54		i2s_in, spdif_in
10862306a36Sopenharmony_cimfio55		uart0, spim0, spim1
10962306a36Sopenharmony_cimfio56		uart0, spim0, spim1
11062306a36Sopenharmony_cimfio57		uart0, spim0, spim1
11162306a36Sopenharmony_cimfio58		uart0, spim1
11262306a36Sopenharmony_cimfio59		uart1
11362306a36Sopenharmony_cimfio60		uart1
11462306a36Sopenharmony_cimfio61		spdif_out
11562306a36Sopenharmony_cimfio62		spdif_in
11662306a36Sopenharmony_cimfio63		eth, mips_trace_clk, mips_trace_data
11762306a36Sopenharmony_cimfio64		eth, mips_trace_dint, mips_trace_data
11862306a36Sopenharmony_cimfio65		eth, mips_trace_trigout, mips_trace_data
11962306a36Sopenharmony_cimfio66		eth, mips_trace_trigin, mips_trace_data
12062306a36Sopenharmony_cimfio67		eth, mips_trace_dm, mips_trace_data
12162306a36Sopenharmony_cimfio68		eth, mips_trace_probe_n, mips_trace_data
12262306a36Sopenharmony_cimfio69		eth, mips_trace_data
12362306a36Sopenharmony_cimfio70		eth, mips_trace_data
12462306a36Sopenharmony_cimfio71		eth
12562306a36Sopenharmony_cimfio72		ir
12662306a36Sopenharmony_cimfio73		pwmpdm, mips_trace_clk, sram_debug
12762306a36Sopenharmony_cimfio74		pwmpdm, mips_trace_dint, sram_debug
12862306a36Sopenharmony_cimfio75		pwmpdm, mips_trace_trigout, rom_debug
12962306a36Sopenharmony_cimfio76		pwmpdm, mips_trace_trigin, rom_debug
13062306a36Sopenharmony_cimfio77		mdc_debug, mips_trace_dm, rpu_debug
13162306a36Sopenharmony_cimfio78		mdc_debug, mips_trace_probe_n, rpu_debug
13262306a36Sopenharmony_cimfio79		ddr_debug, mips_trace_data, mips_debug
13362306a36Sopenharmony_cimfio80		ddr_debug, mips_trace_data, mips_debug
13462306a36Sopenharmony_cimfio81		dreq0, mips_trace_data, eth_debug
13562306a36Sopenharmony_cimfio82		dreq1, mips_trace_data, eth_debug
13662306a36Sopenharmony_cimfio83		mips_pll_lock, mips_trace_data, usb_debug
13762306a36Sopenharmony_cimfio84		audio_pll_lock, mips_trace_data, usb_debug
13862306a36Sopenharmony_cimfio85		rpu_v_pll_lock, mips_trace_data, sdhost_debug
13962306a36Sopenharmony_cimfio86		rpu_l_pll_lock, mips_trace_data, sdhost_debug
14062306a36Sopenharmony_cimfio87		sys_pll_lock, dreq2, socif_debug
14162306a36Sopenharmony_cimfio88		wifi_pll_lock, dreq3, socif_debug
14262306a36Sopenharmony_cimfio89		bt_pll_lock, dreq4, dreq5
14362306a36Sopenharmony_citck
14462306a36Sopenharmony_citrstn
14562306a36Sopenharmony_citdi
14662306a36Sopenharmony_citms
14762306a36Sopenharmony_citdo
14862306a36Sopenharmony_cijtag_comply
14962306a36Sopenharmony_cisafe_mode
15062306a36Sopenharmony_cipor_disable
15162306a36Sopenharmony_ciresetn
15262306a36Sopenharmony_ci
15362306a36Sopenharmony_ciExample:
15462306a36Sopenharmony_ci--------
15562306a36Sopenharmony_cipinctrl@18101c00 {
15662306a36Sopenharmony_ci	compatible = "img,pistachio-system-pinctrl";
15762306a36Sopenharmony_ci	reg = <0x18101C00 0x400>;
15862306a36Sopenharmony_ci
15962306a36Sopenharmony_ci	gpio0: gpio0 {
16062306a36Sopenharmony_ci		interrupts = <GIC_SHARED 71 IRQ_TYPE_LEVEL_HIGH>;
16162306a36Sopenharmony_ci
16262306a36Sopenharmony_ci		gpio-controller;
16362306a36Sopenharmony_ci		#gpio-cells = <2>;
16462306a36Sopenharmony_ci
16562306a36Sopenharmony_ci		interrupt-controller;
16662306a36Sopenharmony_ci		#interrupt-cells = <2>;
16762306a36Sopenharmony_ci	};
16862306a36Sopenharmony_ci
16962306a36Sopenharmony_ci	...
17062306a36Sopenharmony_ci
17162306a36Sopenharmony_ci	gpio5: gpio5 {
17262306a36Sopenharmony_ci		interrupts = <GIC_SHARED 76 IRQ_TYPE_LEVEL_HIGH>;
17362306a36Sopenharmony_ci
17462306a36Sopenharmony_ci		gpio-controller;
17562306a36Sopenharmony_ci		#gpio-cells = <2>;
17662306a36Sopenharmony_ci
17762306a36Sopenharmony_ci		interrupt-controller;
17862306a36Sopenharmony_ci		#interrupt-cells = <2>;
17962306a36Sopenharmony_ci	};
18062306a36Sopenharmony_ci
18162306a36Sopenharmony_ci	...
18262306a36Sopenharmony_ci
18362306a36Sopenharmony_ci	uart0_xfer: uart0-xfer {
18462306a36Sopenharmony_ci		uart0-rxd {
18562306a36Sopenharmony_ci			pins = "mfio55";
18662306a36Sopenharmony_ci			function = "uart0";
18762306a36Sopenharmony_ci		};
18862306a36Sopenharmony_ci		uart0-txd {
18962306a36Sopenharmony_ci			pins = "mfio56";
19062306a36Sopenharmony_ci			function = "uart0";
19162306a36Sopenharmony_ci		};
19262306a36Sopenharmony_ci	};
19362306a36Sopenharmony_ci
19462306a36Sopenharmony_ci	uart0_rts_cts: uart0-rts-cts {
19562306a36Sopenharmony_ci		uart0-rts {
19662306a36Sopenharmony_ci			  pins = "mfio57";
19762306a36Sopenharmony_ci			  function = "uart0";
19862306a36Sopenharmony_ci		};
19962306a36Sopenharmony_ci		uart0-cts {
20062306a36Sopenharmony_ci			  pins = "mfio58";
20162306a36Sopenharmony_ci			  function = "uart0";
20262306a36Sopenharmony_ci		};
20362306a36Sopenharmony_ci	};
20462306a36Sopenharmony_ci};
20562306a36Sopenharmony_ci
20662306a36Sopenharmony_ciuart@... {
20762306a36Sopenharmony_ci	...
20862306a36Sopenharmony_ci	pinctrl-names = "default";
20962306a36Sopenharmony_ci	pinctrl-0 = <&uart0_xfer>, <&uart0_rts_cts>;
21062306a36Sopenharmony_ci	...
21162306a36Sopenharmony_ci};
21262306a36Sopenharmony_ci
21362306a36Sopenharmony_ciusb_vbus: fixed-regulator {
21462306a36Sopenharmony_ci	...
21562306a36Sopenharmony_ci	gpio = <&gpio5 6 GPIO_ACTIVE_HIGH>;
21662306a36Sopenharmony_ci	...
21762306a36Sopenharmony_ci};
218