18c2ecf20Sopenharmony_ci# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
28c2ecf20Sopenharmony_ci%YAML 1.2
38c2ecf20Sopenharmony_ci---
48c2ecf20Sopenharmony_ci$id: http://devicetree.org/schemas/pinctrl/actions,s500-pinctrl.yaml#
58c2ecf20Sopenharmony_ci$schema: http://devicetree.org/meta-schemas/core.yaml#
68c2ecf20Sopenharmony_ci
78c2ecf20Sopenharmony_cititle: Actions Semi S500 SoC pinmux & GPIO controller
88c2ecf20Sopenharmony_ci
98c2ecf20Sopenharmony_cimaintainers:
108c2ecf20Sopenharmony_ci  - Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org>
118c2ecf20Sopenharmony_ci  - Cristian Ciocaltea <cristian.ciocaltea@gmail.com>
128c2ecf20Sopenharmony_ci
138c2ecf20Sopenharmony_cidescription: |
148c2ecf20Sopenharmony_ci  Pinmux & GPIO controller manages pin multiplexing & configuration including
158c2ecf20Sopenharmony_ci  GPIO function selection & GPIO attributes configuration. Please refer to
168c2ecf20Sopenharmony_ci  pinctrl-bindings.txt in this directory for common binding part and usage.
178c2ecf20Sopenharmony_ci
188c2ecf20Sopenharmony_ciproperties:
198c2ecf20Sopenharmony_ci  compatible:
208c2ecf20Sopenharmony_ci    const: actions,s500-pinctrl
218c2ecf20Sopenharmony_ci
228c2ecf20Sopenharmony_ci  reg:
238c2ecf20Sopenharmony_ci    items:
248c2ecf20Sopenharmony_ci      - description: GPIO Output + GPIO Input + GPIO Data
258c2ecf20Sopenharmony_ci      - description: Multiplexing Control
268c2ecf20Sopenharmony_ci      - description: PAD Pull Control + PAD Schmitt Trigger Enable + PAD Control
278c2ecf20Sopenharmony_ci      - description: PAD Drive Capacity Select
288c2ecf20Sopenharmony_ci    minItems: 1
298c2ecf20Sopenharmony_ci    maxItems: 4
308c2ecf20Sopenharmony_ci
318c2ecf20Sopenharmony_ci  clocks:
328c2ecf20Sopenharmony_ci    maxItems: 1
338c2ecf20Sopenharmony_ci
348c2ecf20Sopenharmony_ci  gpio-controller: true
358c2ecf20Sopenharmony_ci
368c2ecf20Sopenharmony_ci  gpio-ranges:
378c2ecf20Sopenharmony_ci    maxItems: 1
388c2ecf20Sopenharmony_ci
398c2ecf20Sopenharmony_ci  '#gpio-cells':
408c2ecf20Sopenharmony_ci    description:
418c2ecf20Sopenharmony_ci      Specifies the pin number and flags, as defined in
428c2ecf20Sopenharmony_ci      include/dt-bindings/gpio/gpio.h
438c2ecf20Sopenharmony_ci    const: 2
448c2ecf20Sopenharmony_ci
458c2ecf20Sopenharmony_ci  interrupt-controller: true
468c2ecf20Sopenharmony_ci
478c2ecf20Sopenharmony_ci  '#interrupt-cells':
488c2ecf20Sopenharmony_ci    description:
498c2ecf20Sopenharmony_ci      Specifies the pin number and flags, as defined in
508c2ecf20Sopenharmony_ci      include/dt-bindings/interrupt-controller/irq.h
518c2ecf20Sopenharmony_ci    const: 2
528c2ecf20Sopenharmony_ci
538c2ecf20Sopenharmony_ci  interrupts:
548c2ecf20Sopenharmony_ci    description:
558c2ecf20Sopenharmony_ci      One interrupt per each of the 5 GPIO ports supported by the controller,
568c2ecf20Sopenharmony_ci      sorted by port number ascending order.
578c2ecf20Sopenharmony_ci    minItems: 5
588c2ecf20Sopenharmony_ci    maxItems: 5
598c2ecf20Sopenharmony_ci
608c2ecf20Sopenharmony_cipatternProperties:
618c2ecf20Sopenharmony_ci  '-pins$':
628c2ecf20Sopenharmony_ci    type: object
638c2ecf20Sopenharmony_ci    patternProperties:
648c2ecf20Sopenharmony_ci      '^(.*-)?pinmux$':
658c2ecf20Sopenharmony_ci        type: object
668c2ecf20Sopenharmony_ci        description:
678c2ecf20Sopenharmony_ci          Pinctrl node's client devices specify pin muxes using subnodes,
688c2ecf20Sopenharmony_ci          which in turn use the standard properties below.
698c2ecf20Sopenharmony_ci        $ref: pinmux-node.yaml#
708c2ecf20Sopenharmony_ci
718c2ecf20Sopenharmony_ci        properties:
728c2ecf20Sopenharmony_ci          groups:
738c2ecf20Sopenharmony_ci            description:
748c2ecf20Sopenharmony_ci              List of gpio pin groups affected by the functions specified in
758c2ecf20Sopenharmony_ci              this subnode.
768c2ecf20Sopenharmony_ci            items:
778c2ecf20Sopenharmony_ci              oneOf:
788c2ecf20Sopenharmony_ci                - enum: [lcd0_d18_mfp, rmii_crs_dv_mfp, rmii_txd0_mfp,
798c2ecf20Sopenharmony_ci                         rmii_txd1_mfp, rmii_txen_mfp, rmii_rxen_mfp, rmii_rxd1_mfp,
808c2ecf20Sopenharmony_ci                         rmii_rxd0_mfp, rmii_ref_clk_mfp, i2s_d0_mfp, i2s_pcm1_mfp,
818c2ecf20Sopenharmony_ci                         i2s0_pcm0_mfp, i2s1_pcm0_mfp, i2s_d1_mfp, ks_in2_mfp,
828c2ecf20Sopenharmony_ci                         ks_in1_mfp, ks_in0_mfp, ks_in3_mfp, ks_out0_mfp,
838c2ecf20Sopenharmony_ci                         ks_out1_mfp, ks_out2_mfp, lvds_o_pn_mfp, dsi_dn0_mfp,
848c2ecf20Sopenharmony_ci                         dsi_dp2_mfp, lcd0_d17_mfp, dsi_dp3_mfp, dsi_dn3_mfp,
858c2ecf20Sopenharmony_ci                         dsi_dp0_mfp, lvds_ee_pn_mfp, spi0_i2c_pcm_mfp,
868c2ecf20Sopenharmony_ci                         spi0_i2s_pcm_mfp, dsi_dnp1_cp_mfp, lvds_e_pn_mfp,
878c2ecf20Sopenharmony_ci                         dsi_dn2_mfp, uart2_rtsb_mfp, uart2_ctsb_mfp, uart3_rtsb_mfp,
888c2ecf20Sopenharmony_ci                         uart3_ctsb_mfp, sd0_d0_mfp, sd0_d1_mfp, sd0_d2_d3_mfp,
898c2ecf20Sopenharmony_ci                         sd1_d0_d3_mfp, sd0_cmd_mfp, sd0_clk_mfp, sd1_cmd_mfp,
908c2ecf20Sopenharmony_ci                         uart0_rx_mfp, clko_25m_mfp, csi_cn_cp_mfp, sens0_ckout_mfp,
918c2ecf20Sopenharmony_ci                         uart0_tx_mfp, i2c0_mfp, csi_dn_dp_mfp, sen0_pclk_mfp,
928c2ecf20Sopenharmony_ci                         pcm1_in_mfp, pcm1_clk_mfp, pcm1_sync_mfp, pcm1_out_mfp,
938c2ecf20Sopenharmony_ci                         dnand_data_wr_mfp, dnand_acle_ce0_mfp, nand_ceb2_mfp,
948c2ecf20Sopenharmony_ci                         nand_ceb3_mfp]
958c2ecf20Sopenharmony_ci            minItems: 1
968c2ecf20Sopenharmony_ci            maxItems: 32
978c2ecf20Sopenharmony_ci
988c2ecf20Sopenharmony_ci          function:
998c2ecf20Sopenharmony_ci            description:
1008c2ecf20Sopenharmony_ci              Specify the alternative function to be configured for the
1018c2ecf20Sopenharmony_ci              given gpio pin groups.
1028c2ecf20Sopenharmony_ci            enum: [nor, eth_rmii, eth_smii, spi0, spi1, spi2, spi3, sens0,
1038c2ecf20Sopenharmony_ci                   sens1, uart0, uart1, uart2, uart3, uart4, uart5, uart6, i2s0,
1048c2ecf20Sopenharmony_ci                   i2s1, pcm1, pcm0, ks, jtag, pwm0, pwm1, pwm2, pwm3, pwm4, pwm5,
1058c2ecf20Sopenharmony_ci                   p0, sd0, sd1, sd2, i2c0, i2c1, i2c3, dsi, lvds, usb30, clko_25m,
1068c2ecf20Sopenharmony_ci                   mipi_csi, nand, spdif, ts, lcd0]
1078c2ecf20Sopenharmony_ci
1088c2ecf20Sopenharmony_ci        required:
1098c2ecf20Sopenharmony_ci          - groups
1108c2ecf20Sopenharmony_ci          - function
1118c2ecf20Sopenharmony_ci
1128c2ecf20Sopenharmony_ci        additionalProperties: false
1138c2ecf20Sopenharmony_ci
1148c2ecf20Sopenharmony_ci      '^(.*-)?pinconf$':
1158c2ecf20Sopenharmony_ci        type: object
1168c2ecf20Sopenharmony_ci        description:
1178c2ecf20Sopenharmony_ci          Pinctrl node's client devices specify pin configurations using
1188c2ecf20Sopenharmony_ci          subnodes, which in turn use the standard properties below.
1198c2ecf20Sopenharmony_ci        $ref: pincfg-node.yaml#
1208c2ecf20Sopenharmony_ci
1218c2ecf20Sopenharmony_ci        properties:
1228c2ecf20Sopenharmony_ci          groups:
1238c2ecf20Sopenharmony_ci            description:
1248c2ecf20Sopenharmony_ci              List of gpio pin groups affected by the drive-strength property
1258c2ecf20Sopenharmony_ci              specified in this subnode.
1268c2ecf20Sopenharmony_ci            items:
1278c2ecf20Sopenharmony_ci              oneOf:
1288c2ecf20Sopenharmony_ci                - enum: [sirq_drv, rmii_txd01_txen_drv, rmii_rxer_drv,
1298c2ecf20Sopenharmony_ci                         rmii_crs_drv, rmii_rxd10_drv, rmii_ref_clk_drv,
1308c2ecf20Sopenharmony_ci                         smi_mdc_mdio_drv, i2s_d0_drv, i2s_bclk0_drv, i2s3_drv,
1318c2ecf20Sopenharmony_ci                         i2s13_drv, pcm1_drv, ks_in_drv, ks_out_drv, lvds_all_drv,
1328c2ecf20Sopenharmony_ci                         lcd_dsi_drv, dsi_drv, sd0_d0_d3_drv, sd1_d0_d3_drv,
1338c2ecf20Sopenharmony_ci                         sd0_cmd_drv, sd0_clk_drv, sd1_cmd_drv, sd1_clk_drv,
1348c2ecf20Sopenharmony_ci                         spi0_all_drv, uart0_rx_drv, uart0_tx_drv, uart2_all_drv,
1358c2ecf20Sopenharmony_ci                         i2c0_all_drv, i2c12_all_drv, sens0_pclk_drv,
1368c2ecf20Sopenharmony_ci                         sens0_ckout_drv, uart3_all_drv]
1378c2ecf20Sopenharmony_ci            minItems: 1
1388c2ecf20Sopenharmony_ci            maxItems: 32
1398c2ecf20Sopenharmony_ci
1408c2ecf20Sopenharmony_ci          pins:
1418c2ecf20Sopenharmony_ci            description:
1428c2ecf20Sopenharmony_ci              List of gpio pins affected by the bias-pull-* and
1438c2ecf20Sopenharmony_ci              input-schmitt-* properties specified in this subnode.
1448c2ecf20Sopenharmony_ci            items:
1458c2ecf20Sopenharmony_ci              oneOf:
1468c2ecf20Sopenharmony_ci                - enum: [dnand_dqs, dnand_dqsn, eth_txd0, eth_txd1, eth_txen,
1478c2ecf20Sopenharmony_ci                         eth_rxer, eth_crs_dv, eth_rxd1, eth_rxd0, eth_ref_clk,
1488c2ecf20Sopenharmony_ci                         eth_mdc, eth_mdio, sirq0, sirq1, sirq2, i2s_d0, i2s_bclk0,
1498c2ecf20Sopenharmony_ci                         i2s_lrclk0, i2s_mclk0, i2s_d1, i2s_bclk1, i2s_lrclk1,
1508c2ecf20Sopenharmony_ci                         i2s_mclk1, ks_in0, ks_in1, ks_in2, ks_in3, ks_out0, ks_out1,
1518c2ecf20Sopenharmony_ci                         ks_out2, lvds_oep, lvds_oen, lvds_odp, lvds_odn, lvds_ocp,
1528c2ecf20Sopenharmony_ci                         lvds_ocn, lvds_obp, lvds_obn, lvds_oap, lvds_oan, lvds_eep,
1538c2ecf20Sopenharmony_ci                         lvds_een, lvds_edp, lvds_edn, lvds_ecp, lvds_ecn, lvds_ebp,
1548c2ecf20Sopenharmony_ci                         lvds_ebn, lvds_eap, lvds_ean, lcd0_d18, lcd0_d17, dsi_dp3,
1558c2ecf20Sopenharmony_ci                         dsi_dn3, dsi_dp1, dsi_dn1, dsi_cp, dsi_cn, dsi_dp0, dsi_dn0,
1568c2ecf20Sopenharmony_ci                         dsi_dp2, dsi_dn2, sd0_d0, sd0_d1, sd0_d2, sd0_d3, sd1_d0,
1578c2ecf20Sopenharmony_ci                         sd1_d1, sd1_d2, sd1_d3, sd0_cmd, sd0_clk, sd1_cmd, sd1_clk,
1588c2ecf20Sopenharmony_ci                         spi0_sclk, spi0_ss, spi0_miso, spi0_mosi, uart0_rx,
1598c2ecf20Sopenharmony_ci                         uart0_tx, i2c0_sclk, i2c0_sdata, sensor0_pclk,
1608c2ecf20Sopenharmony_ci                         sensor0_ckout, dnand_ale, dnand_cle, dnand_ceb0, dnand_ceb1,
1618c2ecf20Sopenharmony_ci                         dnand_ceb2, dnand_ceb3, uart2_rx, uart2_tx, uart2_rtsb,
1628c2ecf20Sopenharmony_ci                         uart2_ctsb, uart3_rx, uart3_tx, uart3_rtsb, uart3_ctsb,
1638c2ecf20Sopenharmony_ci                         pcm1_in, pcm1_clk, pcm1_sync, pcm1_out, i2c1_sclk,
1648c2ecf20Sopenharmony_ci                         i2c1_sdata, i2c2_sclk, i2c2_sdata, csi_dn0, csi_dp0,
1658c2ecf20Sopenharmony_ci                         csi_dn1, csi_dp1, csi_dn2, csi_dp2, csi_dn3, csi_dp3,
1668c2ecf20Sopenharmony_ci                         csi_cn, csi_cp, dnand_d0, dnand_d1, dnand_d2, dnand_d3,
1678c2ecf20Sopenharmony_ci                         dnand_d4, dnand_d5, dnand_d6, dnand_d7, dnand_rb, dnand_rdb,
1688c2ecf20Sopenharmony_ci                         dnand_rdbn, dnand_wrb, porb, clko_25m, bsel, pkg0, pkg1,
1698c2ecf20Sopenharmony_ci                         pkg2, pkg3]
1708c2ecf20Sopenharmony_ci            minItems: 1
1718c2ecf20Sopenharmony_ci            maxItems: 64
1728c2ecf20Sopenharmony_ci
1738c2ecf20Sopenharmony_ci          bias-pull-up: true
1748c2ecf20Sopenharmony_ci          bias-pull-down: true
1758c2ecf20Sopenharmony_ci
1768c2ecf20Sopenharmony_ci          drive-strength:
1778c2ecf20Sopenharmony_ci            description:
1788c2ecf20Sopenharmony_ci              Selects the drive strength for the specified pins, in mA.
1798c2ecf20Sopenharmony_ci            enum: [2, 4, 8, 12]
1808c2ecf20Sopenharmony_ci
1818c2ecf20Sopenharmony_ci          input-schmitt-enable: true
1828c2ecf20Sopenharmony_ci          input-schmitt-disable: true
1838c2ecf20Sopenharmony_ci
1848c2ecf20Sopenharmony_ci        additionalProperties: false
1858c2ecf20Sopenharmony_ci
1868c2ecf20Sopenharmony_ci    additionalProperties: false
1878c2ecf20Sopenharmony_ci
1888c2ecf20Sopenharmony_cirequired:
1898c2ecf20Sopenharmony_ci  - compatible
1908c2ecf20Sopenharmony_ci  - reg
1918c2ecf20Sopenharmony_ci  - clocks
1928c2ecf20Sopenharmony_ci  - gpio-controller
1938c2ecf20Sopenharmony_ci  - gpio-ranges
1948c2ecf20Sopenharmony_ci  - '#gpio-cells'
1958c2ecf20Sopenharmony_ci  - interrupt-controller
1968c2ecf20Sopenharmony_ci  - '#interrupt-cells'
1978c2ecf20Sopenharmony_ci  - interrupts
1988c2ecf20Sopenharmony_ci
1998c2ecf20Sopenharmony_ciadditionalProperties: false
2008c2ecf20Sopenharmony_ci
2018c2ecf20Sopenharmony_ciexamples:
2028c2ecf20Sopenharmony_ci  - |
2038c2ecf20Sopenharmony_ci    #include <dt-bindings/interrupt-controller/arm-gic.h>
2048c2ecf20Sopenharmony_ci    pinctrl: pinctrl@b01b0000 {
2058c2ecf20Sopenharmony_ci        compatible = "actions,s500-pinctrl";
2068c2ecf20Sopenharmony_ci        reg = <0xb01b0000 0x40>, <0xb01b0040 0x10>,
2078c2ecf20Sopenharmony_ci              <0xb01b0060 0x18>, <0xb01b0080 0xc>;
2088c2ecf20Sopenharmony_ci        clocks = <&cmu 55>;
2098c2ecf20Sopenharmony_ci        gpio-controller;
2108c2ecf20Sopenharmony_ci        gpio-ranges = <&pinctrl 0 0 132>;
2118c2ecf20Sopenharmony_ci        #gpio-cells = <2>;
2128c2ecf20Sopenharmony_ci        interrupt-controller;
2138c2ecf20Sopenharmony_ci        #interrupt-cells = <2>;
2148c2ecf20Sopenharmony_ci        interrupts = <GIC_SPI 36 IRQ_TYPE_LEVEL_HIGH>,
2158c2ecf20Sopenharmony_ci                     <GIC_SPI 37 IRQ_TYPE_LEVEL_HIGH>,
2168c2ecf20Sopenharmony_ci                     <GIC_SPI 38 IRQ_TYPE_LEVEL_HIGH>,
2178c2ecf20Sopenharmony_ci                     <GIC_SPI 39 IRQ_TYPE_LEVEL_HIGH>,
2188c2ecf20Sopenharmony_ci                     <GIC_SPI 40 IRQ_TYPE_LEVEL_HIGH>;
2198c2ecf20Sopenharmony_ci
2208c2ecf20Sopenharmony_ci        mmc0_pins: mmc0-pins {
2218c2ecf20Sopenharmony_ci            pinmux {
2228c2ecf20Sopenharmony_ci                groups = "sd0_d0_mfp", "sd0_d1_mfp", "sd0_d2_d3_mfp",
2238c2ecf20Sopenharmony_ci                         "sd0_cmd_mfp", "sd0_clk_mfp";
2248c2ecf20Sopenharmony_ci                function = "sd0";
2258c2ecf20Sopenharmony_ci            };
2268c2ecf20Sopenharmony_ci
2278c2ecf20Sopenharmony_ci            drv-pinconf {
2288c2ecf20Sopenharmony_ci                groups = "sd0_d0_d3_drv", "sd0_cmd_drv", "sd0_clk_drv";
2298c2ecf20Sopenharmony_ci                drive-strength = <8>;
2308c2ecf20Sopenharmony_ci            };
2318c2ecf20Sopenharmony_ci
2328c2ecf20Sopenharmony_ci            bias-pinconf {
2338c2ecf20Sopenharmony_ci                pins = "sd0_d0", "sd0_d1", "sd0_d2",
2348c2ecf20Sopenharmony_ci                       "sd0_d3", "sd0_cmd";
2358c2ecf20Sopenharmony_ci                bias-pull-up;
2368c2ecf20Sopenharmony_ci            };
2378c2ecf20Sopenharmony_ci        };
2388c2ecf20Sopenharmony_ci    };
2398c2ecf20Sopenharmony_ci
2408c2ecf20Sopenharmony_ci...
241