162306a36Sopenharmony_ci# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
262306a36Sopenharmony_ci%YAML 1.2
362306a36Sopenharmony_ci---
462306a36Sopenharmony_ci$id: http://devicetree.org/schemas/pinctrl/actions,s500-pinctrl.yaml#
562306a36Sopenharmony_ci$schema: http://devicetree.org/meta-schemas/core.yaml#
662306a36Sopenharmony_ci
762306a36Sopenharmony_cititle: Actions Semi S500 SoC pinmux & GPIO controller
862306a36Sopenharmony_ci
962306a36Sopenharmony_cimaintainers:
1062306a36Sopenharmony_ci  - Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org>
1162306a36Sopenharmony_ci  - Cristian Ciocaltea <cristian.ciocaltea@gmail.com>
1262306a36Sopenharmony_ci
1362306a36Sopenharmony_cidescription: |
1462306a36Sopenharmony_ci  Pinmux & GPIO controller manages pin multiplexing & configuration including
1562306a36Sopenharmony_ci  GPIO function selection & GPIO attributes configuration. Please refer to
1662306a36Sopenharmony_ci  pinctrl-bindings.txt in this directory for common binding part and usage.
1762306a36Sopenharmony_ci
1862306a36Sopenharmony_ciproperties:
1962306a36Sopenharmony_ci  compatible:
2062306a36Sopenharmony_ci    const: actions,s500-pinctrl
2162306a36Sopenharmony_ci
2262306a36Sopenharmony_ci  reg:
2362306a36Sopenharmony_ci    items:
2462306a36Sopenharmony_ci      - description: GPIO Output + GPIO Input + GPIO Data
2562306a36Sopenharmony_ci      - description: Multiplexing Control
2662306a36Sopenharmony_ci      - description: PAD Pull Control + PAD Schmitt Trigger Enable + PAD Control
2762306a36Sopenharmony_ci      - description: PAD Drive Capacity Select
2862306a36Sopenharmony_ci    minItems: 1
2962306a36Sopenharmony_ci
3062306a36Sopenharmony_ci  clocks:
3162306a36Sopenharmony_ci    maxItems: 1
3262306a36Sopenharmony_ci
3362306a36Sopenharmony_ci  gpio-controller: true
3462306a36Sopenharmony_ci
3562306a36Sopenharmony_ci  gpio-ranges:
3662306a36Sopenharmony_ci    maxItems: 1
3762306a36Sopenharmony_ci
3862306a36Sopenharmony_ci  '#gpio-cells':
3962306a36Sopenharmony_ci    description:
4062306a36Sopenharmony_ci      Specifies the pin number and flags, as defined in
4162306a36Sopenharmony_ci      include/dt-bindings/gpio/gpio.h
4262306a36Sopenharmony_ci    const: 2
4362306a36Sopenharmony_ci
4462306a36Sopenharmony_ci  interrupt-controller: true
4562306a36Sopenharmony_ci
4662306a36Sopenharmony_ci  '#interrupt-cells':
4762306a36Sopenharmony_ci    description:
4862306a36Sopenharmony_ci      Specifies the pin number and flags, as defined in
4962306a36Sopenharmony_ci      include/dt-bindings/interrupt-controller/irq.h
5062306a36Sopenharmony_ci    const: 2
5162306a36Sopenharmony_ci
5262306a36Sopenharmony_ci  interrupts:
5362306a36Sopenharmony_ci    description:
5462306a36Sopenharmony_ci      One interrupt per each of the 5 GPIO ports supported by the controller,
5562306a36Sopenharmony_ci      sorted by port number ascending order.
5662306a36Sopenharmony_ci    minItems: 5
5762306a36Sopenharmony_ci    maxItems: 5
5862306a36Sopenharmony_ci
5962306a36Sopenharmony_cipatternProperties:
6062306a36Sopenharmony_ci  '-pins$':
6162306a36Sopenharmony_ci    type: object
6262306a36Sopenharmony_ci    patternProperties:
6362306a36Sopenharmony_ci      '^(.*-)?pinmux$':
6462306a36Sopenharmony_ci        type: object
6562306a36Sopenharmony_ci        description:
6662306a36Sopenharmony_ci          Pinctrl node's client devices specify pin muxes using subnodes,
6762306a36Sopenharmony_ci          which in turn use the standard properties below.
6862306a36Sopenharmony_ci        $ref: pinmux-node.yaml#
6962306a36Sopenharmony_ci
7062306a36Sopenharmony_ci        properties:
7162306a36Sopenharmony_ci          groups:
7262306a36Sopenharmony_ci            description:
7362306a36Sopenharmony_ci              List of gpio pin groups affected by the functions specified in
7462306a36Sopenharmony_ci              this subnode.
7562306a36Sopenharmony_ci            items:
7662306a36Sopenharmony_ci              oneOf:
7762306a36Sopenharmony_ci                - enum: [lcd0_d18_mfp, rmii_crs_dv_mfp, rmii_txd0_mfp,
7862306a36Sopenharmony_ci                         rmii_txd1_mfp, rmii_txen_mfp, rmii_rxen_mfp, rmii_rxd1_mfp,
7962306a36Sopenharmony_ci                         rmii_rxd0_mfp, rmii_ref_clk_mfp, i2s_d0_mfp, i2s_pcm1_mfp,
8062306a36Sopenharmony_ci                         i2s0_pcm0_mfp, i2s1_pcm0_mfp, i2s_d1_mfp, ks_in2_mfp,
8162306a36Sopenharmony_ci                         ks_in1_mfp, ks_in0_mfp, ks_in3_mfp, ks_out0_mfp,
8262306a36Sopenharmony_ci                         ks_out1_mfp, ks_out2_mfp, lvds_o_pn_mfp, dsi_dn0_mfp,
8362306a36Sopenharmony_ci                         dsi_dp2_mfp, lcd0_d17_mfp, dsi_dp3_mfp, dsi_dn3_mfp,
8462306a36Sopenharmony_ci                         dsi_dp0_mfp, lvds_ee_pn_mfp, spi0_i2c_pcm_mfp,
8562306a36Sopenharmony_ci                         spi0_i2s_pcm_mfp, dsi_dnp1_cp_mfp, lvds_e_pn_mfp,
8662306a36Sopenharmony_ci                         dsi_dn2_mfp, uart2_rtsb_mfp, uart2_ctsb_mfp, uart3_rtsb_mfp,
8762306a36Sopenharmony_ci                         uart3_ctsb_mfp, sd0_d0_mfp, sd0_d1_mfp, sd0_d2_d3_mfp,
8862306a36Sopenharmony_ci                         sd1_d0_d3_mfp, sd0_cmd_mfp, sd0_clk_mfp, sd1_cmd_mfp,
8962306a36Sopenharmony_ci                         uart0_rx_mfp, clko_25m_mfp, csi_cn_cp_mfp, sens0_ckout_mfp,
9062306a36Sopenharmony_ci                         uart0_tx_mfp, i2c0_mfp, csi_dn_dp_mfp, sen0_pclk_mfp,
9162306a36Sopenharmony_ci                         pcm1_in_mfp, pcm1_clk_mfp, pcm1_sync_mfp, pcm1_out_mfp,
9262306a36Sopenharmony_ci                         dnand_data_wr_mfp, dnand_acle_ce0_mfp, nand_ceb2_mfp,
9362306a36Sopenharmony_ci                         nand_ceb3_mfp]
9462306a36Sopenharmony_ci            minItems: 1
9562306a36Sopenharmony_ci            maxItems: 32
9662306a36Sopenharmony_ci
9762306a36Sopenharmony_ci          function:
9862306a36Sopenharmony_ci            description:
9962306a36Sopenharmony_ci              Specify the alternative function to be configured for the
10062306a36Sopenharmony_ci              given gpio pin groups.
10162306a36Sopenharmony_ci            enum: [nor, eth_rmii, eth_smii, spi0, spi1, spi2, spi3, sens0,
10262306a36Sopenharmony_ci                   sens1, uart0, uart1, uart2, uart3, uart4, uart5, uart6, i2s0,
10362306a36Sopenharmony_ci                   i2s1, pcm1, pcm0, ks, jtag, pwm0, pwm1, pwm2, pwm3, pwm4, pwm5,
10462306a36Sopenharmony_ci                   p0, sd0, sd1, sd2, i2c0, i2c1, i2c3, dsi, lvds, usb30, clko_25m,
10562306a36Sopenharmony_ci                   mipi_csi, nand, spdif, ts, lcd0]
10662306a36Sopenharmony_ci
10762306a36Sopenharmony_ci        required:
10862306a36Sopenharmony_ci          - groups
10962306a36Sopenharmony_ci          - function
11062306a36Sopenharmony_ci
11162306a36Sopenharmony_ci        additionalProperties: false
11262306a36Sopenharmony_ci
11362306a36Sopenharmony_ci      '^(.*-)?pinconf$':
11462306a36Sopenharmony_ci        type: object
11562306a36Sopenharmony_ci        description:
11662306a36Sopenharmony_ci          Pinctrl node's client devices specify pin configurations using
11762306a36Sopenharmony_ci          subnodes, which in turn use the standard properties below.
11862306a36Sopenharmony_ci        $ref: pincfg-node.yaml#
11962306a36Sopenharmony_ci
12062306a36Sopenharmony_ci        properties:
12162306a36Sopenharmony_ci          groups:
12262306a36Sopenharmony_ci            description:
12362306a36Sopenharmony_ci              List of gpio pin groups affected by the drive-strength property
12462306a36Sopenharmony_ci              specified in this subnode.
12562306a36Sopenharmony_ci            items:
12662306a36Sopenharmony_ci              oneOf:
12762306a36Sopenharmony_ci                - enum: [sirq_drv, rmii_txd01_txen_drv, rmii_rxer_drv,
12862306a36Sopenharmony_ci                         rmii_crs_drv, rmii_rxd10_drv, rmii_ref_clk_drv,
12962306a36Sopenharmony_ci                         smi_mdc_mdio_drv, i2s_d0_drv, i2s_bclk0_drv, i2s3_drv,
13062306a36Sopenharmony_ci                         i2s13_drv, pcm1_drv, ks_in_drv, ks_out_drv, lvds_all_drv,
13162306a36Sopenharmony_ci                         lcd_dsi_drv, dsi_drv, sd0_d0_d3_drv, sd1_d0_d3_drv,
13262306a36Sopenharmony_ci                         sd0_cmd_drv, sd0_clk_drv, sd1_cmd_drv, sd1_clk_drv,
13362306a36Sopenharmony_ci                         spi0_all_drv, uart0_rx_drv, uart0_tx_drv, uart2_all_drv,
13462306a36Sopenharmony_ci                         i2c0_all_drv, i2c12_all_drv, sens0_pclk_drv,
13562306a36Sopenharmony_ci                         sens0_ckout_drv, uart3_all_drv]
13662306a36Sopenharmony_ci            minItems: 1
13762306a36Sopenharmony_ci            maxItems: 32
13862306a36Sopenharmony_ci
13962306a36Sopenharmony_ci          pins:
14062306a36Sopenharmony_ci            description:
14162306a36Sopenharmony_ci              List of gpio pins affected by the bias-pull-* and
14262306a36Sopenharmony_ci              input-schmitt-* properties specified in this subnode.
14362306a36Sopenharmony_ci            items:
14462306a36Sopenharmony_ci              oneOf:
14562306a36Sopenharmony_ci                - enum: [dnand_dqs, dnand_dqsn, eth_txd0, eth_txd1, eth_txen,
14662306a36Sopenharmony_ci                         eth_rxer, eth_crs_dv, eth_rxd1, eth_rxd0, eth_ref_clk,
14762306a36Sopenharmony_ci                         eth_mdc, eth_mdio, sirq0, sirq1, sirq2, i2s_d0, i2s_bclk0,
14862306a36Sopenharmony_ci                         i2s_lrclk0, i2s_mclk0, i2s_d1, i2s_bclk1, i2s_lrclk1,
14962306a36Sopenharmony_ci                         i2s_mclk1, ks_in0, ks_in1, ks_in2, ks_in3, ks_out0, ks_out1,
15062306a36Sopenharmony_ci                         ks_out2, lvds_oep, lvds_oen, lvds_odp, lvds_odn, lvds_ocp,
15162306a36Sopenharmony_ci                         lvds_ocn, lvds_obp, lvds_obn, lvds_oap, lvds_oan, lvds_eep,
15262306a36Sopenharmony_ci                         lvds_een, lvds_edp, lvds_edn, lvds_ecp, lvds_ecn, lvds_ebp,
15362306a36Sopenharmony_ci                         lvds_ebn, lvds_eap, lvds_ean, lcd0_d18, lcd0_d17, dsi_dp3,
15462306a36Sopenharmony_ci                         dsi_dn3, dsi_dp1, dsi_dn1, dsi_cp, dsi_cn, dsi_dp0, dsi_dn0,
15562306a36Sopenharmony_ci                         dsi_dp2, dsi_dn2, sd0_d0, sd0_d1, sd0_d2, sd0_d3, sd1_d0,
15662306a36Sopenharmony_ci                         sd1_d1, sd1_d2, sd1_d3, sd0_cmd, sd0_clk, sd1_cmd, sd1_clk,
15762306a36Sopenharmony_ci                         spi0_sclk, spi0_ss, spi0_miso, spi0_mosi, uart0_rx,
15862306a36Sopenharmony_ci                         uart0_tx, i2c0_sclk, i2c0_sdata, sensor0_pclk,
15962306a36Sopenharmony_ci                         sensor0_ckout, dnand_ale, dnand_cle, dnand_ceb0, dnand_ceb1,
16062306a36Sopenharmony_ci                         dnand_ceb2, dnand_ceb3, uart2_rx, uart2_tx, uart2_rtsb,
16162306a36Sopenharmony_ci                         uart2_ctsb, uart3_rx, uart3_tx, uart3_rtsb, uart3_ctsb,
16262306a36Sopenharmony_ci                         pcm1_in, pcm1_clk, pcm1_sync, pcm1_out, i2c1_sclk,
16362306a36Sopenharmony_ci                         i2c1_sdata, i2c2_sclk, i2c2_sdata, csi_dn0, csi_dp0,
16462306a36Sopenharmony_ci                         csi_dn1, csi_dp1, csi_dn2, csi_dp2, csi_dn3, csi_dp3,
16562306a36Sopenharmony_ci                         csi_cn, csi_cp, dnand_d0, dnand_d1, dnand_d2, dnand_d3,
16662306a36Sopenharmony_ci                         dnand_d4, dnand_d5, dnand_d6, dnand_d7, dnand_rb, dnand_rdb,
16762306a36Sopenharmony_ci                         dnand_rdbn, dnand_wrb, porb, clko_25m, bsel, pkg0, pkg1,
16862306a36Sopenharmony_ci                         pkg2, pkg3]
16962306a36Sopenharmony_ci            minItems: 1
17062306a36Sopenharmony_ci            maxItems: 64
17162306a36Sopenharmony_ci
17262306a36Sopenharmony_ci          bias-pull-up: true
17362306a36Sopenharmony_ci          bias-pull-down: true
17462306a36Sopenharmony_ci
17562306a36Sopenharmony_ci          drive-strength:
17662306a36Sopenharmony_ci            description:
17762306a36Sopenharmony_ci              Selects the drive strength for the specified pins, in mA.
17862306a36Sopenharmony_ci            enum: [2, 4, 8, 12]
17962306a36Sopenharmony_ci
18062306a36Sopenharmony_ci          input-schmitt-enable: true
18162306a36Sopenharmony_ci          input-schmitt-disable: true
18262306a36Sopenharmony_ci
18362306a36Sopenharmony_ci        additionalProperties: false
18462306a36Sopenharmony_ci
18562306a36Sopenharmony_ci    additionalProperties: false
18662306a36Sopenharmony_ci
18762306a36Sopenharmony_ciallOf:
18862306a36Sopenharmony_ci  - $ref: pinctrl.yaml#
18962306a36Sopenharmony_ci
19062306a36Sopenharmony_cirequired:
19162306a36Sopenharmony_ci  - compatible
19262306a36Sopenharmony_ci  - reg
19362306a36Sopenharmony_ci  - clocks
19462306a36Sopenharmony_ci  - gpio-controller
19562306a36Sopenharmony_ci  - gpio-ranges
19662306a36Sopenharmony_ci  - '#gpio-cells'
19762306a36Sopenharmony_ci  - interrupt-controller
19862306a36Sopenharmony_ci  - '#interrupt-cells'
19962306a36Sopenharmony_ci  - interrupts
20062306a36Sopenharmony_ci
20162306a36Sopenharmony_ciadditionalProperties: false
20262306a36Sopenharmony_ci
20362306a36Sopenharmony_ciexamples:
20462306a36Sopenharmony_ci  - |
20562306a36Sopenharmony_ci    #include <dt-bindings/interrupt-controller/arm-gic.h>
20662306a36Sopenharmony_ci    pinctrl: pinctrl@b01b0000 {
20762306a36Sopenharmony_ci        compatible = "actions,s500-pinctrl";
20862306a36Sopenharmony_ci        reg = <0xb01b0000 0x40>, <0xb01b0040 0x10>,
20962306a36Sopenharmony_ci              <0xb01b0060 0x18>, <0xb01b0080 0xc>;
21062306a36Sopenharmony_ci        clocks = <&cmu 55>;
21162306a36Sopenharmony_ci        gpio-controller;
21262306a36Sopenharmony_ci        gpio-ranges = <&pinctrl 0 0 132>;
21362306a36Sopenharmony_ci        #gpio-cells = <2>;
21462306a36Sopenharmony_ci        interrupt-controller;
21562306a36Sopenharmony_ci        #interrupt-cells = <2>;
21662306a36Sopenharmony_ci        interrupts = <GIC_SPI 36 IRQ_TYPE_LEVEL_HIGH>,
21762306a36Sopenharmony_ci                     <GIC_SPI 37 IRQ_TYPE_LEVEL_HIGH>,
21862306a36Sopenharmony_ci                     <GIC_SPI 38 IRQ_TYPE_LEVEL_HIGH>,
21962306a36Sopenharmony_ci                     <GIC_SPI 39 IRQ_TYPE_LEVEL_HIGH>,
22062306a36Sopenharmony_ci                     <GIC_SPI 40 IRQ_TYPE_LEVEL_HIGH>;
22162306a36Sopenharmony_ci
22262306a36Sopenharmony_ci        mmc0_pins: mmc0-pins {
22362306a36Sopenharmony_ci            pinmux {
22462306a36Sopenharmony_ci                groups = "sd0_d0_mfp", "sd0_d1_mfp", "sd0_d2_d3_mfp",
22562306a36Sopenharmony_ci                         "sd0_cmd_mfp", "sd0_clk_mfp";
22662306a36Sopenharmony_ci                function = "sd0";
22762306a36Sopenharmony_ci            };
22862306a36Sopenharmony_ci
22962306a36Sopenharmony_ci            drv-pinconf {
23062306a36Sopenharmony_ci                groups = "sd0_d0_d3_drv", "sd0_cmd_drv", "sd0_clk_drv";
23162306a36Sopenharmony_ci                drive-strength = <8>;
23262306a36Sopenharmony_ci            };
23362306a36Sopenharmony_ci
23462306a36Sopenharmony_ci            bias-pinconf {
23562306a36Sopenharmony_ci                pins = "sd0_d0", "sd0_d1", "sd0_d2",
23662306a36Sopenharmony_ci                       "sd0_d3", "sd0_cmd";
23762306a36Sopenharmony_ci                bias-pull-up;
23862306a36Sopenharmony_ci            };
23962306a36Sopenharmony_ci        };
24062306a36Sopenharmony_ci    };
24162306a36Sopenharmony_ci
24262306a36Sopenharmony_ci...
243