mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/chenhuacai/linux-loongson
synced 2025-08-30 13:03:01 +00:00

Add EIC7700 pinctrl device for all configurable pins. For the EIC7700 pinctrl registers, each register (32 bits) controls the characteristics of a single pin. It supports setting function multiplexing, Schmitt trigger, drive strength, pull-up/pull-down, and input enable. Co-developed-by: Samuel Holland <samuel.holland@sifive.com> Signed-off-by: Samuel Holland <samuel.holland@sifive.com> Signed-off-by: Yulin Lu <luyulin@eswincomputing.com> Reviewed-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org> Link: https://lore.kernel.org/20250612104811.1206-1-luyulin@eswincomputing.com Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
157 lines
5.6 KiB
YAML
157 lines
5.6 KiB
YAML
# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
|
|
%YAML 1.2
|
|
---
|
|
$id: http://devicetree.org/schemas/pinctrl/eswin,eic7700-pinctrl.yaml#
|
|
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
|
|
|
title: Eswin Eic7700 Pinctrl
|
|
|
|
maintainers:
|
|
- Yulin Lu <luyulin@eswincomputing.com>
|
|
|
|
allOf:
|
|
- $ref: pinctrl.yaml#
|
|
|
|
description: |
|
|
eic7700 pin configuration nodes act as a container for an arbitrary number of
|
|
subnodes. Each of these subnodes represents some desired configuration for one or
|
|
more pins. This configuration can include the mux function to select on those pin(s),
|
|
and various pin configuration parameters, such as input-enable, pull-up, etc.
|
|
|
|
properties:
|
|
compatible:
|
|
const: eswin,eic7700-pinctrl
|
|
|
|
reg:
|
|
maxItems: 1
|
|
|
|
vrgmii-supply:
|
|
description:
|
|
Regulator supply for the RGMII interface IO power domain.
|
|
This property should reference a regulator that provides either 1.8V or 3.3V,
|
|
depending on the board-level voltage configuration required by the RGMII interface.
|
|
|
|
patternProperties:
|
|
'-grp$':
|
|
type: object
|
|
additionalProperties: false
|
|
|
|
patternProperties:
|
|
'-pins$':
|
|
type: object
|
|
|
|
properties:
|
|
pins:
|
|
description:
|
|
For eic7700, specifies the name(s) of one or more pins to be configured by
|
|
this node.
|
|
items:
|
|
enum: [ chip_mode, mode_set0, mode_set1, mode_set2, mode_set3, xin,
|
|
rst_out_n, key_reset_n, gpio0, por_sel, jtag0_tck, jtag0_tms,
|
|
jtag0_tdi, jtag0_tdo, gpio5, spi2_cs0_n, jtag1_tck, jtag1_tms,
|
|
jtag1_tdi, jtag1_tdo, gpio11, spi2_cs1_n, pcie_clkreq_n,
|
|
pcie_wake_n, pcie_perst_n, hdmi_scl, hdmi_sda, hdmi_cec,
|
|
jtag2_trst, rgmii0_clk_125, rgmii0_txen, rgmii0_txclk,
|
|
rgmii0_txd0, rgmii0_txd1, rgmii0_txd2, rgmii0_txd3, i2s0_bclk,
|
|
i2s0_wclk, i2s0_sdi, i2s0_sdo, i2s_mclk, rgmii0_rxclk,
|
|
rgmii0_rxdv, rgmii0_rxd0, rgmii0_rxd1, rgmii0_rxd2, rgmii0_rxd3,
|
|
i2s2_bclk, i2s2_wclk, i2s2_sdi, i2s2_sdo, gpio27, gpio28, gpio29,
|
|
rgmii0_mdc, rgmii0_mdio, rgmii0_intb, rgmii1_clk_125, rgmii1_txen,
|
|
rgmii1_txclk, rgmii1_txd0, rgmii1_txd1, rgmii1_txd2, rgmii1_txd3,
|
|
i2s1_bclk, i2s1_wclk, i2s1_sdi, i2s1_sdo, gpio34, rgmii1_rxclk,
|
|
rgmii1_rxdv, rgmii1_rxd0, rgmii1_rxd1, rgmii1_rxd2, rgmii1_rxd3,
|
|
spi1_cs0_n, spi1_clk, spi1_d0, spi1_d1, spi1_d2, spi1_d3, spi1_cs1_n,
|
|
rgmii1_mdc, rgmii1_mdio, rgmii1_intb, usb0_pwren, usb1_pwren,
|
|
i2c0_scl, i2c0_sda, i2c1_scl, i2c1_sda, i2c2_scl, i2c2_sda,
|
|
i2c3_scl, i2c3_sda, i2c4_scl, i2c4_sda, i2c5_scl, i2c5_sda,
|
|
uart0_tx, uart0_rx, uart1_tx, uart1_rx, uart1_cts, uart1_rts,
|
|
uart2_tx, uart2_rx, jtag2_tck, jtag2_tms, jtag2_tdi, jtag2_tdo,
|
|
fan_pwm, fan_tach, mipi_csi0_xvs, mipi_csi0_xhs, mipi_csi0_mclk,
|
|
mipi_csi1_xvs, mipi_csi1_xhs, mipi_csi1_mclk, mipi_csi2_xvs,
|
|
mipi_csi2_xhs, mipi_csi2_mclk, mipi_csi3_xvs, mipi_csi3_xhs,
|
|
mipi_csi3_mclk, mipi_csi4_xvs, mipi_csi4_xhs, mipi_csi4_mclk,
|
|
mipi_csi5_xvs, mipi_csi5_xhs, mipi_csi5_mclk, spi3_cs_n, spi3_clk,
|
|
spi3_di, spi3_do, gpio92, gpio93, s_mode, gpio95, spi0_cs_n,
|
|
spi0_clk, spi0_d0, spi0_d1, spi0_d2, spi0_d3, i2c10_scl,
|
|
i2c10_sda, i2c11_scl, i2c11_sda, gpio106, boot_sel0, boot_sel1,
|
|
boot_sel2, boot_sel3, gpio111, lpddr_ref_clk ]
|
|
|
|
function:
|
|
description:
|
|
Specify the alternative function to be configured for the
|
|
given pins.
|
|
enum: [ disabled, boot_sel, chip_mode, emmc, fan_tach,
|
|
gpio, hdmi, i2c, i2s, jtag, ddr_ref_clk_sel,
|
|
lpddr_ref_clk, mipi_csi, osc, pcie, pwm,
|
|
rgmii, reset, sata, sdio, spi, s_mode, uart, usb ]
|
|
|
|
input-schmitt-enable: true
|
|
|
|
input-schmitt-disable: true
|
|
|
|
bias-disable: true
|
|
|
|
bias-pull-down: true
|
|
|
|
bias-pull-up: true
|
|
|
|
input-enable: true
|
|
|
|
input-disable: true
|
|
|
|
drive-strength-microamp: true
|
|
|
|
required:
|
|
- pins
|
|
|
|
additionalProperties: false
|
|
|
|
allOf:
|
|
- $ref: pincfg-node.yaml#
|
|
- $ref: pinmux-node.yaml#
|
|
|
|
- if:
|
|
properties:
|
|
pins:
|
|
anyOf:
|
|
- pattern: '^rgmii'
|
|
- const: lpddr_ref_clk
|
|
then:
|
|
properties:
|
|
drive-strength-microamp:
|
|
enum: [3000, 6000, 9000, 12000, 15000, 18000, 21000, 24000]
|
|
else:
|
|
properties:
|
|
drive-strength-microamp:
|
|
enum: [6000, 9000, 12000, 15000, 18000, 21000, 24000, 27000]
|
|
|
|
required:
|
|
- compatible
|
|
- reg
|
|
|
|
unevaluatedProperties: false
|
|
|
|
examples:
|
|
- |
|
|
pinctrl@51600080 {
|
|
compatible = "eswin,eic7700-pinctrl";
|
|
reg = <0x51600080 0x1fff80>;
|
|
vrgmii-supply = <&vcc_1v8>;
|
|
|
|
dev-active-grp {
|
|
/* group node defining 1 standard pin */
|
|
gpio10-pins {
|
|
pins = "jtag1_tdo";
|
|
function = "gpio";
|
|
input-enable;
|
|
bias-pull-up;
|
|
};
|
|
|
|
/* group node defining 2 I2C pins */
|
|
i2c6-pins {
|
|
pins = "uart1_cts", "uart1_rts";
|
|
function = "i2c";
|
|
};
|
|
};
|
|
};
|