1*4882a593Smuzhiyun# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) 2*4882a593Smuzhiyun%YAML 1.2 3*4882a593Smuzhiyun--- 4*4882a593Smuzhiyun$id: http://devicetree.org/schemas/pinctrl/actions,s500-pinctrl.yaml# 5*4882a593Smuzhiyun$schema: http://devicetree.org/meta-schemas/core.yaml# 6*4882a593Smuzhiyun 7*4882a593Smuzhiyuntitle: Actions Semi S500 SoC pinmux & GPIO controller 8*4882a593Smuzhiyun 9*4882a593Smuzhiyunmaintainers: 10*4882a593Smuzhiyun - Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org> 11*4882a593Smuzhiyun - Cristian Ciocaltea <cristian.ciocaltea@gmail.com> 12*4882a593Smuzhiyun 13*4882a593Smuzhiyundescription: | 14*4882a593Smuzhiyun Pinmux & GPIO controller manages pin multiplexing & configuration including 15*4882a593Smuzhiyun GPIO function selection & GPIO attributes configuration. Please refer to 16*4882a593Smuzhiyun pinctrl-bindings.txt in this directory for common binding part and usage. 17*4882a593Smuzhiyun 18*4882a593Smuzhiyunproperties: 19*4882a593Smuzhiyun compatible: 20*4882a593Smuzhiyun const: actions,s500-pinctrl 21*4882a593Smuzhiyun 22*4882a593Smuzhiyun reg: 23*4882a593Smuzhiyun items: 24*4882a593Smuzhiyun - description: GPIO Output + GPIO Input + GPIO Data 25*4882a593Smuzhiyun - description: Multiplexing Control 26*4882a593Smuzhiyun - description: PAD Pull Control + PAD Schmitt Trigger Enable + PAD Control 27*4882a593Smuzhiyun - description: PAD Drive Capacity Select 28*4882a593Smuzhiyun minItems: 1 29*4882a593Smuzhiyun maxItems: 4 30*4882a593Smuzhiyun 31*4882a593Smuzhiyun clocks: 32*4882a593Smuzhiyun maxItems: 1 33*4882a593Smuzhiyun 34*4882a593Smuzhiyun gpio-controller: true 35*4882a593Smuzhiyun 36*4882a593Smuzhiyun gpio-ranges: 37*4882a593Smuzhiyun maxItems: 1 38*4882a593Smuzhiyun 39*4882a593Smuzhiyun '#gpio-cells': 40*4882a593Smuzhiyun description: 41*4882a593Smuzhiyun Specifies the pin number and flags, as defined in 42*4882a593Smuzhiyun include/dt-bindings/gpio/gpio.h 43*4882a593Smuzhiyun const: 2 44*4882a593Smuzhiyun 45*4882a593Smuzhiyun interrupt-controller: true 46*4882a593Smuzhiyun 47*4882a593Smuzhiyun '#interrupt-cells': 48*4882a593Smuzhiyun description: 49*4882a593Smuzhiyun Specifies the pin number and flags, as defined in 50*4882a593Smuzhiyun include/dt-bindings/interrupt-controller/irq.h 51*4882a593Smuzhiyun const: 2 52*4882a593Smuzhiyun 53*4882a593Smuzhiyun interrupts: 54*4882a593Smuzhiyun description: 55*4882a593Smuzhiyun One interrupt per each of the 5 GPIO ports supported by the controller, 56*4882a593Smuzhiyun sorted by port number ascending order. 57*4882a593Smuzhiyun minItems: 5 58*4882a593Smuzhiyun maxItems: 5 59*4882a593Smuzhiyun 60*4882a593SmuzhiyunpatternProperties: 61*4882a593Smuzhiyun '-pins$': 62*4882a593Smuzhiyun type: object 63*4882a593Smuzhiyun patternProperties: 64*4882a593Smuzhiyun '^(.*-)?pinmux$': 65*4882a593Smuzhiyun type: object 66*4882a593Smuzhiyun description: 67*4882a593Smuzhiyun Pinctrl node's client devices specify pin muxes using subnodes, 68*4882a593Smuzhiyun which in turn use the standard properties below. 69*4882a593Smuzhiyun $ref: pinmux-node.yaml# 70*4882a593Smuzhiyun 71*4882a593Smuzhiyun properties: 72*4882a593Smuzhiyun groups: 73*4882a593Smuzhiyun description: 74*4882a593Smuzhiyun List of gpio pin groups affected by the functions specified in 75*4882a593Smuzhiyun this subnode. 76*4882a593Smuzhiyun items: 77*4882a593Smuzhiyun oneOf: 78*4882a593Smuzhiyun - enum: [lcd0_d18_mfp, rmii_crs_dv_mfp, rmii_txd0_mfp, 79*4882a593Smuzhiyun rmii_txd1_mfp, rmii_txen_mfp, rmii_rxen_mfp, rmii_rxd1_mfp, 80*4882a593Smuzhiyun rmii_rxd0_mfp, rmii_ref_clk_mfp, i2s_d0_mfp, i2s_pcm1_mfp, 81*4882a593Smuzhiyun i2s0_pcm0_mfp, i2s1_pcm0_mfp, i2s_d1_mfp, ks_in2_mfp, 82*4882a593Smuzhiyun ks_in1_mfp, ks_in0_mfp, ks_in3_mfp, ks_out0_mfp, 83*4882a593Smuzhiyun ks_out1_mfp, ks_out2_mfp, lvds_o_pn_mfp, dsi_dn0_mfp, 84*4882a593Smuzhiyun dsi_dp2_mfp, lcd0_d17_mfp, dsi_dp3_mfp, dsi_dn3_mfp, 85*4882a593Smuzhiyun dsi_dp0_mfp, lvds_ee_pn_mfp, spi0_i2c_pcm_mfp, 86*4882a593Smuzhiyun spi0_i2s_pcm_mfp, dsi_dnp1_cp_mfp, lvds_e_pn_mfp, 87*4882a593Smuzhiyun dsi_dn2_mfp, uart2_rtsb_mfp, uart2_ctsb_mfp, uart3_rtsb_mfp, 88*4882a593Smuzhiyun uart3_ctsb_mfp, sd0_d0_mfp, sd0_d1_mfp, sd0_d2_d3_mfp, 89*4882a593Smuzhiyun sd1_d0_d3_mfp, sd0_cmd_mfp, sd0_clk_mfp, sd1_cmd_mfp, 90*4882a593Smuzhiyun uart0_rx_mfp, clko_25m_mfp, csi_cn_cp_mfp, sens0_ckout_mfp, 91*4882a593Smuzhiyun uart0_tx_mfp, i2c0_mfp, csi_dn_dp_mfp, sen0_pclk_mfp, 92*4882a593Smuzhiyun pcm1_in_mfp, pcm1_clk_mfp, pcm1_sync_mfp, pcm1_out_mfp, 93*4882a593Smuzhiyun dnand_data_wr_mfp, dnand_acle_ce0_mfp, nand_ceb2_mfp, 94*4882a593Smuzhiyun nand_ceb3_mfp] 95*4882a593Smuzhiyun minItems: 1 96*4882a593Smuzhiyun maxItems: 32 97*4882a593Smuzhiyun 98*4882a593Smuzhiyun function: 99*4882a593Smuzhiyun description: 100*4882a593Smuzhiyun Specify the alternative function to be configured for the 101*4882a593Smuzhiyun given gpio pin groups. 102*4882a593Smuzhiyun enum: [nor, eth_rmii, eth_smii, spi0, spi1, spi2, spi3, sens0, 103*4882a593Smuzhiyun sens1, uart0, uart1, uart2, uart3, uart4, uart5, uart6, i2s0, 104*4882a593Smuzhiyun i2s1, pcm1, pcm0, ks, jtag, pwm0, pwm1, pwm2, pwm3, pwm4, pwm5, 105*4882a593Smuzhiyun p0, sd0, sd1, sd2, i2c0, i2c1, i2c3, dsi, lvds, usb30, clko_25m, 106*4882a593Smuzhiyun mipi_csi, nand, spdif, ts, lcd0] 107*4882a593Smuzhiyun 108*4882a593Smuzhiyun required: 109*4882a593Smuzhiyun - groups 110*4882a593Smuzhiyun - function 111*4882a593Smuzhiyun 112*4882a593Smuzhiyun additionalProperties: false 113*4882a593Smuzhiyun 114*4882a593Smuzhiyun '^(.*-)?pinconf$': 115*4882a593Smuzhiyun type: object 116*4882a593Smuzhiyun description: 117*4882a593Smuzhiyun Pinctrl node's client devices specify pin configurations using 118*4882a593Smuzhiyun subnodes, which in turn use the standard properties below. 119*4882a593Smuzhiyun $ref: pincfg-node.yaml# 120*4882a593Smuzhiyun 121*4882a593Smuzhiyun properties: 122*4882a593Smuzhiyun groups: 123*4882a593Smuzhiyun description: 124*4882a593Smuzhiyun List of gpio pin groups affected by the drive-strength property 125*4882a593Smuzhiyun specified in this subnode. 126*4882a593Smuzhiyun items: 127*4882a593Smuzhiyun oneOf: 128*4882a593Smuzhiyun - enum: [sirq_drv, rmii_txd01_txen_drv, rmii_rxer_drv, 129*4882a593Smuzhiyun rmii_crs_drv, rmii_rxd10_drv, rmii_ref_clk_drv, 130*4882a593Smuzhiyun smi_mdc_mdio_drv, i2s_d0_drv, i2s_bclk0_drv, i2s3_drv, 131*4882a593Smuzhiyun i2s13_drv, pcm1_drv, ks_in_drv, ks_out_drv, lvds_all_drv, 132*4882a593Smuzhiyun lcd_dsi_drv, dsi_drv, sd0_d0_d3_drv, sd1_d0_d3_drv, 133*4882a593Smuzhiyun sd0_cmd_drv, sd0_clk_drv, sd1_cmd_drv, sd1_clk_drv, 134*4882a593Smuzhiyun spi0_all_drv, uart0_rx_drv, uart0_tx_drv, uart2_all_drv, 135*4882a593Smuzhiyun i2c0_all_drv, i2c12_all_drv, sens0_pclk_drv, 136*4882a593Smuzhiyun sens0_ckout_drv, uart3_all_drv] 137*4882a593Smuzhiyun minItems: 1 138*4882a593Smuzhiyun maxItems: 32 139*4882a593Smuzhiyun 140*4882a593Smuzhiyun pins: 141*4882a593Smuzhiyun description: 142*4882a593Smuzhiyun List of gpio pins affected by the bias-pull-* and 143*4882a593Smuzhiyun input-schmitt-* properties specified in this subnode. 144*4882a593Smuzhiyun items: 145*4882a593Smuzhiyun oneOf: 146*4882a593Smuzhiyun - enum: [dnand_dqs, dnand_dqsn, eth_txd0, eth_txd1, eth_txen, 147*4882a593Smuzhiyun eth_rxer, eth_crs_dv, eth_rxd1, eth_rxd0, eth_ref_clk, 148*4882a593Smuzhiyun eth_mdc, eth_mdio, sirq0, sirq1, sirq2, i2s_d0, i2s_bclk0, 149*4882a593Smuzhiyun i2s_lrclk0, i2s_mclk0, i2s_d1, i2s_bclk1, i2s_lrclk1, 150*4882a593Smuzhiyun i2s_mclk1, ks_in0, ks_in1, ks_in2, ks_in3, ks_out0, ks_out1, 151*4882a593Smuzhiyun ks_out2, lvds_oep, lvds_oen, lvds_odp, lvds_odn, lvds_ocp, 152*4882a593Smuzhiyun lvds_ocn, lvds_obp, lvds_obn, lvds_oap, lvds_oan, lvds_eep, 153*4882a593Smuzhiyun lvds_een, lvds_edp, lvds_edn, lvds_ecp, lvds_ecn, lvds_ebp, 154*4882a593Smuzhiyun lvds_ebn, lvds_eap, lvds_ean, lcd0_d18, lcd0_d17, dsi_dp3, 155*4882a593Smuzhiyun dsi_dn3, dsi_dp1, dsi_dn1, dsi_cp, dsi_cn, dsi_dp0, dsi_dn0, 156*4882a593Smuzhiyun dsi_dp2, dsi_dn2, sd0_d0, sd0_d1, sd0_d2, sd0_d3, sd1_d0, 157*4882a593Smuzhiyun sd1_d1, sd1_d2, sd1_d3, sd0_cmd, sd0_clk, sd1_cmd, sd1_clk, 158*4882a593Smuzhiyun spi0_sclk, spi0_ss, spi0_miso, spi0_mosi, uart0_rx, 159*4882a593Smuzhiyun uart0_tx, i2c0_sclk, i2c0_sdata, sensor0_pclk, 160*4882a593Smuzhiyun sensor0_ckout, dnand_ale, dnand_cle, dnand_ceb0, dnand_ceb1, 161*4882a593Smuzhiyun dnand_ceb2, dnand_ceb3, uart2_rx, uart2_tx, uart2_rtsb, 162*4882a593Smuzhiyun uart2_ctsb, uart3_rx, uart3_tx, uart3_rtsb, uart3_ctsb, 163*4882a593Smuzhiyun pcm1_in, pcm1_clk, pcm1_sync, pcm1_out, i2c1_sclk, 164*4882a593Smuzhiyun i2c1_sdata, i2c2_sclk, i2c2_sdata, csi_dn0, csi_dp0, 165*4882a593Smuzhiyun csi_dn1, csi_dp1, csi_dn2, csi_dp2, csi_dn3, csi_dp3, 166*4882a593Smuzhiyun csi_cn, csi_cp, dnand_d0, dnand_d1, dnand_d2, dnand_d3, 167*4882a593Smuzhiyun dnand_d4, dnand_d5, dnand_d6, dnand_d7, dnand_rb, dnand_rdb, 168*4882a593Smuzhiyun dnand_rdbn, dnand_wrb, porb, clko_25m, bsel, pkg0, pkg1, 169*4882a593Smuzhiyun pkg2, pkg3] 170*4882a593Smuzhiyun minItems: 1 171*4882a593Smuzhiyun maxItems: 64 172*4882a593Smuzhiyun 173*4882a593Smuzhiyun bias-pull-up: true 174*4882a593Smuzhiyun bias-pull-down: true 175*4882a593Smuzhiyun 176*4882a593Smuzhiyun drive-strength: 177*4882a593Smuzhiyun description: 178*4882a593Smuzhiyun Selects the drive strength for the specified pins, in mA. 179*4882a593Smuzhiyun enum: [2, 4, 8, 12] 180*4882a593Smuzhiyun 181*4882a593Smuzhiyun input-schmitt-enable: true 182*4882a593Smuzhiyun input-schmitt-disable: true 183*4882a593Smuzhiyun 184*4882a593Smuzhiyun additionalProperties: false 185*4882a593Smuzhiyun 186*4882a593Smuzhiyun additionalProperties: false 187*4882a593Smuzhiyun 188*4882a593Smuzhiyunrequired: 189*4882a593Smuzhiyun - compatible 190*4882a593Smuzhiyun - reg 191*4882a593Smuzhiyun - clocks 192*4882a593Smuzhiyun - gpio-controller 193*4882a593Smuzhiyun - gpio-ranges 194*4882a593Smuzhiyun - '#gpio-cells' 195*4882a593Smuzhiyun - interrupt-controller 196*4882a593Smuzhiyun - '#interrupt-cells' 197*4882a593Smuzhiyun - interrupts 198*4882a593Smuzhiyun 199*4882a593SmuzhiyunadditionalProperties: false 200*4882a593Smuzhiyun 201*4882a593Smuzhiyunexamples: 202*4882a593Smuzhiyun - | 203*4882a593Smuzhiyun #include <dt-bindings/interrupt-controller/arm-gic.h> 204*4882a593Smuzhiyun pinctrl: pinctrl@b01b0000 { 205*4882a593Smuzhiyun compatible = "actions,s500-pinctrl"; 206*4882a593Smuzhiyun reg = <0xb01b0000 0x40>, <0xb01b0040 0x10>, 207*4882a593Smuzhiyun <0xb01b0060 0x18>, <0xb01b0080 0xc>; 208*4882a593Smuzhiyun clocks = <&cmu 55>; 209*4882a593Smuzhiyun gpio-controller; 210*4882a593Smuzhiyun gpio-ranges = <&pinctrl 0 0 132>; 211*4882a593Smuzhiyun #gpio-cells = <2>; 212*4882a593Smuzhiyun interrupt-controller; 213*4882a593Smuzhiyun #interrupt-cells = <2>; 214*4882a593Smuzhiyun interrupts = <GIC_SPI 36 IRQ_TYPE_LEVEL_HIGH>, 215*4882a593Smuzhiyun <GIC_SPI 37 IRQ_TYPE_LEVEL_HIGH>, 216*4882a593Smuzhiyun <GIC_SPI 38 IRQ_TYPE_LEVEL_HIGH>, 217*4882a593Smuzhiyun <GIC_SPI 39 IRQ_TYPE_LEVEL_HIGH>, 218*4882a593Smuzhiyun <GIC_SPI 40 IRQ_TYPE_LEVEL_HIGH>; 219*4882a593Smuzhiyun 220*4882a593Smuzhiyun mmc0_pins: mmc0-pins { 221*4882a593Smuzhiyun pinmux { 222*4882a593Smuzhiyun groups = "sd0_d0_mfp", "sd0_d1_mfp", "sd0_d2_d3_mfp", 223*4882a593Smuzhiyun "sd0_cmd_mfp", "sd0_clk_mfp"; 224*4882a593Smuzhiyun function = "sd0"; 225*4882a593Smuzhiyun }; 226*4882a593Smuzhiyun 227*4882a593Smuzhiyun drv-pinconf { 228*4882a593Smuzhiyun groups = "sd0_d0_d3_drv", "sd0_cmd_drv", "sd0_clk_drv"; 229*4882a593Smuzhiyun drive-strength = <8>; 230*4882a593Smuzhiyun }; 231*4882a593Smuzhiyun 232*4882a593Smuzhiyun bias-pinconf { 233*4882a593Smuzhiyun pins = "sd0_d0", "sd0_d1", "sd0_d2", 234*4882a593Smuzhiyun "sd0_d3", "sd0_cmd"; 235*4882a593Smuzhiyun bias-pull-up; 236*4882a593Smuzhiyun }; 237*4882a593Smuzhiyun }; 238*4882a593Smuzhiyun }; 239*4882a593Smuzhiyun 240*4882a593Smuzhiyun... 241