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