mirror of
				https://github.com/AetherDroid/android_kernel_samsung_on5xelte.git
				synced 2025-10-29 23:28:52 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			227 lines
		
	
	
	
		
			8.6 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
			
		
		
	
	
			227 lines
		
	
	
	
		
			8.6 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
| 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 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>;
 | |
| 	};
 | 
