|  | ImgTec TZ1090 pin controller | 
|  |  | 
|  | Required properties: | 
|  | - compatible: "img,tz1090-pinctrl" | 
|  | - reg: Should contain the register physical address and length of the pad | 
|  | configuration registers (CR_PADS_* and CR_IF_CTL0). | 
|  |  | 
|  | Please refer to pinctrl-bindings.txt in this directory for details of the | 
|  | common pinctrl bindings used by client devices, including the meaning of the | 
|  | phrase "pin configuration node". | 
|  |  | 
|  | TZ1090's pin configuration nodes act as a container for an arbitrary number of | 
|  | subnodes. Each of these subnodes represents some desired configuration for a | 
|  | pin, a group, or a list of pins or groups. This configuration can include the | 
|  | mux function to select on those pin(s)/group(s), and various pin configuration | 
|  | parameters, such as pull-up, drive strength, etc. | 
|  |  | 
|  | The name of each subnode is not important; all subnodes should be enumerated | 
|  | and processed purely based on their content. | 
|  |  | 
|  | Each subnode only affects those parameters that are explicitly listed. In | 
|  | other words, a subnode that lists a mux function but no pin configuration | 
|  | parameters implies no information about any pin configuration parameters. | 
|  | Similarly, a pin subnode that describes a pullup parameter implies no | 
|  | information about e.g. the mux function. For this reason, even seemingly boolean | 
|  | values are actually tristates in this binding: unspecified, off, or on. | 
|  | Unspecified is represented as an absent property, and off/on are represented as | 
|  | integer values 0 and 1. | 
|  |  | 
|  | Required subnode-properties: | 
|  | - tz1090,pins : An array of strings. Each string contains the name of a pin or | 
|  | group. Valid values for these names are listed below. | 
|  |  | 
|  | Optional subnode-properties: | 
|  | - tz1090,function: A string containing the name of the function to mux to the | 
|  | pin or group. Valid values for function names are listed below, including | 
|  | which pingroups can be muxed to them. | 
|  | - supported generic pinconfig properties (for further details see | 
|  | Documentation/devicetree/bindings/pinctrl/pinctrl-bindings.txt): | 
|  | - bias-disable | 
|  | - bias-high-impedance | 
|  | - bias-bus-hold | 
|  | - bias-pull-up | 
|  | - bias-pull-down | 
|  | - input-schmitt-enable | 
|  | - input-schmitt-disable | 
|  | - drive-strength: Integer, control drive strength of pins in mA. | 
|  | 2: 2mA | 
|  | 4: 4mA | 
|  | 8: 8mA | 
|  | 12: 12mA | 
|  |  | 
|  |  | 
|  | Note that many of these properties are only valid for certain specific pins | 
|  | or groups. See the TZ1090 TRM for complete details regarding which groups | 
|  | support which functionality. The Linux pinctrl driver may also be a useful | 
|  | reference. | 
|  |  | 
|  | Valid values for pin and group names are: | 
|  |  | 
|  | gpio pins: | 
|  |  | 
|  | These all support bias-high-impediance, bias-pull-up, bias-pull-down, and | 
|  | bias-bus-hold (which can also be provided to any of the groups below to set | 
|  | it for all pins in that group). | 
|  |  | 
|  | They also all support the some form of muxing. Any pins which are contained | 
|  | in one of the mux groups (see below) can be muxed only to the functions | 
|  | supported by the mux group. All other pins can be muxed to the "perip" | 
|  | function which enables them with their intended peripheral. | 
|  |  | 
|  | Different pins in the same mux group cannot be muxed to different functions, | 
|  | however it is possible to mux only a subset of the pins in a mux group to a | 
|  | particular function and leave the remaining pins unmuxed. This is useful if | 
|  | the board connects certain pins in a group to other devices to be controlled | 
|  | by GPIO, and you don't want the usual peripheral to have any control of the | 
|  | pin. | 
|  |  | 
|  | ant_sel0, ant_sel1, gain0, gain1, gain2, gain3, gain4, gain5, gain6, gain7, | 
|  | i2s_bclk_out, i2s_din, i2s_dout0, i2s_dout1, i2s_dout2, i2s_lrclk_out, | 
|  | i2s_mclk, pa_on, pdm_a, pdm_b, pdm_c, pdm_d, pll_on, rx_hp, rx_on, | 
|  | scb0_sclk, scb0_sdat, scb1_sclk, scb1_sdat, scb2_sclk, scb2_sdat, sdh_cd, | 
|  | sdh_clk_in, sdh_wp, sdio_clk, sdio_cmd, sdio_d0, sdio_d1, sdio_d2, sdio_d3, | 
|  | spi0_cs0, spi0_cs1, spi0_cs2, spi0_din, spi0_dout, spi0_mclk, spi1_cs0, | 
|  | spi1_cs1, spi1_cs2, spi1_din, spi1_dout, spi1_mclk, tft_blank_ls, tft_blue0, | 
|  | tft_blue1, tft_blue2, tft_blue3, tft_blue4, tft_blue5, tft_blue6, tft_blue7, | 
|  | tft_green0, tft_green1, tft_green2, tft_green3, tft_green4, tft_green5, | 
|  | tft_green6, tft_green7, tft_hsync_nr, tft_panelclk, tft_pwrsave, tft_red0, | 
|  | tft_red1, tft_red2, tft_red3, tft_red4, tft_red5, tft_red6, tft_red7, | 
|  | tft_vd12acb, tft_vdden_gd, tft_vsync_ns, tx_on, uart0_cts, uart0_rts, | 
|  | uart0_rxd, uart0_txd, uart1_rxd, uart1_txd. | 
|  |  | 
|  | bias-high-impediance:  supported. | 
|  | bias-pull-up:          supported. | 
|  | bias-pull-down:        supported. | 
|  | bias-bus-hold:         supported. | 
|  | function:              perip or those supported by pin's mux group. | 
|  |  | 
|  | other pins: | 
|  |  | 
|  | These other pins are part of various pin groups below, but can't be | 
|  | controlled as GPIOs. They do however support bias-high-impediance, | 
|  | bias-pull-up, bias-pull-down, and bias-bus-hold (which can also be provided | 
|  | to any of the groups below to set it for all pins in that group). | 
|  |  | 
|  | clk_out0, clk_out1, tck, tdi, tdo, tms, trst. | 
|  |  | 
|  | bias-high-impediance:  supported. | 
|  | bias-pull-up:          supported. | 
|  | bias-pull-down:        supported. | 
|  | bias-bus-hold:         supported. | 
|  |  | 
|  | mux groups: | 
|  |  | 
|  | These all support function, and some support drive configs. | 
|  |  | 
|  | afe | 
|  | pins:                  tx_on, rx_on, pll_on, pa_on, rx_hp, ant_sel0, | 
|  | ant_sel1, gain0, gain1, gain2, gain3, gain4, | 
|  | gain5, gain6, gain7. | 
|  | function:              afe, ts_out_0. | 
|  | input-schmitt-enable:  supported. | 
|  | input-schmitt-disable: supported. | 
|  | drive-strength:        supported. | 
|  | pdm_d | 
|  | pins:                  pdm_d. | 
|  | function:              pdm_dac, usb_vbus. | 
|  | sdh | 
|  | pins:                  sdh_cd, sdh_wp, sdh_clk_in. | 
|  | function:              sdh, sdio. | 
|  | sdio | 
|  | pins:                  sdio_clk, sdio_cmd, sdio_d0, sdio_d1, sdio_d2, | 
|  | sdio_d3. | 
|  | function:              sdio, sdh. | 
|  | spi1_cs2 | 
|  | pins:                  spi1_cs2. | 
|  | function:              spi1_cs2, usb_vbus. | 
|  | tft | 
|  | pins:                  tft_red0, tft_red1, tft_red2, tft_red3, | 
|  | tft_red4, tft_red5, tft_red6, tft_red7, | 
|  | tft_green0, tft_green1, tft_green2, tft_green3, | 
|  | tft_green4, tft_green5, tft_green6, tft_green7, | 
|  | tft_blue0, tft_blue1, tft_blue2, tft_blue3, | 
|  | tft_blue4, tft_blue5, tft_blue6, tft_blue7, | 
|  | tft_vdden_gd, tft_panelclk, tft_blank_ls, | 
|  | tft_vsync_ns, tft_hsync_nr, tft_vd12acb, | 
|  | tft_pwrsave. | 
|  | function:              tft, ext_dac, not_iqadc_stb, iqdac_stb, ts_out_1, | 
|  | lcd_trace, phy_ringosc. | 
|  | input-schmitt-enable:  supported. | 
|  | input-schmitt-disable: supported. | 
|  | drive-strength:        supported. | 
|  |  | 
|  | drive groups: | 
|  |  | 
|  | These all support input-schmitt-enable, input-schmitt-disable, | 
|  | and drive-strength. | 
|  |  | 
|  | jtag | 
|  | pins:   tck, trst, tdi, tdo, tms. | 
|  | scb1 | 
|  | pins:   scb1_sdat, scb1_sclk. | 
|  | scb2 | 
|  | pins:   scb2_sdat, scb2_sclk. | 
|  | spi0 | 
|  | pins:   spi0_mclk, spi0_cs0, spi0_cs1, spi0_cs2, spi0_dout, spi0_din. | 
|  | spi1 | 
|  | pins:   spi1_mclk, spi1_cs0, spi1_cs1, spi1_cs2, spi1_dout, spi1_din. | 
|  | uart | 
|  | pins:   uart0_txd, uart0_rxd, uart0_rts, uart0_cts, | 
|  | uart1_txd, uart1_rxd. | 
|  | drive_i2s | 
|  | pins:   clk_out1, i2s_din, i2s_dout0, i2s_dout1, i2s_dout2, | 
|  | i2s_lrclk_out, i2s_bclk_out, i2s_mclk. | 
|  | drive_pdm | 
|  | pins:   clk_out0, pdm_b, pdm_a. | 
|  | drive_scb0 | 
|  | pins:   scb0_sclk, scb0_sdat, pdm_d, pdm_c. | 
|  | drive_sdio | 
|  | pins:   sdio_clk, sdio_cmd, sdio_d0, sdio_d1, sdio_d2, sdio_d3, | 
|  | sdh_wp, sdh_cd, sdh_clk_in. | 
|  |  | 
|  | convenience groups: | 
|  |  | 
|  | These are just convenient groupings of pins and don't support any drive | 
|  | configs. | 
|  |  | 
|  | uart0 | 
|  | pins:   uart0_cts, uart0_rts, uart0_rxd, uart0_txd. | 
|  | uart1 | 
|  | pins:   uart1_rxd, uart1_txd. | 
|  | scb0 | 
|  | pins:   scb0_sclk, scb0_sdat. | 
|  | i2s | 
|  | pins:   i2s_bclk_out, i2s_din, i2s_dout0, i2s_dout1, i2s_dout2, | 
|  | i2s_lrclk_out, i2s_mclk. | 
|  |  | 
|  | Example: | 
|  |  | 
|  | pinctrl: pinctrl@02005800 { | 
|  | #gpio-range-cells = <3>; | 
|  | compatible = "img,tz1090-pinctrl"; | 
|  | reg = <0x02005800 0xe4>; | 
|  | }; | 
|  |  | 
|  | Example board file extract: | 
|  |  | 
|  | &pinctrl { | 
|  | uart0_default: uart0 { | 
|  | uart0_cfg { | 
|  | tz1090,pins =	"uart0_rxd", | 
|  | "uart0_txd"; | 
|  | tz1090,function = "perip"; | 
|  | }; | 
|  | }; | 
|  | tft_default: tft { | 
|  | tft_cfg { | 
|  | tz1090,pins =	"tft"; | 
|  | tz1090,function = "tft"; | 
|  | }; | 
|  | }; | 
|  | }; | 
|  |  | 
|  | uart@02004b00 { | 
|  | pinctrl-names = "default"; | 
|  | pinctrl-0 = <&uart0_default>; | 
|  | }; |