| # SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) |
| %YAML 1.2 |
| --- |
| $id: http://devicetree.org/schemas/pinctrl/actions,s500-pinctrl.yaml# |
| $schema: http://devicetree.org/meta-schemas/core.yaml# |
| |
| title: Actions Semi S500 SoC pinmux & GPIO controller |
| |
| maintainers: |
| - Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org> |
| - Cristian Ciocaltea <cristian.ciocaltea@gmail.com> |
| |
| description: | |
| Pinmux & GPIO controller manages pin multiplexing & configuration including |
| GPIO function selection & GPIO attributes configuration. Please refer to |
| pinctrl-bindings.txt in this directory for common binding part and usage. |
| |
| properties: |
| compatible: |
| const: actions,s500-pinctrl |
| |
| reg: |
| items: |
| - description: GPIO Output + GPIO Input + GPIO Data |
| - description: Multiplexing Control |
| - description: PAD Pull Control + PAD Schmitt Trigger Enable + PAD Control |
| - description: PAD Drive Capacity Select |
| minItems: 1 |
| |
| clocks: |
| maxItems: 1 |
| |
| gpio-controller: true |
| |
| gpio-ranges: |
| maxItems: 1 |
| |
| '#gpio-cells': |
| description: |
| Specifies the pin number and flags, as defined in |
| include/dt-bindings/gpio/gpio.h |
| const: 2 |
| |
| interrupt-controller: true |
| |
| '#interrupt-cells': |
| description: |
| Specifies the pin number and flags, as defined in |
| include/dt-bindings/interrupt-controller/irq.h |
| const: 2 |
| |
| interrupts: |
| description: |
| One interrupt per each of the 5 GPIO ports supported by the controller, |
| sorted by port number ascending order. |
| minItems: 5 |
| maxItems: 5 |
| |
| patternProperties: |
| '-pins$': |
| type: object |
| patternProperties: |
| '^(.*-)?pinmux$': |
| type: object |
| description: |
| Pinctrl node's client devices specify pin muxes using subnodes, |
| which in turn use the standard properties below. |
| $ref: pinmux-node.yaml# |
| |
| properties: |
| groups: |
| description: |
| List of gpio pin groups affected by the functions specified in |
| this subnode. |
| items: |
| oneOf: |
| - enum: [lcd0_d18_mfp, rmii_crs_dv_mfp, rmii_txd0_mfp, |
| rmii_txd1_mfp, rmii_txen_mfp, rmii_rxen_mfp, rmii_rxd1_mfp, |
| rmii_rxd0_mfp, rmii_ref_clk_mfp, i2s_d0_mfp, i2s_pcm1_mfp, |
| i2s0_pcm0_mfp, i2s1_pcm0_mfp, i2s_d1_mfp, ks_in2_mfp, |
| ks_in1_mfp, ks_in0_mfp, ks_in3_mfp, ks_out0_mfp, |
| ks_out1_mfp, ks_out2_mfp, lvds_o_pn_mfp, dsi_dn0_mfp, |
| dsi_dp2_mfp, lcd0_d17_mfp, dsi_dp3_mfp, dsi_dn3_mfp, |
| dsi_dp0_mfp, lvds_ee_pn_mfp, spi0_i2c_pcm_mfp, |
| spi0_i2s_pcm_mfp, dsi_dnp1_cp_mfp, lvds_e_pn_mfp, |
| dsi_dn2_mfp, uart2_rtsb_mfp, uart2_ctsb_mfp, uart3_rtsb_mfp, |
| uart3_ctsb_mfp, sd0_d0_mfp, sd0_d1_mfp, sd0_d2_d3_mfp, |
| sd1_d0_d3_mfp, sd0_cmd_mfp, sd0_clk_mfp, sd1_cmd_mfp, |
| uart0_rx_mfp, clko_25m_mfp, csi_cn_cp_mfp, sens0_ckout_mfp, |
| uart0_tx_mfp, i2c0_mfp, csi_dn_dp_mfp, sen0_pclk_mfp, |
| pcm1_in_mfp, pcm1_clk_mfp, pcm1_sync_mfp, pcm1_out_mfp, |
| dnand_data_wr_mfp, dnand_acle_ce0_mfp, nand_ceb2_mfp, |
| nand_ceb3_mfp] |
| minItems: 1 |
| maxItems: 32 |
| |
| function: |
| description: |
| Specify the alternative function to be configured for the |
| given gpio pin groups. |
| enum: [nor, eth_rmii, eth_smii, spi0, spi1, spi2, spi3, sens0, |
| sens1, uart0, uart1, uart2, uart3, uart4, uart5, uart6, i2s0, |
| i2s1, pcm1, pcm0, ks, jtag, pwm0, pwm1, pwm2, pwm3, pwm4, pwm5, |
| p0, sd0, sd1, sd2, i2c0, i2c1, i2c3, dsi, lvds, usb30, clko_25m, |
| mipi_csi, nand, spdif, ts, lcd0] |
| |
| required: |
| - groups |
| - function |
| |
| additionalProperties: false |
| |
| '^(.*-)?pinconf$': |
| type: object |
| description: |
| Pinctrl node's client devices specify pin configurations using |
| subnodes, which in turn use the standard properties below. |
| $ref: pincfg-node.yaml# |
| |
| properties: |
| groups: |
| description: |
| List of gpio pin groups affected by the drive-strength property |
| specified in this subnode. |
| items: |
| oneOf: |
| - enum: [sirq_drv, rmii_txd01_txen_drv, rmii_rxer_drv, |
| rmii_crs_drv, rmii_rxd10_drv, rmii_ref_clk_drv, |
| smi_mdc_mdio_drv, i2s_d0_drv, i2s_bclk0_drv, i2s3_drv, |
| i2s13_drv, pcm1_drv, ks_in_drv, ks_out_drv, lvds_all_drv, |
| lcd_dsi_drv, dsi_drv, sd0_d0_d3_drv, sd1_d0_d3_drv, |
| sd0_cmd_drv, sd0_clk_drv, sd1_cmd_drv, sd1_clk_drv, |
| spi0_all_drv, uart0_rx_drv, uart0_tx_drv, uart2_all_drv, |
| i2c0_all_drv, i2c12_all_drv, sens0_pclk_drv, |
| sens0_ckout_drv, uart3_all_drv] |
| minItems: 1 |
| maxItems: 32 |
| |
| pins: |
| description: |
| List of gpio pins affected by the bias-pull-* and |
| input-schmitt-* properties specified in this subnode. |
| items: |
| oneOf: |
| - enum: [dnand_dqs, dnand_dqsn, eth_txd0, eth_txd1, eth_txen, |
| eth_rxer, eth_crs_dv, eth_rxd1, eth_rxd0, eth_ref_clk, |
| eth_mdc, eth_mdio, sirq0, sirq1, sirq2, i2s_d0, i2s_bclk0, |
| i2s_lrclk0, i2s_mclk0, i2s_d1, i2s_bclk1, i2s_lrclk1, |
| i2s_mclk1, ks_in0, ks_in1, ks_in2, ks_in3, ks_out0, ks_out1, |
| ks_out2, lvds_oep, lvds_oen, lvds_odp, lvds_odn, lvds_ocp, |
| lvds_ocn, lvds_obp, lvds_obn, lvds_oap, lvds_oan, lvds_eep, |
| lvds_een, lvds_edp, lvds_edn, lvds_ecp, lvds_ecn, lvds_ebp, |
| lvds_ebn, lvds_eap, lvds_ean, lcd0_d18, lcd0_d17, dsi_dp3, |
| dsi_dn3, dsi_dp1, dsi_dn1, dsi_cp, dsi_cn, dsi_dp0, dsi_dn0, |
| dsi_dp2, dsi_dn2, sd0_d0, sd0_d1, sd0_d2, sd0_d3, sd1_d0, |
| sd1_d1, sd1_d2, sd1_d3, sd0_cmd, sd0_clk, sd1_cmd, sd1_clk, |
| spi0_sclk, spi0_ss, spi0_miso, spi0_mosi, uart0_rx, |
| uart0_tx, i2c0_sclk, i2c0_sdata, sensor0_pclk, |
| sensor0_ckout, dnand_ale, dnand_cle, dnand_ceb0, dnand_ceb1, |
| dnand_ceb2, dnand_ceb3, uart2_rx, uart2_tx, uart2_rtsb, |
| uart2_ctsb, uart3_rx, uart3_tx, uart3_rtsb, uart3_ctsb, |
| pcm1_in, pcm1_clk, pcm1_sync, pcm1_out, i2c1_sclk, |
| i2c1_sdata, i2c2_sclk, i2c2_sdata, csi_dn0, csi_dp0, |
| csi_dn1, csi_dp1, csi_dn2, csi_dp2, csi_dn3, csi_dp3, |
| csi_cn, csi_cp, dnand_d0, dnand_d1, dnand_d2, dnand_d3, |
| dnand_d4, dnand_d5, dnand_d6, dnand_d7, dnand_rb, dnand_rdb, |
| dnand_rdbn, dnand_wrb, porb, clko_25m, bsel, pkg0, pkg1, |
| pkg2, pkg3] |
| minItems: 1 |
| maxItems: 64 |
| |
| bias-pull-up: true |
| bias-pull-down: true |
| |
| drive-strength: |
| description: |
| Selects the drive strength for the specified pins, in mA. |
| enum: [2, 4, 8, 12] |
| |
| input-schmitt-enable: true |
| input-schmitt-disable: true |
| |
| additionalProperties: false |
| |
| additionalProperties: false |
| |
| required: |
| - compatible |
| - reg |
| - clocks |
| - gpio-controller |
| - gpio-ranges |
| - '#gpio-cells' |
| - interrupt-controller |
| - '#interrupt-cells' |
| - interrupts |
| |
| additionalProperties: false |
| |
| examples: |
| - | |
| #include <dt-bindings/interrupt-controller/arm-gic.h> |
| pinctrl: pinctrl@b01b0000 { |
| compatible = "actions,s500-pinctrl"; |
| reg = <0xb01b0000 0x40>, <0xb01b0040 0x10>, |
| <0xb01b0060 0x18>, <0xb01b0080 0xc>; |
| clocks = <&cmu 55>; |
| gpio-controller; |
| gpio-ranges = <&pinctrl 0 0 132>; |
| #gpio-cells = <2>; |
| interrupt-controller; |
| #interrupt-cells = <2>; |
| interrupts = <GIC_SPI 36 IRQ_TYPE_LEVEL_HIGH>, |
| <GIC_SPI 37 IRQ_TYPE_LEVEL_HIGH>, |
| <GIC_SPI 38 IRQ_TYPE_LEVEL_HIGH>, |
| <GIC_SPI 39 IRQ_TYPE_LEVEL_HIGH>, |
| <GIC_SPI 40 IRQ_TYPE_LEVEL_HIGH>; |
| |
| mmc0_pins: mmc0-pins { |
| pinmux { |
| groups = "sd0_d0_mfp", "sd0_d1_mfp", "sd0_d2_d3_mfp", |
| "sd0_cmd_mfp", "sd0_clk_mfp"; |
| function = "sd0"; |
| }; |
| |
| drv-pinconf { |
| groups = "sd0_d0_d3_drv", "sd0_cmd_drv", "sd0_clk_drv"; |
| drive-strength = <8>; |
| }; |
| |
| bias-pinconf { |
| pins = "sd0_d0", "sd0_d1", "sd0_d2", |
| "sd0_d3", "sd0_cmd"; |
| bias-pull-up; |
| }; |
| }; |
| }; |
| |
| ... |