| 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 arguements. Enable input (does not affect |
| output.) |
| - input-disable: No arguements. 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 arguements. Enable input (does not affect |
| output.) |
| - input-disable: No arguements. 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 arguements. Enable input (does not affect |
| output.) |
| - input-disable: No arguements. 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 |