forked from Qortal/Brooklyn
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
461 lines
12 KiB
461 lines
12 KiB
Broadcom BCM281xx Pin Controller |
|
|
|
This is a pin controller for the Broadcom BCM281xx SoC family, which includes |
|
BCM11130, BCM11140, BCM11351, BCM28145, and BCM28155 SoCs. |
|
|
|
=== Pin Controller Node === |
|
|
|
Required Properties: |
|
|
|
- compatible: Must be "brcm,bcm11351-pinctrl" |
|
- reg: Base address of the PAD Controller register block and the size |
|
of the block. |
|
|
|
For example, the following is the bare minimum node: |
|
|
|
pinctrl@35004800 { |
|
compatible = "brcm,bcm11351-pinctrl"; |
|
reg = <0x35004800 0x430>; |
|
}; |
|
|
|
As a pin controller device, in addition to the required properties, this node |
|
should also contain the pin configuration nodes that client devices reference, |
|
if any. |
|
|
|
=== Pin Configuration Node === |
|
|
|
Each pin configuration node is a sub-node of the pin controller node and is a |
|
container of an arbitrary number of subnodes, called pin group nodes in this |
|
document. |
|
|
|
Please refer to the pinctrl-bindings.txt in this directory for details of the |
|
common pinctrl bindings used by client devices, including the definition of a |
|
"pin configuration node". |
|
|
|
=== Pin Group Node === |
|
|
|
A pin group node specifies the desired pin mux and/or pin configuration for an |
|
arbitrary number of pins. The name of the pin group node is optional and not |
|
used. |
|
|
|
A pin group node only affects the properties specified in the node, and has no |
|
effect on any properties that are omitted. |
|
|
|
The pin group node accepts a subset of the generic pin config properties. For |
|
details generic pin config properties, please refer to pinctrl-bindings.txt |
|
and <include/linux/pinctrl/pinconfig-generic.h>. |
|
|
|
Each pin controlled by this pin controller belong to one of three types: |
|
Standard, I2C, and HDMI. Each type accepts a different set of pin config |
|
properties. A list of pins and their types is provided below. |
|
|
|
Required Properties (applicable to all pins): |
|
|
|
- pins: Multiple strings. Specifies the name(s) of one or more pins to |
|
be configured by this node. |
|
|
|
Optional Properties (for standard pins): |
|
|
|
- function: String. Specifies the pin mux selection. Values |
|
must be one of: "alt1", "alt2", "alt3", "alt4" |
|
- input-schmitt-enable: No arguments. Enable schmitt-trigger mode. |
|
- input-schmitt-disable: No arguments. Disable schmitt-trigger mode. |
|
- bias-pull-up: No arguments. Pull up on pin. |
|
- bias-pull-down: No arguments. Pull down on pin. |
|
- bias-disable: No arguments. Disable pin bias. |
|
- slew-rate: Integer. Meaning depends on configured pin mux: |
|
*_SCL or *_SDA: |
|
0: Standard(100kbps)& Fast(400kbps) mode |
|
1: Highspeed (3.4Mbps) mode |
|
IC_DM or IC_DP: |
|
0: normal slew rate |
|
1: fast slew rate |
|
Otherwise: |
|
0: fast slew rate |
|
1: normal slew rate |
|
- input-enable: No arguments. Enable input (does not affect |
|
output.) |
|
- input-disable: No arguments. Disable input (does not affect |
|
output.) |
|
- drive-strength: Integer. Drive strength in mA. Valid values are |
|
2, 4, 6, 8, 10, 12, 14, 16 mA. |
|
|
|
Optional Properties (for I2C pins): |
|
|
|
- function: String. Specifies the pin mux selection. Values |
|
must be one of: "alt1", "alt2", "alt3", "alt4" |
|
- bias-pull-up: Integer. Pull up strength in Ohm. There are 3 |
|
pull-up resisitors (1.2k, 1.8k, 2.7k) available |
|
in parallel for I2C pins, so the valid values |
|
are: 568, 720, 831, 1080, 1200, 1800, 2700 Ohm. |
|
- bias-disable: No arguments. Disable pin bias. |
|
- slew-rate: Integer. Meaning depends on configured pin mux: |
|
*_SCL or *_SDA: |
|
0: Standard(100kbps)& Fast(400kbps) mode |
|
1: Highspeed (3.4Mbps) mode |
|
IC_DM or IC_DP: |
|
0: normal slew rate |
|
1: fast slew rate |
|
Otherwise: |
|
0: fast slew rate |
|
1: normal slew rate |
|
- input-enable: No arguments. Enable input (does not affect |
|
output.) |
|
- input-disable: No arguments. Disable input (does not affect |
|
output.) |
|
|
|
Optional Properties (for HDMI pins): |
|
|
|
- function: String. Specifies the pin mux selection. Values |
|
must be one of: "alt1", "alt2", "alt3", "alt4" |
|
- slew-rate: Integer. Controls slew rate. |
|
0: Standard(100kbps)& Fast(400kbps) mode |
|
1: Highspeed (3.4Mbps) mode |
|
- input-enable: No arguments. Enable input (does not affect |
|
output.) |
|
- input-disable: No arguments. Disable input (does not affect |
|
output.) |
|
|
|
Example: |
|
// pin controller node |
|
pinctrl@35004800 { |
|
compatible = "brcm,bcm11351-pinctrl"; |
|
reg = <0x35004800 0x430>; |
|
|
|
// pin configuration node |
|
dev_a_default: dev_a_active { |
|
//group node defining 1 standard pin |
|
grp_1 { |
|
pins = "std_pin1"; |
|
function = "alt1"; |
|
input-schmitt-enable; |
|
bias-disable; |
|
slew-rate = <1>; |
|
drive-strength = <4>; |
|
}; |
|
|
|
// group node defining 2 I2C pins |
|
grp_2 { |
|
pins = "i2c_pin1", "i2c_pin2"; |
|
function = "alt2"; |
|
bias-pull-up = <720>; |
|
input-enable; |
|
}; |
|
|
|
// group node defining 2 HDMI pins |
|
grp_3 { |
|
pins = "hdmi_pin1", "hdmi_pin2"; |
|
function = "alt3"; |
|
slew-rate = <1>; |
|
}; |
|
|
|
// other pin group nodes |
|
... |
|
}; |
|
|
|
// other pin configuration nodes |
|
... |
|
}; |
|
|
|
In the example above, "dev_a_active" is a pin configuration node with a number |
|
of sub-nodes. In the pin group node "grp_1", one pin, "std_pin1", is defined in |
|
the "pins" property. Thus, the remaining properties in the "grp_1" node applies |
|
only to this pin, including the following settings: |
|
- setting pinmux to "alt1" |
|
- enabling schmitt-trigger (hystersis) mode |
|
- disabling pin bias |
|
- setting the slew-rate to 1 |
|
- setting the drive strength to 4 mA |
|
Note that neither "input-enable" nor "input-disable" was specified - the pinctrl |
|
subsystem will therefore leave this property unchanged from whatever state it |
|
was in before applying these changes. |
|
|
|
The "pins" property in the pin group node "grp_2" specifies two pins - |
|
"i2c_pin1" and "i2c_pin2"; the remaining properties in this pin group node, |
|
therefore, applies to both of these pins. The properties include: |
|
- setting pinmux to "alt2" |
|
- setting pull-up resistance to 720 Ohm (ie. enabling 1.2k and 1.8k resistors |
|
in parallel) |
|
- enabling both pins' input |
|
"slew-rate" is not specified in this pin group node, so the slew-rate for these |
|
pins are left as-is. |
|
|
|
Finally, "grp_3" defines two HDMI pins. The following properties are applied to |
|
both pins: |
|
- setting pinmux to "alt3" |
|
- setting slew-rate to 1; for HDMI pins, this corresponds to the 3.4 Mbps |
|
Highspeed mode |
|
The input is neither enabled or disabled, and is left untouched. |
|
|
|
=== Pin Names and Type === |
|
|
|
The following are valid pin names and their pin types: |
|
|
|
"adcsync", Standard |
|
"bat_rm", Standard |
|
"bsc1_scl", I2C |
|
"bsc1_sda", I2C |
|
"bsc2_scl", I2C |
|
"bsc2_sda", I2C |
|
"classgpwr", Standard |
|
"clk_cx8", Standard |
|
"clkout_0", Standard |
|
"clkout_1", Standard |
|
"clkout_2", Standard |
|
"clkout_3", Standard |
|
"clkreq_in_0", Standard |
|
"clkreq_in_1", Standard |
|
"cws_sys_req1", Standard |
|
"cws_sys_req2", Standard |
|
"cws_sys_req3", Standard |
|
"digmic1_clk", Standard |
|
"digmic1_dq", Standard |
|
"digmic2_clk", Standard |
|
"digmic2_dq", Standard |
|
"gpen13", Standard |
|
"gpen14", Standard |
|
"gpen15", Standard |
|
"gpio00", Standard |
|
"gpio01", Standard |
|
"gpio02", Standard |
|
"gpio03", Standard |
|
"gpio04", Standard |
|
"gpio05", Standard |
|
"gpio06", Standard |
|
"gpio07", Standard |
|
"gpio08", Standard |
|
"gpio09", Standard |
|
"gpio10", Standard |
|
"gpio11", Standard |
|
"gpio12", Standard |
|
"gpio13", Standard |
|
"gpio14", Standard |
|
"gps_pablank", Standard |
|
"gps_tmark", Standard |
|
"hdmi_scl", HDMI |
|
"hdmi_sda", HDMI |
|
"ic_dm", Standard |
|
"ic_dp", Standard |
|
"kp_col_ip_0", Standard |
|
"kp_col_ip_1", Standard |
|
"kp_col_ip_2", Standard |
|
"kp_col_ip_3", Standard |
|
"kp_row_op_0", Standard |
|
"kp_row_op_1", Standard |
|
"kp_row_op_2", Standard |
|
"kp_row_op_3", Standard |
|
"lcd_b_0", Standard |
|
"lcd_b_1", Standard |
|
"lcd_b_2", Standard |
|
"lcd_b_3", Standard |
|
"lcd_b_4", Standard |
|
"lcd_b_5", Standard |
|
"lcd_b_6", Standard |
|
"lcd_b_7", Standard |
|
"lcd_g_0", Standard |
|
"lcd_g_1", Standard |
|
"lcd_g_2", Standard |
|
"lcd_g_3", Standard |
|
"lcd_g_4", Standard |
|
"lcd_g_5", Standard |
|
"lcd_g_6", Standard |
|
"lcd_g_7", Standard |
|
"lcd_hsync", Standard |
|
"lcd_oe", Standard |
|
"lcd_pclk", Standard |
|
"lcd_r_0", Standard |
|
"lcd_r_1", Standard |
|
"lcd_r_2", Standard |
|
"lcd_r_3", Standard |
|
"lcd_r_4", Standard |
|
"lcd_r_5", Standard |
|
"lcd_r_6", Standard |
|
"lcd_r_7", Standard |
|
"lcd_vsync", Standard |
|
"mdmgpio0", Standard |
|
"mdmgpio1", Standard |
|
"mdmgpio2", Standard |
|
"mdmgpio3", Standard |
|
"mdmgpio4", Standard |
|
"mdmgpio5", Standard |
|
"mdmgpio6", Standard |
|
"mdmgpio7", Standard |
|
"mdmgpio8", Standard |
|
"mphi_data_0", Standard |
|
"mphi_data_1", Standard |
|
"mphi_data_2", Standard |
|
"mphi_data_3", Standard |
|
"mphi_data_4", Standard |
|
"mphi_data_5", Standard |
|
"mphi_data_6", Standard |
|
"mphi_data_7", Standard |
|
"mphi_data_8", Standard |
|
"mphi_data_9", Standard |
|
"mphi_data_10", Standard |
|
"mphi_data_11", Standard |
|
"mphi_data_12", Standard |
|
"mphi_data_13", Standard |
|
"mphi_data_14", Standard |
|
"mphi_data_15", Standard |
|
"mphi_ha0", Standard |
|
"mphi_hat0", Standard |
|
"mphi_hat1", Standard |
|
"mphi_hce0_n", Standard |
|
"mphi_hce1_n", Standard |
|
"mphi_hrd_n", Standard |
|
"mphi_hwr_n", Standard |
|
"mphi_run0", Standard |
|
"mphi_run1", Standard |
|
"mtx_scan_clk", Standard |
|
"mtx_scan_data", Standard |
|
"nand_ad_0", Standard |
|
"nand_ad_1", Standard |
|
"nand_ad_2", Standard |
|
"nand_ad_3", Standard |
|
"nand_ad_4", Standard |
|
"nand_ad_5", Standard |
|
"nand_ad_6", Standard |
|
"nand_ad_7", Standard |
|
"nand_ale", Standard |
|
"nand_cen_0", Standard |
|
"nand_cen_1", Standard |
|
"nand_cle", Standard |
|
"nand_oen", Standard |
|
"nand_rdy_0", Standard |
|
"nand_rdy_1", Standard |
|
"nand_wen", Standard |
|
"nand_wp", Standard |
|
"pc1", Standard |
|
"pc2", Standard |
|
"pmu_int", Standard |
|
"pmu_scl", I2C |
|
"pmu_sda", I2C |
|
"rfst2g_mtsloten3g", Standard |
|
"rgmii_0_rx_ctl", Standard |
|
"rgmii_0_rxc", Standard |
|
"rgmii_0_rxd_0", Standard |
|
"rgmii_0_rxd_1", Standard |
|
"rgmii_0_rxd_2", Standard |
|
"rgmii_0_rxd_3", Standard |
|
"rgmii_0_tx_ctl", Standard |
|
"rgmii_0_txc", Standard |
|
"rgmii_0_txd_0", Standard |
|
"rgmii_0_txd_1", Standard |
|
"rgmii_0_txd_2", Standard |
|
"rgmii_0_txd_3", Standard |
|
"rgmii_1_rx_ctl", Standard |
|
"rgmii_1_rxc", Standard |
|
"rgmii_1_rxd_0", Standard |
|
"rgmii_1_rxd_1", Standard |
|
"rgmii_1_rxd_2", Standard |
|
"rgmii_1_rxd_3", Standard |
|
"rgmii_1_tx_ctl", Standard |
|
"rgmii_1_txc", Standard |
|
"rgmii_1_txd_0", Standard |
|
"rgmii_1_txd_1", Standard |
|
"rgmii_1_txd_2", Standard |
|
"rgmii_1_txd_3", Standard |
|
"rgmii_gpio_0", Standard |
|
"rgmii_gpio_1", Standard |
|
"rgmii_gpio_2", Standard |
|
"rgmii_gpio_3", Standard |
|
"rtxdata2g_txdata3g1", Standard |
|
"rtxen2g_txdata3g2", Standard |
|
"rxdata3g0", Standard |
|
"rxdata3g1", Standard |
|
"rxdata3g2", Standard |
|
"sdio1_clk", Standard |
|
"sdio1_cmd", Standard |
|
"sdio1_data_0", Standard |
|
"sdio1_data_1", Standard |
|
"sdio1_data_2", Standard |
|
"sdio1_data_3", Standard |
|
"sdio4_clk", Standard |
|
"sdio4_cmd", Standard |
|
"sdio4_data_0", Standard |
|
"sdio4_data_1", Standard |
|
"sdio4_data_2", Standard |
|
"sdio4_data_3", Standard |
|
"sim_clk", Standard |
|
"sim_data", Standard |
|
"sim_det", Standard |
|
"sim_resetn", Standard |
|
"sim2_clk", Standard |
|
"sim2_data", Standard |
|
"sim2_det", Standard |
|
"sim2_resetn", Standard |
|
"sri_c", Standard |
|
"sri_d", Standard |
|
"sri_e", Standard |
|
"ssp_extclk", Standard |
|
"ssp0_clk", Standard |
|
"ssp0_fs", Standard |
|
"ssp0_rxd", Standard |
|
"ssp0_txd", Standard |
|
"ssp2_clk", Standard |
|
"ssp2_fs_0", Standard |
|
"ssp2_fs_1", Standard |
|
"ssp2_fs_2", Standard |
|
"ssp2_fs_3", Standard |
|
"ssp2_rxd_0", Standard |
|
"ssp2_rxd_1", Standard |
|
"ssp2_txd_0", Standard |
|
"ssp2_txd_1", Standard |
|
"ssp3_clk", Standard |
|
"ssp3_fs", Standard |
|
"ssp3_rxd", Standard |
|
"ssp3_txd", Standard |
|
"ssp4_clk", Standard |
|
"ssp4_fs", Standard |
|
"ssp4_rxd", Standard |
|
"ssp4_txd", Standard |
|
"ssp5_clk", Standard |
|
"ssp5_fs", Standard |
|
"ssp5_rxd", Standard |
|
"ssp5_txd", Standard |
|
"ssp6_clk", Standard |
|
"ssp6_fs", Standard |
|
"ssp6_rxd", Standard |
|
"ssp6_txd", Standard |
|
"stat_1", Standard |
|
"stat_2", Standard |
|
"sysclken", Standard |
|
"traceclk", Standard |
|
"tracedt00", Standard |
|
"tracedt01", Standard |
|
"tracedt02", Standard |
|
"tracedt03", Standard |
|
"tracedt04", Standard |
|
"tracedt05", Standard |
|
"tracedt06", Standard |
|
"tracedt07", Standard |
|
"tracedt08", Standard |
|
"tracedt09", Standard |
|
"tracedt10", Standard |
|
"tracedt11", Standard |
|
"tracedt12", Standard |
|
"tracedt13", Standard |
|
"tracedt14", Standard |
|
"tracedt15", Standard |
|
"txdata3g0", Standard |
|
"txpwrind", Standard |
|
"uartb1_ucts", Standard |
|
"uartb1_urts", Standard |
|
"uartb1_urxd", Standard |
|
"uartb1_utxd", Standard |
|
"uartb2_urxd", Standard |
|
"uartb2_utxd", Standard |
|
"uartb3_ucts", Standard |
|
"uartb3_urts", Standard |
|
"uartb3_urxd", Standard |
|
"uartb3_utxd", Standard |
|
"uartb4_ucts", Standard |
|
"uartb4_urts", Standard |
|
"uartb4_urxd", Standard |
|
"uartb4_utxd", Standard |
|
"vc_cam1_scl", I2C |
|
"vc_cam1_sda", I2C |
|
"vc_cam2_scl", I2C |
|
"vc_cam2_sda", I2C |
|
"vc_cam3_scl", I2C |
|
"vc_cam3_sda", I2C
|
|
|