dt-bindings: Add devicetree bindings
Add snapshot of device tree bindings from keystone common kernel, branch "android-mainline-keystone-qcom-release" at c4c12103f9c0 ("Snap for 9228065 from e32903b9a63bb558df8b803b076619c53c16baad to android-mainline-keystone-qcom-release"). Change-Id: I7682079615cbd9f29340a5c1f2a1d84ec441a1f1 Signed-off-by: Melody Olvera <quic_molvera@quicinc.com>
This commit is contained in:
80
bindings/pinctrl/abilis,tb10x-iomux.txt
Normal file
80
bindings/pinctrl/abilis,tb10x-iomux.txt
Normal file
@@ -0,0 +1,80 @@
|
||||
Abilis Systems TB10x pin controller
|
||||
===================================
|
||||
|
||||
Required properties
|
||||
-------------------
|
||||
|
||||
- compatible: should be "abilis,tb10x-iomux";
|
||||
- reg: should contain the physical address and size of the pin controller's
|
||||
register range.
|
||||
|
||||
|
||||
Function definitions
|
||||
--------------------
|
||||
|
||||
Functions are defined (and referenced) by sub-nodes of the pin controller.
|
||||
Every sub-node defines exactly one function (implying a set of pins).
|
||||
Every function is associated to one named pin group inside the pin controller
|
||||
driver and these names are used to associate pin group predefinitions to pin
|
||||
controller sub-nodes.
|
||||
|
||||
Required function definition subnode properties:
|
||||
- abilis,function: should be set to the name of the function's pin group.
|
||||
|
||||
The following pin groups are available:
|
||||
- GPIO ports: gpioa, gpiob, gpioc, gpiod, gpioe, gpiof, gpiog,
|
||||
gpioh, gpioi, gpioj, gpiok, gpiol, gpiom, gpion
|
||||
- Serial TS input ports: mis0, mis1, mis2, mis3, mis4, mis5, mis6, mis7
|
||||
- Parallel TS input ports: mip1, mip3, mip5, mip7
|
||||
- Serial TS output ports: mos0, mos1, mos2, mos3
|
||||
- Parallel TS output port: mop
|
||||
- CI+ port: ciplus
|
||||
- CableCard (Mcard) port: mcard
|
||||
- Smart card ports: stc0, stc1
|
||||
- UART ports: uart0, uart1
|
||||
- SPI ports: spi1, spi3
|
||||
- JTAG: jtag
|
||||
|
||||
All other ports of the chip are not multiplexed and thus not managed by this
|
||||
driver.
|
||||
|
||||
|
||||
GPIO ranges definition
|
||||
----------------------
|
||||
|
||||
The named pin groups of GPIO ports can be used to define GPIO ranges as
|
||||
explained in Documentation/devicetree/bindings/gpio/gpio.txt.
|
||||
|
||||
|
||||
Example
|
||||
-------
|
||||
|
||||
iomux: iomux@ff10601c {
|
||||
compatible = "abilis,tb10x-iomux";
|
||||
reg = <0xFF10601c 0x4>;
|
||||
pctl_gpio_a: pctl-gpio-a {
|
||||
abilis,function = "gpioa";
|
||||
};
|
||||
pctl_uart0: pctl-uart0 {
|
||||
abilis,function = "uart0";
|
||||
};
|
||||
};
|
||||
uart@ff100000 {
|
||||
compatible = "snps,dw-apb-uart";
|
||||
reg = <0xFF100000 0x100>;
|
||||
clock-frequency = <166666666>;
|
||||
interrupts = <25 1>;
|
||||
reg-shift = <2>;
|
||||
reg-io-width = <4>;
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&pctl_uart0>;
|
||||
};
|
||||
gpioa: gpio@ff140000 {
|
||||
compatible = "abilis,tb10x-gpio";
|
||||
reg = <0xFF140000 0x1000>;
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
ngpio = <3>;
|
||||
gpio-ranges = <&iomux 0 0>;
|
||||
gpio-ranges-group-names = "gpioa";
|
||||
};
|
242
bindings/pinctrl/actions,s500-pinctrl.yaml
Normal file
242
bindings/pinctrl/actions,s500-pinctrl.yaml
Normal file
@@ -0,0 +1,242 @@
|
||||
# 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
|
||||
|
||||
allOf:
|
||||
- $ref: "pinctrl.yaml#"
|
||||
|
||||
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;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
...
|
170
bindings/pinctrl/actions,s700-pinctrl.txt
Normal file
170
bindings/pinctrl/actions,s700-pinctrl.txt
Normal file
@@ -0,0 +1,170 @@
|
||||
Actions Semi S700 Pin Controller
|
||||
|
||||
This binding describes the pin controller found in the S700 SoC.
|
||||
|
||||
Required Properties:
|
||||
|
||||
- compatible: Should be "actions,s700-pinctrl"
|
||||
- reg: Should contain the register base address and size of
|
||||
the pin controller.
|
||||
- clocks: phandle of the clock feeding the pin controller
|
||||
- gpio-controller: Marks the device node as a GPIO controller.
|
||||
- gpio-ranges: Specifies the mapping between gpio controller and
|
||||
pin-controller pins.
|
||||
- #gpio-cells: Should be two. The first cell is the gpio pin number
|
||||
and the second cell is used for optional parameters.
|
||||
- interrupt-controller: Marks the device node as an interrupt controller.
|
||||
- #interrupt-cells: Specifies the number of cells needed to encode an
|
||||
interrupt. Shall be set to 2. The first cell
|
||||
defines the interrupt number, the second encodes
|
||||
the trigger flags described in
|
||||
bindings/interrupt-controller/interrupts.txt
|
||||
- interrupts: The interrupt outputs from the controller. There is one GPIO
|
||||
interrupt per GPIO bank. The number of interrupts listed depends
|
||||
on the number of GPIO banks on the SoC. The interrupts must be
|
||||
ordered by bank, starting with bank 0.
|
||||
|
||||
Please refer to pinctrl-bindings.txt in this directory for details of the
|
||||
common pinctrl bindings used by client devices, including the meaning of the
|
||||
phrase "pin configuration node".
|
||||
|
||||
The pin configuration nodes act as a container for an arbitrary number of
|
||||
subnodes. Each of these subnodes represents some desired configuration for a
|
||||
pin, a group, or a list of pins or groups. This configuration can include the
|
||||
mux function to select on those group(s), and various pin configuration
|
||||
parameters, such as pull-up, drive strength, etc.
|
||||
|
||||
PIN CONFIGURATION NODES:
|
||||
|
||||
The name of each subnode is not important; all subnodes should be enumerated
|
||||
and processed purely based on their content.
|
||||
|
||||
Each subnode only affects those parameters that are explicitly listed. In
|
||||
other words, a subnode that lists a mux function but no pin configuration
|
||||
parameters implies no information about any pin configuration parameters.
|
||||
Similarly, a pin subnode that describes a pullup parameter implies no
|
||||
information about e.g. the mux function.
|
||||
|
||||
Pinmux functions are available only for the pin groups while pinconf
|
||||
parameters are available for both pin groups and individual pins.
|
||||
|
||||
The following generic properties as defined in pinctrl-bindings.txt are valid
|
||||
to specify in a pin configuration subnode:
|
||||
|
||||
Required Properties:
|
||||
|
||||
- pins: An array of strings, each string containing the name of a pin.
|
||||
These pins are used for selecting the pull control and schmitt
|
||||
trigger parameters. The following are the list of pins
|
||||
available:
|
||||
|
||||
eth_txd0, eth_txd1, eth_txd2, eth_txd3, eth_txen, eth_rxer,
|
||||
eth_crs_dv, eth_rxd1, eth_rxd0, eth_rxd2, eth_rxd3, 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,
|
||||
pcm1_in, pcm1_clk, pcm1_sync, pcm1_out, 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_d2, 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_ss, spi0_miso, uart0_rx, uart0_tx,
|
||||
uart2_rx, uart2_tx, uart2_rtsb, uart2_ctsb, uart3_rx, uart3_tx,
|
||||
uart3_rtsb, uart3_ctsb, i2c0_sclk, i2c0_sdata, i2c1_sclk,
|
||||
i2c1_sdata, i2c2_sdata, csi_dn0, csi_dp0, csi_dn1, csi_dp1,
|
||||
csi_cn, csi_cp, csi_dn2, csi_dp2, csi_dn3, csi_dp3,
|
||||
sensor0_pclk, sensor0_ckout, dnand_d0, dnand_d1, dnand_d2,
|
||||
dnand_d3, dnand_d4, dnand_d5, dnand_d6, dnand_d7, dnand_wrb,
|
||||
dnand_rdb, dnand_rdbn, dnand_dqs, dnand_dqsn, dnand_rb0,
|
||||
dnand_ale, dnand_cle, dnand_ceb0, dnand_ceb1, dnand_ceb2,
|
||||
dnand_ceb3, porb, clko_25m, bsel, pkg0, pkg1, pkg2, pkg3
|
||||
|
||||
- groups: An array of strings, each string containing the name of a pin
|
||||
group. These pin groups are used for selecting the pinmux
|
||||
functions.
|
||||
rgmii_txd23_mfp, rgmii_rxd2_mfp, rgmii_rxd3_mfp, lcd0_d18_mfp,
|
||||
rgmii_txd01_mfp, rgmii_txd0_mfp, rgmii_txd1_mfp, rgmii_txen_mfp,
|
||||
rgmii_rxen_mfp, rgmii_rxd1_mfp, rgmii_rxd0_mfp, rgmii_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_d2_mfp, dsi_dp3_mfp, dsi_dn3_mfp, dsi_dp0_mfp,
|
||||
lvds_ee_pn_mfp, uart2_rx_tx_mfp, spi0_i2c_pcm_mfp, dsi_dnp1_cp_d2_mfp,
|
||||
dsi_dnp1_cp_d17_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
|
||||
|
||||
These pin groups are used for selecting the drive strength
|
||||
parameters.
|
||||
|
||||
sirq_drv, rgmii_txd23_drv, rgmii_rxd23_drv, rgmii_txd01_txen_drv,
|
||||
rgmii_rxer_drv, rgmii_crs_drv, rgmii_rxd10_drv, rgmii_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_d18_d2_drv,
|
||||
dsi_all_drv, sd0_d0_d3_drv, sd0_cmd_drv, sd0_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
|
||||
|
||||
- function: An array of strings, each string containing the name of the
|
||||
pinmux functions. These functions can only be selected by
|
||||
the corresponding pin groups. The following are the list of
|
||||
pinmux functions available:
|
||||
|
||||
nor, eth_rgmii, eth_sgmii, 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, i2c2, i2c3, dsi, lvds, usb30,
|
||||
clko_25m, mipi_csi, nand, spdif, sirq0, sirq1, sirq2, bt, lcd0
|
||||
|
||||
Optional Properties:
|
||||
|
||||
- bias-pull-down: No arguments. The specified pins should be configured as
|
||||
pull down.
|
||||
- bias-pull-up: No arguments. The specified pins should be configured as
|
||||
pull up.
|
||||
- input-schmitt-enable: No arguments: Enable schmitt trigger for the specified
|
||||
pins
|
||||
- input-schmitt-disable: No arguments: Disable schmitt trigger for the specified
|
||||
pins
|
||||
- drive-strength: Integer. Selects the drive strength for the specified
|
||||
pins in mA.
|
||||
Valid values are:
|
||||
<2>
|
||||
<4>
|
||||
<8>
|
||||
<12>
|
||||
|
||||
Example:
|
||||
|
||||
pinctrl: pinctrl@e01b0000 {
|
||||
compatible = "actions,s700-pinctrl";
|
||||
reg = <0x0 0xe01b0000 0x0 0x1000>;
|
||||
clocks = <&cmu CLK_GPIO>;
|
||||
gpio-controller;
|
||||
gpio-ranges = <&pinctrl 0 0 136>;
|
||||
#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>;
|
||||
|
||||
uart3-default: uart3-default {
|
||||
pinmux {
|
||||
groups = "uart3_rtsb_mfp", "uart3_ctsb_mfp";
|
||||
function = "uart3";
|
||||
};
|
||||
pinconf {
|
||||
groups = "uart3_all_drv";
|
||||
drive-strength = <2>;
|
||||
};
|
||||
};
|
||||
};
|
204
bindings/pinctrl/actions,s900-pinctrl.txt
Normal file
204
bindings/pinctrl/actions,s900-pinctrl.txt
Normal file
@@ -0,0 +1,204 @@
|
||||
Actions Semi S900 Pin Controller
|
||||
|
||||
This binding describes the pin controller found in the S900 SoC.
|
||||
|
||||
Required Properties:
|
||||
|
||||
- compatible: Should be "actions,s900-pinctrl"
|
||||
- reg: Should contain the register base address and size of
|
||||
the pin controller.
|
||||
- clocks: phandle of the clock feeding the pin controller
|
||||
- gpio-controller: Marks the device node as a GPIO controller.
|
||||
- gpio-ranges: Specifies the mapping between gpio controller and
|
||||
pin-controller pins.
|
||||
- #gpio-cells: Should be two. The first cell is the gpio pin number
|
||||
and the second cell is used for optional parameters.
|
||||
- interrupt-controller: Marks the device node as an interrupt controller.
|
||||
- #interrupt-cells: Specifies the number of cells needed to encode an
|
||||
interrupt. Shall be set to 2. The first cell
|
||||
defines the interrupt number, the second encodes
|
||||
the trigger flags described in
|
||||
bindings/interrupt-controller/interrupts.txt
|
||||
- interrupts: The interrupt outputs from the controller. There is one GPIO
|
||||
interrupt per GPIO bank. The number of interrupts listed depends
|
||||
on the number of GPIO banks on the SoC. The interrupts must be
|
||||
ordered by bank, starting with bank 0.
|
||||
|
||||
Please refer to pinctrl-bindings.txt in this directory for details of the
|
||||
common pinctrl bindings used by client devices, including the meaning of the
|
||||
phrase "pin configuration node".
|
||||
|
||||
The pin configuration nodes act as a container for an arbitrary number of
|
||||
subnodes. Each of these subnodes represents some desired configuration for a
|
||||
pin, a group, or a list of pins or groups. This configuration can include the
|
||||
mux function to select on those group(s), and various pin configuration
|
||||
parameters, such as pull-up, drive strength, etc.
|
||||
|
||||
PIN CONFIGURATION NODES:
|
||||
|
||||
The name of each subnode is not important; all subnodes should be enumerated
|
||||
and processed purely based on their content.
|
||||
|
||||
Each subnode only affects those parameters that are explicitly listed. In
|
||||
other words, a subnode that lists a mux function but no pin configuration
|
||||
parameters implies no information about any pin configuration parameters.
|
||||
Similarly, a pin subnode that describes a pullup parameter implies no
|
||||
information about e.g. the mux function.
|
||||
|
||||
Pinmux functions are available only for the pin groups while pinconf
|
||||
parameters are available for both pin groups and individual pins.
|
||||
|
||||
The following generic properties as defined in pinctrl-bindings.txt are valid
|
||||
to specify in a pin configuration subnode:
|
||||
|
||||
Required Properties:
|
||||
|
||||
- pins: An array of strings, each string containing the name of a pin.
|
||||
These pins are used for selecting the pull control and schmitt
|
||||
trigger parameters. The following are the list of pins
|
||||
available:
|
||||
|
||||
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,
|
||||
pcm1_in, pcm1_clk, pcm1_sync, pcm1_out, eram_a5,
|
||||
eram_a6, eram_a7, eram_a8, eram_a9, eram_a10, eram_a11,
|
||||
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,
|
||||
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, uart2_rx, uart2_tx, uart2_rtsb, uart2_ctsb,
|
||||
uart3_rx, uart3_tx, uart3_rtsb, uart3_ctsb, uart4_rx,
|
||||
uart4_tx, i2c0_sclk, i2c0_sdata, i2c1_sclk, i2c1_sdata,
|
||||
i2c2_sclk, i2c2_sdata, csi0_dn0, csi0_dp0, csi0_dn1,
|
||||
csi0_dp1, csi0_cn, csi0_cp, csi0_dn2, csi0_dp2, csi0_dn3,
|
||||
csi0_dp3, dsi_dp3, dsi_dn3, dsi_dp1, dsi_dn1, dsi_cp,
|
||||
dsi_cn, dsi_dp0, dsi_dn0, dsi_dp2, dsi_dn2, sensor0_pclk,
|
||||
csi1_dn0,csi1_dp0,csi1_dn1, csi1_dp1, csi1_cn, csi1_cp,
|
||||
sensor0_ckout, nand0_d0, nand0_d1, nand0_d2, nand0_d3,
|
||||
nand0_d4, nand0_d5, nand0_d6, nand0_d7, nand0_dqs,
|
||||
nand0_dqsn, nand0_ale, nand0_cle, nand0_ceb0, nand0_ceb1,
|
||||
nand0_ceb2, nand0_ceb3, nand1_d0, nand1_d1, nand1_d2,
|
||||
nand1_d3, nand1_d4, nand1_d5, nand1_d6, nand1_d7, nand1_dqs,
|
||||
nand1_dqsn, nand1_ale, nand1_cle, nand1_ceb0, nand1_ceb1,
|
||||
nand1_ceb2, nand1_ceb3, sgpio0, sgpio1, sgpio2, sgpio3
|
||||
|
||||
- groups: An array of strings, each string containing the name of a pin
|
||||
group. These pin groups are used for selecting the pinmux
|
||||
functions.
|
||||
|
||||
lvds_oxx_uart4_mfp, rmii_mdc_mfp, rmii_mdio_mfp, sirq0_mfp,
|
||||
sirq1_mfp, rmii_txd0_mfp, rmii_txd1_mfp, rmii_txen_mfp,
|
||||
rmii_rxer_mfp, rmii_crs_dv_mfp, rmii_rxd1_mfp, rmii_rxd0_mfp,
|
||||
rmii_ref_clk_mfp, i2s_d0_mfp, i2s_d1_mfp, i2s_lr_m_clk0_mfp,
|
||||
i2s_bclk0_mfp, i2s_bclk1_mclk1_mfp, pcm1_in_out_mfp,
|
||||
pcm1_clk_mfp, pcm1_sync_mfp, eram_a5_mfp, eram_a6_mfp,
|
||||
eram_a7_mfp, eram_a8_mfp, eram_a9_mfp, eram_a10_mfp,
|
||||
eram_a11_mfp, lvds_oep_odn_mfp, lvds_ocp_obn_mfp,
|
||||
lvds_oap_oan_mfp, lvds_e_mfp, spi0_sclk_mosi_mfp, spi0_ss_mfp,
|
||||
spi0_miso_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_clk_mfp,
|
||||
uart0_rx_mfp, nand0_d0_ceb3_mfp, uart0_tx_mfp, i2c0_mfp,
|
||||
csi0_cn_cp_mfp, csi0_dn0_dp3_mfp, csi1_dn0_cp_mfp,
|
||||
dsi_dp3_dn1_mfp, dsi_cp_dn0_mfp, dsi_dp2_dn2_mfp,
|
||||
nand1_d0_ceb1_mfp, nand1_ceb3_mfp, nand1_ceb0_mfp,
|
||||
csi1_dn0_dp0_mfp, uart4_rx_tx_mfp
|
||||
|
||||
|
||||
These pin groups are used for selecting the drive strength
|
||||
parameters.
|
||||
|
||||
sgpio3_drv, sgpio2_drv, sgpio1_drv, sgpio0_drv,
|
||||
rmii_tx_d0_d1_drv, rmii_txen_rxer_drv, rmii_crs_dv_drv,
|
||||
rmii_rx_d1_d0_drv, rmii_ref_clk_drv, rmii_mdc_mdio_drv,
|
||||
sirq_0_1_drv, sirq2_drv, i2s_d0_d1_drv, i2s_lr_m_clk0_drv,
|
||||
i2s_blk1_mclk1_drv, pcm1_in_out_drv, lvds_oap_oan_drv,
|
||||
lvds_oep_odn_drv, lvds_ocp_obn_drv, lvds_e_drv, sd0_d3_d0_drv,
|
||||
sd1_d3_d0_drv, sd0_sd1_cmd_clk_drv, spi0_sclk_mosi_drv,
|
||||
spi0_ss_miso_drv, uart0_rx_tx_drv, uart4_rx_tx_drv, uart2_drv,
|
||||
uart3_drv, i2c0_drv, i2c1_drv, i2c2_drv, sensor0_drv
|
||||
|
||||
These pin groups are used for selecting the slew rate
|
||||
parameters.
|
||||
|
||||
sgpio3_sr, sgpio2_sr, sgpio1_sr, sgpio0_sr, rmii_tx_d0_d1_sr,
|
||||
rmii_txen_rxer_sr, rmii_crs_dv_sr, rmii_rx_d1_d0_sr,
|
||||
rmii_ref_clk_sr, rmii_mdc_mdio_sr, sirq_0_1_sr, sirq2_sr,
|
||||
i2s_do_d1_sr, i2s_lr_m_clk0_sr, i2s_bclk0_mclk1_sr,
|
||||
pcm1_in_out_sr, sd1_d3_d0_sr, sd0_sd1_clk_cmd_sr,
|
||||
spi0_sclk_mosi_sr, spi0_ss_miso_sr, uart0_rx_tx_sr,
|
||||
uart4_rx_tx_sr, uart2_sr, uart3_sr, i2c0_sr, i2c1_sr, i2c2_sr,
|
||||
sensor0_sr
|
||||
|
||||
- function: An array of strings, each string containing the name of the
|
||||
pinmux functions. These functions can only be selected by
|
||||
the corresponding pin groups. The following are the list of
|
||||
pinmux functions available:
|
||||
|
||||
eram, eth_rmii, eth_smii, spi0, spi1, spi2, spi3, sens0,
|
||||
uart0, uart1, uart2, uart3, uart4, uart5, uart6, i2s0, i2s1,
|
||||
pcm0, pcm1, jtag, pwm0, pwm1, pwm2, pwm3, pwm4, pwm5, sd0,
|
||||
sd1, sd2, sd3, i2c0, i2c1, i2c2, i2c3, i2c4, i2c5, lvds,
|
||||
usb30, usb20, gpu, mipi_csi0, mipi_csi1, mipi_dsi, nand0,
|
||||
nand1, spdif, sirq0, sirq1, sirq2
|
||||
|
||||
Optional Properties:
|
||||
|
||||
- bias-bus-hold: No arguments. The specified pins should retain the previous
|
||||
state value.
|
||||
- bias-high-impedance: No arguments. The specified pins should be configured
|
||||
as high impedance.
|
||||
- bias-pull-down: No arguments. The specified pins should be configured as
|
||||
pull down.
|
||||
- bias-pull-up: No arguments. The specified pins should be configured as
|
||||
pull up.
|
||||
- input-schmitt-enable: No arguments: Enable schmitt trigger for the specified
|
||||
pins
|
||||
- input-schmitt-disable: No arguments: Disable schmitt trigger for the specified
|
||||
pins
|
||||
- slew-rate: Integer. Sets slew rate for the specified pins.
|
||||
Valid values are:
|
||||
<0> - Slow
|
||||
<1> - Fast
|
||||
- drive-strength: Integer. Selects the drive strength for the specified
|
||||
pins in mA.
|
||||
Valid values are:
|
||||
<2>
|
||||
<4>
|
||||
<8>
|
||||
<12>
|
||||
|
||||
Example:
|
||||
|
||||
pinctrl: pinctrl@e01b0000 {
|
||||
compatible = "actions,s900-pinctrl";
|
||||
reg = <0x0 0xe01b0000 0x0 0x1000>;
|
||||
clocks = <&cmu CLK_GPIO>;
|
||||
gpio-controller;
|
||||
gpio-ranges = <&pinctrl 0 0 146>;
|
||||
#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>,
|
||||
<GIC_SPI 16 IRQ_TYPE_LEVEL_HIGH>;
|
||||
|
||||
uart2-default: uart2-default {
|
||||
pinmux {
|
||||
groups = "lvds_oep_odn_mfp";
|
||||
function = "uart2";
|
||||
};
|
||||
pinconf {
|
||||
groups = "lvds_oep_odn_drv";
|
||||
drive-strength = <12>;
|
||||
};
|
||||
};
|
||||
};
|
302
bindings/pinctrl/allwinner,sun4i-a10-pinctrl.yaml
Normal file
302
bindings/pinctrl/allwinner,sun4i-a10-pinctrl.yaml
Normal file
@@ -0,0 +1,302 @@
|
||||
# SPDX-License-Identifier: GPL-2.0
|
||||
%YAML 1.2
|
||||
---
|
||||
$id: http://devicetree.org/schemas/pinctrl/allwinner,sun4i-a10-pinctrl.yaml#
|
||||
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
||||
|
||||
title: Allwinner A10 Pin Controller
|
||||
|
||||
maintainers:
|
||||
- Chen-Yu Tsai <wens@csie.org>
|
||||
- Maxime Ripard <mripard@kernel.org>
|
||||
|
||||
properties:
|
||||
"#gpio-cells":
|
||||
const: 3
|
||||
description:
|
||||
GPIO consumers must use three arguments, first the number of the
|
||||
bank, then the pin number inside that bank, and finally the GPIO
|
||||
flags.
|
||||
|
||||
"#interrupt-cells":
|
||||
const: 3
|
||||
description:
|
||||
Interrupts consumers must use three arguments, first the number
|
||||
of the bank, then the pin number inside that bank, and finally
|
||||
the interrupts flags.
|
||||
|
||||
compatible:
|
||||
enum:
|
||||
- allwinner,sun4i-a10-pinctrl
|
||||
- allwinner,sun5i-a10s-pinctrl
|
||||
- allwinner,sun5i-a13-pinctrl
|
||||
- allwinner,sun6i-a31-pinctrl
|
||||
- allwinner,sun6i-a31-r-pinctrl
|
||||
- allwinner,sun6i-a31s-pinctrl
|
||||
- allwinner,sun7i-a20-pinctrl
|
||||
- allwinner,sun8i-a23-pinctrl
|
||||
- allwinner,sun8i-a23-r-pinctrl
|
||||
- allwinner,sun8i-a33-pinctrl
|
||||
- allwinner,sun8i-a83t-pinctrl
|
||||
- allwinner,sun8i-a83t-r-pinctrl
|
||||
- allwinner,sun8i-h3-pinctrl
|
||||
- allwinner,sun8i-h3-r-pinctrl
|
||||
- allwinner,sun8i-r40-pinctrl
|
||||
- allwinner,sun8i-v3-pinctrl
|
||||
- allwinner,sun8i-v3s-pinctrl
|
||||
- allwinner,sun9i-a80-pinctrl
|
||||
- allwinner,sun9i-a80-r-pinctrl
|
||||
- allwinner,sun20i-d1-pinctrl
|
||||
- allwinner,sun50i-a64-pinctrl
|
||||
- allwinner,sun50i-a64-r-pinctrl
|
||||
- allwinner,sun50i-a100-pinctrl
|
||||
- allwinner,sun50i-a100-r-pinctrl
|
||||
- allwinner,sun50i-h5-pinctrl
|
||||
- allwinner,sun50i-h6-pinctrl
|
||||
- allwinner,sun50i-h6-r-pinctrl
|
||||
- allwinner,sun50i-h616-pinctrl
|
||||
- allwinner,sun50i-h616-r-pinctrl
|
||||
- allwinner,suniv-f1c100s-pinctrl
|
||||
- nextthing,gr8-pinctrl
|
||||
|
||||
reg:
|
||||
maxItems: 1
|
||||
|
||||
interrupts:
|
||||
minItems: 1
|
||||
maxItems: 8
|
||||
description:
|
||||
One interrupt per external interrupt bank supported on the
|
||||
controller, sorted by bank number ascending order.
|
||||
|
||||
clocks:
|
||||
items:
|
||||
- description: Bus Clock
|
||||
- description: High Frequency Oscillator
|
||||
- description: Low Frequency Oscillator
|
||||
|
||||
clock-names:
|
||||
items:
|
||||
- const: apb
|
||||
- const: hosc
|
||||
- const: losc
|
||||
|
||||
gpio-controller: true
|
||||
interrupt-controller: true
|
||||
gpio-line-names: true
|
||||
|
||||
input-debounce:
|
||||
description:
|
||||
Debouncing periods in microseconds, one period per interrupt
|
||||
bank found in the controller
|
||||
$ref: /schemas/types.yaml#/definitions/uint32-array
|
||||
minItems: 1
|
||||
maxItems: 8
|
||||
|
||||
patternProperties:
|
||||
# It's pretty scary, but the basic idea is that:
|
||||
# - One node name can start with either s- or r- for PRCM nodes,
|
||||
# - Then, the name itself can be any repetition of <string>- (to
|
||||
# accomodate with nodes like uart4-rts-cts-pins), where each
|
||||
# string can be either starting with 'p' but in a string longer
|
||||
# than 3, or something that doesn't start with 'p',
|
||||
# - Then, the bank name is optional and will be between pa and pg,
|
||||
# pl or pm. Some pins groups that have several options will have
|
||||
# the pin numbers then,
|
||||
# - Finally, the name will end with either -pin or pins.
|
||||
|
||||
"^([rs]-)?(([a-z0-9]{3,}|[a-oq-z][a-z0-9]*?)?-)+?(p[a-ilm][0-9]*?-)??pins?$":
|
||||
type: object
|
||||
|
||||
properties:
|
||||
pins: true
|
||||
function: true
|
||||
bias-disable: true
|
||||
bias-pull-up: true
|
||||
bias-pull-down: true
|
||||
|
||||
drive-strength:
|
||||
$ref: /schemas/types.yaml#/definitions/uint32
|
||||
enum: [10, 20, 30, 40]
|
||||
|
||||
required:
|
||||
- pins
|
||||
- function
|
||||
|
||||
additionalProperties: false
|
||||
|
||||
"^vcc-p[a-ilm]-supply$":
|
||||
description:
|
||||
Power supplies for pin banks.
|
||||
|
||||
required:
|
||||
- "#gpio-cells"
|
||||
- compatible
|
||||
- reg
|
||||
- clocks
|
||||
- clock-names
|
||||
- gpio-controller
|
||||
|
||||
allOf:
|
||||
# FIXME: We should have the pin bank supplies here, but not a lot of
|
||||
# boards are defining it at the moment so it would generate a lot of
|
||||
# warnings.
|
||||
|
||||
- $ref: "pinctrl.yaml#"
|
||||
- if:
|
||||
not:
|
||||
properties:
|
||||
compatible:
|
||||
enum:
|
||||
- allwinner,sun50i-h616-r-pinctrl
|
||||
|
||||
then:
|
||||
required:
|
||||
- "#interrupt-cells"
|
||||
- interrupts
|
||||
- interrupt-controller
|
||||
|
||||
- if:
|
||||
properties:
|
||||
compatible:
|
||||
enum:
|
||||
- allwinner,sun50i-h616-pinctrl
|
||||
|
||||
then:
|
||||
properties:
|
||||
interrupts:
|
||||
minItems: 8
|
||||
|
||||
- if:
|
||||
properties:
|
||||
compatible:
|
||||
enum:
|
||||
- allwinner,sun50i-a100-pinctrl
|
||||
|
||||
then:
|
||||
properties:
|
||||
interrupts:
|
||||
minItems: 7
|
||||
maxItems: 7
|
||||
|
||||
- if:
|
||||
properties:
|
||||
compatible:
|
||||
enum:
|
||||
- allwinner,sun20i-d1-pinctrl
|
||||
|
||||
then:
|
||||
properties:
|
||||
interrupts:
|
||||
minItems: 6
|
||||
maxItems: 6
|
||||
|
||||
- if:
|
||||
properties:
|
||||
compatible:
|
||||
enum:
|
||||
- allwinner,sun9i-a80-pinctrl
|
||||
|
||||
then:
|
||||
properties:
|
||||
interrupts:
|
||||
minItems: 5
|
||||
maxItems: 5
|
||||
|
||||
- if:
|
||||
properties:
|
||||
compatible:
|
||||
enum:
|
||||
- allwinner,sun6i-a31-pinctrl
|
||||
- allwinner,sun6i-a31s-pinctrl
|
||||
- allwinner,sun50i-h6-pinctrl
|
||||
|
||||
then:
|
||||
properties:
|
||||
interrupts:
|
||||
minItems: 4
|
||||
maxItems: 4
|
||||
|
||||
- if:
|
||||
properties:
|
||||
compatible:
|
||||
enum:
|
||||
- allwinner,sun8i-a23-pinctrl
|
||||
- allwinner,sun8i-a83t-pinctrl
|
||||
- allwinner,sun50i-a64-pinctrl
|
||||
- allwinner,sun50i-h5-pinctrl
|
||||
- allwinner,suniv-f1c100s-pinctrl
|
||||
|
||||
then:
|
||||
properties:
|
||||
interrupts:
|
||||
minItems: 3
|
||||
maxItems: 3
|
||||
|
||||
- if:
|
||||
properties:
|
||||
compatible:
|
||||
enum:
|
||||
- allwinner,sun6i-a31-r-pinctrl
|
||||
- allwinner,sun8i-a33-pinctrl
|
||||
- allwinner,sun8i-h3-pinctrl
|
||||
- allwinner,sun8i-v3-pinctrl
|
||||
- allwinner,sun8i-v3s-pinctrl
|
||||
- allwinner,sun9i-a80-r-pinctrl
|
||||
- allwinner,sun50i-h6-r-pinctrl
|
||||
|
||||
then:
|
||||
properties:
|
||||
interrupts:
|
||||
minItems: 2
|
||||
maxItems: 2
|
||||
|
||||
- if:
|
||||
properties:
|
||||
compatible:
|
||||
enum:
|
||||
- allwinner,sun4i-a10-pinctrl
|
||||
- allwinner,sun5i-a10s-pinctrl
|
||||
- allwinner,sun5i-a13-pinctrl
|
||||
- allwinner,sun7i-a20-pinctrl
|
||||
- allwinner,sun8i-a23-r-pinctrl
|
||||
- allwinner,sun8i-a83t-r-pinctrl
|
||||
- allwinner,sun8i-h3-r-pinctrl
|
||||
- allwinner,sun8i-r40-pinctrl
|
||||
- allwinner,sun50i-a64-r-pinctrl
|
||||
- allwinner,sun50i-a100-r-pinctrl
|
||||
- nextthing,gr8-pinctrl
|
||||
|
||||
then:
|
||||
properties:
|
||||
interrupts:
|
||||
minItems: 1
|
||||
maxItems: 1
|
||||
|
||||
additionalProperties: false
|
||||
|
||||
examples:
|
||||
- |
|
||||
#include <dt-bindings/clock/sun5i-ccu.h>
|
||||
|
||||
pio: pinctrl@1c20800 {
|
||||
compatible = "allwinner,sun5i-a13-pinctrl";
|
||||
reg = <0x01c20800 0x400>;
|
||||
interrupts = <28>;
|
||||
clocks = <&ccu CLK_APB0_PIO>, <&osc24M>, <&osc32k>;
|
||||
clock-names = "apb", "hosc", "losc";
|
||||
gpio-controller;
|
||||
interrupt-controller;
|
||||
#interrupt-cells = <3>;
|
||||
#gpio-cells = <3>;
|
||||
|
||||
uart1_pe_pins: uart1-pe-pins {
|
||||
pins = "PE10", "PE11";
|
||||
function = "uart1";
|
||||
};
|
||||
|
||||
uart1_pg_pins: uart1-pg-pins {
|
||||
pins = "PG3", "PG4";
|
||||
function = "uart1";
|
||||
};
|
||||
};
|
124
bindings/pinctrl/apple,pinctrl.yaml
Normal file
124
bindings/pinctrl/apple,pinctrl.yaml
Normal file
@@ -0,0 +1,124 @@
|
||||
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
|
||||
%YAML 1.2
|
||||
---
|
||||
$id: http://devicetree.org/schemas/pinctrl/apple,pinctrl.yaml#
|
||||
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
||||
|
||||
title: Apple GPIO controller
|
||||
|
||||
maintainers:
|
||||
- Mark Kettenis <kettenis@openbsd.org>
|
||||
|
||||
description: |
|
||||
The Apple GPIO controller is a simple combined pin and GPIO
|
||||
controller present on Apple ARM SoC platforms, including various
|
||||
iPhone and iPad devices and the "Apple Silicon" Macs.
|
||||
|
||||
properties:
|
||||
compatible:
|
||||
items:
|
||||
- enum:
|
||||
- apple,t8103-pinctrl
|
||||
- apple,t6000-pinctrl
|
||||
- const: apple,pinctrl
|
||||
|
||||
reg:
|
||||
maxItems: 1
|
||||
|
||||
clocks:
|
||||
maxItems: 1
|
||||
|
||||
gpio-controller: true
|
||||
|
||||
'#gpio-cells':
|
||||
const: 2
|
||||
|
||||
gpio-ranges:
|
||||
maxItems: 1
|
||||
|
||||
apple,npins:
|
||||
$ref: /schemas/types.yaml#/definitions/uint32
|
||||
description: The number of pins in this GPIO controller.
|
||||
|
||||
interrupts:
|
||||
description: One interrupt for each of the (up to 7) interrupt
|
||||
groups supported by the controller sorted by interrupt group
|
||||
number in ascending order.
|
||||
minItems: 1
|
||||
maxItems: 7
|
||||
|
||||
interrupt-controller: true
|
||||
|
||||
'#interrupt-cells':
|
||||
const: 2
|
||||
|
||||
power-domains:
|
||||
maxItems: 1
|
||||
|
||||
patternProperties:
|
||||
'-pins$':
|
||||
type: object
|
||||
$ref: pinmux-node.yaml#
|
||||
|
||||
properties:
|
||||
pinmux:
|
||||
description:
|
||||
Values are constructed from pin number and alternate function
|
||||
configuration number using the APPLE_PINMUX() helper macro
|
||||
defined in include/dt-bindings/pinctrl/apple.h.
|
||||
|
||||
required:
|
||||
- pinmux
|
||||
|
||||
additionalProperties: false
|
||||
|
||||
allOf:
|
||||
- $ref: "pinctrl.yaml#"
|
||||
|
||||
required:
|
||||
- compatible
|
||||
- reg
|
||||
- gpio-controller
|
||||
- '#gpio-cells'
|
||||
- gpio-ranges
|
||||
- apple,npins
|
||||
|
||||
additionalProperties: false
|
||||
|
||||
examples:
|
||||
- |
|
||||
#include <dt-bindings/interrupt-controller/apple-aic.h>
|
||||
#include <dt-bindings/pinctrl/apple.h>
|
||||
|
||||
soc {
|
||||
#address-cells = <2>;
|
||||
#size-cells = <2>;
|
||||
|
||||
pinctrl: pinctrl@23c100000 {
|
||||
compatible = "apple,t8103-pinctrl", "apple,pinctrl";
|
||||
reg = <0x2 0x3c100000 0x0 0x100000>;
|
||||
clocks = <&gpio_clk>;
|
||||
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
gpio-ranges = <&pinctrl 0 0 212>;
|
||||
apple,npins = <212>;
|
||||
|
||||
interrupt-controller;
|
||||
#interrupt-cells = <2>;
|
||||
interrupt-parent = <&aic>;
|
||||
interrupts = <AIC_IRQ 16 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<AIC_IRQ 17 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<AIC_IRQ 18 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<AIC_IRQ 19 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<AIC_IRQ 20 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<AIC_IRQ 21 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<AIC_IRQ 22 IRQ_TYPE_LEVEL_HIGH>;
|
||||
|
||||
pcie_pins: pcie-pins {
|
||||
pinmux = <APPLE_PINMUX(150, 1)>,
|
||||
<APPLE_PINMUX(151, 1)>,
|
||||
<APPLE_PINMUX(32, 1)>;
|
||||
};
|
||||
};
|
||||
};
|
86
bindings/pinctrl/aspeed,ast2400-pinctrl.yaml
Normal file
86
bindings/pinctrl/aspeed,ast2400-pinctrl.yaml
Normal file
@@ -0,0 +1,86 @@
|
||||
# SPDX-License-Identifier: GPL-2.0-or-later
|
||||
%YAML 1.2
|
||||
---
|
||||
$id: http://devicetree.org/schemas/pinctrl/aspeed,ast2400-pinctrl.yaml#
|
||||
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
||||
|
||||
title: ASPEED AST2400 Pin Controller
|
||||
|
||||
maintainers:
|
||||
- Andrew Jeffery <andrew@aj.id.au>
|
||||
|
||||
description: |+
|
||||
The pin controller node should be the child of a syscon node with the
|
||||
required property:
|
||||
|
||||
- compatible: Should be one of the following:
|
||||
"aspeed,ast2400-scu", "syscon", "simple-mfd"
|
||||
|
||||
Refer to the bindings described in
|
||||
Documentation/devicetree/bindings/mfd/syscon.yaml
|
||||
|
||||
properties:
|
||||
compatible:
|
||||
const: aspeed,ast2400-pinctrl
|
||||
reg:
|
||||
maxItems: 2
|
||||
|
||||
patternProperties:
|
||||
'^.*$':
|
||||
if:
|
||||
type: object
|
||||
then:
|
||||
patternProperties:
|
||||
"^function|groups$":
|
||||
$ref: "/schemas/types.yaml#/definitions/string"
|
||||
enum: [ ACPI, ADC0, ADC1, ADC10, ADC11, ADC12, ADC13, ADC14, ADC15,
|
||||
ADC2, ADC3, ADC4, ADC5, ADC6, ADC7, ADC8, ADC9, BMCINT, DDCCLK, DDCDAT,
|
||||
EXTRST, FLACK, FLBUSY, FLWP, GPID, GPID0, GPID2, GPID4, GPID6, GPIE0,
|
||||
GPIE2, GPIE4, GPIE6, I2C10, I2C11, I2C12, I2C13, I2C14, I2C3, I2C4,
|
||||
I2C5, I2C6, I2C7, I2C8, I2C9, LPCPD, LPCPME, LPCRST, LPCSMI, MAC1LINK,
|
||||
MAC2LINK, MDIO1, MDIO2, NCTS1, NCTS2, NCTS3, NCTS4, NDCD1, NDCD2,
|
||||
NDCD3, NDCD4, NDSR1, NDSR2, NDSR3, NDSR4, NDTR1, NDTR2, NDTR3, NDTR4,
|
||||
NDTS4, NRI1, NRI2, NRI3, NRI4, NRTS1, NRTS2, NRTS3, OSCCLK, PWM0,
|
||||
PWM1, PWM2, PWM3, PWM4, PWM5, PWM6, PWM7, RGMII1, RGMII2, RMII1,
|
||||
RMII2, ROM16, ROM8, ROMCS1, ROMCS2, ROMCS3, ROMCS4, RXD1, RXD2, RXD3,
|
||||
RXD4, SALT1, SALT2, SALT3, SALT4, SD1, SD2, SGPMCK, SGPMI, SGPMLD,
|
||||
SGPMO, SGPSCK, SGPSI0, SGPSI1, SGPSLD, SIOONCTRL, SIOPBI, SIOPBO,
|
||||
SIOPWREQ, SIOPWRGD, SIOS3, SIOS5, SIOSCI, SPI1, SPI1DEBUG, SPI1PASSTHRU,
|
||||
SPICS1, TIMER3, TIMER4, TIMER5, TIMER6, TIMER7, TIMER8, TXD1, TXD2,
|
||||
TXD3, TXD4, UART6, USB11D1, USB11H2, USB2D1, USB2H1, USBCKI, VGABIOS_ROM,
|
||||
VGAHS, VGAVS, VPI18, VPI24, VPI30, VPO12, VPO24, WDTRST1, WDTRST2]
|
||||
|
||||
allOf:
|
||||
- $ref: "pinctrl.yaml#"
|
||||
|
||||
required:
|
||||
- compatible
|
||||
|
||||
additionalProperties: false
|
||||
|
||||
examples:
|
||||
- |
|
||||
syscon: scu@1e6e2000 {
|
||||
compatible = "aspeed,ast2400-scu", "syscon", "simple-mfd";
|
||||
reg = <0x1e6e2000 0x1a8>;
|
||||
#clock-cells = <1>;
|
||||
#reset-cells = <1>;
|
||||
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
ranges = <0x0 0x1e6e2000 0x1000>;
|
||||
|
||||
pinctrl: pinctrl {
|
||||
compatible = "aspeed,ast2400-pinctrl";
|
||||
|
||||
pinctrl_i2c3_default: i2c3_default {
|
||||
function = "I2C3";
|
||||
groups = "I2C3";
|
||||
};
|
||||
|
||||
pinctrl_gpioh0_unbiased_default: gpioh0 {
|
||||
pins = "A8";
|
||||
bias-disable;
|
||||
};
|
||||
};
|
||||
};
|
103
bindings/pinctrl/aspeed,ast2500-pinctrl.yaml
Normal file
103
bindings/pinctrl/aspeed,ast2500-pinctrl.yaml
Normal file
@@ -0,0 +1,103 @@
|
||||
# SPDX-License-Identifier: GPL-2.0-or-later
|
||||
%YAML 1.2
|
||||
---
|
||||
$id: http://devicetree.org/schemas/pinctrl/aspeed,ast2500-pinctrl.yaml#
|
||||
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
||||
|
||||
title: ASPEED AST2500 Pin Controller
|
||||
|
||||
maintainers:
|
||||
- Andrew Jeffery <andrew@aj.id.au>
|
||||
|
||||
description: |+
|
||||
The pin controller node should be the child of a syscon node with the
|
||||
required property:
|
||||
|
||||
- compatible: Should be one of the following:
|
||||
"aspeed,ast2500-scu", "syscon", "simple-mfd"
|
||||
"aspeed,g5-scu", "syscon", "simple-mfd"
|
||||
|
||||
Refer to the bindings described in
|
||||
Documentation/devicetree/bindings/mfd/syscon.yaml
|
||||
|
||||
properties:
|
||||
compatible:
|
||||
const: aspeed,ast2500-pinctrl
|
||||
reg:
|
||||
maxItems: 2
|
||||
|
||||
aspeed,external-nodes:
|
||||
minItems: 2
|
||||
maxItems: 2
|
||||
items:
|
||||
maxItems: 1
|
||||
$ref: /schemas/types.yaml#/definitions/phandle-array
|
||||
description: |
|
||||
A cell of phandles to external controller nodes:
|
||||
0: compatible with "aspeed,ast2500-gfx", "syscon"
|
||||
1: compatible with "aspeed,ast2500-lhc", "syscon"
|
||||
|
||||
patternProperties:
|
||||
'^.*$':
|
||||
if:
|
||||
type: object
|
||||
then:
|
||||
patternProperties:
|
||||
"^function|groups$":
|
||||
$ref: "/schemas/types.yaml#/definitions/string"
|
||||
enum: [ ACPI, ADC0, ADC1, ADC10, ADC11, ADC12, ADC13, ADC14, ADC15,
|
||||
ADC2, ADC3, ADC4, ADC5, ADC6, ADC7, ADC8, ADC9, BMCINT, DDCCLK, DDCDAT,
|
||||
ESPI, FWSPICS1, FWSPICS2, GPID0, GPID2, GPID4, GPID6, GPIE0, GPIE2,
|
||||
GPIE4, GPIE6, I2C10, I2C11, I2C12, I2C13, I2C14, I2C3, I2C4, I2C5,
|
||||
I2C6, I2C7, I2C8, I2C9, LAD0, LAD1, LAD2, LAD3, LCLK, LFRAME, LPCHC,
|
||||
LPCPD, LPCPLUS, LPCPME, LPCRST, LPCSMI, LSIRQ, MAC1LINK, MAC2LINK,
|
||||
MDIO1, MDIO2, NCTS1, NCTS2, NCTS3, NCTS4, NDCD1, NDCD2, NDCD3, NDCD4,
|
||||
NDSR1, NDSR2, NDSR3, NDSR4, NDTR1, NDTR2, NDTR3, NDTR4, NRI1, NRI2,
|
||||
NRI3, NRI4, NRTS1, NRTS2, NRTS3, NRTS4, OSCCLK, PEWAKE, PNOR, PWM0,
|
||||
PWM1, PWM2, PWM3, PWM4, PWM5, PWM6, PWM7, RGMII1, RGMII2, RMII1,
|
||||
RMII2, RXD1, RXD2, RXD3, RXD4, SALT1, SALT10, SALT11, SALT12, SALT13,
|
||||
SALT14, SALT2, SALT3, SALT4, SALT5, SALT6, SALT7, SALT8, SALT9, SCL1,
|
||||
SCL2, SD1, SD2, SDA1, SDA2, SGPS1, SGPS2, SIOONCTRL, SIOPBI, SIOPBO,
|
||||
SIOPWREQ, SIOPWRGD, SIOS3, SIOS5, SIOSCI, SPI1, SPI1CS1, SPI1DEBUG,
|
||||
SPI1PASSTHRU, SPI2CK, SPI2CS0, SPI2CS1, SPI2MISO, SPI2MOSI, TIMER3,
|
||||
TIMER4, TIMER5, TIMER6, TIMER7, TIMER8, TXD1, TXD2, TXD3, TXD4, UART6,
|
||||
USB11BHID, USB2AD, USB2AH, USB2BD, USB2BH, USBCKI, VGABIOSROM, VGAHS,
|
||||
VGAVS, VPI24, VPO, WDTRST1, WDTRST2]
|
||||
|
||||
allOf:
|
||||
- $ref: "pinctrl.yaml#"
|
||||
|
||||
required:
|
||||
- compatible
|
||||
- aspeed,external-nodes
|
||||
|
||||
additionalProperties: false
|
||||
|
||||
examples:
|
||||
- |
|
||||
#include <dt-bindings/clock/aspeed-clock.h>
|
||||
scu@1e6e2000 {
|
||||
compatible = "aspeed,ast2500-scu", "syscon", "simple-mfd";
|
||||
reg = <0x1e6e2000 0x1a8>;
|
||||
#clock-cells = <1>;
|
||||
#reset-cells = <1>;
|
||||
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
ranges = <0x0 0x1e6e2000 0x1000>;
|
||||
|
||||
pinctrl: pinctrl {
|
||||
compatible = "aspeed,ast2500-pinctrl";
|
||||
aspeed,external-nodes = <&gfx>, <&lhc>;
|
||||
|
||||
pinctrl_i2c3_default: i2c3_default {
|
||||
function = "I2C3";
|
||||
groups = "I2C3";
|
||||
};
|
||||
|
||||
pinctrl_gpioh0_unbiased_default: gpioh0 {
|
||||
pins = "A18";
|
||||
bias-disable;
|
||||
};
|
||||
};
|
||||
};
|
119
bindings/pinctrl/aspeed,ast2600-pinctrl.yaml
Normal file
119
bindings/pinctrl/aspeed,ast2600-pinctrl.yaml
Normal file
@@ -0,0 +1,119 @@
|
||||
# SPDX-License-Identifier: GPL-2.0+
|
||||
%YAML 1.2
|
||||
---
|
||||
$id: http://devicetree.org/schemas/pinctrl/aspeed,ast2600-pinctrl.yaml#
|
||||
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
||||
|
||||
title: ASPEED AST2600 Pin Controller
|
||||
|
||||
maintainers:
|
||||
- Andrew Jeffery <andrew@aj.id.au>
|
||||
|
||||
description: |+
|
||||
The pin controller node should be the child of a syscon node with the
|
||||
required property:
|
||||
|
||||
- compatible: Should be one of the following:
|
||||
"aspeed,ast2600-scu", "syscon", "simple-mfd"
|
||||
|
||||
Refer to the bindings described in
|
||||
Documentation/devicetree/bindings/mfd/syscon.yaml
|
||||
|
||||
properties:
|
||||
compatible:
|
||||
const: aspeed,ast2600-pinctrl
|
||||
|
||||
patternProperties:
|
||||
'^.*$':
|
||||
if:
|
||||
type: object
|
||||
then:
|
||||
properties:
|
||||
function:
|
||||
$ref: "/schemas/types.yaml#/definitions/string"
|
||||
enum: [ ADC0, ADC1, ADC10, ADC11, ADC12, ADC13, ADC14, ADC15, ADC2,
|
||||
ADC3, ADC4, ADC5, ADC6, ADC7, ADC8, ADC9, BMCINT, EMMC, ESPI, ESPIALT,
|
||||
FSI1, FSI2, FWQSPI, FWSPIABR, FWSPID, FWSPIWP, GPIT0, GPIT1, GPIT2, GPIT3,
|
||||
GPIT4, GPIT5, GPIT6, GPIT7, GPIU0, GPIU1, GPIU2, GPIU3, GPIU4, GPIU5,
|
||||
GPIU6, GPIU7, I2C1, I2C10, I2C11, I2C12, I2C13, I2C14, I2C15, I2C16,
|
||||
I2C2, I2C3, I2C4, I2C5, I2C6, I2C7, I2C8, I2C9, I3C3, I3C4, I3C5,
|
||||
I3C6, JTAGM, LHPD, LHSIRQ, LPC, LPCHC, LPCPD, LPCPME, LPCSMI, LSIRQ,
|
||||
MACLINK1, MACLINK2, MACLINK3, MACLINK4, MDIO1, MDIO2, MDIO3, MDIO4,
|
||||
NCTS1, NCTS2, NCTS3, NCTS4, NDCD1, NDCD2, NDCD3, NDCD4, NDSR1, NDSR2,
|
||||
NDSR3, NDSR4, NDTR1, NDTR2, NDTR3, NDTR4, NRI1, NRI2, NRI3, NRI4,
|
||||
NRTS1, NRTS2, NRTS3, NRTS4, OSCCLK, PEWAKE, PWM0, PWM1, PWM10, PWM11,
|
||||
PWM12, PWM13, PWM14, PWM15, PWM2, PWM3, PWM4, PWM5, PWM6, PWM7, PWM8,
|
||||
PWM9, RGMII1, RGMII2, RGMII3, RGMII4, RMII1, RMII2, RMII3, RMII4,
|
||||
RXD1, RXD2, RXD3, RXD4, SALT1, SALT10, SALT11, SALT12, SALT13, SALT14,
|
||||
SALT15, SALT16, SALT2, SALT3, SALT4, SALT5, SALT6, SALT7, SALT8,
|
||||
SALT9, SD1, SD2, SGPM1, SGPM2, SGPS1, SGPS2, SIOONCTRL, SIOPBI, SIOPBO,
|
||||
SIOPWREQ, SIOPWRGD, SIOS3, SIOS5, SIOSCI, SPI1, SPI1ABR, SPI1CS1, SPI1WP, SPI2,
|
||||
SPI2CS1, SPI2CS2, TACH0, TACH1, TACH10, TACH11, TACH12, TACH13, TACH14,
|
||||
TACH15, TACH2, TACH3, TACH4, TACH5, TACH6, TACH7, TACH8, TACH9, THRU0,
|
||||
THRU1, THRU2, THRU3, TXD1, TXD2, TXD3, TXD4, UART10, UART11, UART12,
|
||||
UART13, UART6, UART7, UART8, UART9, USBAD, USBADP, USB2AH, USB2AHP,
|
||||
USB2BD, USB2BH, VB, VGAHS, VGAVS, WDTRST1, WDTRST2, WDTRST3, WDTRST4 ]
|
||||
|
||||
groups:
|
||||
$ref: "/schemas/types.yaml#/definitions/string"
|
||||
enum: [ ADC0, ADC1, ADC10, ADC11, ADC12, ADC13, ADC14, ADC15, ADC2,
|
||||
ADC3, ADC4, ADC5, ADC6, ADC7, ADC8, ADC9, BMCINT, EMMCG1, EMMCG4,
|
||||
EMMCG8, ESPI, ESPIALT, FSI1, FSI2, FWQSPI, FWSPIABR, FWSPID, FWSPIWP,
|
||||
GPIT0, GPIT1, GPIT2, GPIT3, GPIT4, GPIT5, GPIT6, GPIT7, GPIU0, GPIU1,
|
||||
GPIU2, GPIU3, GPIU4, GPIU5, GPIU6, GPIU7, HVI3C3, HVI3C4, I2C1, I2C10,
|
||||
I2C11, I2C12, I2C13, I2C14, I2C15, I2C16, I2C2, I2C3, I2C4, I2C5,
|
||||
I2C6, I2C7, I2C8, I2C9, I3C3, I3C4, I3C5, I3C6, JTAGM, LHPD, LHSIRQ,
|
||||
LPC, LPCHC, LPCPD, LPCPME, LPCSMI, LSIRQ, MACLINK1, MACLINK2, MACLINK3,
|
||||
MACLINK4, MDIO1, MDIO2, MDIO3, MDIO4, NCTS1, NCTS2, NCTS3, NCTS4,
|
||||
NDCD1, NDCD2, NDCD3, NDCD4, NDSR1, NDSR2, NDSR3, NDSR4, NDTR1, NDTR2,
|
||||
NDTR3, NDTR4, NRI1, NRI2, NRI3, NRI4, NRTS1, NRTS2, NRTS3, NRTS4,
|
||||
OSCCLK, PEWAKE, PWM0, PWM1, PWM10G0, PWM10G1, PWM11G0, PWM11G1, PWM12G0,
|
||||
PWM12G1, PWM13G0, PWM13G1, PWM14G0, PWM14G1, PWM15G0, PWM15G1, PWM2,
|
||||
PWM3, PWM4, PWM5, PWM6, PWM7, PWM8G0, PWM8G1, PWM9G0, PWM9G1, QSPI1,
|
||||
QSPI2, RGMII1, RGMII2, RGMII3, RGMII4, RMII1, RMII2, RMII3, RMII4,
|
||||
RXD1, RXD2, RXD3, RXD4, SALT1, SALT10G0, SALT10G1, SALT11G0, SALT11G1,
|
||||
SALT12G0, SALT12G1, SALT13G0, SALT13G1, SALT14G0, SALT14G1, SALT15G0,
|
||||
SALT15G1, SALT16G0, SALT16G1, SALT2, SALT3, SALT4, SALT5, SALT6,
|
||||
SALT7, SALT8, SALT9G0, SALT9G1, SD1, SD2, SD3, SGPM1, SGPM2, SGPS1, SGPS2,
|
||||
SIOONCTRL, SIOPBI, SIOPBO, SIOPWREQ, SIOPWRGD, SIOS3, SIOS5, SIOSCI, SPI1,
|
||||
SPI1ABR, SPI1CS1, SPI1WP, SPI2, SPI2CS1, SPI2CS2, TACH0, TACH1, TACH10, TACH11,
|
||||
TACH12, TACH13, TACH14, TACH15, TACH2, TACH3, TACH4, TACH5, TACH6,
|
||||
TACH7, TACH8, TACH9, THRU0, THRU1, THRU2, THRU3, TXD1, TXD2, TXD3,
|
||||
TXD4, UART10, UART11, UART12G0, UART12G1, UART13G0, UART13G1, UART6,
|
||||
UART7, UART8, UART9, USBA, USBB, VB, VGAHS, VGAVS, WDTRST1, WDTRST2,
|
||||
WDTRST3, WDTRST4]
|
||||
|
||||
allOf:
|
||||
- $ref: "pinctrl.yaml#"
|
||||
|
||||
required:
|
||||
- compatible
|
||||
|
||||
additionalProperties: false
|
||||
|
||||
examples:
|
||||
- |
|
||||
syscon: scu@1e6e2000 {
|
||||
compatible = "aspeed,ast2600-scu", "syscon", "simple-mfd";
|
||||
reg = <0x1e6e2000 0xf6c>;
|
||||
#clock-cells = <1>;
|
||||
#reset-cells = <1>;
|
||||
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
ranges = <0x0 0x1e6e2000 0x1000>;
|
||||
|
||||
pinctrl: pinctrl {
|
||||
compatible = "aspeed,ast2600-pinctrl";
|
||||
|
||||
pinctrl_pwm10g1_default: pwm10g1_default {
|
||||
function = "PWM10";
|
||||
groups = "PWM10G1";
|
||||
};
|
||||
|
||||
pinctrl_gpioh0_unbiased_default: gpioh0 {
|
||||
pins = "A18";
|
||||
bias-disable;
|
||||
};
|
||||
};
|
||||
};
|
176
bindings/pinctrl/atmel,at91-pinctrl.txt
Normal file
176
bindings/pinctrl/atmel,at91-pinctrl.txt
Normal file
@@ -0,0 +1,176 @@
|
||||
* Atmel AT91 Pinmux Controller
|
||||
|
||||
The AT91 Pinmux Controller, enables the IC
|
||||
to share one PAD to several functional blocks. The sharing is done by
|
||||
multiplexing the PAD input/output signals. For each PAD there are up to
|
||||
8 muxing options (called periph modes). Since different modules require
|
||||
different PAD settings (like pull up, keeper, etc) the controller controls
|
||||
also the PAD settings parameters.
|
||||
|
||||
Please refer to pinctrl-bindings.txt in this directory for details of the
|
||||
common pinctrl bindings used by client devices, including the meaning of the
|
||||
phrase "pin configuration node".
|
||||
|
||||
Atmel AT91 pin configuration node is a node of a group of pins which can be
|
||||
used for a specific device or function. This node represents both mux and config
|
||||
of the pins in that group. The 'pins' selects the function mode(also named pin
|
||||
mode) this pin can work on and the 'config' configures various pad settings
|
||||
such as pull-up, multi drive, etc.
|
||||
|
||||
Required properties for iomux controller:
|
||||
- compatible: "atmel,at91rm9200-pinctrl" or "atmel,at91sam9x5-pinctrl"
|
||||
or "atmel,sama5d3-pinctrl" or "microchip,sam9x60-pinctrl"
|
||||
- atmel,mux-mask: array of mask (periph per bank) to describe if a pin can be
|
||||
configured in this periph mode. All the periph and bank need to be describe.
|
||||
|
||||
How to create such array:
|
||||
|
||||
Each column will represent the possible peripheral of the pinctrl
|
||||
Each line will represent a pio bank
|
||||
|
||||
Take an example on the 9260
|
||||
Peripheral: 2 ( A and B)
|
||||
Bank: 3 (A, B and C)
|
||||
=>
|
||||
|
||||
/* A B */
|
||||
0xffffffff 0xffc00c3b /* pioA */
|
||||
0xffffffff 0x7fff3ccf /* pioB */
|
||||
0xffffffff 0x007fffff /* pioC */
|
||||
|
||||
For each peripheral/bank we will describe in a u32 if a pin can be
|
||||
configured in it by putting 1 to the pin bit (1 << pin)
|
||||
|
||||
Let's take the pioA on peripheral B
|
||||
From the datasheet Table 10-2.
|
||||
Peripheral B
|
||||
PA0 MCDB0
|
||||
PA1 MCCDB
|
||||
PA2
|
||||
PA3 MCDB3
|
||||
PA4 MCDB2
|
||||
PA5 MCDB1
|
||||
PA6
|
||||
PA7
|
||||
PA8
|
||||
PA9
|
||||
PA10 ETX2
|
||||
PA11 ETX3
|
||||
PA12
|
||||
PA13
|
||||
PA14
|
||||
PA15
|
||||
PA16
|
||||
PA17
|
||||
PA18
|
||||
PA19
|
||||
PA20
|
||||
PA21
|
||||
PA22 ETXER
|
||||
PA23 ETX2
|
||||
PA24 ETX3
|
||||
PA25 ERX2
|
||||
PA26 ERX3
|
||||
PA27 ERXCK
|
||||
PA28 ECRS
|
||||
PA29 ECOL
|
||||
PA30 RXD4
|
||||
PA31 TXD4
|
||||
|
||||
=> 0xffc00c3b
|
||||
|
||||
Required properties for pin configuration node:
|
||||
- atmel,pins: 4 integers array, represents a group of pins mux and config
|
||||
setting. The format is atmel,pins = <PIN_BANK PIN_BANK_NUM PERIPH CONFIG>.
|
||||
The PERIPH 0 means gpio, PERIPH 1 is periph A, PERIPH 2 is periph B...
|
||||
PIN_BANK 0 is pioA, PIN_BANK 1 is pioB...
|
||||
|
||||
Bits used for CONFIG:
|
||||
PULL_UP (1 << 0): indicate this pin needs a pull up.
|
||||
MULTIDRIVE (1 << 1): indicate this pin needs to be configured as multi-drive.
|
||||
Multi-drive is equivalent to open-drain type output.
|
||||
DEGLITCH (1 << 2): indicate this pin needs deglitch.
|
||||
PULL_DOWN (1 << 3): indicate this pin needs a pull down.
|
||||
DIS_SCHMIT (1 << 4): indicate this pin needs to the disable schmitt trigger.
|
||||
DRIVE_STRENGTH (3 << 5): indicate the drive strength of the pin using the
|
||||
following values:
|
||||
00 - No change (reset state value kept)
|
||||
01 - Low
|
||||
10 - Medium
|
||||
11 - High
|
||||
OUTPUT (1 << 7): indicate this pin need to be configured as an output.
|
||||
OUTPUT_VAL (1 << 8): output val (1 = high, 0 = low)
|
||||
SLEWRATE (1 << 9): slew rate of the pin: 0 = disable, 1 = enable
|
||||
DEBOUNCE (1 << 16): indicate this pin needs debounce.
|
||||
DEBOUNCE_VAL (0x3fff << 17): debounce value.
|
||||
|
||||
NOTE:
|
||||
Some requirements for using atmel,at91rm9200-pinctrl binding:
|
||||
1. We have pin function node defined under at91 controller node to represent
|
||||
what pinmux functions this SoC supports.
|
||||
2. The driver can use the function node's name and pin configuration node's
|
||||
name describe the pin function and group hierarchy.
|
||||
For example, Linux at91 pinctrl driver takes the function node's name
|
||||
as the function name and pin configuration node's name as group name to
|
||||
create the map table.
|
||||
3. Each pin configuration node should have a phandle, devices can set pins
|
||||
configurations by referring to the phandle of that pin configuration node.
|
||||
4. The gpio controller must be describe in the pinctrl simple-bus.
|
||||
|
||||
For each bank the required properties are:
|
||||
- compatible: "atmel,at91sam9x5-gpio" or "atmel,at91rm9200-gpio" or
|
||||
"microchip,sam9x60-gpio"
|
||||
- reg: physical base address and length of the controller's registers
|
||||
- interrupts: interrupt outputs from the controller
|
||||
- interrupt-controller: marks the device node as an interrupt controller
|
||||
- #interrupt-cells: should be 2; refer to ../interrupt-controller/interrupts.txt
|
||||
for more details.
|
||||
- gpio-controller
|
||||
- #gpio-cells: should be 2; the first cell is the GPIO number and the second
|
||||
cell specifies GPIO flags as defined in <dt-bindings/gpio/gpio.h>.
|
||||
- clocks: bank clock
|
||||
|
||||
Examples:
|
||||
|
||||
pinctrl@fffff400 {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
ranges;
|
||||
compatible = "atmel,at91rm9200-pinctrl", "simple-bus";
|
||||
reg = <0xfffff400 0x600>;
|
||||
|
||||
pioA: gpio@fffff400 {
|
||||
compatible = "atmel,at91sam9x5-gpio";
|
||||
reg = <0xfffff400 0x200>;
|
||||
interrupts = <2 IRQ_TYPE_LEVEL_HIGH 1>;
|
||||
#gpio-cells = <2>;
|
||||
gpio-controller;
|
||||
interrupt-controller;
|
||||
#interrupt-cells = <2>;
|
||||
clocks = <&pmc PMC_TYPE_PERIPHERAL 2>;
|
||||
};
|
||||
|
||||
atmel,mux-mask = <
|
||||
/* A B */
|
||||
0xffffffff 0xffc00c3b /* pioA */
|
||||
0xffffffff 0x7fff3ccf /* pioB */
|
||||
0xffffffff 0x007fffff /* pioC */
|
||||
>;
|
||||
|
||||
/* shared pinctrl settings */
|
||||
dbgu {
|
||||
pinctrl_dbgu: dbgu-0 {
|
||||
atmel,pins =
|
||||
<1 14 0x1 0x0 /* PB14 periph A */
|
||||
1 15 0x1 0x1>; /* PB15 periph A with pullup */
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
dbgu: serial@fffff200 {
|
||||
compatible = "atmel,at91sam9260-usart";
|
||||
reg = <0xfffff200 0x200>;
|
||||
interrupts = <1 4 7>;
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&pinctrl_dbgu>;
|
||||
};
|
97
bindings/pinctrl/atmel,at91-pio4-pinctrl.txt
Normal file
97
bindings/pinctrl/atmel,at91-pio4-pinctrl.txt
Normal file
@@ -0,0 +1,97 @@
|
||||
* Atmel PIO4 Controller
|
||||
|
||||
The Atmel PIO4 controller is used to select the function of a pin and to
|
||||
configure it.
|
||||
|
||||
Required properties:
|
||||
- compatible:
|
||||
"atmel,sama5d2-pinctrl"
|
||||
"microchip,sama7g5-pinctrl"
|
||||
- reg: base address and length of the PIO controller.
|
||||
- interrupts: interrupt outputs from the controller, one for each bank.
|
||||
- interrupt-controller: mark the device node as an interrupt controller.
|
||||
- #interrupt-cells: should be two.
|
||||
- gpio-controller: mark the device node as a gpio controller.
|
||||
- #gpio-cells: should be two.
|
||||
|
||||
Please refer to ../gpio/gpio.txt and ../interrupt-controller/interrupts.txt for
|
||||
a general description of GPIO and interrupt bindings.
|
||||
|
||||
Please refer to pinctrl-bindings.txt in this directory for details of the
|
||||
common pinctrl bindings used by client devices.
|
||||
|
||||
Subnode format
|
||||
Each node (or subnode) will list the pins it needs and how to configured these
|
||||
pins.
|
||||
|
||||
node {
|
||||
pinmux = <PIN_NUMBER_PINMUX>;
|
||||
GENERIC_PINCONFIG;
|
||||
};
|
||||
|
||||
Required properties:
|
||||
- pinmux: integer array. Each integer represents a pin number plus mux and
|
||||
ioset settings. Use the macros from boot/dts/<soc>-pinfunc.h file to get the
|
||||
right representation of the pin.
|
||||
|
||||
Optional properties:
|
||||
- GENERIC_PINCONFIG: generic pinconfig options to use:
|
||||
- bias-disable, bias-pull-down, bias-pull-up, drive-open-drain,
|
||||
input-schmitt-enable, input-debounce, output-low, output-high.
|
||||
- for microchip,sama7g5-pinctrl only:
|
||||
- slew-rate: 0 - disabled, 1 - enabled (default)
|
||||
- atmel,drive-strength: 0 or 1 for low drive, 2 for medium drive and 3 for
|
||||
high drive. The default value is low drive.
|
||||
|
||||
Example:
|
||||
|
||||
#include <sama5d2-pinfunc.h>
|
||||
|
||||
...
|
||||
{
|
||||
pioA: pinctrl@fc038000 {
|
||||
compatible = "atmel,sama5d2-pinctrl";
|
||||
reg = <0xfc038000 0x600>;
|
||||
interrupts = <18 IRQ_TYPE_LEVEL_HIGH 7>,
|
||||
<68 IRQ_TYPE_LEVEL_HIGH 7>,
|
||||
<69 IRQ_TYPE_LEVEL_HIGH 7>,
|
||||
<70 IRQ_TYPE_LEVEL_HIGH 7>;
|
||||
interrupt-controller;
|
||||
#interrupt-cells = <2>;
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
clocks = <&pioA_clk>;
|
||||
|
||||
pinctrl_i2c0_default: i2c0_default {
|
||||
pinmux = <PIN_PD21__TWD0>,
|
||||
<PIN_PD22__TWCK0>;
|
||||
bias-disable;
|
||||
};
|
||||
|
||||
pinctrl_led_gpio_default: led_gpio_default {
|
||||
pinmux = <PIN_PB0>,
|
||||
<PIN_PB5>;
|
||||
bias-pull-up;
|
||||
atmel,drive-strength = <ATMEL_PIO_DRVSTR_ME>;
|
||||
};
|
||||
|
||||
pinctrl_sdmmc1_default: sdmmc1_default {
|
||||
cmd_data {
|
||||
pinmux = <PIN_PA28__SDMMC1_CMD>,
|
||||
<PIN_PA18__SDMMC1_DAT0>,
|
||||
<PIN_PA19__SDMMC1_DAT1>,
|
||||
<PIN_PA20__SDMMC1_DAT2>,
|
||||
<PIN_PA21__SDMMC1_DAT3>;
|
||||
bias-pull-up;
|
||||
};
|
||||
|
||||
ck_cd {
|
||||
pinmux = <PIN_PA22__SDMMC1_CK>,
|
||||
<PIN_PA30__SDMMC1_CD>;
|
||||
bias-disable;
|
||||
};
|
||||
};
|
||||
...
|
||||
};
|
||||
};
|
||||
...
|
87
bindings/pinctrl/axis,artpec6-pinctrl.txt
Normal file
87
bindings/pinctrl/axis,artpec6-pinctrl.txt
Normal file
@@ -0,0 +1,87 @@
|
||||
Axis ARTPEC-6 Pin Controller
|
||||
|
||||
Required properties:
|
||||
- compatible: "axis,artpec6-pinctrl".
|
||||
- reg: Should contain the register physical address and length for the pin
|
||||
controller.
|
||||
|
||||
A pinctrl node should contain at least one subnode representing the pinctrl
|
||||
groups available on the machine. Each subnode will list the mux function
|
||||
required and what pin group it will use. Each subnode will also configure the
|
||||
drive strength and bias pullup of the pin group. If either of these options is
|
||||
not set, its actual value will be unspecified.
|
||||
|
||||
|
||||
Required subnode-properties:
|
||||
- function: Function to mux.
|
||||
- groups: Name of the pin group to use for the function above.
|
||||
|
||||
Available functions and groups (function: group0, group1...):
|
||||
gpio: cpuclkoutgrp0, udlclkoutgrp0, i2c1grp0, i2c2grp0,
|
||||
i2c3grp0, i2s0grp0, i2s1grp0, i2srefclkgrp0, spi0grp0,
|
||||
spi1grp0, pciedebuggrp0, uart0grp0, uart0grp1, uart0grp2,
|
||||
uart1grp0, uart1grp1, uart2grp0, uart2grp1, uart2grp2,
|
||||
uart3grp0, uart4grp0, uart4grp1, uart5grp0, uart5grp1,
|
||||
uart5nocts
|
||||
cpuclkout: cpuclkoutgrp0
|
||||
udlclkout: udlclkoutgrp0
|
||||
i2c1: i2c1grp0
|
||||
i2c2: i2c2grp0
|
||||
i2c3: i2c3grp0
|
||||
i2s0: i2s0grp0
|
||||
i2s1: i2s1grp0
|
||||
i2srefclk: i2srefclkgrp0
|
||||
spi0: spi0grp0
|
||||
spi1: spi1grp0
|
||||
pciedebug: pciedebuggrp0
|
||||
uart0: uart0grp0, uart0grp1, uart0grp2
|
||||
uart1: uart1grp0, uart1grp1
|
||||
uart2: uart2grp0, uart2grp1, uart2grp2
|
||||
uart3: uart3grp0
|
||||
uart4: uart4grp0, uart4grp1
|
||||
uart5: uart5grp0, uart5grp1, uart5nocts
|
||||
nand: nandgrp0
|
||||
sdio0: sdio0grp0
|
||||
sdio1: sdio1grp0
|
||||
ethernet: ethernetgrp0
|
||||
|
||||
|
||||
Optional subnode-properties (see pinctrl-bindings.txt):
|
||||
- drive-strength: 4, 6, 8, 9 mA. For SD and NAND pins, this is for 3.3V VCCQ3.
|
||||
- bias-pull-up
|
||||
- bias-disable
|
||||
|
||||
Examples:
|
||||
pinctrl@f801d000 {
|
||||
compatible = "axis,artpec6-pinctrl";
|
||||
reg = <0xf801d000 0x400>;
|
||||
|
||||
pinctrl_uart0: uart0grp {
|
||||
function = "uart0";
|
||||
groups = "uart0grp0";
|
||||
drive-strength = <4>;
|
||||
bias-pull-up;
|
||||
};
|
||||
pinctrl_uart3: uart3grp {
|
||||
function = "uart3";
|
||||
groups = "uart3grp0";
|
||||
};
|
||||
};
|
||||
uart0: uart@f8036000 {
|
||||
compatible = "arm,pl011", "arm,primecell";
|
||||
reg = <0xf8036000 0x1000>;
|
||||
interrupts = <0 104 IRQ_TYPE_LEVEL_HIGH>;
|
||||
clocks = <&pll2div24>, <&apb_pclk>;
|
||||
clock-names = "uart_clk", "apb_pclk";
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&pinctrl_uart0>;
|
||||
};
|
||||
uart3: uart@f8039000 {
|
||||
compatible = "arm,pl011", "arm,primecell";
|
||||
reg = <0xf8039000 0x1000>;
|
||||
interrupts = <0 128 IRQ_TYPE_LEVEL_HIGH>;
|
||||
clocks = <&pll2div24>, <&apb_pclk>;
|
||||
clock-names = "uart_clk", "apb_pclk";
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&pinctrl_uart3>;
|
||||
};
|
47
bindings/pinctrl/berlin,pinctrl.txt
Normal file
47
bindings/pinctrl/berlin,pinctrl.txt
Normal file
@@ -0,0 +1,47 @@
|
||||
* Pin-controller driver for the Marvell Berlin SoCs
|
||||
|
||||
Pin control registers are part of both chip controller and system
|
||||
controller register sets. Pin controller nodes should be a sub-node of
|
||||
either the chip controller or system controller node. The pins
|
||||
controlled are organized in groups, so no actual pin information is
|
||||
needed.
|
||||
|
||||
A pin-controller node should contain subnodes representing the pin group
|
||||
configurations, one per function. Each subnode has the group name and
|
||||
the muxing function used.
|
||||
|
||||
Be aware the Marvell Berlin datasheets use the keyword 'mode' for what
|
||||
is called a 'function' in the pin-controller subsystem.
|
||||
|
||||
Required properties:
|
||||
- compatible: should be one of:
|
||||
"marvell,berlin2-soc-pinctrl",
|
||||
"marvell,berlin2-system-pinctrl",
|
||||
"marvell,berlin2cd-soc-pinctrl",
|
||||
"marvell,berlin2cd-system-pinctrl",
|
||||
"marvell,berlin2q-soc-pinctrl",
|
||||
"marvell,berlin2q-system-pinctrl",
|
||||
"marvell,berlin4ct-avio-pinctrl",
|
||||
"marvell,berlin4ct-soc-pinctrl",
|
||||
"marvell,berlin4ct-system-pinctrl",
|
||||
"syna,as370-soc-pinctrl"
|
||||
|
||||
Required subnode-properties:
|
||||
- groups: a list of strings describing the group names.
|
||||
- function: a string describing the function used to mux the groups.
|
||||
|
||||
Example:
|
||||
|
||||
sys_pinctrl: pin-controller {
|
||||
compatible = "marvell,berlin2q-system-pinctrl";
|
||||
|
||||
uart0_pmux: uart0-pmux {
|
||||
groups = "GSM12";
|
||||
function = "uart0";
|
||||
};
|
||||
};
|
||||
|
||||
&uart0 {
|
||||
pinctrl-0 = <&uart0_pmux>;
|
||||
pinctrl-names = "default";
|
||||
};
|
126
bindings/pinctrl/bitmain,bm1880-pinctrl.txt
Normal file
126
bindings/pinctrl/bitmain,bm1880-pinctrl.txt
Normal file
@@ -0,0 +1,126 @@
|
||||
Bitmain BM1880 Pin Controller
|
||||
|
||||
This binding describes the pin controller found in the BM1880 SoC.
|
||||
|
||||
Required Properties:
|
||||
|
||||
- compatible: Should be "bitmain,bm1880-pinctrl"
|
||||
- reg: Offset and length of pinctrl space in SCTRL.
|
||||
|
||||
Please refer to pinctrl-bindings.txt in this directory for details of the
|
||||
common pinctrl bindings used by client devices, including the meaning of the
|
||||
phrase "pin configuration node".
|
||||
|
||||
The pin configuration nodes act as a container for an arbitrary number of
|
||||
subnodes. Each of these subnodes represents some desired configuration for a
|
||||
pin, a group, or a list of pins or groups. This configuration for BM1880 SoC
|
||||
includes pinmux and various pin configuration parameters, such as pull-up,
|
||||
slew rate etc...
|
||||
|
||||
Each configuration node can consist of multiple nodes describing the pinmux
|
||||
options. The name of each subnode is not important; all subnodes should be
|
||||
enumerated and processed purely based on their content.
|
||||
|
||||
The following generic properties as defined in pinctrl-bindings.txt are valid
|
||||
to specify in a pinmux subnode:
|
||||
|
||||
Required Properties:
|
||||
|
||||
- pins: An array of strings, each string containing the name of a pin.
|
||||
Valid values for pins are:
|
||||
|
||||
MIO0 - MIO111
|
||||
|
||||
- groups: An array of strings, each string containing the name of a pin
|
||||
group. Valid values for groups are:
|
||||
|
||||
nand_grp, spi_grp, emmc_grp, sdio_grp, eth0_grp, pwm0_grp,
|
||||
pwm1_grp, pwm2_grp, pwm3_grp, pwm4_grp, pwm5_grp, pwm6_grp,
|
||||
pwm7_grp, pwm8_grp, pwm9_grp, pwm10_grp, pwm11_grp, pwm12_grp,
|
||||
pwm13_grp, pwm14_grp, pwm15_grp, pwm16_grp, pwm17_grp,
|
||||
pwm18_grp, pwm19_grp, pwm20_grp, pwm21_grp, pwm22_grp,
|
||||
pwm23_grp, pwm24_grp, pwm25_grp, pwm26_grp, pwm27_grp,
|
||||
pwm28_grp, pwm29_grp, pwm30_grp, pwm31_grp, pwm32_grp,
|
||||
pwm33_grp, pwm34_grp, pwm35_grp, pwm36_grp, i2c0_grp,
|
||||
i2c1_grp, i2c2_grp, i2c3_grp, i2c4_grp, uart0_grp, uart1_grp,
|
||||
uart2_grp, uart3_grp, uart4_grp, uart5_grp, uart6_grp,
|
||||
uart7_grp, uart8_grp, uart9_grp, uart10_grp, uart11_grp,
|
||||
uart12_grp, uart13_grp, uart14_grp, uart15_grp, gpio0_grp,
|
||||
gpio1_grp, gpio2_grp, gpio3_grp, gpio4_grp, gpio5_grp,
|
||||
gpio6_grp, gpio7_grp, gpio8_grp, gpio9_grp, gpio10_grp,
|
||||
gpio11_grp, gpio12_grp, gpio13_grp, gpio14_grp, gpio15_grp,
|
||||
gpio16_grp, gpio17_grp, gpio18_grp, gpio19_grp, gpio20_grp,
|
||||
gpio21_grp, gpio22_grp, gpio23_grp, gpio24_grp, gpio25_grp,
|
||||
gpio26_grp, gpio27_grp, gpio28_grp, gpio29_grp, gpio30_grp,
|
||||
gpio31_grp, gpio32_grp, gpio33_grp, gpio34_grp, gpio35_grp,
|
||||
gpio36_grp, gpio37_grp, gpio38_grp, gpio39_grp, gpio40_grp,
|
||||
gpio41_grp, gpio42_grp, gpio43_grp, gpio44_grp, gpio45_grp,
|
||||
gpio46_grp, gpio47_grp, gpio48_grp, gpio49_grp, gpio50_grp,
|
||||
gpio51_grp, gpio52_grp, gpio53_grp, gpio54_grp, gpio55_grp,
|
||||
gpio56_grp, gpio57_grp, gpio58_grp, gpio59_grp, gpio60_grp,
|
||||
gpio61_grp, gpio62_grp, gpio63_grp, gpio64_grp, gpio65_grp,
|
||||
gpio66_grp, gpio67_grp, eth1_grp, i2s0_grp, i2s0_mclkin_grp,
|
||||
i2s1_grp, i2s1_mclkin_grp, spi0_grp
|
||||
|
||||
- function: An array of strings, each string containing the name of the
|
||||
pinmux functions. The following are the list of pinmux
|
||||
functions available:
|
||||
|
||||
nand, spi, emmc, sdio, eth0, pwm0, pwm1, pwm2, pwm3, pwm4,
|
||||
pwm5, pwm6, pwm7, pwm8, pwm9, pwm10, pwm11, pwm12, pwm13,
|
||||
pwm14, pwm15, pwm16, pwm17, pwm18, pwm19, pwm20, pwm21, pwm22,
|
||||
pwm23, pwm24, pwm25, pwm26, pwm27, pwm28, pwm29, pwm30, pwm31,
|
||||
pwm32, pwm33, pwm34, pwm35, pwm36, i2c0, i2c1, i2c2, i2c3,
|
||||
i2c4, uart0, uart1, uart2, uart3, uart4, uart5, uart6, uart7,
|
||||
uart8, uart9, uart10, uart11, uart12, uart13, uart14, uart15,
|
||||
gpio0, gpio1, gpio2, gpio3, gpio4, gpio5, gpio6, gpio7, gpio8,
|
||||
gpio9, gpio10, gpio11, gpio12, gpio13, gpio14, gpio15, gpio16,
|
||||
gpio17, gpio18, gpio19, gpio20, gpio21, gpio22, gpio23,
|
||||
gpio24, gpio25, gpio26, gpio27, gpio28, gpio29, gpio30,
|
||||
gpio31, gpio32, gpio33, gpio34, gpio35, gpio36, gpio37,
|
||||
gpio38, gpio39, gpio40, gpio41, gpio42, gpio43, gpio44,
|
||||
gpio45, gpio46, gpio47, gpio48, gpio49, gpio50, gpio51,
|
||||
gpio52, gpio53, gpio54, gpio55, gpio56, gpio57, gpio58,
|
||||
gpio59, gpio60, gpio61, gpio62, gpio63, gpio64, gpio65,
|
||||
gpio66, gpio67, eth1, i2s0, i2s0_mclkin, i2s1, i2s1_mclkin,
|
||||
spi0
|
||||
|
||||
Optional Properties:
|
||||
|
||||
- bias-disable: No arguments. Disable pin bias.
|
||||
- bias-pull-down: No arguments. The specified pins should be configured as
|
||||
pull down.
|
||||
- bias-pull-up: No arguments. The specified pins should be configured as
|
||||
pull up.
|
||||
- input-schmitt-enable: No arguments: Enable schmitt trigger for the specified
|
||||
pins
|
||||
- input-schmitt-disable: No arguments: Disable schmitt trigger for the specified
|
||||
pins
|
||||
- slew-rate: Integer. Sets slew rate for the specified pins.
|
||||
Valid values are:
|
||||
<0> - Slow
|
||||
<1> - Fast
|
||||
- drive-strength: Integer. Selects the drive strength for the specified
|
||||
pins in mA.
|
||||
Valid values are:
|
||||
<4>
|
||||
<8>
|
||||
<12>
|
||||
<16>
|
||||
<20>
|
||||
<24>
|
||||
<28>
|
||||
<32>
|
||||
|
||||
Example:
|
||||
pinctrl: pinctrl@400 {
|
||||
compatible = "bitmain,bm1880-pinctrl";
|
||||
reg = <0x400 0x120>;
|
||||
|
||||
pinctrl_uart0_default: uart0-default {
|
||||
pinmux {
|
||||
groups = "uart0_grp";
|
||||
function = "uart0";
|
||||
};
|
||||
};
|
||||
};
|
461
bindings/pinctrl/brcm,bcm11351-pinctrl.txt
Normal file
461
bindings/pinctrl/brcm,bcm11351-pinctrl.txt
Normal file
@@ -0,0 +1,461 @@
|
||||
Broadcom BCM281xx Pin Controller
|
||||
|
||||
This is a pin controller for the Broadcom BCM281xx SoC family, which includes
|
||||
BCM11130, BCM11140, BCM11351, BCM28145, and BCM28155 SoCs.
|
||||
|
||||
=== Pin Controller Node ===
|
||||
|
||||
Required Properties:
|
||||
|
||||
- compatible: Must be "brcm,bcm11351-pinctrl"
|
||||
- reg: Base address of the PAD Controller register block and the size
|
||||
of the block.
|
||||
|
||||
For example, the following is the bare minimum node:
|
||||
|
||||
pinctrl@35004800 {
|
||||
compatible = "brcm,bcm11351-pinctrl";
|
||||
reg = <0x35004800 0x430>;
|
||||
};
|
||||
|
||||
As a pin controller device, in addition to the required properties, this node
|
||||
should also contain the pin configuration nodes that client devices reference,
|
||||
if any.
|
||||
|
||||
=== Pin Configuration Node ===
|
||||
|
||||
Each pin configuration node is a sub-node of the pin controller node and is a
|
||||
container of an arbitrary number of subnodes, called pin group nodes in this
|
||||
document.
|
||||
|
||||
Please refer to the pinctrl-bindings.txt in this directory for details of the
|
||||
common pinctrl bindings used by client devices, including the definition of a
|
||||
"pin configuration node".
|
||||
|
||||
=== Pin Group Node ===
|
||||
|
||||
A pin group node specifies the desired pin mux and/or pin configuration for an
|
||||
arbitrary number of pins. The name of the pin group node is optional and not
|
||||
used.
|
||||
|
||||
A pin group node only affects the properties specified in the node, and has no
|
||||
effect on any properties that are omitted.
|
||||
|
||||
The pin group node accepts a subset of the generic pin config properties. For
|
||||
details generic pin config properties, please refer to pinctrl-bindings.txt
|
||||
and <include/linux/pinctrl/pinconfig-generic.h>.
|
||||
|
||||
Each pin controlled by this pin controller belong to one of three types:
|
||||
Standard, I2C, and HDMI. Each type accepts a different set of pin config
|
||||
properties. A list of pins and their types is provided below.
|
||||
|
||||
Required Properties (applicable to all pins):
|
||||
|
||||
- pins: Multiple strings. Specifies the name(s) of one or more pins to
|
||||
be configured by this node.
|
||||
|
||||
Optional Properties (for standard pins):
|
||||
|
||||
- function: String. Specifies the pin mux selection. Values
|
||||
must be one of: "alt1", "alt2", "alt3", "alt4"
|
||||
- input-schmitt-enable: No arguments. Enable schmitt-trigger mode.
|
||||
- input-schmitt-disable: No arguments. Disable schmitt-trigger mode.
|
||||
- bias-pull-up: No arguments. Pull up on pin.
|
||||
- bias-pull-down: No arguments. Pull down on pin.
|
||||
- bias-disable: No arguments. Disable pin bias.
|
||||
- slew-rate: Integer. Meaning depends on configured pin mux:
|
||||
*_SCL or *_SDA:
|
||||
0: Standard(100kbps)& Fast(400kbps) mode
|
||||
1: Highspeed (3.4Mbps) mode
|
||||
IC_DM or IC_DP:
|
||||
0: normal slew rate
|
||||
1: fast slew rate
|
||||
Otherwise:
|
||||
0: fast slew rate
|
||||
1: normal slew rate
|
||||
- input-enable: No arguments. Enable input (does not affect
|
||||
output.)
|
||||
- input-disable: No arguments. Disable input (does not affect
|
||||
output.)
|
||||
- drive-strength: Integer. Drive strength in mA. Valid values are
|
||||
2, 4, 6, 8, 10, 12, 14, 16 mA.
|
||||
|
||||
Optional Properties (for I2C pins):
|
||||
|
||||
- function: String. Specifies the pin mux selection. Values
|
||||
must be one of: "alt1", "alt2", "alt3", "alt4"
|
||||
- bias-pull-up: Integer. Pull up strength in Ohm. There are 3
|
||||
pull-up resistors (1.2k, 1.8k, 2.7k) available
|
||||
in parallel for I2C pins, so the valid values
|
||||
are: 568, 720, 831, 1080, 1200, 1800, 2700 Ohm.
|
||||
- bias-disable: No arguments. Disable pin bias.
|
||||
- slew-rate: Integer. Meaning depends on configured pin mux:
|
||||
*_SCL or *_SDA:
|
||||
0: Standard(100kbps)& Fast(400kbps) mode
|
||||
1: Highspeed (3.4Mbps) mode
|
||||
IC_DM or IC_DP:
|
||||
0: normal slew rate
|
||||
1: fast slew rate
|
||||
Otherwise:
|
||||
0: fast slew rate
|
||||
1: normal slew rate
|
||||
- input-enable: No arguments. Enable input (does not affect
|
||||
output.)
|
||||
- input-disable: No arguments. Disable input (does not affect
|
||||
output.)
|
||||
|
||||
Optional Properties (for HDMI pins):
|
||||
|
||||
- function: String. Specifies the pin mux selection. Values
|
||||
must be one of: "alt1", "alt2", "alt3", "alt4"
|
||||
- slew-rate: Integer. Controls slew rate.
|
||||
0: Standard(100kbps)& Fast(400kbps) mode
|
||||
1: Highspeed (3.4Mbps) mode
|
||||
- input-enable: No arguments. Enable input (does not affect
|
||||
output.)
|
||||
- input-disable: No arguments. Disable input (does not affect
|
||||
output.)
|
||||
|
||||
Example:
|
||||
// pin controller node
|
||||
pinctrl@35004800 {
|
||||
compatible = "brcm,bcm11351-pinctrl";
|
||||
reg = <0x35004800 0x430>;
|
||||
|
||||
// pin configuration node
|
||||
dev_a_default: dev_a_active {
|
||||
//group node defining 1 standard pin
|
||||
grp_1 {
|
||||
pins = "std_pin1";
|
||||
function = "alt1";
|
||||
input-schmitt-enable;
|
||||
bias-disable;
|
||||
slew-rate = <1>;
|
||||
drive-strength = <4>;
|
||||
};
|
||||
|
||||
// group node defining 2 I2C pins
|
||||
grp_2 {
|
||||
pins = "i2c_pin1", "i2c_pin2";
|
||||
function = "alt2";
|
||||
bias-pull-up = <720>;
|
||||
input-enable;
|
||||
};
|
||||
|
||||
// group node defining 2 HDMI pins
|
||||
grp_3 {
|
||||
pins = "hdmi_pin1", "hdmi_pin2";
|
||||
function = "alt3";
|
||||
slew-rate = <1>;
|
||||
};
|
||||
|
||||
// other pin group nodes
|
||||
...
|
||||
};
|
||||
|
||||
// other pin configuration nodes
|
||||
...
|
||||
};
|
||||
|
||||
In the example above, "dev_a_active" is a pin configuration node with a number
|
||||
of sub-nodes. In the pin group node "grp_1", one pin, "std_pin1", is defined in
|
||||
the "pins" property. Thus, the remaining properties in the "grp_1" node applies
|
||||
only to this pin, including the following settings:
|
||||
- setting pinmux to "alt1"
|
||||
- enabling schmitt-trigger (hystersis) mode
|
||||
- disabling pin bias
|
||||
- setting the slew-rate to 1
|
||||
- setting the drive strength to 4 mA
|
||||
Note that neither "input-enable" nor "input-disable" was specified - the pinctrl
|
||||
subsystem will therefore leave this property unchanged from whatever state it
|
||||
was in before applying these changes.
|
||||
|
||||
The "pins" property in the pin group node "grp_2" specifies two pins -
|
||||
"i2c_pin1" and "i2c_pin2"; the remaining properties in this pin group node,
|
||||
therefore, applies to both of these pins. The properties include:
|
||||
- setting pinmux to "alt2"
|
||||
- setting pull-up resistance to 720 Ohm (ie. enabling 1.2k and 1.8k resistors
|
||||
in parallel)
|
||||
- enabling both pins' input
|
||||
"slew-rate" is not specified in this pin group node, so the slew-rate for these
|
||||
pins are left as-is.
|
||||
|
||||
Finally, "grp_3" defines two HDMI pins. The following properties are applied to
|
||||
both pins:
|
||||
- setting pinmux to "alt3"
|
||||
- setting slew-rate to 1; for HDMI pins, this corresponds to the 3.4 Mbps
|
||||
Highspeed mode
|
||||
The input is neither enabled or disabled, and is left untouched.
|
||||
|
||||
=== Pin Names and Type ===
|
||||
|
||||
The following are valid pin names and their pin types:
|
||||
|
||||
"adcsync", Standard
|
||||
"bat_rm", Standard
|
||||
"bsc1_scl", I2C
|
||||
"bsc1_sda", I2C
|
||||
"bsc2_scl", I2C
|
||||
"bsc2_sda", I2C
|
||||
"classgpwr", Standard
|
||||
"clk_cx8", Standard
|
||||
"clkout_0", Standard
|
||||
"clkout_1", Standard
|
||||
"clkout_2", Standard
|
||||
"clkout_3", Standard
|
||||
"clkreq_in_0", Standard
|
||||
"clkreq_in_1", Standard
|
||||
"cws_sys_req1", Standard
|
||||
"cws_sys_req2", Standard
|
||||
"cws_sys_req3", Standard
|
||||
"digmic1_clk", Standard
|
||||
"digmic1_dq", Standard
|
||||
"digmic2_clk", Standard
|
||||
"digmic2_dq", Standard
|
||||
"gpen13", Standard
|
||||
"gpen14", Standard
|
||||
"gpen15", Standard
|
||||
"gpio00", Standard
|
||||
"gpio01", Standard
|
||||
"gpio02", Standard
|
||||
"gpio03", Standard
|
||||
"gpio04", Standard
|
||||
"gpio05", Standard
|
||||
"gpio06", Standard
|
||||
"gpio07", Standard
|
||||
"gpio08", Standard
|
||||
"gpio09", Standard
|
||||
"gpio10", Standard
|
||||
"gpio11", Standard
|
||||
"gpio12", Standard
|
||||
"gpio13", Standard
|
||||
"gpio14", Standard
|
||||
"gps_pablank", Standard
|
||||
"gps_tmark", Standard
|
||||
"hdmi_scl", HDMI
|
||||
"hdmi_sda", HDMI
|
||||
"ic_dm", Standard
|
||||
"ic_dp", Standard
|
||||
"kp_col_ip_0", Standard
|
||||
"kp_col_ip_1", Standard
|
||||
"kp_col_ip_2", Standard
|
||||
"kp_col_ip_3", Standard
|
||||
"kp_row_op_0", Standard
|
||||
"kp_row_op_1", Standard
|
||||
"kp_row_op_2", Standard
|
||||
"kp_row_op_3", Standard
|
||||
"lcd_b_0", Standard
|
||||
"lcd_b_1", Standard
|
||||
"lcd_b_2", Standard
|
||||
"lcd_b_3", Standard
|
||||
"lcd_b_4", Standard
|
||||
"lcd_b_5", Standard
|
||||
"lcd_b_6", Standard
|
||||
"lcd_b_7", Standard
|
||||
"lcd_g_0", Standard
|
||||
"lcd_g_1", Standard
|
||||
"lcd_g_2", Standard
|
||||
"lcd_g_3", Standard
|
||||
"lcd_g_4", Standard
|
||||
"lcd_g_5", Standard
|
||||
"lcd_g_6", Standard
|
||||
"lcd_g_7", Standard
|
||||
"lcd_hsync", Standard
|
||||
"lcd_oe", Standard
|
||||
"lcd_pclk", Standard
|
||||
"lcd_r_0", Standard
|
||||
"lcd_r_1", Standard
|
||||
"lcd_r_2", Standard
|
||||
"lcd_r_3", Standard
|
||||
"lcd_r_4", Standard
|
||||
"lcd_r_5", Standard
|
||||
"lcd_r_6", Standard
|
||||
"lcd_r_7", Standard
|
||||
"lcd_vsync", Standard
|
||||
"mdmgpio0", Standard
|
||||
"mdmgpio1", Standard
|
||||
"mdmgpio2", Standard
|
||||
"mdmgpio3", Standard
|
||||
"mdmgpio4", Standard
|
||||
"mdmgpio5", Standard
|
||||
"mdmgpio6", Standard
|
||||
"mdmgpio7", Standard
|
||||
"mdmgpio8", Standard
|
||||
"mphi_data_0", Standard
|
||||
"mphi_data_1", Standard
|
||||
"mphi_data_2", Standard
|
||||
"mphi_data_3", Standard
|
||||
"mphi_data_4", Standard
|
||||
"mphi_data_5", Standard
|
||||
"mphi_data_6", Standard
|
||||
"mphi_data_7", Standard
|
||||
"mphi_data_8", Standard
|
||||
"mphi_data_9", Standard
|
||||
"mphi_data_10", Standard
|
||||
"mphi_data_11", Standard
|
||||
"mphi_data_12", Standard
|
||||
"mphi_data_13", Standard
|
||||
"mphi_data_14", Standard
|
||||
"mphi_data_15", Standard
|
||||
"mphi_ha0", Standard
|
||||
"mphi_hat0", Standard
|
||||
"mphi_hat1", Standard
|
||||
"mphi_hce0_n", Standard
|
||||
"mphi_hce1_n", Standard
|
||||
"mphi_hrd_n", Standard
|
||||
"mphi_hwr_n", Standard
|
||||
"mphi_run0", Standard
|
||||
"mphi_run1", Standard
|
||||
"mtx_scan_clk", Standard
|
||||
"mtx_scan_data", Standard
|
||||
"nand_ad_0", Standard
|
||||
"nand_ad_1", Standard
|
||||
"nand_ad_2", Standard
|
||||
"nand_ad_3", Standard
|
||||
"nand_ad_4", Standard
|
||||
"nand_ad_5", Standard
|
||||
"nand_ad_6", Standard
|
||||
"nand_ad_7", Standard
|
||||
"nand_ale", Standard
|
||||
"nand_cen_0", Standard
|
||||
"nand_cen_1", Standard
|
||||
"nand_cle", Standard
|
||||
"nand_oen", Standard
|
||||
"nand_rdy_0", Standard
|
||||
"nand_rdy_1", Standard
|
||||
"nand_wen", Standard
|
||||
"nand_wp", Standard
|
||||
"pc1", Standard
|
||||
"pc2", Standard
|
||||
"pmu_int", Standard
|
||||
"pmu_scl", I2C
|
||||
"pmu_sda", I2C
|
||||
"rfst2g_mtsloten3g", Standard
|
||||
"rgmii_0_rx_ctl", Standard
|
||||
"rgmii_0_rxc", Standard
|
||||
"rgmii_0_rxd_0", Standard
|
||||
"rgmii_0_rxd_1", Standard
|
||||
"rgmii_0_rxd_2", Standard
|
||||
"rgmii_0_rxd_3", Standard
|
||||
"rgmii_0_tx_ctl", Standard
|
||||
"rgmii_0_txc", Standard
|
||||
"rgmii_0_txd_0", Standard
|
||||
"rgmii_0_txd_1", Standard
|
||||
"rgmii_0_txd_2", Standard
|
||||
"rgmii_0_txd_3", Standard
|
||||
"rgmii_1_rx_ctl", Standard
|
||||
"rgmii_1_rxc", Standard
|
||||
"rgmii_1_rxd_0", Standard
|
||||
"rgmii_1_rxd_1", Standard
|
||||
"rgmii_1_rxd_2", Standard
|
||||
"rgmii_1_rxd_3", Standard
|
||||
"rgmii_1_tx_ctl", Standard
|
||||
"rgmii_1_txc", Standard
|
||||
"rgmii_1_txd_0", Standard
|
||||
"rgmii_1_txd_1", Standard
|
||||
"rgmii_1_txd_2", Standard
|
||||
"rgmii_1_txd_3", Standard
|
||||
"rgmii_gpio_0", Standard
|
||||
"rgmii_gpio_1", Standard
|
||||
"rgmii_gpio_2", Standard
|
||||
"rgmii_gpio_3", Standard
|
||||
"rtxdata2g_txdata3g1", Standard
|
||||
"rtxen2g_txdata3g2", Standard
|
||||
"rxdata3g0", Standard
|
||||
"rxdata3g1", Standard
|
||||
"rxdata3g2", Standard
|
||||
"sdio1_clk", Standard
|
||||
"sdio1_cmd", Standard
|
||||
"sdio1_data_0", Standard
|
||||
"sdio1_data_1", Standard
|
||||
"sdio1_data_2", Standard
|
||||
"sdio1_data_3", Standard
|
||||
"sdio4_clk", Standard
|
||||
"sdio4_cmd", Standard
|
||||
"sdio4_data_0", Standard
|
||||
"sdio4_data_1", Standard
|
||||
"sdio4_data_2", Standard
|
||||
"sdio4_data_3", Standard
|
||||
"sim_clk", Standard
|
||||
"sim_data", Standard
|
||||
"sim_det", Standard
|
||||
"sim_resetn", Standard
|
||||
"sim2_clk", Standard
|
||||
"sim2_data", Standard
|
||||
"sim2_det", Standard
|
||||
"sim2_resetn", Standard
|
||||
"sri_c", Standard
|
||||
"sri_d", Standard
|
||||
"sri_e", Standard
|
||||
"ssp_extclk", Standard
|
||||
"ssp0_clk", Standard
|
||||
"ssp0_fs", Standard
|
||||
"ssp0_rxd", Standard
|
||||
"ssp0_txd", Standard
|
||||
"ssp2_clk", Standard
|
||||
"ssp2_fs_0", Standard
|
||||
"ssp2_fs_1", Standard
|
||||
"ssp2_fs_2", Standard
|
||||
"ssp2_fs_3", Standard
|
||||
"ssp2_rxd_0", Standard
|
||||
"ssp2_rxd_1", Standard
|
||||
"ssp2_txd_0", Standard
|
||||
"ssp2_txd_1", Standard
|
||||
"ssp3_clk", Standard
|
||||
"ssp3_fs", Standard
|
||||
"ssp3_rxd", Standard
|
||||
"ssp3_txd", Standard
|
||||
"ssp4_clk", Standard
|
||||
"ssp4_fs", Standard
|
||||
"ssp4_rxd", Standard
|
||||
"ssp4_txd", Standard
|
||||
"ssp5_clk", Standard
|
||||
"ssp5_fs", Standard
|
||||
"ssp5_rxd", Standard
|
||||
"ssp5_txd", Standard
|
||||
"ssp6_clk", Standard
|
||||
"ssp6_fs", Standard
|
||||
"ssp6_rxd", Standard
|
||||
"ssp6_txd", Standard
|
||||
"stat_1", Standard
|
||||
"stat_2", Standard
|
||||
"sysclken", Standard
|
||||
"traceclk", Standard
|
||||
"tracedt00", Standard
|
||||
"tracedt01", Standard
|
||||
"tracedt02", Standard
|
||||
"tracedt03", Standard
|
||||
"tracedt04", Standard
|
||||
"tracedt05", Standard
|
||||
"tracedt06", Standard
|
||||
"tracedt07", Standard
|
||||
"tracedt08", Standard
|
||||
"tracedt09", Standard
|
||||
"tracedt10", Standard
|
||||
"tracedt11", Standard
|
||||
"tracedt12", Standard
|
||||
"tracedt13", Standard
|
||||
"tracedt14", Standard
|
||||
"tracedt15", Standard
|
||||
"txdata3g0", Standard
|
||||
"txpwrind", Standard
|
||||
"uartb1_ucts", Standard
|
||||
"uartb1_urts", Standard
|
||||
"uartb1_urxd", Standard
|
||||
"uartb1_utxd", Standard
|
||||
"uartb2_urxd", Standard
|
||||
"uartb2_utxd", Standard
|
||||
"uartb3_ucts", Standard
|
||||
"uartb3_urts", Standard
|
||||
"uartb3_urxd", Standard
|
||||
"uartb3_utxd", Standard
|
||||
"uartb4_ucts", Standard
|
||||
"uartb4_urts", Standard
|
||||
"uartb4_urxd", Standard
|
||||
"uartb4_utxd", Standard
|
||||
"vc_cam1_scl", I2C
|
||||
"vc_cam1_sda", I2C
|
||||
"vc_cam2_scl", I2C
|
||||
"vc_cam2_sda", I2C
|
||||
"vc_cam3_scl", I2C
|
||||
"vc_cam3_sda", I2C
|
99
bindings/pinctrl/brcm,bcm2835-gpio.txt
Normal file
99
bindings/pinctrl/brcm,bcm2835-gpio.txt
Normal file
@@ -0,0 +1,99 @@
|
||||
Broadcom BCM2835 GPIO (and pinmux) controller
|
||||
|
||||
The BCM2835 GPIO module is a combined GPIO controller, (GPIO) interrupt
|
||||
controller, and pinmux/control device.
|
||||
|
||||
Required properties:
|
||||
- compatible: "brcm,bcm2835-gpio"
|
||||
- compatible: should be one of:
|
||||
"brcm,bcm2835-gpio" - BCM2835 compatible pinctrl
|
||||
"brcm,bcm7211-gpio" - BCM7211 compatible pinctrl
|
||||
"brcm,bcm2711-gpio" - BCM2711 compatible pinctrl
|
||||
"brcm,bcm7211-gpio" - BCM7211 compatible pinctrl
|
||||
- reg: Should contain the physical address of the GPIO module's registers.
|
||||
- gpio-controller: Marks the device node as a GPIO controller.
|
||||
- #gpio-cells : Should be two. The first cell is the pin number and the
|
||||
second cell is used to specify optional parameters:
|
||||
- bit 0 specifies polarity (0 for normal, 1 for inverted)
|
||||
- interrupts : The interrupt outputs from the controller. One interrupt per
|
||||
individual bank followed by the "all banks" interrupt. For BCM7211, an
|
||||
additional set of per-bank interrupt line and an "all banks" wake-up
|
||||
interrupt may be specified.
|
||||
- interrupt-controller: Marks the device node as an interrupt controller.
|
||||
- #interrupt-cells : Should be 2.
|
||||
The first cell is the GPIO number.
|
||||
The second cell is used to specify flags:
|
||||
bits[3:0] trigger type and level flags:
|
||||
1 = low-to-high edge triggered.
|
||||
2 = high-to-low edge triggered.
|
||||
4 = active high level-sensitive.
|
||||
8 = active low level-sensitive.
|
||||
Valid combinations are 1, 2, 3, 4, 8.
|
||||
|
||||
Please refer to ../gpio/gpio.txt for a general description of GPIO bindings.
|
||||
|
||||
Please refer to pinctrl-bindings.txt in this directory for details of the
|
||||
common pinctrl bindings used by client devices, including the meaning of the
|
||||
phrase "pin configuration node".
|
||||
|
||||
Each pin configuration node lists the pin(s) to which it applies, and one or
|
||||
more of the mux function to select on those pin(s), and pull-up/down
|
||||
configuration. Each subnode only affects those parameters that are explicitly
|
||||
listed. In other words, a subnode that lists only a mux function implies no
|
||||
information about any pull configuration. Similarly, a subnode that lists only
|
||||
a pul parameter implies no information about the mux function.
|
||||
|
||||
The BCM2835 pin configuration and multiplexing supports the generic bindings.
|
||||
For details on each properties, you can refer to ./pinctrl-bindings.txt.
|
||||
|
||||
Required sub-node properties:
|
||||
- pins
|
||||
- function
|
||||
|
||||
Optional sub-node properties:
|
||||
- bias-disable
|
||||
- bias-pull-up
|
||||
- bias-pull-down
|
||||
- output-high
|
||||
- output-low
|
||||
|
||||
Legacy pin configuration and multiplexing binding:
|
||||
*** (Its use is deprecated, use generic multiplexing and configuration
|
||||
bindings instead)
|
||||
|
||||
Required subnode-properties:
|
||||
- brcm,pins: An array of cells. Each cell contains the ID of a pin. Valid IDs
|
||||
are the integer GPIO IDs; 0==GPIO0, 1==GPIO1, ... 53==GPIO53.
|
||||
|
||||
Optional subnode-properties:
|
||||
- brcm,function: Integer, containing the function to mux to the pin(s):
|
||||
0: GPIO in
|
||||
1: GPIO out
|
||||
2: alt5
|
||||
3: alt4
|
||||
4: alt0
|
||||
5: alt1
|
||||
6: alt2
|
||||
7: alt3
|
||||
- brcm,pull: Integer, representing the pull-down/up to apply to the pin(s):
|
||||
0: none
|
||||
1: down
|
||||
2: up
|
||||
|
||||
Each of brcm,function and brcm,pull may contain either a single value which
|
||||
will be applied to all pins in brcm,pins, or 1 value for each entry in
|
||||
brcm,pins.
|
||||
|
||||
Example:
|
||||
|
||||
gpio: gpio {
|
||||
compatible = "brcm,bcm2835-gpio";
|
||||
reg = <0x2200000 0xb4>;
|
||||
interrupts = <2 17>, <2 19>, <2 18>, <2 20>;
|
||||
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
|
||||
interrupt-controller;
|
||||
#interrupt-cells = <2>;
|
||||
};
|
73
bindings/pinctrl/brcm,bcm4908-pinctrl.yaml
Normal file
73
bindings/pinctrl/brcm,bcm4908-pinctrl.yaml
Normal file
@@ -0,0 +1,73 @@
|
||||
# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
|
||||
%YAML 1.2
|
||||
---
|
||||
$id: http://devicetree.org/schemas/pinctrl/brcm,bcm4908-pinctrl.yaml#
|
||||
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
||||
|
||||
title: Broadcom BCM4908 pin controller
|
||||
|
||||
maintainers:
|
||||
- Rafał Miłecki <rafal@milecki.pl>
|
||||
|
||||
description:
|
||||
Binding for pin controller present on BCM4908 family SoCs.
|
||||
|
||||
properties:
|
||||
compatible:
|
||||
const: brcm,bcm4908-pinctrl
|
||||
|
||||
reg:
|
||||
maxItems: 1
|
||||
|
||||
patternProperties:
|
||||
'-pins$':
|
||||
type: object
|
||||
$ref: pinmux-node.yaml#
|
||||
additionalProperties: false
|
||||
|
||||
properties:
|
||||
function:
|
||||
enum: [ led_0, led_1, led_2, led_3, led_4, led_5, led_6, led_7, led_8,
|
||||
led_9, led_10, led_11, led_12, led_13, led_14, led_15, led_16,
|
||||
led_17, led_18, led_19, led_20, led_21, led_22, led_23, led_24,
|
||||
led_25, led_26, led_27, led_28, led_29, led_30, led_31,
|
||||
hs_uart, i2c, i2s, nand_ctrl, nand_data, emmc_ctrl, usb0_pwr,
|
||||
usb1_pwr ]
|
||||
|
||||
groups:
|
||||
minItems: 1
|
||||
maxItems: 2
|
||||
items:
|
||||
enum: [ led_0_grp_a, led_1_grp_a, led_2_grp_a, led_3_grp_a,
|
||||
led_4_grp_a, led_5_grp_a, led_6_grp_a, led_7_grp_a,
|
||||
led_8_grp_a, led_9_grp_a, led_10_grp_a, led_10_grp_b,
|
||||
led_11_grp_a, led_11_grp_b, led_12_grp_a, led_12_grp_b,
|
||||
led_13_grp_a, led_13_grp_b, led_14_grp_a, led_15_grp_a,
|
||||
led_16_grp_a, led_17_grp_a, led_18_grp_a, led_19_grp_a,
|
||||
led_20_grp_a, led_21_grp_a, led_22_grp_a, led_23_grp_a,
|
||||
led_24_grp_a, led_25_grp_a, led_26_grp_a, led_27_grp_a,
|
||||
led_28_grp_a, led_29_grp_a, led_30_grp_a, led_31_grp_a,
|
||||
led_31_grp_b, hs_uart_grp, i2c_grp_a, i2c_grp_b, i2s_grp,
|
||||
nand_ctrl_grp, nand_data_grp, emmc_ctrl_grp, usb0_pwr_grp,
|
||||
usb1_pwr_grp ]
|
||||
|
||||
allOf:
|
||||
- $ref: pinctrl.yaml#
|
||||
|
||||
required:
|
||||
- compatible
|
||||
- reg
|
||||
|
||||
unevaluatedProperties: false
|
||||
|
||||
examples:
|
||||
- |
|
||||
pinctrl@ff800560 {
|
||||
compatible = "brcm,bcm4908-pinctrl";
|
||||
reg = <0xff800560 0x10>;
|
||||
|
||||
led_0-a-pins {
|
||||
function = "led_0";
|
||||
groups = "led_0_grp_a";
|
||||
};
|
||||
};
|
146
bindings/pinctrl/brcm,bcm6318-pinctrl.yaml
Normal file
146
bindings/pinctrl/brcm,bcm6318-pinctrl.yaml
Normal file
@@ -0,0 +1,146 @@
|
||||
# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
|
||||
%YAML 1.2
|
||||
---
|
||||
$id: http://devicetree.org/schemas/pinctrl/brcm,bcm6318-pinctrl.yaml#
|
||||
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
||||
|
||||
title: Broadcom BCM6318 pin controller
|
||||
|
||||
maintainers:
|
||||
- Álvaro Fernández Rojas <noltari@gmail.com>
|
||||
- Jonas Gorski <jonas.gorski@gmail.com>
|
||||
|
||||
description:
|
||||
Bindings for Broadcom's BCM6318 memory-mapped pin controller.
|
||||
|
||||
properties:
|
||||
compatible:
|
||||
const: brcm,bcm6318-pinctrl
|
||||
|
||||
reg:
|
||||
maxItems: 2
|
||||
|
||||
patternProperties:
|
||||
'-pins$':
|
||||
type: object
|
||||
$ref: pinmux-node.yaml#
|
||||
|
||||
properties:
|
||||
function:
|
||||
enum: [ ephy0_spd_led, ephy1_spd_led, ephy2_spd_led, ephy3_spd_led,
|
||||
ephy0_act_led, ephy1_act_led, ephy2_act_led, ephy3_act_led,
|
||||
serial_led_data, serial_led_clk, inet_act_led, inet_fail_led,
|
||||
dsl_led, post_fail_led, wlan_wps_led, usb_pwron,
|
||||
usb_device_led, usb_active ]
|
||||
|
||||
pins:
|
||||
enum: [ gpio0, gpio1, gpio2, gpio3, gpio4, gpio5, gpio6, gpio7,
|
||||
gpio8, gpio9, gpio10, gpio11, gpio12, gpio13, gpio40 ]
|
||||
|
||||
allOf:
|
||||
- $ref: "pinctrl.yaml#"
|
||||
|
||||
required:
|
||||
- compatible
|
||||
- reg
|
||||
|
||||
additionalProperties: false
|
||||
|
||||
examples:
|
||||
- |
|
||||
pinctrl@18 {
|
||||
compatible = "brcm,bcm6318-pinctrl";
|
||||
reg = <0x18 0x10>, <0x54 0x18>;
|
||||
|
||||
pinctrl_ephy0_spd_led: ephy0_spd_led-pins {
|
||||
function = "ephy0_spd_led";
|
||||
pins = "gpio0";
|
||||
};
|
||||
|
||||
pinctrl_ephy1_spd_led: ephy1_spd_led-pins {
|
||||
function = "ephy1_spd_led";
|
||||
pins = "gpio1";
|
||||
};
|
||||
|
||||
pinctrl_ephy2_spd_led: ephy2_spd_led-pins {
|
||||
function = "ephy2_spd_led";
|
||||
pins = "gpio2";
|
||||
};
|
||||
|
||||
pinctrl_ephy3_spd_led: ephy3_spd_led-pins {
|
||||
function = "ephy3_spd_led";
|
||||
pins = "gpio3";
|
||||
};
|
||||
|
||||
pinctrl_ephy0_act_led: ephy0_act_led-pins {
|
||||
function = "ephy0_act_led";
|
||||
pins = "gpio4";
|
||||
};
|
||||
|
||||
pinctrl_ephy1_act_led: ephy1_act_led-pins {
|
||||
function = "ephy1_act_led";
|
||||
pins = "gpio5";
|
||||
};
|
||||
|
||||
pinctrl_ephy2_act_led: ephy2_act_led-pins {
|
||||
function = "ephy2_act_led";
|
||||
pins = "gpio6";
|
||||
};
|
||||
|
||||
pinctrl_ephy3_act_led: ephy3_act_led-pins {
|
||||
function = "ephy3_act_led";
|
||||
pins = "gpio7";
|
||||
};
|
||||
|
||||
pinctrl_serial_led: serial_led-pins {
|
||||
pinctrl_serial_led_data: serial_led_data-pins {
|
||||
function = "serial_led_data";
|
||||
pins = "gpio6";
|
||||
};
|
||||
|
||||
pinctrl_serial_led_clk: serial_led_clk-pins {
|
||||
function = "serial_led_clk";
|
||||
pins = "gpio7";
|
||||
};
|
||||
};
|
||||
|
||||
pinctrl_inet_act_led: inet_act_led-pins {
|
||||
function = "inet_act_led";
|
||||
pins = "gpio8";
|
||||
};
|
||||
|
||||
pinctrl_inet_fail_led: inet_fail_led-pins {
|
||||
function = "inet_fail_led";
|
||||
pins = "gpio9";
|
||||
};
|
||||
|
||||
pinctrl_dsl_led: dsl_led-pins {
|
||||
function = "dsl_led";
|
||||
pins = "gpio10";
|
||||
};
|
||||
|
||||
pinctrl_post_fail_led: post_fail_led-pins {
|
||||
function = "post_fail_led";
|
||||
pins = "gpio11";
|
||||
};
|
||||
|
||||
pinctrl_wlan_wps_led: wlan_wps_led-pins {
|
||||
function = "wlan_wps_led";
|
||||
pins = "gpio12";
|
||||
};
|
||||
|
||||
pinctrl_usb_pwron: usb_pwron-pins {
|
||||
function = "usb_pwron";
|
||||
pins = "gpio13";
|
||||
};
|
||||
|
||||
pinctrl_usb_device_led: usb_device_led-pins {
|
||||
function = "usb_device_led";
|
||||
pins = "gpio13";
|
||||
};
|
||||
|
||||
pinctrl_usb_active: usb_active-pins {
|
||||
function = "usb_active";
|
||||
pins = "gpio40";
|
||||
};
|
||||
};
|
167
bindings/pinctrl/brcm,bcm63268-pinctrl.yaml
Normal file
167
bindings/pinctrl/brcm,bcm63268-pinctrl.yaml
Normal file
@@ -0,0 +1,167 @@
|
||||
# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
|
||||
%YAML 1.2
|
||||
---
|
||||
$id: http://devicetree.org/schemas/pinctrl/brcm,bcm63268-pinctrl.yaml#
|
||||
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
||||
|
||||
title: Broadcom BCM63268 pin controller
|
||||
|
||||
maintainers:
|
||||
- Álvaro Fernández Rojas <noltari@gmail.com>
|
||||
- Jonas Gorski <jonas.gorski@gmail.com>
|
||||
|
||||
description:
|
||||
Bindings for Broadcom's BCM63268 memory-mapped pin controller.
|
||||
|
||||
properties:
|
||||
compatible:
|
||||
const: brcm,bcm63268-pinctrl
|
||||
|
||||
reg:
|
||||
maxItems: 3
|
||||
|
||||
patternProperties:
|
||||
'-pins$':
|
||||
type: object
|
||||
$ref: pinmux-node.yaml#
|
||||
|
||||
properties:
|
||||
function:
|
||||
enum: [ serial_led_clk, serial_led_data, hsspi_cs4, hsspi_cs5,
|
||||
hsspi_cs6, hsspi_cs7, adsl_spi_miso, adsl_spi_mosi,
|
||||
vreq_clk, pcie_clkreq_b, robosw_led_clk, robosw_led_data,
|
||||
nand, gpio35_alt, dectpd, vdsl_phy_override_0,
|
||||
vdsl_phy_override_1, vdsl_phy_override_2,
|
||||
vdsl_phy_override_3, dsl_gpio8, dsl_gpio9 ]
|
||||
|
||||
pins:
|
||||
enum: [ gpio0, gpio1, gpio16, gpio17, gpio8, gpio9, gpio18, gpio19,
|
||||
gpio22, gpio23, gpio30, gpio31, nand_grp, gpio35
|
||||
dectpd_grp, vdsl_phy_override_0_grp,
|
||||
vdsl_phy_override_1_grp, vdsl_phy_override_2_grp,
|
||||
vdsl_phy_override_3_grp, dsl_gpio8, dsl_gpio9 ]
|
||||
|
||||
allOf:
|
||||
- $ref: "pinctrl.yaml#"
|
||||
|
||||
required:
|
||||
- compatible
|
||||
- reg
|
||||
|
||||
additionalProperties: false
|
||||
|
||||
examples:
|
||||
- |
|
||||
pinctrl@10 {
|
||||
compatible = "brcm,bcm63268-pinctrl";
|
||||
reg = <0x10 0x4>, <0x18 0x8>, <0x38 0x4>;
|
||||
|
||||
pinctrl_serial_led: serial_led-pins {
|
||||
pinctrl_serial_led_clk: serial_led_clk-pins {
|
||||
function = "serial_led_clk";
|
||||
pins = "gpio0";
|
||||
};
|
||||
|
||||
pinctrl_serial_led_data: serial_led_data-pins {
|
||||
function = "serial_led_data";
|
||||
pins = "gpio1";
|
||||
};
|
||||
};
|
||||
|
||||
pinctrl_hsspi_cs4: hsspi_cs4-pins {
|
||||
function = "hsspi_cs4";
|
||||
pins = "gpio16";
|
||||
};
|
||||
|
||||
pinctrl_hsspi_cs5: hsspi_cs5-pins {
|
||||
function = "hsspi_cs5";
|
||||
pins = "gpio17";
|
||||
};
|
||||
|
||||
pinctrl_hsspi_cs6: hsspi_cs6-pins {
|
||||
function = "hsspi_cs6";
|
||||
pins = "gpio8";
|
||||
};
|
||||
|
||||
pinctrl_hsspi_cs7: hsspi_cs7-pins {
|
||||
function = "hsspi_cs7";
|
||||
pins = "gpio9";
|
||||
};
|
||||
|
||||
pinctrl_adsl_spi: adsl_spi-pins {
|
||||
pinctrl_adsl_spi_miso: adsl_spi_miso-pins {
|
||||
function = "adsl_spi_miso";
|
||||
pins = "gpio18";
|
||||
};
|
||||
|
||||
pinctrl_adsl_spi_mosi: adsl_spi_mosi-pins {
|
||||
function = "adsl_spi_mosi";
|
||||
pins = "gpio19";
|
||||
};
|
||||
};
|
||||
|
||||
pinctrl_vreq_clk: vreq_clk-pins {
|
||||
function = "vreq_clk";
|
||||
pins = "gpio22";
|
||||
};
|
||||
|
||||
pinctrl_pcie_clkreq_b: pcie_clkreq_b-pins {
|
||||
function = "pcie_clkreq_b";
|
||||
pins = "gpio23";
|
||||
};
|
||||
|
||||
pinctrl_robosw_led_clk: robosw_led_clk-pins {
|
||||
function = "robosw_led_clk";
|
||||
pins = "gpio30";
|
||||
};
|
||||
|
||||
pinctrl_robosw_led_data: robosw_led_data-pins {
|
||||
function = "robosw_led_data";
|
||||
pins = "gpio31";
|
||||
};
|
||||
|
||||
pinctrl_nand: nand-pins {
|
||||
function = "nand";
|
||||
group = "nand_grp";
|
||||
};
|
||||
|
||||
pinctrl_gpio35_alt: gpio35_alt-pins {
|
||||
function = "gpio35_alt";
|
||||
pin = "gpio35";
|
||||
};
|
||||
|
||||
pinctrl_dectpd: dectpd-pins {
|
||||
function = "dectpd";
|
||||
group = "dectpd_grp";
|
||||
};
|
||||
|
||||
pinctrl_vdsl_phy_override_0: vdsl_phy_override_0-pins {
|
||||
function = "vdsl_phy_override_0";
|
||||
group = "vdsl_phy_override_0_grp";
|
||||
};
|
||||
|
||||
pinctrl_vdsl_phy_override_1: vdsl_phy_override_1-pins {
|
||||
function = "vdsl_phy_override_1";
|
||||
group = "vdsl_phy_override_1_grp";
|
||||
};
|
||||
|
||||
pinctrl_vdsl_phy_override_2: vdsl_phy_override_2-pins {
|
||||
function = "vdsl_phy_override_2";
|
||||
group = "vdsl_phy_override_2_grp";
|
||||
};
|
||||
|
||||
pinctrl_vdsl_phy_override_3: vdsl_phy_override_3-pins {
|
||||
function = "vdsl_phy_override_3";
|
||||
group = "vdsl_phy_override_3_grp";
|
||||
};
|
||||
|
||||
pinctrl_dsl_gpio8: dsl_gpio8-pins {
|
||||
function = "dsl_gpio8";
|
||||
group = "dsl_gpio8";
|
||||
};
|
||||
|
||||
pinctrl_dsl_gpio9: dsl_gpio9-pins {
|
||||
function = "dsl_gpio9";
|
||||
group = "dsl_gpio9";
|
||||
};
|
||||
};
|
130
bindings/pinctrl/brcm,bcm6328-pinctrl.yaml
Normal file
130
bindings/pinctrl/brcm,bcm6328-pinctrl.yaml
Normal file
@@ -0,0 +1,130 @@
|
||||
# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
|
||||
%YAML 1.2
|
||||
---
|
||||
$id: http://devicetree.org/schemas/pinctrl/brcm,bcm6328-pinctrl.yaml#
|
||||
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
||||
|
||||
title: Broadcom BCM6328 pin controller
|
||||
|
||||
maintainers:
|
||||
- Álvaro Fernández Rojas <noltari@gmail.com>
|
||||
- Jonas Gorski <jonas.gorski@gmail.com>
|
||||
|
||||
description:
|
||||
Bindings for Broadcom's BCM6328 memory-mapped pin controller.
|
||||
|
||||
properties:
|
||||
compatible:
|
||||
const: brcm,bcm6328-pinctrl
|
||||
|
||||
reg:
|
||||
maxItems: 1
|
||||
|
||||
patternProperties:
|
||||
'-pins$':
|
||||
type: object
|
||||
$ref: pinmux-node.yaml#
|
||||
|
||||
properties:
|
||||
function:
|
||||
enum: [ serial_led_data, serial_led_clk, inet_act_led, pcie_clkreq,
|
||||
led, ephy0_act_led, ephy1_act_led, ephy2_act_led,
|
||||
ephy3_act_led, hsspi_cs1, usb_device_port, usb_host_port ]
|
||||
|
||||
pins:
|
||||
enum: [ gpio6, gpio7, gpio11, gpio16, gpio17, gpio18, gpio19,
|
||||
gpio20, gpio25, gpio26, gpio27, gpio28, hsspi_cs1,
|
||||
usb_port1 ]
|
||||
|
||||
allOf:
|
||||
- $ref: "pinctrl.yaml#"
|
||||
|
||||
required:
|
||||
- compatible
|
||||
- reg
|
||||
|
||||
additionalProperties: false
|
||||
|
||||
examples:
|
||||
- |
|
||||
pinctrl@18 {
|
||||
compatible = "brcm,bcm6328-pinctrl";
|
||||
reg = <0x18 0x10>;
|
||||
|
||||
pinctrl_serial_led: serial_led-pins {
|
||||
pinctrl_serial_led_data: serial_led_data-pins {
|
||||
function = "serial_led_data";
|
||||
pins = "gpio6";
|
||||
};
|
||||
|
||||
pinctrl_serial_led_clk: serial_led_clk-pins {
|
||||
function = "serial_led_clk";
|
||||
pins = "gpio7";
|
||||
};
|
||||
};
|
||||
|
||||
pinctrl_inet_act_led: inet_act_led-pins {
|
||||
function = "inet_act_led";
|
||||
pins = "gpio11";
|
||||
};
|
||||
|
||||
pinctrl_pcie_clkreq: pcie_clkreq-pins {
|
||||
function = "pcie_clkreq";
|
||||
pins = "gpio16";
|
||||
};
|
||||
|
||||
pinctrl_ephy0_spd_led: ephy0_spd_led-pins {
|
||||
function = "led";
|
||||
pins = "gpio17";
|
||||
};
|
||||
|
||||
pinctrl_ephy1_spd_led: ephy1_spd_led-pins {
|
||||
function = "led";
|
||||
pins = "gpio18";
|
||||
};
|
||||
|
||||
pinctrl_ephy2_spd_led: ephy2_spd_led-pins {
|
||||
function = "led";
|
||||
pins = "gpio19";
|
||||
};
|
||||
|
||||
pinctrl_ephy3_spd_led: ephy3_spd_led-pins {
|
||||
function = "led";
|
||||
pins = "gpio20";
|
||||
};
|
||||
|
||||
pinctrl_ephy0_act_led: ephy0_act_led-pins {
|
||||
function = "ephy0_act_led";
|
||||
pins = "gpio25";
|
||||
};
|
||||
|
||||
pinctrl_ephy1_act_led: ephy1_act_led-pins {
|
||||
function = "ephy1_act_led";
|
||||
pins = "gpio26";
|
||||
};
|
||||
|
||||
pinctrl_ephy2_act_led: ephy2_act_led-pins {
|
||||
function = "ephy2_act_led";
|
||||
pins = "gpio27";
|
||||
};
|
||||
|
||||
pinctrl_ephy3_act_led: ephy3_act_led-pins {
|
||||
function = "ephy3_act_led";
|
||||
pins = "gpio28";
|
||||
};
|
||||
|
||||
pinctrl_hsspi_cs1: hsspi_cs1-pins {
|
||||
function = "hsspi_cs1";
|
||||
pins = "hsspi_cs1";
|
||||
};
|
||||
|
||||
pinctrl_usb_port1_device: usb_port1_device-pins {
|
||||
function = "usb_device_port";
|
||||
pins = "usb_port1";
|
||||
};
|
||||
|
||||
pinctrl_usb_port1_host: usb_port1_host-pins {
|
||||
function = "usb_host_port";
|
||||
pins = "usb_port1";
|
||||
};
|
||||
};
|
96
bindings/pinctrl/brcm,bcm6358-pinctrl.yaml
Normal file
96
bindings/pinctrl/brcm,bcm6358-pinctrl.yaml
Normal file
@@ -0,0 +1,96 @@
|
||||
# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
|
||||
%YAML 1.2
|
||||
---
|
||||
$id: http://devicetree.org/schemas/pinctrl/brcm,bcm6358-pinctrl.yaml#
|
||||
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
||||
|
||||
title: Broadcom BCM6358 pin controller
|
||||
|
||||
maintainers:
|
||||
- Álvaro Fernández Rojas <noltari@gmail.com>
|
||||
- Jonas Gorski <jonas.gorski@gmail.com>
|
||||
|
||||
description:
|
||||
Bindings for Broadcom's BCM6358 memory-mapped pin controller.
|
||||
|
||||
properties:
|
||||
compatible:
|
||||
const: brcm,bcm6358-pinctrl
|
||||
|
||||
reg:
|
||||
maxItems: 1
|
||||
|
||||
patternProperties:
|
||||
'-pins$':
|
||||
type: object
|
||||
$ref: pinmux-node.yaml#
|
||||
|
||||
properties:
|
||||
function:
|
||||
enum: [ ebi_cs, uart1, serial_led, legacy_led, led, spi_cs, utopia,
|
||||
pwm_syn_clk, sys_irq ]
|
||||
|
||||
pins:
|
||||
enum: [ ebi_cs_grp, uart1_grp, serial_led_grp, legacy_led_grp,
|
||||
led_grp, spi_cs_grp, utopia_grp, pwm_syn_clk, sys_irq_grp ]
|
||||
|
||||
allOf:
|
||||
- $ref: "pinctrl.yaml#"
|
||||
|
||||
required:
|
||||
- compatible
|
||||
- reg
|
||||
|
||||
additionalProperties: false
|
||||
|
||||
examples:
|
||||
- |
|
||||
pinctrl@18 {
|
||||
compatible = "brcm,bcm6358-pinctrl";
|
||||
reg = <0x18 0x4>;
|
||||
|
||||
pinctrl_ebi_cs: ebi_cs-pins {
|
||||
function = "ebi_cs";
|
||||
groups = "ebi_cs_grp";
|
||||
};
|
||||
|
||||
pinctrl_uart1: uart1-pins {
|
||||
function = "uart1";
|
||||
groups = "uart1_grp";
|
||||
};
|
||||
|
||||
pinctrl_serial_led: serial_led-pins {
|
||||
function = "serial_led";
|
||||
groups = "serial_led_grp";
|
||||
};
|
||||
|
||||
pinctrl_legacy_led: legacy_led-pins {
|
||||
function = "legacy_led";
|
||||
groups = "legacy_led_grp";
|
||||
};
|
||||
|
||||
pinctrl_led: led-pins {
|
||||
function = "led";
|
||||
groups = "led_grp";
|
||||
};
|
||||
|
||||
pinctrl_spi_cs_23: spi_cs-pins {
|
||||
function = "spi_cs";
|
||||
groups = "spi_cs_grp";
|
||||
};
|
||||
|
||||
pinctrl_utopia: utopia-pins {
|
||||
function = "utopia";
|
||||
groups = "utopia_grp";
|
||||
};
|
||||
|
||||
pinctrl_pwm_syn_clk: pwm_syn_clk-pins {
|
||||
function = "pwm_syn_clk";
|
||||
groups = "pwm_syn_clk_grp";
|
||||
};
|
||||
|
||||
pinctrl_sys_irq: sys_irq-pins {
|
||||
function = "sys_irq";
|
||||
groups = "sys_irq_grp";
|
||||
};
|
||||
};
|
209
bindings/pinctrl/brcm,bcm6362-pinctrl.yaml
Normal file
209
bindings/pinctrl/brcm,bcm6362-pinctrl.yaml
Normal file
@@ -0,0 +1,209 @@
|
||||
# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
|
||||
%YAML 1.2
|
||||
---
|
||||
$id: http://devicetree.org/schemas/pinctrl/brcm,bcm6362-pinctrl.yaml#
|
||||
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
||||
|
||||
title: Broadcom BCM6362 pin controller
|
||||
|
||||
maintainers:
|
||||
- Álvaro Fernández Rojas <noltari@gmail.com>
|
||||
- Jonas Gorski <jonas.gorski@gmail.com>
|
||||
|
||||
description:
|
||||
Bindings for Broadcom's BCM6362 memory-mapped pin controller.
|
||||
|
||||
properties:
|
||||
compatible:
|
||||
const: brcm,bcm6362-pinctrl
|
||||
|
||||
reg:
|
||||
maxItems: 2
|
||||
|
||||
patternProperties:
|
||||
'-pins$':
|
||||
type: object
|
||||
$ref: pinmux-node.yaml#
|
||||
|
||||
properties:
|
||||
function:
|
||||
enum: [ usb_device_led, sys_irq, serial_led_clk, serial_led_data,
|
||||
robosw_led_data, robosw_led_clk, robosw_led0, robosw_led1,
|
||||
inet_led, spi_cs2, spi_cs3, ntr_pulse, uart1_scts,
|
||||
uart1_srts, uart1_sdin, uart1_sdout, adsl_spi_miso,
|
||||
adsl_spi_mosi, adsl_spi_clk, adsl_spi_cs, ephy0_led,
|
||||
ephy1_led, ephy2_led, ephy3_led, ext_irq0, ext_irq1,
|
||||
ext_irq2, ext_irq3, nand ]
|
||||
|
||||
pins:
|
||||
enum: [ gpio0, gpio1, gpio2, gpio3, gpio4, gpio5, gpio6, gpio7,
|
||||
gpio8, gpio9, gpio10, gpio11, gpio12, gpio13, gpio14,
|
||||
gpio15, gpio16, gpio17, gpio18, gpio19, gpio20, gpio21,
|
||||
gpio22, gpio23, gpio24, gpio25, gpio26, gpio27, nand_grp ]
|
||||
|
||||
allOf:
|
||||
- $ref: "pinctrl.yaml#"
|
||||
|
||||
required:
|
||||
- compatible
|
||||
- reg
|
||||
|
||||
additionalProperties: false
|
||||
|
||||
examples:
|
||||
- |
|
||||
pinctrl@18 {
|
||||
compatible = "brcm,bcm6362-pinctrl";
|
||||
reg = <0x18 0x10>, <0x38 0x4>;
|
||||
|
||||
pinctrl_usb_device_led: usb_device_led-pins {
|
||||
function = "usb_device_led";
|
||||
pins = "gpio0";
|
||||
};
|
||||
|
||||
pinctrl_sys_irq: sys_irq-pins {
|
||||
function = "sys_irq";
|
||||
pins = "gpio1";
|
||||
};
|
||||
|
||||
pinctrl_serial_led: serial_led-pins {
|
||||
pinctrl_serial_led_clk: serial_led_clk-pins {
|
||||
function = "serial_led_clk";
|
||||
pins = "gpio2";
|
||||
};
|
||||
|
||||
pinctrl_serial_led_data: serial_led_data-pins {
|
||||
function = "serial_led_data";
|
||||
pins = "gpio3";
|
||||
};
|
||||
};
|
||||
|
||||
pinctrl_robosw_led_data: robosw_led_data-pins {
|
||||
function = "robosw_led_data";
|
||||
pins = "gpio4";
|
||||
};
|
||||
|
||||
pinctrl_robosw_led_clk: robosw_led_clk-pins {
|
||||
function = "robosw_led_clk";
|
||||
pins = "gpio5";
|
||||
};
|
||||
|
||||
pinctrl_robosw_led0: robosw_led0-pins {
|
||||
function = "robosw_led0";
|
||||
pins = "gpio6";
|
||||
};
|
||||
|
||||
pinctrl_robosw_led1: robosw_led1-pins {
|
||||
function = "robosw_led1";
|
||||
pins = "gpio7";
|
||||
};
|
||||
|
||||
pinctrl_inet_led: inet_led-pins {
|
||||
function = "inet_led";
|
||||
pins = "gpio8";
|
||||
};
|
||||
|
||||
pinctrl_spi_cs2: spi_cs2-pins {
|
||||
function = "spi_cs2";
|
||||
pins = "gpio9";
|
||||
};
|
||||
|
||||
pinctrl_spi_cs3: spi_cs3-pins {
|
||||
function = "spi_cs3";
|
||||
pins = "gpio10";
|
||||
};
|
||||
|
||||
pinctrl_ntr_pulse: ntr_pulse-pins {
|
||||
function = "ntr_pulse";
|
||||
pins = "gpio11";
|
||||
};
|
||||
|
||||
pinctrl_uart1_scts: uart1_scts-pins {
|
||||
function = "uart1_scts";
|
||||
pins = "gpio12";
|
||||
};
|
||||
|
||||
pinctrl_uart1_srts: uart1_srts-pins {
|
||||
function = "uart1_srts";
|
||||
pins = "gpio13";
|
||||
};
|
||||
|
||||
pinctrl_uart1: uart1-pins {
|
||||
pinctrl_uart1_sdin: uart1_sdin-pins {
|
||||
function = "uart1_sdin";
|
||||
pins = "gpio14";
|
||||
};
|
||||
|
||||
pinctrl_uart1_sdout: uart1_sdout-pins {
|
||||
function = "uart1_sdout";
|
||||
pins = "gpio15";
|
||||
};
|
||||
};
|
||||
|
||||
pinctrl_adsl_spi: adsl_spi-pins {
|
||||
pinctrl_adsl_spi_miso: adsl_spi_miso-pins {
|
||||
function = "adsl_spi_miso";
|
||||
pins = "gpio16";
|
||||
};
|
||||
|
||||
pinctrl_adsl_spi_mosi: adsl_spi_mosi-pins {
|
||||
function = "adsl_spi_mosi";
|
||||
pins = "gpio17";
|
||||
};
|
||||
|
||||
pinctrl_adsl_spi_clk: adsl_spi_clk-pins {
|
||||
function = "adsl_spi_clk";
|
||||
pins = "gpio18";
|
||||
};
|
||||
|
||||
pinctrl_adsl_spi_cs: adsl_spi_cs-pins {
|
||||
function = "adsl_spi_cs";
|
||||
pins = "gpio19";
|
||||
};
|
||||
};
|
||||
|
||||
pinctrl_ephy0_led: ephy0_led-pins {
|
||||
function = "ephy0_led";
|
||||
pins = "gpio20";
|
||||
};
|
||||
|
||||
pinctrl_ephy1_led: ephy1_led-pins {
|
||||
function = "ephy1_led";
|
||||
pins = "gpio21";
|
||||
};
|
||||
|
||||
pinctrl_ephy2_led: ephy2_led-pins {
|
||||
function = "ephy2_led";
|
||||
pins = "gpio22";
|
||||
};
|
||||
|
||||
pinctrl_ephy3_led: ephy3_led-pins {
|
||||
function = "ephy3_led";
|
||||
pins = "gpio23";
|
||||
};
|
||||
|
||||
pinctrl_ext_irq0: ext_irq0-pins {
|
||||
function = "ext_irq0";
|
||||
pins = "gpio24";
|
||||
};
|
||||
|
||||
pinctrl_ext_irq1: ext_irq1-pins {
|
||||
function = "ext_irq1";
|
||||
pins = "gpio25";
|
||||
};
|
||||
|
||||
pinctrl_ext_irq2: ext_irq2-pins {
|
||||
function = "ext_irq2";
|
||||
pins = "gpio26";
|
||||
};
|
||||
|
||||
pinctrl_ext_irq3: ext_irq3-pins {
|
||||
function = "ext_irq3";
|
||||
pins = "gpio27";
|
||||
};
|
||||
|
||||
pinctrl_nand: nand-pins {
|
||||
function = "nand";
|
||||
group = "nand_grp";
|
||||
};
|
||||
};
|
220
bindings/pinctrl/brcm,bcm6368-pinctrl.yaml
Normal file
220
bindings/pinctrl/brcm,bcm6368-pinctrl.yaml
Normal file
@@ -0,0 +1,220 @@
|
||||
# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
|
||||
%YAML 1.2
|
||||
---
|
||||
$id: http://devicetree.org/schemas/pinctrl/brcm,bcm6368-pinctrl.yaml#
|
||||
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
||||
|
||||
title: Broadcom BCM6368 pin controller
|
||||
|
||||
maintainers:
|
||||
- Álvaro Fernández Rojas <noltari@gmail.com>
|
||||
- Jonas Gorski <jonas.gorski@gmail.com>
|
||||
|
||||
description:
|
||||
Bindings for Broadcom's BCM6368 memory-mapped pin controller.
|
||||
|
||||
properties:
|
||||
compatible:
|
||||
const: brcm,bcm6368-pinctrl
|
||||
|
||||
reg:
|
||||
maxItems: 2
|
||||
|
||||
patternProperties:
|
||||
'-pins$':
|
||||
type: object
|
||||
$ref: pinmux-node.yaml#
|
||||
|
||||
properties:
|
||||
function:
|
||||
enum: [ analog_afe_0, analog_afe_1, sys_irq, serial_led_data,
|
||||
serial_led_clk, inet_led, ephy0_led, ephy1_led, ephy2_led,
|
||||
ephy3_led, robosw_led_data, robosw_led_clk, robosw_led0,
|
||||
robosw_led1, usb_device_led, pci_req1, pci_gnt1, pci_intb,
|
||||
pci_req0, pci_gnt0, pcmcia_cd1, pcmcia_cd2, pcmcia_vs1,
|
||||
pcmcia_vs2, ebi_cs2, ebi_cs3, spi_cs2, spi_cs3, spi_cs4,
|
||||
spi_cs5, uart1 ]
|
||||
|
||||
pins:
|
||||
enum: [ gpio0, gpio1, gpio2, gpio3, gpio4, gpio5, gpio6, gpio7,
|
||||
gpio8, gpio9, gpio10, gpio11, gpio12, gpio13, gpio14,
|
||||
gpio16, gpio17, gpio18, gpio19, gpio20, gpio22, gpio23,
|
||||
gpio24, gpio25, gpio26, gpio27, gpio28, gpio29, gpio30,
|
||||
gpio31, uart1_grp ]
|
||||
|
||||
allOf:
|
||||
- $ref: "pinctrl.yaml#"
|
||||
|
||||
required:
|
||||
- compatible
|
||||
- reg
|
||||
|
||||
additionalProperties: false
|
||||
|
||||
examples:
|
||||
- |
|
||||
pinctrl@18 {
|
||||
compatible = "brcm,bcm6368-pinctrl";
|
||||
reg = <0x18 0x4>, <0x38 0x4>;
|
||||
|
||||
pinctrl_analog_afe_0: analog_afe_0-pins {
|
||||
function = "analog_afe_0";
|
||||
pins = "gpio0";
|
||||
};
|
||||
|
||||
pinctrl_analog_afe_1: analog_afe_1-pins {
|
||||
function = "analog_afe_1";
|
||||
pins = "gpio1";
|
||||
};
|
||||
|
||||
pinctrl_sys_irq: sys_irq-pins {
|
||||
function = "sys_irq";
|
||||
pins = "gpio2";
|
||||
};
|
||||
|
||||
pinctrl_serial_led: serial_led-pins {
|
||||
pinctrl_serial_led_data: serial_led_data-pins {
|
||||
function = "serial_led_data";
|
||||
pins = "gpio3";
|
||||
};
|
||||
|
||||
pinctrl_serial_led_clk: serial_led_clk-pins {
|
||||
function = "serial_led_clk";
|
||||
pins = "gpio4";
|
||||
};
|
||||
};
|
||||
|
||||
pinctrl_inet_led: inet_led-pins {
|
||||
function = "inet_led";
|
||||
pins = "gpio5";
|
||||
};
|
||||
|
||||
pinctrl_ephy0_led: ephy0_led-pins {
|
||||
function = "ephy0_led";
|
||||
pins = "gpio6";
|
||||
};
|
||||
|
||||
pinctrl_ephy1_led: ephy1_led-pins {
|
||||
function = "ephy1_led";
|
||||
pins = "gpio7";
|
||||
};
|
||||
|
||||
pinctrl_ephy2_led: ephy2_led-pins {
|
||||
function = "ephy2_led";
|
||||
pins = "gpio8";
|
||||
};
|
||||
|
||||
pinctrl_ephy3_led: ephy3_led-pins {
|
||||
function = "ephy3_led";
|
||||
pins = "gpio9";
|
||||
};
|
||||
|
||||
pinctrl_robosw_led_data: robosw_led_data-pins {
|
||||
function = "robosw_led_data";
|
||||
pins = "gpio10";
|
||||
};
|
||||
|
||||
pinctrl_robosw_led_clk: robosw_led_clk-pins {
|
||||
function = "robosw_led_clk";
|
||||
pins = "gpio11";
|
||||
};
|
||||
|
||||
pinctrl_robosw_led0: robosw_led0-pins {
|
||||
function = "robosw_led0";
|
||||
pins = "gpio12";
|
||||
};
|
||||
|
||||
pinctrl_robosw_led1: robosw_led1-pins {
|
||||
function = "robosw_led1";
|
||||
pins = "gpio13";
|
||||
};
|
||||
|
||||
pinctrl_usb_device_led: usb_device_led-pins {
|
||||
function = "usb_device_led";
|
||||
pins = "gpio14";
|
||||
};
|
||||
|
||||
pinctrl_pci: pci-pins {
|
||||
pinctrl_pci_req1: pci_req1-pins {
|
||||
function = "pci_req1";
|
||||
pins = "gpio16";
|
||||
};
|
||||
|
||||
pinctrl_pci_gnt1: pci_gnt1-pins {
|
||||
function = "pci_gnt1";
|
||||
pins = "gpio17";
|
||||
};
|
||||
|
||||
pinctrl_pci_intb: pci_intb-pins {
|
||||
function = "pci_intb";
|
||||
pins = "gpio18";
|
||||
};
|
||||
|
||||
pinctrl_pci_req0: pci_req0-pins {
|
||||
function = "pci_req0";
|
||||
pins = "gpio19";
|
||||
};
|
||||
|
||||
pinctrl_pci_gnt0: pci_gnt0-pins {
|
||||
function = "pci_gnt0";
|
||||
pins = "gpio20";
|
||||
};
|
||||
};
|
||||
|
||||
pinctrl_pcmcia: pcmcia-pins {
|
||||
pinctrl_pcmcia_cd1: pcmcia_cd1-pins {
|
||||
function = "pcmcia_cd1";
|
||||
pins = "gpio22";
|
||||
};
|
||||
|
||||
pinctrl_pcmcia_cd2: pcmcia_cd2-pins {
|
||||
function = "pcmcia_cd2";
|
||||
pins = "gpio23";
|
||||
};
|
||||
|
||||
pinctrl_pcmcia_vs1: pcmcia_vs1-pins {
|
||||
function = "pcmcia_vs1";
|
||||
pins = "gpio24";
|
||||
};
|
||||
|
||||
pinctrl_pcmcia_vs2: pcmcia_vs2-pins {
|
||||
function = "pcmcia_vs2";
|
||||
pins = "gpio25";
|
||||
};
|
||||
};
|
||||
|
||||
pinctrl_ebi_cs2: ebi_cs2-pins {
|
||||
function = "ebi_cs2";
|
||||
pins = "gpio26";
|
||||
};
|
||||
|
||||
pinctrl_ebi_cs3: ebi_cs3-pins {
|
||||
function = "ebi_cs3";
|
||||
pins = "gpio27";
|
||||
};
|
||||
|
||||
pinctrl_spi_cs2: spi_cs2-pins {
|
||||
function = "spi_cs2";
|
||||
pins = "gpio28";
|
||||
};
|
||||
|
||||
pinctrl_spi_cs3: spi_cs3-pins {
|
||||
function = "spi_cs3";
|
||||
pins = "gpio29";
|
||||
};
|
||||
|
||||
pinctrl_spi_cs4: spi_cs4-pins {
|
||||
function = "spi_cs4";
|
||||
pins = "gpio30";
|
||||
};
|
||||
|
||||
pinctrl_spi_cs5: spi_cs5-pins {
|
||||
function = "spi_cs5";
|
||||
pins = "gpio31";
|
||||
};
|
||||
|
||||
pinctrl_uart1: uart1-pins {
|
||||
function = "uart1";
|
||||
group = "uart1_grp";
|
||||
};
|
||||
};
|
132
bindings/pinctrl/brcm,cygnus-pinmux.txt
Normal file
132
bindings/pinctrl/brcm,cygnus-pinmux.txt
Normal file
@@ -0,0 +1,132 @@
|
||||
Broadcom Cygnus IOMUX Controller
|
||||
|
||||
The Cygnus IOMUX controller supports group based mux configuration. In
|
||||
addition, certain pins can be muxed to GPIO function individually.
|
||||
|
||||
Required properties:
|
||||
|
||||
- compatible:
|
||||
Must be "brcm,cygnus-pinmux"
|
||||
|
||||
- reg:
|
||||
Define the base and range of the I/O address space that contains the Cygnus
|
||||
IOMUX registers
|
||||
|
||||
Properties in subnodes:
|
||||
|
||||
- function:
|
||||
The mux function to select
|
||||
|
||||
- groups:
|
||||
The list of groups to select with a given function
|
||||
|
||||
For more details, refer to
|
||||
Documentation/devicetree/bindings/pinctrl/pinctrl-bindings.txt
|
||||
|
||||
For example:
|
||||
|
||||
pinmux: pinmux@0301d0c8 {
|
||||
compatible = "brcm,cygnus-pinmux";
|
||||
reg = <0x0301d0c8 0x1b0>;
|
||||
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&i2s0_default>;
|
||||
|
||||
i2s0_default: i2s0_default {
|
||||
mux {
|
||||
function = "i2s0";
|
||||
groups = "i2s0_0_grp", "i2s0_1_grp";
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
List of supported functions and groups in Cygnus:
|
||||
|
||||
"i2s0": "i2s0_0_grp", "i2s0_1_grp"
|
||||
|
||||
"i2s1": "i2s1_0_grp", "i2s1_1_grp"
|
||||
|
||||
"i2s2": "i2s2_0_grp", "i2s2_1_grp", "i2s2_2_grp", "i2s2_3_grp", "i2s2_4_grp"
|
||||
|
||||
"spdif": "spdif_grp"
|
||||
|
||||
"pwm0": "pwm0_grp"
|
||||
|
||||
"pwm1": "pwm1_grp"
|
||||
|
||||
"pwm2": "pwm2_grp"
|
||||
|
||||
"pwm3": "pwm3_grp"
|
||||
|
||||
"pwm4": "pwm4_grp"
|
||||
|
||||
"pwm5": "pwm5_grp"
|
||||
|
||||
"key": "key0_grp", "key1_grp", "key2_grp", "key3_grp", "key4_grp", "key5_grp",
|
||||
"key6_grp", "key7_grp", "key8_grp", "key9_grp", "key10_grp", "key11_grp",
|
||||
"key12_grp", "key13_grp", "key14_grp", "key15_grp"
|
||||
|
||||
"audio_dte": "audio_dte0_grp", "audio_dte1_grp", "audio_dte2_grp", "audio_dte3_grp"
|
||||
|
||||
"smart_card0": "smart_card0_grp", "smart_card0_fcb_grp"
|
||||
|
||||
"smart_card1": "smart_card1_grp", "smart_card1_fcb_grp"
|
||||
|
||||
"spi0": "spi0_grp"
|
||||
|
||||
"spi1": "spi1_grp"
|
||||
|
||||
"spi2": "spi2_grp"
|
||||
|
||||
"spi3": "spi3_grp"
|
||||
|
||||
"spi4": "spi4_0_grp", "spi4_1_grp"
|
||||
|
||||
"spi5": "spi5_grp"
|
||||
|
||||
"sw_led0": "sw_led0_0_grp", "sw_led0_1_grp"
|
||||
|
||||
"sw_led1": "sw_led1_grp"
|
||||
|
||||
"sw_led2": "sw_led2_0_grp", "sw_led2_1_grp"
|
||||
|
||||
"d1w": "d1w_grp"
|
||||
|
||||
"lcd": "lcd_grp"
|
||||
|
||||
"sram": "sram_0_grp", "sram_1_grp"
|
||||
|
||||
"uart0": "uart0_grp"
|
||||
|
||||
"uart1": "uart1_grp", "uart1_dte_grp"
|
||||
|
||||
"uart2": "uart2_grp"
|
||||
|
||||
"uart3": "uart3_grp"
|
||||
|
||||
"uart4": "uart4_grp"
|
||||
|
||||
"qspi": "qspi_0_grp", "qspi_1_grp"
|
||||
|
||||
"nand": "nand_grp"
|
||||
|
||||
"sdio0": "sdio0_grp", "sdio0_cd_grp", "sdio0_mmc_grp"
|
||||
|
||||
"sdio1": "sdio1_data_0_grp", "sdio1_data_1_grp", "sdio1_cd_grp",
|
||||
"sdio1_led_grp", "sdio1_mmc_grp"
|
||||
|
||||
"can0": "can0_grp"
|
||||
|
||||
"can1": "can1_grp"
|
||||
|
||||
"cam": "cam_led_grp", "cam_0_grp", "cam_1_grp"
|
||||
|
||||
"bsc1": "bsc1_grp"
|
||||
|
||||
"pcie_clkreq": "pcie_clkreq_grp"
|
||||
|
||||
"usb0_oc": "usb0_oc_grp"
|
||||
|
||||
"usb1_oc": "usb1_oc_grp"
|
||||
|
||||
"usb2_oc": "usb2_oc_grp"
|
123
bindings/pinctrl/brcm,iproc-gpio.txt
Normal file
123
bindings/pinctrl/brcm,iproc-gpio.txt
Normal file
@@ -0,0 +1,123 @@
|
||||
Broadcom iProc GPIO/PINCONF Controller
|
||||
|
||||
Required properties:
|
||||
|
||||
- compatible:
|
||||
"brcm,iproc-gpio" for the generic iProc based GPIO controller IP that
|
||||
supports full-featured pinctrl and GPIO functions used in various iProc
|
||||
based SoCs
|
||||
|
||||
May contain an SoC-specific compatibility string to accommodate any
|
||||
SoC-specific features
|
||||
|
||||
"brcm,cygnus-ccm-gpio", "brcm,cygnus-asiu-gpio", or
|
||||
"brcm,cygnus-crmu-gpio" for Cygnus SoCs
|
||||
|
||||
"brcm,iproc-nsp-gpio" for the iProc NSP SoC that has drive strength support
|
||||
disabled
|
||||
|
||||
"brcm,iproc-stingray-gpio" for the iProc Stingray SoC that has the general
|
||||
pinctrl support completely disabled in this IP block. In Stingray, a
|
||||
different IP block is used to handle pinctrl related functions
|
||||
|
||||
- reg:
|
||||
Define the base and range of the I/O address space that contains SoC
|
||||
GPIO/PINCONF controller registers
|
||||
|
||||
- ngpios:
|
||||
Total number of in-use slots in GPIO controller
|
||||
|
||||
- #gpio-cells:
|
||||
Must be two. The first cell is the GPIO pin number (within the
|
||||
controller's pin space) and the second cell is used for the following:
|
||||
bit[0]: polarity (0 for active high and 1 for active low)
|
||||
|
||||
- gpio-controller:
|
||||
Specifies that the node is a GPIO controller
|
||||
|
||||
Optional properties:
|
||||
|
||||
- interrupts:
|
||||
Interrupt ID
|
||||
|
||||
- interrupt-controller:
|
||||
Specifies that the node is an interrupt controller
|
||||
|
||||
- gpio-ranges:
|
||||
Specifies the mapping between gpio controller and pin-controllers pins.
|
||||
This requires 4 fields in cells defined as -
|
||||
1. Phandle of pin-controller.
|
||||
2. GPIO base pin offset.
|
||||
3 Pin-control base pin offset.
|
||||
4. number of gpio pins which are linearly mapped from pin base.
|
||||
|
||||
Supported generic PINCONF properties in child nodes:
|
||||
|
||||
- pins:
|
||||
The list of pins (within the controller's own pin space) that properties
|
||||
in the node apply to. Pin names are "gpio-<pin>"
|
||||
|
||||
- bias-disable:
|
||||
Disable pin bias
|
||||
|
||||
- bias-pull-up:
|
||||
Enable internal pull up resistor
|
||||
|
||||
- bias-pull-down:
|
||||
Enable internal pull down resistor
|
||||
|
||||
- drive-strength:
|
||||
Valid drive strength values include 2, 4, 6, 8, 10, 12, 14, 16 (mA)
|
||||
|
||||
Example:
|
||||
gpio_ccm: gpio@1800a000 {
|
||||
compatible = "brcm,cygnus-ccm-gpio";
|
||||
reg = <0x1800a000 0x50>,
|
||||
<0x0301d164 0x20>;
|
||||
ngpios = <24>;
|
||||
#gpio-cells = <2>;
|
||||
gpio-controller;
|
||||
interrupts = <GIC_SPI 84 IRQ_TYPE_LEVEL_HIGH>;
|
||||
interrupt-controller;
|
||||
|
||||
touch_pins: touch_pins {
|
||||
pwr: pwr {
|
||||
pins = "gpio-0";
|
||||
drive-strength = <16>;
|
||||
};
|
||||
|
||||
event: event {
|
||||
pins = "gpio-1";
|
||||
bias-pull-up;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
gpio_asiu: gpio@180a5000 {
|
||||
compatible = "brcm,cygnus-asiu-gpio";
|
||||
reg = <0x180a5000 0x668>;
|
||||
ngpios = <146>;
|
||||
#gpio-cells = <2>;
|
||||
gpio-controller;
|
||||
interrupts = <GIC_SPI 174 IRQ_TYPE_LEVEL_HIGH>;
|
||||
interrupt-controller;
|
||||
gpio-ranges = <&pinctrl 0 42 1>,
|
||||
<&pinctrl 1 44 3>;
|
||||
};
|
||||
|
||||
/*
|
||||
* Touchscreen that uses the CCM GPIO 0 and 1
|
||||
*/
|
||||
tsc {
|
||||
...
|
||||
...
|
||||
gpio-pwr = <&gpio_ccm 0 0>;
|
||||
gpio-event = <&gpio_ccm 1 0>;
|
||||
};
|
||||
|
||||
/* Bluetooth that uses the ASIU GPIO 5, with polarity inverted */
|
||||
bluetooth {
|
||||
...
|
||||
...
|
||||
bcm,rfkill-bank-sel = <&gpio_asiu 5 1>
|
||||
}
|
90
bindings/pinctrl/brcm,ns-pinmux.yaml
Normal file
90
bindings/pinctrl/brcm,ns-pinmux.yaml
Normal file
@@ -0,0 +1,90 @@
|
||||
# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
|
||||
%YAML 1.2
|
||||
---
|
||||
$id: http://devicetree.org/schemas/pinctrl/brcm,ns-pinmux.yaml#
|
||||
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
||||
|
||||
title: Broadcom Northstar pins mux controller
|
||||
|
||||
maintainers:
|
||||
- Rafał Miłecki <rafal@milecki.pl>
|
||||
|
||||
description:
|
||||
Some of Northstar SoCs's pins can be used for various purposes thanks to the
|
||||
mux controller. This binding allows describing mux controller and listing
|
||||
available functions. They can be referenced later by other bindings to let
|
||||
system configure controller correctly.
|
||||
|
||||
A list of pins varies across chipsets so few bindings are available.
|
||||
|
||||
properties:
|
||||
compatible:
|
||||
enum:
|
||||
- brcm,bcm4708-pinmux
|
||||
- brcm,bcm4709-pinmux
|
||||
- brcm,bcm53012-pinmux
|
||||
|
||||
reg:
|
||||
maxItems: 1
|
||||
|
||||
reg-names:
|
||||
const: cru_gpio_control
|
||||
|
||||
patternProperties:
|
||||
'-pins$':
|
||||
type: object
|
||||
description: pin node
|
||||
$ref: pinmux-node.yaml#
|
||||
|
||||
properties:
|
||||
function:
|
||||
enum: [ spi, i2c, pwm, uart1, mdio, uart2, sdio ]
|
||||
groups:
|
||||
minItems: 1
|
||||
maxItems: 4
|
||||
items:
|
||||
enum: [ spi_grp, i2c_grp, pwm0_grp, pwm1_grp, pwm2_grp, pwm3_grp,
|
||||
uart1_grp, mdio_grp, uart2_grp, sdio_pwr_grp, sdio_1p8v_grp ]
|
||||
|
||||
required:
|
||||
- function
|
||||
- groups
|
||||
|
||||
additionalProperties: false
|
||||
|
||||
allOf:
|
||||
- $ref: "pinctrl.yaml#"
|
||||
- if:
|
||||
properties:
|
||||
compatible:
|
||||
contains:
|
||||
const: brcm,bcm4708-pinmux
|
||||
then:
|
||||
patternProperties:
|
||||
'-pins$':
|
||||
properties:
|
||||
function:
|
||||
enum: [ spi, i2c, pwm, uart1 ]
|
||||
groups:
|
||||
items:
|
||||
enum: [ spi_grp, i2c_grp, pwm0_grp, pwm1_grp, pwm2_grp, pwm3_grp,
|
||||
uart1_grp ]
|
||||
|
||||
required:
|
||||
- reg
|
||||
- reg-names
|
||||
|
||||
additionalProperties: false
|
||||
|
||||
examples:
|
||||
- |
|
||||
pinctrl@1800c1c0 {
|
||||
compatible = "brcm,bcm4708-pinmux";
|
||||
reg = <0x1800c1c0 0x24>;
|
||||
reg-names = "cru_gpio_control";
|
||||
|
||||
spi-pins {
|
||||
function = "spi";
|
||||
groups = "spi_grp";
|
||||
};
|
||||
};
|
102
bindings/pinctrl/brcm,ns2-pinmux.txt
Normal file
102
bindings/pinctrl/brcm,ns2-pinmux.txt
Normal file
@@ -0,0 +1,102 @@
|
||||
Broadcom Northstar2 IOMUX Controller
|
||||
|
||||
The Northstar2 IOMUX controller supports group based mux configuration. There
|
||||
are some individual pins that support modifying the pinconf parameters.
|
||||
|
||||
Required properties:
|
||||
|
||||
- compatible:
|
||||
Must be "brcm,ns2-pinmux"
|
||||
|
||||
- reg:
|
||||
Define the base and range of the I/O address space that contains the
|
||||
Northstar2 IOMUX and pin configuration registers.
|
||||
|
||||
Properties in sub nodes:
|
||||
|
||||
- function:
|
||||
The mux function to select
|
||||
|
||||
- groups:
|
||||
The list of groups to select with a given function
|
||||
|
||||
- pins:
|
||||
List of pin names to change configuration
|
||||
|
||||
The generic properties bias-disable, bias-pull-down, bias-pull-up,
|
||||
drive-strength, slew-rate, input-enable, input-disable are supported
|
||||
for some individual pins listed at the end.
|
||||
|
||||
For more details, refer to
|
||||
Documentation/devicetree/bindings/pinctrl/pinctrl-bindings.txt
|
||||
|
||||
For example:
|
||||
|
||||
pinctrl: pinctrl@6501d130 {
|
||||
compatible = "brcm,ns2-pinmux";
|
||||
reg = <0x6501d130 0x08>,
|
||||
<0x660a0028 0x04>,
|
||||
<0x660009b0 0x40>;
|
||||
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&nand_sel>, <&uart3_rx>, <&sdio0_d4>;
|
||||
|
||||
/* Select nand function */
|
||||
nand_sel: nand_sel {
|
||||
function = "nand";
|
||||
groups = "nand_grp";
|
||||
};
|
||||
|
||||
/* Pull up the uart3 rx pin */
|
||||
uart3_rx: uart3_rx {
|
||||
pins = "uart3_sin";
|
||||
bias-pull-up;
|
||||
};
|
||||
|
||||
/* Set the drive strength of sdio d4 pin */
|
||||
sdio0_d4: sdio0_d4 {
|
||||
pins = "sdio0_data4";
|
||||
drive-strength = <8>;
|
||||
};
|
||||
};
|
||||
|
||||
List of supported functions and groups in Northstar2:
|
||||
|
||||
"nand": "nand_grp"
|
||||
|
||||
"nor": "nor_data_grp", "nor_adv_grp", "nor_addr_0_3_grp", "nor_addr_4_5_grp",
|
||||
"nor_addr_6_7_grp", "nor_addr_8_9_grp", "nor_addr_10_11_grp",
|
||||
"nor_addr_12_15_grp"
|
||||
|
||||
"gpio": "gpio_0_1_grp", "gpio_2_5_grp", "gpio_6_7_grp", "gpio_8_9_grp",
|
||||
"gpio_10_11_grp", "gpio_12_13_grp", "gpio_14_17_grp", "gpio_18_19_grp",
|
||||
"gpio_20_21_grp", "gpio_22_23_grp", "gpio_24_25_grp", "gpio_26_27_grp",
|
||||
"gpio_28_29_grp", "gpio_30_31_grp"
|
||||
|
||||
"pcie": "pcie_ab1_clk_wak_grp", "pcie_a3_clk_wak_grp", "pcie_b3_clk_wak_grp",
|
||||
"pcie_b2_clk_wak_grp", "pcie_a2_clk_wak_grp"
|
||||
|
||||
"uart0": "uart0_modem_grp", "uart0_rts_cts_grp", "uart0_in_out_grp"
|
||||
|
||||
"uart1": "uart1_ext_clk_grp", "uart1_dcd_dsr_grp", "uart1_ri_dtr_grp",
|
||||
"uart1_rts_cts_grp", "uart1_in_out_grp"
|
||||
|
||||
"uart2": "uart2_rts_cts_grp"
|
||||
|
||||
"pwm": "pwm_0_grp", "pwm_1_grp", "pwm_2_grp", "pwm_3_grp"
|
||||
|
||||
|
||||
List of pins that support pinconf parameters:
|
||||
|
||||
"qspi_wp", "qspi_hold", "qspi_cs", "qspi_sck", "uart3_sin", "uart3_sout",
|
||||
"qspi_mosi", "qspi_miso", "spi0_fss", "spi0_rxd", "spi0_txd", "spi0_sck",
|
||||
"spi1_fss", "spi1_rxd", "spi1_txd", "spi1_sck", "sdio0_data7",
|
||||
"sdio0_emmc_rst", "sdio0_led_on", "sdio0_wp", "sdio0_data3", "sdio0_data4",
|
||||
"sdio0_data5", "sdio0_data6", "sdio0_cmd", "sdio0_data0", "sdio0_data1",
|
||||
"sdio0_data2", "sdio1_led_on", "sdio1_wp", "sdio0_cd_l", "sdio0_clk",
|
||||
"sdio1_data5", "sdio1_data6", "sdio1_data7", "sdio1_emmc_rst", "sdio1_data1",
|
||||
"sdio1_data2", "sdio1_data3", "sdio1_data4", "sdio1_cd_l", "sdio1_clk",
|
||||
"sdio1_cmd", "sdio1_data0", "ext_mdio_0", "ext_mdc_0", "usb3_p1_vbus_ppc",
|
||||
"usb3_p1_overcurrent", "usb3_p0_vbus_ppc", "usb3_p0_overcurrent",
|
||||
"usb2_presence_indication", "usb2_vbus_present", "usb2_vbus_ppc",
|
||||
"usb2_overcurrent", "sata_led1", "sata_led0"
|
80
bindings/pinctrl/brcm,nsp-gpio.txt
Normal file
80
bindings/pinctrl/brcm,nsp-gpio.txt
Normal file
@@ -0,0 +1,80 @@
|
||||
Broadcom Northstar plus (NSP) GPIO/PINCONF Controller
|
||||
|
||||
Required properties:
|
||||
- compatible:
|
||||
Must be "brcm,nsp-gpio-a"
|
||||
|
||||
- reg:
|
||||
Should contain the register physical address and length for each of
|
||||
GPIO base, IO control registers
|
||||
|
||||
- #gpio-cells:
|
||||
Must be two. The first cell is the GPIO pin number (within the
|
||||
controller's pin space) and the second cell is used for the following:
|
||||
bit[0]: polarity (0 for active high and 1 for active low)
|
||||
|
||||
- gpio-controller:
|
||||
Specifies that the node is a GPIO controller
|
||||
|
||||
- ngpios:
|
||||
Number of gpios supported (58x25 supports 32 and 58x23 supports 24)
|
||||
|
||||
Optional properties:
|
||||
- interrupts:
|
||||
Interrupt ID
|
||||
|
||||
- interrupt-controller:
|
||||
Specifies that the node is an interrupt controller
|
||||
|
||||
- gpio-ranges:
|
||||
Specifies the mapping between gpio controller and pin-controllers pins.
|
||||
This requires 4 fields in cells defined as -
|
||||
1. Phandle of pin-controller.
|
||||
2. GPIO base pin offset.
|
||||
3 Pin-control base pin offset.
|
||||
4. number of gpio pins which are linearly mapped from pin base.
|
||||
|
||||
Supported generic PINCONF properties in child nodes:
|
||||
- pins:
|
||||
The list of pins (within the controller's own pin space) that properties
|
||||
in the node apply to. Pin names are "gpio-<pin>"
|
||||
|
||||
- bias-disable:
|
||||
Disable pin bias
|
||||
|
||||
- bias-pull-up:
|
||||
Enable internal pull up resistor
|
||||
|
||||
- bias-pull-down:
|
||||
Enable internal pull down resistor
|
||||
|
||||
- drive-strength:
|
||||
Valid drive strength values include 2, 4, 6, 8, 10, 12, 14, 16 (mA)
|
||||
|
||||
Example:
|
||||
|
||||
gpioa: gpio@18000020 {
|
||||
compatible = "brcm,nsp-gpio-a";
|
||||
reg = <0x18000020 0x100>,
|
||||
<0x1803f1c4 0x1c>;
|
||||
#gpio-cells = <2>;
|
||||
gpio-controller;
|
||||
ngpios = <32>;
|
||||
gpio-ranges = <&pinctrl 0 0 31>;
|
||||
interrupt-controller;
|
||||
interrupts = <GIC_SPI 85 IRQ_TYPE_LEVEL_HIGH>;
|
||||
|
||||
/* Hog a few default settings */
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&led>;
|
||||
led: led {
|
||||
pins = "gpio-1";
|
||||
bias-pull-up;
|
||||
};
|
||||
|
||||
pwr: pwr {
|
||||
gpio-hog;
|
||||
gpios = <3 1>;
|
||||
output-high;
|
||||
};
|
||||
};
|
79
bindings/pinctrl/brcm,nsp-pinmux.txt
Normal file
79
bindings/pinctrl/brcm,nsp-pinmux.txt
Normal file
@@ -0,0 +1,79 @@
|
||||
Broadcom NSP (Northstar plus) IOMUX Controller
|
||||
|
||||
The NSP IOMUX controller supports group based mux configuration. In
|
||||
addition, certain pins can be muxed to GPIO function individually.
|
||||
|
||||
Required properties:
|
||||
- compatible:
|
||||
Must be "brcm,nsp-pinmux"
|
||||
|
||||
- reg:
|
||||
Should contain the register physical address and length for each of
|
||||
GPIO_CONTROL0, GP_AUX_SEL and IPROC_CONFIG IOMUX registers
|
||||
|
||||
Properties in subnodes:
|
||||
- function:
|
||||
The mux function to select
|
||||
|
||||
- groups:
|
||||
The list of groups to select with a given function
|
||||
|
||||
For more details, refer to
|
||||
Documentation/devicetree/bindings/pinctrl/pinctrl-bindings.txt
|
||||
|
||||
For example:
|
||||
|
||||
pinmux: pinmux@1803f1c0 {
|
||||
compatible = "brcm,nsp-pinmux";
|
||||
reg = <0x1803f1c0 0x04>,
|
||||
<0x18030028 0x04>,
|
||||
<0x1803f408 0x04>;
|
||||
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&pwm>, <&gpio_b>, <&nand_sel>;
|
||||
|
||||
pwm: pwm {
|
||||
function = "pwm";
|
||||
groups = "pwm0_grp", "pwm1_grp";
|
||||
};
|
||||
|
||||
gpio_b: gpio_b {
|
||||
function = "gpio_b";
|
||||
groups = "gpio_b_0_grp", "gpio_b_1_grp";
|
||||
};
|
||||
|
||||
nand_sel: nand_sel {
|
||||
function = "nand";
|
||||
groups = "nand_grp";
|
||||
};
|
||||
};
|
||||
|
||||
List of supported functions and groups in Northstar Plus:
|
||||
|
||||
"spi": "spi_grp"
|
||||
|
||||
"i2c": "i2c_grp"
|
||||
|
||||
"mdio": "mdio_grp"
|
||||
|
||||
"pwm": "pwm0_grp", "pwm1_grp", "pwm2_grp", "pwm3_grp"
|
||||
|
||||
"gpio_b": "gpio_b_0_grp", "gpio_b_1_grp", "gpio_b_2_grp", "gpio_b_3_grp"
|
||||
|
||||
"uart1": "uart1_grp"
|
||||
|
||||
"uart2": "uart2_grp"
|
||||
|
||||
"synce": "synce_grp"
|
||||
|
||||
"sata_led_grps": "sata0_led_grp", "sata1_led_grp"
|
||||
|
||||
"xtal_out": "xtal_out_grp"
|
||||
|
||||
"sdio": "sdio_pwr_grp", "sdio_1p8v_grp"
|
||||
|
||||
"switch_led": "switch_p05_led0_grp", "switch_p05_led1_grp"
|
||||
|
||||
"nand": "nand_grp"
|
||||
|
||||
"emmc": "emmc_grp"
|
180
bindings/pinctrl/canaan,k210-fpioa.yaml
Normal file
180
bindings/pinctrl/canaan,k210-fpioa.yaml
Normal file
@@ -0,0 +1,180 @@
|
||||
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
|
||||
%YAML 1.2
|
||||
---
|
||||
$id: http://devicetree.org/schemas/pinctrl/canaan,k210-fpioa.yaml#
|
||||
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
||||
|
||||
title: Canaan Kendryte K210 FPIOA
|
||||
|
||||
maintainers:
|
||||
- Damien Le Moal <damien.lemoal@wdc.com>
|
||||
|
||||
description:
|
||||
The Canaan Kendryte K210 SoC Fully Programmable IO Array (FPIOA)
|
||||
controller allows assiging any of 256 possible functions to any of
|
||||
48 IO pins of the SoC. Pin function configuration is performed on
|
||||
a per-pin basis.
|
||||
|
||||
properties:
|
||||
compatible:
|
||||
const: canaan,k210-fpioa
|
||||
|
||||
reg:
|
||||
maxItems: 1
|
||||
description:
|
||||
Address and length of the register set for the FPIOA controller.
|
||||
|
||||
clocks:
|
||||
items:
|
||||
- description: Controller reference clock source
|
||||
- description: APB interface clock source
|
||||
|
||||
clock-names:
|
||||
items:
|
||||
- const: ref
|
||||
- const: pclk
|
||||
|
||||
resets:
|
||||
maxItems: 1
|
||||
|
||||
canaan,k210-sysctl-power:
|
||||
$ref: /schemas/types.yaml#/definitions/phandle-array
|
||||
items:
|
||||
- items:
|
||||
- description: phandle of the K210 system controller node
|
||||
- description: offset of its power domain control register
|
||||
description: |
|
||||
phandle of the K210 system controller node and offset of its
|
||||
power domain control register.
|
||||
|
||||
patternProperties:
|
||||
'-pinmux$':
|
||||
type: object
|
||||
$ref: /schemas/pinctrl/pinmux-node.yaml
|
||||
description:
|
||||
FPIOA client devices use sub-nodes to define the desired pin
|
||||
configuration. Client device sub-nodes use the pinux property
|
||||
below.
|
||||
|
||||
properties:
|
||||
pinmux:
|
||||
description:
|
||||
List of IO pins alternate functions. The values for each IO
|
||||
pin is a combination of an IO pin number (0 to 47) with the
|
||||
desired function for the IO pin. Functions are defined as
|
||||
macros in include/dt-bindings/pinctrl/k210-fpioa.h.
|
||||
The K210_FPIOA(IO pin, function) macro is provided to
|
||||
facilitate the combination of IO pin numbers and functions.
|
||||
|
||||
required:
|
||||
- pinmux
|
||||
|
||||
additionalProperties: false
|
||||
|
||||
'-pins$':
|
||||
type: object
|
||||
$ref: /schemas/pinctrl/pincfg-node.yaml
|
||||
description:
|
||||
FPIOA client devices use sub-nodes to define the desired
|
||||
configuration of pins. Client device sub-nodes use the
|
||||
properties below.
|
||||
|
||||
properties:
|
||||
pins:
|
||||
description:
|
||||
List of IO pins affected by the properties specified in this
|
||||
subnode. IO pins are identified using the pin names "IO_xx".
|
||||
Pin configuration nodes can also define the power domain to
|
||||
be used for the SoC pin groups A0 (IO pins 0-5),
|
||||
A1 (IO pins 6-11), A2 (IO pins 12-17), B0 (IO pins 18-23),
|
||||
B1 (IO pins 24-29), B2 (IO pins 30-35), B3 (IO pins 30-35),
|
||||
C0 (IO pins 36-41) and C1 (IO pins 42-47) using the
|
||||
power-source property.
|
||||
items:
|
||||
anyOf:
|
||||
- pattern: "^(IO_([0-9]*))|(A[0-2])|(B[3-5])|(C[6-7])$"
|
||||
- enum: [ IO_0, IO_1, IO_2, IO_3, IO_4, IO_5, IO_6, IO_7,
|
||||
IO_8, IO_9, IO_10, IO_11, IO_12, IO_13, IO_14,
|
||||
IO_15, IO_16, IO_17, IO_18, IO_19, IO_20, IO_21,
|
||||
IO_22, IO_23, IO_24, IO_25, IO_26, IO_27, IO_28,
|
||||
IO_29, IO_30, IO_31, IO_32, IO_33, IO_34, IO_35,
|
||||
IO_36, IO_37, IO_38, IO_39, IO_40, IO_41, IO_42,
|
||||
IO_43, IO_44, IO_45, IO_46, IO_47,
|
||||
A0, A1, A2, B3, B4, B5, C6, C7 ]
|
||||
bias-disable: true
|
||||
|
||||
bias-pull-down: true
|
||||
|
||||
bias-pull-up: true
|
||||
|
||||
drive-strength: true
|
||||
|
||||
drive-strength-microamp: true
|
||||
|
||||
input-enable: true
|
||||
|
||||
input-disable: true
|
||||
|
||||
input-schmitt-enable: true
|
||||
|
||||
input-schmitt-disable: true
|
||||
|
||||
input-polarity-invert:
|
||||
type: boolean
|
||||
description:
|
||||
Enable or disable pin input polarity inversion.
|
||||
|
||||
output-enable: true
|
||||
|
||||
output-disable: true
|
||||
|
||||
output-high: true
|
||||
|
||||
output-low: true
|
||||
|
||||
output-polarity-invert:
|
||||
type: boolean
|
||||
description:
|
||||
Enable or disable pin output polarity inversion.
|
||||
|
||||
slew-rate: true
|
||||
|
||||
power-source: true
|
||||
|
||||
additionalProperties: false
|
||||
|
||||
allOf:
|
||||
- $ref: "pinctrl.yaml#"
|
||||
|
||||
required:
|
||||
- compatible
|
||||
- reg
|
||||
- clocks
|
||||
- canaan,k210-sysctl-power
|
||||
|
||||
additionalProperties: false
|
||||
|
||||
examples:
|
||||
- |
|
||||
#include <dt-bindings/pinctrl/k210-fpioa.h>
|
||||
#include <dt-bindings/clock/k210-clk.h>
|
||||
#include <dt-bindings/reset/k210-rst.h>
|
||||
|
||||
fpioa: pinmux@502b0000 {
|
||||
compatible = "canaan,k210-fpioa";
|
||||
reg = <0x502b0000 0x100>;
|
||||
clocks = <&sysclk K210_CLK_FPIOA>,
|
||||
<&sysclk K210_CLK_APB0>;
|
||||
clock-names = "ref", "pclk";
|
||||
resets = <&sysrst K210_RST_FPIOA>;
|
||||
canaan,k210-sysctl-power = <&sysctl 108>;
|
||||
pinctrl-0 = <&jtag_pinctrl>;
|
||||
pinctrl-names = "default";
|
||||
|
||||
jtag_pinctrl: jtag-pinmux {
|
||||
pinmux = <K210_FPIOA(0, K210_PCF_JTAG_TCLK)>,
|
||||
<K210_FPIOA(1, K210_PCF_JTAG_TDI)>,
|
||||
<K210_FPIOA(2, K210_PCF_JTAG_TMS)>,
|
||||
<K210_FPIOA(3, K210_PCF_JTAG_TDO)>;
|
||||
};
|
||||
};
|
186
bindings/pinctrl/cirrus,lochnagar.yaml
Normal file
186
bindings/pinctrl/cirrus,lochnagar.yaml
Normal file
@@ -0,0 +1,186 @@
|
||||
# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
|
||||
%YAML 1.2
|
||||
---
|
||||
$id: http://devicetree.org/schemas/pinctrl/cirrus,lochnagar.yaml#
|
||||
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
||||
|
||||
title: Cirrus Logic Lochnagar Audio Development Board
|
||||
|
||||
maintainers:
|
||||
- patches@opensource.cirrus.com
|
||||
|
||||
description: |
|
||||
Lochnagar is an evaluation and development board for Cirrus Logic
|
||||
Smart CODEC and Amp devices. It allows the connection of most Cirrus
|
||||
Logic devices on mini-cards, as well as allowing connection of various
|
||||
application processor systems to provide a full evaluation platform.
|
||||
Audio system topology, clocking and power can all be controlled through
|
||||
the Lochnagar, allowing the device under test to be used in a variety of
|
||||
possible use cases.
|
||||
|
||||
This binding document describes the binding for the pinctrl portion of
|
||||
the driver.
|
||||
|
||||
Also see these documents for generic binding information:
|
||||
[1] GPIO : ../gpio/gpio.txt
|
||||
[2] Pinctrl: ../pinctrl/pinctrl-bindings.txt
|
||||
|
||||
And these for relevant defines:
|
||||
[3] include/dt-bindings/pinctrl/lochnagar.h
|
||||
|
||||
This binding must be part of the Lochnagar MFD binding:
|
||||
[4] ../mfd/cirrus,lochnagar.yaml
|
||||
|
||||
properties:
|
||||
compatible:
|
||||
enum:
|
||||
- cirrus,lochnagar-pinctrl
|
||||
|
||||
gpio-controller: true
|
||||
|
||||
'#gpio-cells':
|
||||
description:
|
||||
The first cell is the pin number and the second cell is used
|
||||
to specify optional parameters.
|
||||
const: 2
|
||||
|
||||
gpio-ranges:
|
||||
description:
|
||||
Range of pins managed by the GPIO controller, see [1]. Both the
|
||||
GPIO and Pinctrl base should be set to zero and the count to the
|
||||
appropriate of the LOCHNAGARx_PIN_NUM_GPIOS define, see [3].
|
||||
maxItems: 1
|
||||
|
||||
pin-settings:
|
||||
type: object
|
||||
patternProperties:
|
||||
'-pins$':
|
||||
description:
|
||||
The pin configurations are defined as a child of the pinctrl
|
||||
states node, see [2]. Each sub-node can have the following
|
||||
properties.
|
||||
type: object
|
||||
allOf:
|
||||
- $ref: pincfg-node.yaml#
|
||||
- $ref: pinmux-node.yaml#
|
||||
|
||||
properties:
|
||||
groups:
|
||||
description:
|
||||
A list of groups to select (either this or "pins" must be
|
||||
specified), available groups.
|
||||
enum: [ codec-aif1, codec-aif2, codec-aif3, dsp-aif1,
|
||||
dsp-aif2, psia1, psia2, gf-aif1, gf-aif2, gf-aif3,
|
||||
gf-aif4, spdif-aif, usb-aif1, usb-aif2, adat-aif,
|
||||
soundcard-aif ]
|
||||
|
||||
pins:
|
||||
description:
|
||||
A list of pin names to select (either this or "groups" must
|
||||
be specified), available pins.
|
||||
enum: [ fpga-gpio1, fpga-gpio2, fpga-gpio3, fpga-gpio4,
|
||||
fpga-gpio5, fpga-gpio6, codec-gpio1, codec-gpio2,
|
||||
codec-gpio3, codec-gpio4, codec-gpio5, codec-gpio6,
|
||||
codec-gpio7, codec-gpio8, dsp-gpio1, dsp-gpio2,
|
||||
dsp-gpio3, dsp-gpio4, dsp-gpio5, dsp-gpio6,
|
||||
gf-gpio2, gf-gpio3, gf-gpio7, codec-aif1-bclk,
|
||||
codec-aif1-rxdat, codec-aif1-lrclk, codec-aif1-txdat,
|
||||
codec-aif2-bclk, codec-aif2-rxdat, codec-aif2-lrclk,
|
||||
codec-aif2-txdat, codec-aif3-bclk, codec-aif3-rxdat,
|
||||
codec-aif3-lrclk, codec-aif3-txdat, dsp-aif1-bclk,
|
||||
dsp-aif1-rxdat, dsp-aif1-lrclk, dsp-aif1-txdat,
|
||||
dsp-aif2-bclk, dsp-aif2-rxdat, dsp-aif2-lrclk,
|
||||
dsp-aif2-txdat, psia1-bclk, psia1-rxdat, psia1-lrclk,
|
||||
psia1-txdat, psia2-bclk, psia2-rxdat, psia2-lrclk,
|
||||
psia2-txdat, gf-aif3-bclk, gf-aif3-rxdat,
|
||||
gf-aif3-lrclk, gf-aif3-txdat, gf-aif4-bclk,
|
||||
gf-aif4-rxdat, gf-aif4-lrclk, gf-aif4-txdat,
|
||||
gf-aif1-bclk, gf-aif1-rxdat, gf-aif1-lrclk,
|
||||
gf-aif1-txdat, gf-aif2-bclk, gf-aif2-rxdat,
|
||||
gf-aif2-lrclk, gf-aif2-txdat, dsp-uart1-rx,
|
||||
dsp-uart1-tx, dsp-uart2-rx, dsp-uart2-tx,
|
||||
gf-uart2-rx, gf-uart2-tx, usb-uart-rx, codec-pdmclk1,
|
||||
codec-pdmdat1, codec-pdmclk2, codec-pdmdat2,
|
||||
codec-dmicclk1, codec-dmicdat1, codec-dmicclk2,
|
||||
codec-dmicdat2, codec-dmicclk3, codec-dmicdat3,
|
||||
codec-dmicclk4, codec-dmicdat4, dsp-dmicclk1,
|
||||
dsp-dmicdat1, dsp-dmicclk2, dsp-dmicdat2, i2c2-scl,
|
||||
i2c2-sda, i2c3-scl, i2c3-sda, i2c4-scl, i2c4-sda,
|
||||
dsp-standby, codec-mclk1, codec-mclk2, dsp-clkin,
|
||||
psia1-mclk, psia2-mclk, gf-gpio1, gf-gpio5,
|
||||
dsp-gpio20, led1, led2 ]
|
||||
|
||||
function:
|
||||
description:
|
||||
The mux function to select, available functions.
|
||||
enum: [ aif, fpga-gpio1, fpga-gpio2, fpga-gpio3, fpga-gpio4,
|
||||
fpga-gpio5, fpga-gpio6, codec-gpio1, codec-gpio2,
|
||||
codec-gpio3, codec-gpio4, codec-gpio5, codec-gpio6,
|
||||
codec-gpio7, codec-gpio8, dsp-gpio1, dsp-gpio2,
|
||||
dsp-gpio3, dsp-gpio4, dsp-gpio5, dsp-gpio6,
|
||||
gf-gpio2, gf-gpio3, gf-gpio7, gf-gpio1, gf-gpio5,
|
||||
dsp-gpio20, codec-clkout, dsp-clkout, pmic-32k,
|
||||
spdif-clkout, clk-12m288, clk-11m2986, clk-24m576,
|
||||
clk-22m5792, xmos-mclk, gf-clkout1, gf-mclk1,
|
||||
gf-mclk3, gf-mclk2, gf-clkout2, codec-mclk1,
|
||||
codec-mclk2, dsp-clkin, psia1-mclk, psia2-mclk,
|
||||
spdif-mclk, codec-irq, codec-reset, dsp-reset,
|
||||
dsp-irq, dsp-standby, codec-pdmclk1, codec-pdmdat1,
|
||||
codec-pdmclk2, codec-pdmdat2, codec-dmicclk1,
|
||||
codec-dmicdat1, codec-dmicclk2, codec-dmicdat2,
|
||||
codec-dmicclk3, codec-dmicdat3, codec-dmicclk4,
|
||||
codec-dmicdat4, dsp-dmicclk1, dsp-dmicdat1,
|
||||
dsp-dmicclk2, dsp-dmicdat2, dsp-uart1-rx,
|
||||
dsp-uart1-tx, dsp-uart2-rx, dsp-uart2-tx,
|
||||
gf-uart2-rx, gf-uart2-tx, usb-uart-rx, usb-uart-tx,
|
||||
i2c2-scl, i2c2-sda, i2c3-scl, i2c3-sda, i2c4-scl,
|
||||
i2c4-sda, spdif-aif, psia1, psia1-bclk, psia1-lrclk,
|
||||
psia1-rxdat, psia1-txdat, psia2, psia2-bclk,
|
||||
psia2-lrclk, psia2-rxdat, psia2-txdat, codec-aif1,
|
||||
codec-aif1-bclk, codec-aif1-lrclk, codec-aif1-rxdat,
|
||||
codec-aif1-txdat, codec-aif2, codec-aif2-bclk,
|
||||
codec-aif2-lrclk, codec-aif2-rxdat, codec-aif2-txdat,
|
||||
codec-aif3, codec-aif3-bclk, codec-aif3-lrclk,
|
||||
codec-aif3-rxdat, codec-aif3-txdat, dsp-aif1,
|
||||
dsp-aif1-bclk, dsp-aif1-lrclk, dsp-aif1-rxdat,
|
||||
dsp-aif1-txdat, dsp-aif2, dsp-aif2-bclk,
|
||||
dsp-aif2-lrclk, dsp-aif2-rxdat, dsp-aif2-txdat,
|
||||
gf-aif3, gf-aif3-bclk, gf-aif3-lrclk, gf-aif3-rxdat,
|
||||
gf-aif3-txdat, gf-aif4, gf-aif4-bclk, gf-aif4-lrclk,
|
||||
gf-aif4-rxdat, gf-aif4-txdat, gf-aif1, gf-aif1-bclk,
|
||||
gf-aif1-lrclk, gf-aif1-rxdat, gf-aif1-txdat, gf-aif2,
|
||||
gf-aif2-bclk, gf-aif2-lrclk, gf-aif2-rxdat,
|
||||
gf-aif2-txdat, usb-aif1, usb-aif2, adat-aif,
|
||||
soundcard-aif ]
|
||||
|
||||
output-enable:
|
||||
description:
|
||||
Specifies that an AIF group will be used as a master
|
||||
interface (either this or input-enable is required if a
|
||||
group is being muxed to an AIF)
|
||||
|
||||
input-enable:
|
||||
description:
|
||||
Specifies that an AIF group will be used as a slave
|
||||
interface (either this or output-enable is required if a
|
||||
group is being muxed to an AIF)
|
||||
|
||||
additionalProperties: false
|
||||
|
||||
required:
|
||||
- function
|
||||
|
||||
additionalProperties: false
|
||||
|
||||
allOf:
|
||||
- $ref: "pinctrl.yaml#"
|
||||
|
||||
required:
|
||||
- compatible
|
||||
- gpio-controller
|
||||
- '#gpio-cells'
|
||||
- gpio-ranges
|
||||
- pinctrl-0
|
||||
- pinctrl-names
|
||||
|
||||
additionalProperties: false
|
113
bindings/pinctrl/cirrus,madera.yaml
Normal file
113
bindings/pinctrl/cirrus,madera.yaml
Normal file
@@ -0,0 +1,113 @@
|
||||
# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
|
||||
%YAML 1.2
|
||||
---
|
||||
$id: http://devicetree.org/schemas/pinctrl/cirrus,madera.yaml#
|
||||
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
||||
|
||||
title: Cirrus Logic Madera class audio CODECs pinctrl driver
|
||||
|
||||
maintainers:
|
||||
- patches@opensource.cirrus.com
|
||||
|
||||
description: |
|
||||
The Cirrus Logic Madera codecs provide a number of GPIO functions for
|
||||
interfacing to external hardware and to provide logic outputs to other devices.
|
||||
Certain groups of GPIO pins also have an alternate function, normally as an
|
||||
audio interface.
|
||||
|
||||
The set of available GPIOs, functions and alternate function groups differs
|
||||
between CODECs so refer to the datasheet for the CODEC for further information
|
||||
on what is supported on that device.
|
||||
|
||||
The properties for this driver exist within the parent MFD driver node.
|
||||
|
||||
See also the core bindings for the parent MFD driver:
|
||||
|
||||
Documentation/devicetree/bindings/mfd/cirrus,madera.yaml
|
||||
|
||||
And the generic pinmix bindings:
|
||||
|
||||
Documentation/devicetree/bindings/pinctrl/pinctrl-bindings.txt
|
||||
|
||||
properties:
|
||||
pin-settings:
|
||||
description:
|
||||
One subnode is required to contain the default settings. It
|
||||
contains an arbitrary number of configuration subnodes, one for
|
||||
each group or pin configuration you want to apply as a default.
|
||||
type: object
|
||||
patternProperties:
|
||||
'-pins$':
|
||||
type: object
|
||||
allOf:
|
||||
- $ref: "pincfg-node.yaml#"
|
||||
- $ref: "pinmux-node.yaml#"
|
||||
properties:
|
||||
groups:
|
||||
description:
|
||||
Name of one pin group to configure.
|
||||
enum: [ aif1, aif2, aif3, aif4, mif1, mif2, mif3, pdmspk1,
|
||||
pdmspk2, dmic4, dmic5, dmic6, gpio1, gpio2, gpio3,
|
||||
gpio4, gpio5, gpio6, gpio7, gpio8, gpio9,
|
||||
gpio10, gpio11, gpio12, gpio13, gpio14, gpio15,
|
||||
gpio16, gpio17, gpio18, gpio19, gpio20, gpio21,
|
||||
gpio22, gpio23, gpio24, gpio25, gpio26, gpio27,
|
||||
gpio28, gpio29, gpio30, gpio31, gpio32, gpio33,
|
||||
gpio34, gpio35, gpio36, gpio37, gpio38, gpio39 ]
|
||||
|
||||
function:
|
||||
description:
|
||||
Name of function to assign to this group.
|
||||
enum: [ aif1, aif2, aif3, aif4, mif1, mif2, mif3,
|
||||
pdmspk1, pdmspk2, dmic3, dmic4, dmic5,
|
||||
dmic6, io, dsp-gpio, irq1, irq2, fll1-clk,
|
||||
fll1-lock, fll2-clk, fll2-lock, fll3-clk,
|
||||
fll3-lock, fllao-clk, fllao-lock, opclk,
|
||||
opclk-async, pwm1, pwm2, spdif, asrc1-in1-lock,
|
||||
asrc1-in2-lock, asrc2-in1-lock, asrc2-in2-lock,
|
||||
spkl-short-circuit, spkr-short-circuit,
|
||||
spk-shutdown, spk-overheat-shutdown,
|
||||
spk-overheat-warn, timer1-sts, timer2-sts,
|
||||
timer3-sts, timer4-sts, timer5-sts, timer6-sts,
|
||||
timer7-sts, timer8-sts, log1-fifo-ne,
|
||||
log2-fifo-ne, log3-fifo-ne, log4-fifo-ne,
|
||||
log5-fifo-ne, log6-fifo-ne, log7-fifo-ne,
|
||||
log8-fifo-ne ]
|
||||
|
||||
bias-disable: true
|
||||
|
||||
bias-bus-hold: true
|
||||
|
||||
bias-pull-up: true
|
||||
|
||||
bias-pull-down: true
|
||||
|
||||
drive-push-pull: true
|
||||
|
||||
drive-open-drain: true
|
||||
|
||||
drive-strength:
|
||||
enum: [ 4, 8 ]
|
||||
|
||||
input-schmitt-enable: true
|
||||
|
||||
input-schmitt-disable: true
|
||||
|
||||
input-debounce: true
|
||||
|
||||
output-low: true
|
||||
|
||||
output-high: true
|
||||
|
||||
additionalProperties: false
|
||||
|
||||
required:
|
||||
- groups
|
||||
|
||||
additionalProperties: false
|
||||
|
||||
required:
|
||||
- pinctrl-0
|
||||
- pinctrl-names
|
||||
|
||||
additionalProperties: true
|
86
bindings/pinctrl/cnxt,cx92755-pinctrl.txt
Normal file
86
bindings/pinctrl/cnxt,cx92755-pinctrl.txt
Normal file
@@ -0,0 +1,86 @@
|
||||
Conexant Digicolor CX92755 General Purpose Pin Mapping
|
||||
|
||||
This document describes the device tree binding of the pin mapping hardware
|
||||
modules in the Conexant Digicolor CX92755 SoCs. The CX92755 in one of the
|
||||
Digicolor series of SoCs.
|
||||
|
||||
=== Pin Controller Node ===
|
||||
|
||||
Required Properties:
|
||||
|
||||
- compatible: Must be "cnxt,cx92755-pinctrl"
|
||||
- reg: Base address of the General Purpose Pin Mapping register block and the
|
||||
size of the block.
|
||||
- gpio-controller: Marks the device node as a GPIO controller.
|
||||
- #gpio-cells: Must be <2>. The first cell is the pin number and the
|
||||
second cell is used to specify flags. See include/dt-bindings/gpio/gpio.h
|
||||
for possible values.
|
||||
|
||||
For example, the following is the bare minimum node:
|
||||
|
||||
pinctrl: pinctrl@f0000e20 {
|
||||
compatible = "cnxt,cx92755-pinctrl";
|
||||
reg = <0xf0000e20 0x100>;
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
};
|
||||
|
||||
As a pin controller device, in addition to the required properties, this node
|
||||
should also contain the pin configuration nodes that client devices reference,
|
||||
if any.
|
||||
|
||||
For a general description of GPIO bindings, please refer to ../gpio/gpio.txt.
|
||||
|
||||
=== Pin Configuration Node ===
|
||||
|
||||
Each pin configuration node is a sub-node of the pin controller node and is a
|
||||
container of an arbitrary number of subnodes, called pin group nodes in this
|
||||
document.
|
||||
|
||||
Please refer to the pinctrl-bindings.txt in this directory for details of the
|
||||
common pinctrl bindings used by client devices, including the definition of a
|
||||
"pin configuration node".
|
||||
|
||||
=== Pin Group Node ===
|
||||
|
||||
A pin group node specifies the desired pin mux for an arbitrary number of
|
||||
pins. The name of the pin group node is optional and not used.
|
||||
|
||||
A pin group node only affects the properties specified in the node, and has no
|
||||
effect on any properties that are omitted.
|
||||
|
||||
The pin group node accepts a subset of the generic pin config properties. For
|
||||
details generic pin config properties, please refer to pinctrl-bindings.txt
|
||||
and <include/linux/pinctrl/pinconfig-generic.h>.
|
||||
|
||||
Required Pin Group Node Properties:
|
||||
|
||||
- pins: Multiple strings. Specifies the name(s) of one or more pins to be
|
||||
configured by this node. The format of a pin name string is "GP_xy", where x
|
||||
is an uppercase character from 'A' to 'R', and y is a digit from 0 to 7.
|
||||
- function: String. Specifies the pin mux selection. Values must be one of:
|
||||
"gpio", "client_a", "client_b", "client_c"
|
||||
|
||||
Example:
|
||||
pinctrl: pinctrl@f0000e20 {
|
||||
compatible = "cnxt,cx92755-pinctrl";
|
||||
reg = <0xf0000e20 0x100>;
|
||||
|
||||
uart0_default: uart0_active {
|
||||
data_signals {
|
||||
pins = "GP_O0", "GP_O1";
|
||||
function = "client_b";
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
uart0: uart@f0000740 {
|
||||
compatible = "cnxt,cx92755-usart";
|
||||
...
|
||||
pinctrl-0 = <&uart0_default>;
|
||||
pinctrl-names = "default";
|
||||
};
|
||||
|
||||
In the example above, a single pin group configuration node defines the
|
||||
"client select" for the Rx and Tx signals of uart0. The uart0 node references
|
||||
that pin configuration node using the &uart0_default phandle.
|
68
bindings/pinctrl/cortina,gemini-pinctrl.txt
Normal file
68
bindings/pinctrl/cortina,gemini-pinctrl.txt
Normal file
@@ -0,0 +1,68 @@
|
||||
Cortina Systems Gemini pin controller
|
||||
|
||||
This pin controller is found in the Cortina Systems Gemini SoC family,
|
||||
see further arm/gemini.txt. It is a purely group-based multiplexing pin
|
||||
controller.
|
||||
|
||||
The pin controller node must be a subnode of the system controller node.
|
||||
|
||||
Required properties:
|
||||
- compatible: "cortina,gemini-pinctrl"
|
||||
|
||||
Subnodes of the pin controller contain pin control multiplexing set-up
|
||||
and pin configuration of individual pins.
|
||||
|
||||
Please refer to pinctrl-bindings.txt for generic pin multiplexing nodes
|
||||
and generic pin config nodes.
|
||||
|
||||
Supported configurations:
|
||||
- skew-delay is supported on the Ethernet pins
|
||||
- drive-strength with 4, 8, 12 or 16 mA as argument is supported for
|
||||
entire groups on the groups "idegrp", "gmii_gmac0_grp", "gmii_gmac1_grp"
|
||||
and "pcigrp".
|
||||
|
||||
Example:
|
||||
|
||||
|
||||
syscon {
|
||||
compatible = "cortina,gemini-syscon";
|
||||
...
|
||||
pinctrl {
|
||||
compatible = "cortina,gemini-pinctrl";
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&dram_default_pins>, <&system_default_pins>,
|
||||
<&vcontrol_default_pins>;
|
||||
|
||||
dram_default_pins: pinctrl-dram {
|
||||
mux {
|
||||
function = "dram";
|
||||
groups = "dramgrp";
|
||||
};
|
||||
};
|
||||
rtc_default_pins: pinctrl-rtc {
|
||||
mux {
|
||||
function = "rtc";
|
||||
groups = "rtcgrp";
|
||||
};
|
||||
};
|
||||
power_default_pins: pinctrl-power {
|
||||
mux {
|
||||
function = "power";
|
||||
groups = "powergrp";
|
||||
};
|
||||
};
|
||||
system_default_pins: pinctrl-system {
|
||||
mux {
|
||||
function = "system";
|
||||
groups = "systemgrp";
|
||||
};
|
||||
};
|
||||
(...)
|
||||
uart_default_pins: pinctrl-uart {
|
||||
mux {
|
||||
function = "uart";
|
||||
groups = "uartrxtxgrp";
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
134
bindings/pinctrl/cypress,cy8c95x0.yaml
Normal file
134
bindings/pinctrl/cypress,cy8c95x0.yaml
Normal file
@@ -0,0 +1,134 @@
|
||||
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
|
||||
%YAML 1.2
|
||||
---
|
||||
$id: http://devicetree.org/schemas/pinctrl/cypress,cy8c95x0.yaml#
|
||||
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
||||
|
||||
title: Cypress CY8C95X0 I2C GPIO expander
|
||||
|
||||
maintainers:
|
||||
- Patrick Rudolph <patrick.rudolph@9elements.com>
|
||||
|
||||
description: |
|
||||
This supports the 20/40/60 pin Cypress CYC95x0 GPIO I2C expanders.
|
||||
Pin function configuration is performed on a per-pin basis.
|
||||
|
||||
properties:
|
||||
compatible:
|
||||
enum:
|
||||
- cypress,cy8c9520
|
||||
- cypress,cy8c9540
|
||||
- cypress,cy8c9560
|
||||
|
||||
reg:
|
||||
maxItems: 1
|
||||
|
||||
gpio-controller: true
|
||||
|
||||
'#gpio-cells':
|
||||
description:
|
||||
The first cell is the GPIO number and the second cell specifies GPIO
|
||||
flags, as defined in <dt-bindings/gpio/gpio.h>.
|
||||
const: 2
|
||||
|
||||
interrupts:
|
||||
maxItems: 1
|
||||
|
||||
interrupt-controller: true
|
||||
|
||||
'#interrupt-cells':
|
||||
const: 2
|
||||
|
||||
gpio-line-names: true
|
||||
|
||||
gpio-ranges:
|
||||
maxItems: 1
|
||||
|
||||
gpio-reserved-ranges:
|
||||
maxItems: 1
|
||||
|
||||
vdd-supply:
|
||||
description:
|
||||
Optional power supply.
|
||||
|
||||
patternProperties:
|
||||
'-pins$':
|
||||
type: object
|
||||
description:
|
||||
Pinctrl node's client devices use subnodes for desired pin configuration.
|
||||
Client device subnodes use below standard properties.
|
||||
$ref: pincfg-node.yaml#
|
||||
|
||||
properties:
|
||||
pins:
|
||||
description:
|
||||
List of gpio pins affected by the properties specified in this
|
||||
subnode.
|
||||
items:
|
||||
pattern: '^gp([0-7][0-7])$'
|
||||
minItems: 1
|
||||
maxItems: 60
|
||||
|
||||
function:
|
||||
description:
|
||||
Specify the alternative function to be configured for the specified
|
||||
pins.
|
||||
enum: [ gpio, pwm ]
|
||||
|
||||
bias-pull-down: true
|
||||
|
||||
bias-pull-up: true
|
||||
|
||||
bias-disable: true
|
||||
|
||||
output-high: true
|
||||
|
||||
output-low: true
|
||||
|
||||
drive-push-pull: true
|
||||
|
||||
drive-open-drain: true
|
||||
|
||||
drive-open-source: true
|
||||
|
||||
required:
|
||||
- pins
|
||||
- function
|
||||
|
||||
additionalProperties: false
|
||||
|
||||
required:
|
||||
- compatible
|
||||
- reg
|
||||
- interrupts
|
||||
- interrupt-controller
|
||||
- '#interrupt-cells'
|
||||
- gpio-controller
|
||||
- '#gpio-cells'
|
||||
|
||||
additionalProperties: false
|
||||
|
||||
allOf:
|
||||
- $ref: "pinctrl.yaml#"
|
||||
|
||||
examples:
|
||||
- |
|
||||
#include <dt-bindings/interrupt-controller/arm-gic.h>
|
||||
#include <dt-bindings/interrupt-controller/irq.h>
|
||||
|
||||
i2c {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
|
||||
pinctrl@20 {
|
||||
compatible = "cypress,cy8c9520";
|
||||
reg = <0x20>;
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
#interrupt-cells = <2>;
|
||||
interrupts = <GIC_SPI 94 IRQ_TYPE_LEVEL_HIGH>;
|
||||
interrupt-controller;
|
||||
vdd-supply = <&p3v3>;
|
||||
gpio-reserved-ranges = <5 1>;
|
||||
};
|
||||
};
|
93
bindings/pinctrl/fsl,imx-pinctrl.txt
Normal file
93
bindings/pinctrl/fsl,imx-pinctrl.txt
Normal file
@@ -0,0 +1,93 @@
|
||||
* Freescale IOMUX Controller (IOMUXC) for i.MX
|
||||
|
||||
The IOMUX Controller (IOMUXC), together with the IOMUX, enables the IC
|
||||
to share one PAD to several functional blocks. The sharing is done by
|
||||
multiplexing the PAD input/output signals. For each PAD there are up to
|
||||
8 muxing options (called ALT modes). Since different modules require
|
||||
different PAD settings (like pull up, keeper, etc) the IOMUXC controls
|
||||
also the PAD settings parameters.
|
||||
|
||||
Please refer to pinctrl-bindings.txt in this directory for details of the
|
||||
common pinctrl bindings used by client devices, including the meaning of the
|
||||
phrase "pin configuration node".
|
||||
|
||||
Freescale IMX pin configuration node is a node of a group of pins which can be
|
||||
used for a specific device or function. This node represents both mux and config
|
||||
of the pins in that group. The 'mux' selects the function mode(also named mux
|
||||
mode) this pin can work on and the 'config' configures various pad settings
|
||||
such as pull-up, open drain, drive strength, etc.
|
||||
|
||||
Required properties for iomux controller:
|
||||
- compatible: "fsl,<soc>-iomuxc"
|
||||
Please refer to each fsl,<soc>-pinctrl.txt binding doc for supported SoCs.
|
||||
|
||||
Required properties for pin configuration node:
|
||||
- fsl,pins: each entry consists of 6 integers and represents the mux and config
|
||||
setting for one pin. The first 5 integers <mux_reg conf_reg input_reg mux_val
|
||||
input_val> are specified using a PIN_FUNC_ID macro, which can be found in
|
||||
imx*-pinfunc.h under device tree source folder. The last integer CONFIG is
|
||||
the pad setting value like pull-up on this pin. And that's why fsl,pins entry
|
||||
looks like <PIN_FUNC_ID CONFIG> in the example below.
|
||||
|
||||
Bits used for CONFIG:
|
||||
NO_PAD_CTL(1 << 31): indicate this pin does not need config.
|
||||
|
||||
SION(1 << 30): Software Input On Field.
|
||||
Force the selected mux mode input path no matter of MUX_MODE functionality.
|
||||
By default the input path is determined by functionality of the selected
|
||||
mux mode (regular).
|
||||
|
||||
Other bits are used for PAD setting.
|
||||
Please refer to each fsl,<soc>-pinctrl,txt binding doc for SoC specific part
|
||||
of bits definitions.
|
||||
|
||||
NOTE:
|
||||
Some requirements for using fsl,imx-pinctrl binding:
|
||||
1. We have pin function node defined under iomux controller node to represent
|
||||
what pinmux functions this SoC supports.
|
||||
2. The pin configuration node intends to work on a specific function should
|
||||
to be defined under that specific function node.
|
||||
The function node's name should represent well about what function
|
||||
this group of pins in this pin configuration node are working on.
|
||||
3. The driver can use the function node's name and pin configuration node's
|
||||
name describe the pin function and group hierarchy.
|
||||
For example, Linux IMX pinctrl driver takes the function node's name
|
||||
as the function name and pin configuration node's name as group name to
|
||||
create the map table.
|
||||
4. Each pin configuration node should have a phandle, devices can set pins
|
||||
configurations by referring to the phandle of that pin configuration node.
|
||||
|
||||
Examples:
|
||||
usdhc@219c000 { /* uSDHC4 */
|
||||
non-removable;
|
||||
vmmc-supply = <®_3p3v>;
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&pinctrl_usdhc4_1>;
|
||||
};
|
||||
|
||||
iomuxc@20e0000 {
|
||||
compatible = "fsl,imx6q-iomuxc";
|
||||
reg = <0x020e0000 0x4000>;
|
||||
|
||||
/* shared pinctrl settings */
|
||||
usdhc4 {
|
||||
pinctrl_usdhc4_1: usdhc4grp-1 {
|
||||
fsl,pins = <
|
||||
MX6QDL_PAD_SD4_CMD__SD4_CMD 0x17059
|
||||
MX6QDL_PAD_SD4_CLK__SD4_CLK 0x10059
|
||||
MX6QDL_PAD_SD4_DAT0__SD4_DATA0 0x17059
|
||||
MX6QDL_PAD_SD4_DAT1__SD4_DATA1 0x17059
|
||||
MX6QDL_PAD_SD4_DAT2__SD4_DATA2 0x17059
|
||||
MX6QDL_PAD_SD4_DAT3__SD4_DATA3 0x17059
|
||||
MX6QDL_PAD_SD4_DAT4__SD4_DATA4 0x17059
|
||||
MX6QDL_PAD_SD4_DAT5__SD4_DATA5 0x17059
|
||||
MX6QDL_PAD_SD4_DAT6__SD4_DATA6 0x17059
|
||||
MX6QDL_PAD_SD4_DAT7__SD4_DATA7 0x17059
|
||||
>;
|
||||
};
|
||||
....
|
||||
};
|
||||
Refer to the IOMUXC controller chapter in imx6q datasheet,
|
||||
0x17059 means enable hysteresis, 47KOhm Pull Up, 50Mhz speed,
|
||||
80Ohm driver strength and Fast Slew Rate.
|
||||
User should refer to each SoC spec to set the correct value.
|
23
bindings/pinctrl/fsl,imx25-pinctrl.txt
Normal file
23
bindings/pinctrl/fsl,imx25-pinctrl.txt
Normal file
@@ -0,0 +1,23 @@
|
||||
* Freescale IMX25 IOMUX Controller
|
||||
|
||||
Please refer to fsl,imx-pinctrl.txt in this directory for common binding part
|
||||
and usage.
|
||||
|
||||
CONFIG bits definition:
|
||||
PAD_CTL_HYS (1 << 8)
|
||||
PAD_CTL_PKE (1 << 7)
|
||||
PAD_CTL_PUE (1 << 6)
|
||||
PAD_CTL_PUS_100K_DOWN (0 << 4)
|
||||
PAD_CTL_PUS_47K_UP (1 << 4)
|
||||
PAD_CTL_PUS_100K_UP (2 << 4)
|
||||
PAD_CTL_PUS_22K_UP (3 << 4)
|
||||
PAD_CTL_ODE_CMOS (0 << 3)
|
||||
PAD_CTL_ODE_OPENDRAIN (1 << 3)
|
||||
PAD_CTL_DSE_NOMINAL (0 << 1)
|
||||
PAD_CTL_DSE_HIGH (1 << 1)
|
||||
PAD_CTL_DSE_MAX (2 << 1)
|
||||
PAD_CTL_SRE_FAST (1 << 0)
|
||||
PAD_CTL_SRE_SLOW (0 << 0)
|
||||
|
||||
Refer to imx25-pinfunc.h in device tree source folder for all available
|
||||
imx25 PIN_FUNC_ID.
|
121
bindings/pinctrl/fsl,imx27-pinctrl.txt
Normal file
121
bindings/pinctrl/fsl,imx27-pinctrl.txt
Normal file
@@ -0,0 +1,121 @@
|
||||
* Freescale IMX27 IOMUX Controller
|
||||
|
||||
Required properties:
|
||||
- compatible: "fsl,imx27-iomuxc"
|
||||
|
||||
The iomuxc driver node should define subnodes containing of pinctrl configuration subnodes.
|
||||
|
||||
Required properties for pin configuration node:
|
||||
- fsl,pins: three integers array, represents a group of pins mux and config
|
||||
setting. The format is fsl,pins = <PIN MUX_ID CONFIG>.
|
||||
|
||||
PIN is an integer between 0 and 0xbf. imx27 has 6 ports with 32 configurable
|
||||
configurable pins each. PIN is PORT * 32 + PORT_PIN, PORT_PIN is the pin
|
||||
number on the specific port (between 0 and 31).
|
||||
|
||||
MUX_ID is
|
||||
function + (direction << 2) + (gpio_oconf << 4) + (gpio_iconfa << 8) + (gpio_iconfb << 10)
|
||||
|
||||
function value is used to select the pin function.
|
||||
Possible values:
|
||||
0 - Primary function
|
||||
1 - Alternate function
|
||||
2 - GPIO
|
||||
Registers: GIUS (GPIO In Use), GPR (General Purpose Register)
|
||||
|
||||
direction defines the data direction of the pin.
|
||||
Possible values:
|
||||
0 - Input
|
||||
1 - Output
|
||||
Register: DDIR
|
||||
|
||||
gpio_oconf configures the gpio submodule output signal. This does not
|
||||
have any effect unless GPIO function is selected. A/B/C_IN are output
|
||||
signals of function blocks A,B and C. Specific function blocks are
|
||||
described in the reference manual.
|
||||
Possible values:
|
||||
0 - A_IN
|
||||
1 - B_IN
|
||||
2 - C_IN
|
||||
3 - Data Register
|
||||
Registers: OCR1, OCR2
|
||||
|
||||
gpio_iconfa/b configures the gpio submodule input to functionblocks A and
|
||||
B. GPIO function should be selected if this is configured.
|
||||
Possible values:
|
||||
0 - GPIO_IN
|
||||
1 - Interrupt Status Register
|
||||
2 - Pulldown
|
||||
3 - Pullup
|
||||
Registers ICONFA1, ICONFA2, ICONFB1 and ICONFB2
|
||||
|
||||
CONFIG can be 0 or 1, meaning Pullup disable/enable.
|
||||
|
||||
|
||||
The iomux controller has gpio child nodes which are embedded in the iomux
|
||||
control registers. They have to be defined as child nodes of the iomux device
|
||||
node. If gpio subnodes are defined "#address-cells", "#size-cells" and "ranges"
|
||||
properties for the iomux device node are required.
|
||||
|
||||
Example:
|
||||
|
||||
iomuxc: iomuxc@10015000 {
|
||||
compatible = "fsl,imx27-iomuxc";
|
||||
reg = <0x10015000 0x600>;
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
ranges;
|
||||
|
||||
gpio1: gpio@10015000 {
|
||||
...
|
||||
};
|
||||
|
||||
...
|
||||
|
||||
uart {
|
||||
pinctrl_uart1: uart-1 {
|
||||
fsl,pins = <
|
||||
0x8c 0x004 0x0 /* UART1_TXD__UART1_TXD */
|
||||
0x8d 0x000 0x0 /* UART1_RXD__UART1_RXD */
|
||||
0x8e 0x004 0x0 /* UART1_CTS__UART1_CTS */
|
||||
0x8f 0x000 0x0 /* UART1_RTS__UART1_RTS */
|
||||
>;
|
||||
};
|
||||
|
||||
...
|
||||
};
|
||||
};
|
||||
|
||||
|
||||
For convenience there are macros defined in imx27-pinfunc.h which provide PIN
|
||||
and MUX_ID. They are structured as MX27_PAD_<Pad name>__<Signal name>. The names
|
||||
are defined in the i.MX27 reference manual.
|
||||
|
||||
The above example using macros:
|
||||
|
||||
iomuxc: iomuxc@10015000 {
|
||||
compatible = "fsl,imx27-iomuxc";
|
||||
reg = <0x10015000 0x600>;
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
ranges;
|
||||
|
||||
gpio1: gpio@10015000 {
|
||||
...
|
||||
};
|
||||
|
||||
...
|
||||
|
||||
uart {
|
||||
pinctrl_uart1: uart-1 {
|
||||
fsl,pins = <
|
||||
MX27_PAD_UART1_TXD__UART1_TXD 0x0
|
||||
MX27_PAD_UART1_RXD__UART1_RXD 0x0
|
||||
MX27_PAD_UART1_CTS__UART1_CTS 0x0
|
||||
MX27_PAD_UART1_RTS__UART1_RTS 0x0
|
||||
>;
|
||||
};
|
||||
|
||||
...
|
||||
};
|
||||
};
|
33
bindings/pinctrl/fsl,imx35-pinctrl.txt
Normal file
33
bindings/pinctrl/fsl,imx35-pinctrl.txt
Normal file
@@ -0,0 +1,33 @@
|
||||
* Freescale IMX35 IOMUX Controller
|
||||
|
||||
Please refer to fsl,imx-pinctrl.txt in this directory for common binding part
|
||||
and usage.
|
||||
|
||||
Required properties:
|
||||
- compatible: "fsl,imx35-iomuxc"
|
||||
- fsl,pins: two integers array, represents a group of pins mux and config
|
||||
setting. The format is fsl,pins = <PIN_FUNC_ID CONFIG>, PIN_FUNC_ID is a
|
||||
pin working on a specific function, CONFIG is the pad setting value like
|
||||
pull-up for this pin. Please refer to imx35 datasheet for the valid pad
|
||||
config settings.
|
||||
|
||||
CONFIG bits definition:
|
||||
PAD_CTL_DRIVE_VOLAGAGE_18 (1 << 13)
|
||||
PAD_CTL_DRIVE_VOLAGAGE_33 (0 << 13)
|
||||
PAD_CTL_HYS (1 << 8)
|
||||
PAD_CTL_PKE (1 << 7)
|
||||
PAD_CTL_PUE (1 << 6)
|
||||
PAD_CTL_PUS_100K_DOWN (0 << 4)
|
||||
PAD_CTL_PUS_47K_UP (1 << 4)
|
||||
PAD_CTL_PUS_100K_UP (2 << 4)
|
||||
PAD_CTL_PUS_22K_UP (3 << 4)
|
||||
PAD_CTL_ODE_CMOS (0 << 3)
|
||||
PAD_CTL_ODE_OPENDRAIN (1 << 3)
|
||||
PAD_CTL_DSE_NOMINAL (0 << 1)
|
||||
PAD_CTL_DSE_HIGH (1 << 1)
|
||||
PAD_CTL_DSE_MAX (2 << 1)
|
||||
PAD_CTL_SRE_FAST (1 << 0)
|
||||
PAD_CTL_SRE_SLOW (0 << 0)
|
||||
|
||||
Refer to imx35-pinfunc.h in device tree source folder for all available
|
||||
imx35 PIN_FUNC_ID.
|
32
bindings/pinctrl/fsl,imx50-pinctrl.txt
Normal file
32
bindings/pinctrl/fsl,imx50-pinctrl.txt
Normal file
@@ -0,0 +1,32 @@
|
||||
* Freescale IMX50 IOMUX Controller
|
||||
|
||||
Please refer to fsl,imx-pinctrl.txt in this directory for common binding part
|
||||
and usage.
|
||||
|
||||
Required properties:
|
||||
- compatible: "fsl,imx50-iomuxc"
|
||||
- fsl,pins: two integers array, represents a group of pins mux and config
|
||||
setting. The format is fsl,pins = <PIN_FUNC_ID CONFIG>, PIN_FUNC_ID is a
|
||||
pin working on a specific function, CONFIG is the pad setting value like
|
||||
pull-up for this pin. Please refer to imx50 datasheet for the valid pad
|
||||
config settings.
|
||||
|
||||
CONFIG bits definition:
|
||||
PAD_CTL_HVE (1 << 13)
|
||||
PAD_CTL_HYS (1 << 8)
|
||||
PAD_CTL_PKE (1 << 7)
|
||||
PAD_CTL_PUE (1 << 6)
|
||||
PAD_CTL_PUS_100K_DOWN (0 << 4)
|
||||
PAD_CTL_PUS_47K_UP (1 << 4)
|
||||
PAD_CTL_PUS_100K_UP (2 << 4)
|
||||
PAD_CTL_PUS_22K_UP (3 << 4)
|
||||
PAD_CTL_ODE (1 << 3)
|
||||
PAD_CTL_DSE_LOW (0 << 1)
|
||||
PAD_CTL_DSE_MED (1 << 1)
|
||||
PAD_CTL_DSE_HIGH (2 << 1)
|
||||
PAD_CTL_DSE_MAX (3 << 1)
|
||||
PAD_CTL_SRE_FAST (1 << 0)
|
||||
PAD_CTL_SRE_SLOW (0 << 0)
|
||||
|
||||
Refer to imx50-pinfunc.h in device tree source folder for all available
|
||||
imx50 PIN_FUNC_ID.
|
32
bindings/pinctrl/fsl,imx51-pinctrl.txt
Normal file
32
bindings/pinctrl/fsl,imx51-pinctrl.txt
Normal file
@@ -0,0 +1,32 @@
|
||||
* Freescale IMX51 IOMUX Controller
|
||||
|
||||
Please refer to fsl,imx-pinctrl.txt in this directory for common binding part
|
||||
and usage.
|
||||
|
||||
Required properties:
|
||||
- compatible: "fsl,imx51-iomuxc"
|
||||
- fsl,pins: two integers array, represents a group of pins mux and config
|
||||
setting. The format is fsl,pins = <PIN_FUNC_ID CONFIG>, PIN_FUNC_ID is a
|
||||
pin working on a specific function, CONFIG is the pad setting value like
|
||||
pull-up for this pin. Please refer to imx51 datasheet for the valid pad
|
||||
config settings.
|
||||
|
||||
CONFIG bits definition:
|
||||
PAD_CTL_HVE (1 << 13)
|
||||
PAD_CTL_HYS (1 << 8)
|
||||
PAD_CTL_PKE (1 << 7)
|
||||
PAD_CTL_PUE (1 << 6)
|
||||
PAD_CTL_PUS_100K_DOWN (0 << 4)
|
||||
PAD_CTL_PUS_47K_UP (1 << 4)
|
||||
PAD_CTL_PUS_100K_UP (2 << 4)
|
||||
PAD_CTL_PUS_22K_UP (3 << 4)
|
||||
PAD_CTL_ODE (1 << 3)
|
||||
PAD_CTL_DSE_LOW (0 << 1)
|
||||
PAD_CTL_DSE_MED (1 << 1)
|
||||
PAD_CTL_DSE_HIGH (2 << 1)
|
||||
PAD_CTL_DSE_MAX (3 << 1)
|
||||
PAD_CTL_SRE_FAST (1 << 0)
|
||||
PAD_CTL_SRE_SLOW (0 << 0)
|
||||
|
||||
Refer to imx51-pinfunc.h in device tree source folder for all available
|
||||
imx51 PIN_FUNC_ID.
|
32
bindings/pinctrl/fsl,imx53-pinctrl.txt
Normal file
32
bindings/pinctrl/fsl,imx53-pinctrl.txt
Normal file
@@ -0,0 +1,32 @@
|
||||
* Freescale IMX53 IOMUX Controller
|
||||
|
||||
Please refer to fsl,imx-pinctrl.txt in this directory for common binding part
|
||||
and usage.
|
||||
|
||||
Required properties:
|
||||
- compatible: "fsl,imx53-iomuxc"
|
||||
- fsl,pins: two integers array, represents a group of pins mux and config
|
||||
setting. The format is fsl,pins = <PIN_FUNC_ID CONFIG>, PIN_FUNC_ID is a
|
||||
pin working on a specific function, CONFIG is the pad setting value like
|
||||
pull-up for this pin. Please refer to imx53 datasheet for the valid pad
|
||||
config settings.
|
||||
|
||||
CONFIG bits definition:
|
||||
PAD_CTL_HVE (1 << 13)
|
||||
PAD_CTL_HYS (1 << 8)
|
||||
PAD_CTL_PKE (1 << 7)
|
||||
PAD_CTL_PUE (1 << 6)
|
||||
PAD_CTL_PUS_100K_DOWN (0 << 4)
|
||||
PAD_CTL_PUS_47K_UP (1 << 4)
|
||||
PAD_CTL_PUS_100K_UP (2 << 4)
|
||||
PAD_CTL_PUS_22K_UP (3 << 4)
|
||||
PAD_CTL_ODE (1 << 3)
|
||||
PAD_CTL_DSE_LOW (0 << 1)
|
||||
PAD_CTL_DSE_MED (1 << 1)
|
||||
PAD_CTL_DSE_HIGH (2 << 1)
|
||||
PAD_CTL_DSE_MAX (3 << 1)
|
||||
PAD_CTL_SRE_FAST (1 << 0)
|
||||
PAD_CTL_SRE_SLOW (0 << 0)
|
||||
|
||||
Refer to imx53-pinfunc.h in device tree source folder for all available
|
||||
imx53 PIN_FUNC_ID.
|
38
bindings/pinctrl/fsl,imx6dl-pinctrl.txt
Normal file
38
bindings/pinctrl/fsl,imx6dl-pinctrl.txt
Normal file
@@ -0,0 +1,38 @@
|
||||
* Freescale IMX6 DualLite/Solo IOMUX Controller
|
||||
|
||||
Please refer to fsl,imx-pinctrl.txt in this directory for common binding part
|
||||
and usage.
|
||||
|
||||
Required properties:
|
||||
- compatible: "fsl,imx6dl-iomuxc"
|
||||
- fsl,pins: two integers array, represents a group of pins mux and config
|
||||
setting. The format is fsl,pins = <PIN_FUNC_ID CONFIG>, PIN_FUNC_ID is a
|
||||
pin working on a specific function, CONFIG is the pad setting value like
|
||||
pull-up for this pin. Please refer to imx6dl datasheet for the valid pad
|
||||
config settings.
|
||||
|
||||
CONFIG bits definition:
|
||||
PAD_CTL_HYS (1 << 16)
|
||||
PAD_CTL_PUS_100K_DOWN (0 << 14)
|
||||
PAD_CTL_PUS_47K_UP (1 << 14)
|
||||
PAD_CTL_PUS_100K_UP (2 << 14)
|
||||
PAD_CTL_PUS_22K_UP (3 << 14)
|
||||
PAD_CTL_PUE (1 << 13)
|
||||
PAD_CTL_PKE (1 << 12)
|
||||
PAD_CTL_ODE (1 << 11)
|
||||
PAD_CTL_SPEED_LOW (1 << 6)
|
||||
PAD_CTL_SPEED_MED (2 << 6)
|
||||
PAD_CTL_SPEED_HIGH (3 << 6)
|
||||
PAD_CTL_DSE_DISABLE (0 << 3)
|
||||
PAD_CTL_DSE_240ohm (1 << 3)
|
||||
PAD_CTL_DSE_120ohm (2 << 3)
|
||||
PAD_CTL_DSE_80ohm (3 << 3)
|
||||
PAD_CTL_DSE_60ohm (4 << 3)
|
||||
PAD_CTL_DSE_48ohm (5 << 3)
|
||||
PAD_CTL_DSE_40ohm (6 << 3)
|
||||
PAD_CTL_DSE_34ohm (7 << 3)
|
||||
PAD_CTL_SRE_FAST (1 << 0)
|
||||
PAD_CTL_SRE_SLOW (0 << 0)
|
||||
|
||||
Refer to imx6dl-pinfunc.h in device tree source folder for all available
|
||||
imx6dl PIN_FUNC_ID.
|
38
bindings/pinctrl/fsl,imx6q-pinctrl.txt
Normal file
38
bindings/pinctrl/fsl,imx6q-pinctrl.txt
Normal file
@@ -0,0 +1,38 @@
|
||||
* Freescale IMX6Q IOMUX Controller
|
||||
|
||||
Please refer to fsl,imx-pinctrl.txt in this directory for common binding part
|
||||
and usage.
|
||||
|
||||
Required properties:
|
||||
- compatible: "fsl,imx6q-iomuxc"
|
||||
- fsl,pins: two integers array, represents a group of pins mux and config
|
||||
setting. The format is fsl,pins = <PIN_FUNC_ID CONFIG>, PIN_FUNC_ID is a
|
||||
pin working on a specific function, CONFIG is the pad setting value like
|
||||
pull-up for this pin. Please refer to imx6q datasheet for the valid pad
|
||||
config settings.
|
||||
|
||||
CONFIG bits definition:
|
||||
PAD_CTL_HYS (1 << 16)
|
||||
PAD_CTL_PUS_100K_DOWN (0 << 14)
|
||||
PAD_CTL_PUS_47K_UP (1 << 14)
|
||||
PAD_CTL_PUS_100K_UP (2 << 14)
|
||||
PAD_CTL_PUS_22K_UP (3 << 14)
|
||||
PAD_CTL_PUE (1 << 13)
|
||||
PAD_CTL_PKE (1 << 12)
|
||||
PAD_CTL_ODE (1 << 11)
|
||||
PAD_CTL_SPEED_LOW (1 << 6)
|
||||
PAD_CTL_SPEED_MED (2 << 6)
|
||||
PAD_CTL_SPEED_HIGH (3 << 6)
|
||||
PAD_CTL_DSE_DISABLE (0 << 3)
|
||||
PAD_CTL_DSE_240ohm (1 << 3)
|
||||
PAD_CTL_DSE_120ohm (2 << 3)
|
||||
PAD_CTL_DSE_80ohm (3 << 3)
|
||||
PAD_CTL_DSE_60ohm (4 << 3)
|
||||
PAD_CTL_DSE_48ohm (5 << 3)
|
||||
PAD_CTL_DSE_40ohm (6 << 3)
|
||||
PAD_CTL_DSE_34ohm (7 << 3)
|
||||
PAD_CTL_SRE_FAST (1 << 0)
|
||||
PAD_CTL_SRE_SLOW (0 << 0)
|
||||
|
||||
Refer to imx6q-pinfunc.h in device tree source folder for all available
|
||||
imx6q PIN_FUNC_ID.
|
39
bindings/pinctrl/fsl,imx6sl-pinctrl.txt
Normal file
39
bindings/pinctrl/fsl,imx6sl-pinctrl.txt
Normal file
@@ -0,0 +1,39 @@
|
||||
* Freescale IMX6 SoloLite IOMUX Controller
|
||||
|
||||
Please refer to fsl,imx-pinctrl.txt in this directory for common binding part
|
||||
and usage.
|
||||
|
||||
Required properties:
|
||||
- compatible: "fsl,imx6sl-iomuxc"
|
||||
- fsl,pins: two integers array, represents a group of pins mux and config
|
||||
setting. The format is fsl,pins = <PIN_FUNC_ID CONFIG>, PIN_FUNC_ID is a
|
||||
pin working on a specific function, CONFIG is the pad setting value like
|
||||
pull-up for this pin. Please refer to imx6sl datasheet for the valid pad
|
||||
config settings.
|
||||
|
||||
CONFIG bits definition:
|
||||
PAD_CTL_LVE (1 << 22)
|
||||
PAD_CTL_HYS (1 << 16)
|
||||
PAD_CTL_PUS_100K_DOWN (0 << 14)
|
||||
PAD_CTL_PUS_47K_UP (1 << 14)
|
||||
PAD_CTL_PUS_100K_UP (2 << 14)
|
||||
PAD_CTL_PUS_22K_UP (3 << 14)
|
||||
PAD_CTL_PUE (1 << 13)
|
||||
PAD_CTL_PKE (1 << 12)
|
||||
PAD_CTL_ODE (1 << 11)
|
||||
PAD_CTL_SPEED_LOW (1 << 6)
|
||||
PAD_CTL_SPEED_MED (2 << 6)
|
||||
PAD_CTL_SPEED_HIGH (3 << 6)
|
||||
PAD_CTL_DSE_DISABLE (0 << 3)
|
||||
PAD_CTL_DSE_240ohm (1 << 3)
|
||||
PAD_CTL_DSE_120ohm (2 << 3)
|
||||
PAD_CTL_DSE_80ohm (3 << 3)
|
||||
PAD_CTL_DSE_60ohm (4 << 3)
|
||||
PAD_CTL_DSE_48ohm (5 << 3)
|
||||
PAD_CTL_DSE_40ohm (6 << 3)
|
||||
PAD_CTL_DSE_34ohm (7 << 3)
|
||||
PAD_CTL_SRE_FAST (1 << 0)
|
||||
PAD_CTL_SRE_SLOW (0 << 0)
|
||||
|
||||
Refer to imx6sl-pinfunc.h in device tree source folder for all available
|
||||
imx6sl PIN_FUNC_ID.
|
40
bindings/pinctrl/fsl,imx6sll-pinctrl.txt
Normal file
40
bindings/pinctrl/fsl,imx6sll-pinctrl.txt
Normal file
@@ -0,0 +1,40 @@
|
||||
* Freescale i.MX6 SLL IOMUX Controller
|
||||
|
||||
Please refer to fsl,imx-pinctrl.txt in this directory for common binding part
|
||||
and usage.
|
||||
|
||||
Required properties:
|
||||
- compatible: "fsl,imx6sll-iomuxc"
|
||||
- fsl,pins: each entry consists of 6 integers and represents the mux and config
|
||||
setting for one pin. The first 5 integers <mux_reg conf_reg input_reg mux_val
|
||||
input_val> are specified using a PIN_FUNC_ID macro, which can be found in
|
||||
imx6sll-pinfunc.h under device tree source folder. The last integer CONFIG is
|
||||
the pad setting value like pull-up on this pin. Please refer to i.MX6SLL
|
||||
Reference Manual for detailed CONFIG settings.
|
||||
|
||||
CONFIG bits definition:
|
||||
PAD_CTL_LVE (1 << 22)
|
||||
PAD_CTL_HYS (1 << 16)
|
||||
PAD_CTL_PUS_100K_DOWN (0 << 14)
|
||||
PAD_CTL_PUS_47K_UP (1 << 14)
|
||||
PAD_CTL_PUS_100K_UP (2 << 14)
|
||||
PAD_CTL_PUS_22K_UP (3 << 14)
|
||||
PAD_CTL_PUE (1 << 13)
|
||||
PAD_CTL_PKE (1 << 12)
|
||||
PAD_CTL_ODE (1 << 11)
|
||||
PAD_CTL_SPEED_LOW (0 << 6)
|
||||
PAD_CTL_SPEED_MED (1 << 6)
|
||||
PAD_CTL_SPEED_HIGH (3 << 6)
|
||||
PAD_CTL_DSE_DISABLE (0 << 3)
|
||||
PAD_CTL_DSE_260ohm (1 << 3)
|
||||
PAD_CTL_DSE_130ohm (2 << 3)
|
||||
PAD_CTL_DSE_87ohm (3 << 3)
|
||||
PAD_CTL_DSE_65ohm (4 << 3)
|
||||
PAD_CTL_DSE_52ohm (5 << 3)
|
||||
PAD_CTL_DSE_43ohm (6 << 3)
|
||||
PAD_CTL_DSE_37ohm (7 << 3)
|
||||
PAD_CTL_SRE_FAST (1 << 0)
|
||||
PAD_CTL_SRE_SLOW (0 << 0)
|
||||
|
||||
Refer to imx6sll-pinfunc.h in device tree source folder for all available
|
||||
imx6sll PIN_FUNC_ID.
|
36
bindings/pinctrl/fsl,imx6sx-pinctrl.txt
Normal file
36
bindings/pinctrl/fsl,imx6sx-pinctrl.txt
Normal file
@@ -0,0 +1,36 @@
|
||||
* Freescale i.MX6 SoloX IOMUX Controller
|
||||
|
||||
Please refer to fsl,imx-pinctrl.txt in this directory for common binding part
|
||||
and usage.
|
||||
|
||||
Required properties:
|
||||
- compatible: "fsl,imx6sx-iomuxc"
|
||||
- fsl,pins: each entry consists of 6 integers and represents the mux and config
|
||||
setting for one pin. The first 5 integers <mux_reg conf_reg input_reg mux_val
|
||||
input_val> are specified using a PIN_FUNC_ID macro, which can be found in
|
||||
imx6sx-pinfunc.h under device tree source folder. The last integer CONFIG is
|
||||
the pad setting value like pull-up on this pin. Please refer to i.MX6 SoloX
|
||||
Reference Manual for detailed CONFIG settings.
|
||||
|
||||
CONFIG bits definition:
|
||||
PAD_CTL_HYS (1 << 16)
|
||||
PAD_CTL_PUS_100K_DOWN (0 << 14)
|
||||
PAD_CTL_PUS_47K_UP (1 << 14)
|
||||
PAD_CTL_PUS_100K_UP (2 << 14)
|
||||
PAD_CTL_PUS_22K_UP (3 << 14)
|
||||
PAD_CTL_PUE (1 << 13)
|
||||
PAD_CTL_PKE (1 << 12)
|
||||
PAD_CTL_ODE (1 << 11)
|
||||
PAD_CTL_SPEED_LOW (0 << 6)
|
||||
PAD_CTL_SPEED_MED (1 << 6)
|
||||
PAD_CTL_SPEED_HIGH (3 << 6)
|
||||
PAD_CTL_DSE_DISABLE (0 << 3)
|
||||
PAD_CTL_DSE_260ohm (1 << 3)
|
||||
PAD_CTL_DSE_130ohm (2 << 3)
|
||||
PAD_CTL_DSE_87ohm (3 << 3)
|
||||
PAD_CTL_DSE_65ohm (4 << 3)
|
||||
PAD_CTL_DSE_52ohm (5 << 3)
|
||||
PAD_CTL_DSE_43ohm (6 << 3)
|
||||
PAD_CTL_DSE_37ohm (7 << 3)
|
||||
PAD_CTL_SRE_FAST (1 << 0)
|
||||
PAD_CTL_SRE_SLOW (0 << 0)
|
37
bindings/pinctrl/fsl,imx6ul-pinctrl.txt
Normal file
37
bindings/pinctrl/fsl,imx6ul-pinctrl.txt
Normal file
@@ -0,0 +1,37 @@
|
||||
* Freescale i.MX6 UltraLite IOMUX Controller
|
||||
|
||||
Please refer to fsl,imx-pinctrl.txt in this directory for common binding part
|
||||
and usage.
|
||||
|
||||
Required properties:
|
||||
- compatible: "fsl,imx6ul-iomuxc" for main IOMUX controller or
|
||||
"fsl,imx6ull-iomuxc-snvs" for i.MX 6ULL's SNVS IOMUX controller.
|
||||
- fsl,pins: each entry consists of 6 integers and represents the mux and config
|
||||
setting for one pin. The first 5 integers <mux_reg conf_reg input_reg mux_val
|
||||
input_val> are specified using a PIN_FUNC_ID macro, which can be found in
|
||||
imx6ul-pinfunc.h under device tree source folder. The last integer CONFIG is
|
||||
the pad setting value like pull-up on this pin. Please refer to i.MX6 UltraLite
|
||||
Reference Manual for detailed CONFIG settings.
|
||||
|
||||
CONFIG bits definition:
|
||||
PAD_CTL_HYS (1 << 16)
|
||||
PAD_CTL_PUS_100K_DOWN (0 << 14)
|
||||
PAD_CTL_PUS_47K_UP (1 << 14)
|
||||
PAD_CTL_PUS_100K_UP (2 << 14)
|
||||
PAD_CTL_PUS_22K_UP (3 << 14)
|
||||
PAD_CTL_PUE (1 << 13)
|
||||
PAD_CTL_PKE (1 << 12)
|
||||
PAD_CTL_ODE (1 << 11)
|
||||
PAD_CTL_SPEED_LOW (0 << 6)
|
||||
PAD_CTL_SPEED_MED (1 << 6)
|
||||
PAD_CTL_SPEED_HIGH (3 << 6)
|
||||
PAD_CTL_DSE_DISABLE (0 << 3)
|
||||
PAD_CTL_DSE_260ohm (1 << 3)
|
||||
PAD_CTL_DSE_130ohm (2 << 3)
|
||||
PAD_CTL_DSE_87ohm (3 << 3)
|
||||
PAD_CTL_DSE_65ohm (4 << 3)
|
||||
PAD_CTL_DSE_52ohm (5 << 3)
|
||||
PAD_CTL_DSE_43ohm (6 << 3)
|
||||
PAD_CTL_DSE_37ohm (7 << 3)
|
||||
PAD_CTL_SRE_FAST (1 << 0)
|
||||
PAD_CTL_SRE_SLOW (0 << 0)
|
113
bindings/pinctrl/fsl,imx7d-pinctrl.yaml
Normal file
113
bindings/pinctrl/fsl,imx7d-pinctrl.yaml
Normal file
@@ -0,0 +1,113 @@
|
||||
# SPDX-License-Identifier: GPL-2.0
|
||||
%YAML 1.2
|
||||
---
|
||||
$id: http://devicetree.org/schemas/pinctrl/fsl,imx7d-pinctrl.yaml#
|
||||
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
||||
|
||||
title: Freescale IMX7D IOMUX Controller
|
||||
|
||||
maintainers:
|
||||
- Dong Aisheng <aisheng.dong@nxp.com>
|
||||
|
||||
description:
|
||||
Please refer to fsl,imx-pinctrl.txt and pinctrl-bindings.txt in this directory
|
||||
for common binding part and usage.
|
||||
|
||||
properties:
|
||||
compatible:
|
||||
oneOf:
|
||||
- enum:
|
||||
- fsl,imx7d-iomuxc
|
||||
- fsl,imx7d-iomuxc-lpsr
|
||||
|
||||
reg:
|
||||
maxItems: 1
|
||||
|
||||
fsl,input-sel:
|
||||
description:
|
||||
phandle for main iomuxc controller which shares the input select
|
||||
register for daisy chain settings.
|
||||
$ref: /schemas/types.yaml#/definitions/phandle
|
||||
|
||||
# Client device subnode's properties
|
||||
patternProperties:
|
||||
'grp$':
|
||||
type: object
|
||||
description:
|
||||
Pinctrl node's client devices use subnodes for desired pin configuration.
|
||||
Client device subnodes use below standard properties.
|
||||
|
||||
properties:
|
||||
fsl,pins:
|
||||
description:
|
||||
each entry consists of 6 integers and represents the mux and config
|
||||
setting for one pin. The first 5 integers <mux_reg conf_reg input_reg
|
||||
mux_val input_val> are specified using a PIN_FUNC_ID macro, which can
|
||||
be found in <arch/arm/boot/dts/imx7d-pinfunc.h>. The last integer
|
||||
CONFIG is the pad setting value like pull-up on this pin. Please
|
||||
refer to i.MX7D Reference Manual for detailed CONFIG settings.
|
||||
$ref: /schemas/types.yaml#/definitions/uint32-matrix
|
||||
items:
|
||||
items:
|
||||
- description: |
|
||||
"mux_reg" indicates the offset of mux register.
|
||||
- description: |
|
||||
"conf_reg" indicates the offset of pad configuration register.
|
||||
- description: |
|
||||
"input_reg" indicates the offset of select input register.
|
||||
- description: |
|
||||
"mux_val" indicates the mux value to be applied.
|
||||
- description: |
|
||||
"input_val" indicates the select input value to be applied.
|
||||
- description: |
|
||||
"pad_setting" indicates the pad configuration value to be applied.
|
||||
|
||||
required:
|
||||
- fsl,pins
|
||||
|
||||
additionalProperties: false
|
||||
|
||||
allOf:
|
||||
- $ref: "pinctrl.yaml#"
|
||||
|
||||
required:
|
||||
- compatible
|
||||
- reg
|
||||
|
||||
if:
|
||||
properties:
|
||||
compatible:
|
||||
contains:
|
||||
enum:
|
||||
- fsl,imx7d-iomuxc-lpsr
|
||||
|
||||
then:
|
||||
required:
|
||||
- fsl,input-sel
|
||||
|
||||
additionalProperties: false
|
||||
|
||||
examples:
|
||||
- |
|
||||
iomuxc: pinctrl@30330000 {
|
||||
compatible = "fsl,imx7d-iomuxc";
|
||||
reg = <0x30330000 0x10000>;
|
||||
|
||||
pinctrl_uart5: uart5grp {
|
||||
fsl,pins =
|
||||
<0x0160 0x03D0 0x0714 0x1 0x0 0x7e>,
|
||||
<0x0164 0x03D4 0x0000 0x1 0x0 0x76>;
|
||||
};
|
||||
};
|
||||
- |
|
||||
iomuxc_lpsr: pinctrl@302c0000 {
|
||||
compatible = "fsl,imx7d-iomuxc-lpsr";
|
||||
reg = <0x302c0000 0x10000>;
|
||||
fsl,input-sel = <&iomuxc>;
|
||||
|
||||
pinctrl_gpio_lpsr: gpio1-grp {
|
||||
fsl,pins =
|
||||
<0x0008 0x0038 0x0000 0x0 0x0 0x59>,
|
||||
<0x000C 0x003C 0x0000 0x0 0x0 0x59>;
|
||||
};
|
||||
};
|
53
bindings/pinctrl/fsl,imx7ulp-pinctrl.txt
Normal file
53
bindings/pinctrl/fsl,imx7ulp-pinctrl.txt
Normal file
@@ -0,0 +1,53 @@
|
||||
* Freescale i.MX7ULP IOMUX Controller
|
||||
|
||||
i.MX 7ULP has three IOMUXC instances: IOMUXC0 for M4 ports, IOMUXC1 for A7
|
||||
ports and IOMUXC DDR for DDR interface.
|
||||
|
||||
Note:
|
||||
This binding doc is only for the IOMUXC1 support in A7 Domain and it only
|
||||
supports generic pin config.
|
||||
|
||||
Please refer to fsl,imx-pinctrl.txt in this directory for common binding
|
||||
part and usage.
|
||||
|
||||
Required properties:
|
||||
- compatible: "fsl,imx7ulp-iomuxc1".
|
||||
- fsl,pins: Each entry consists of 5 integers which represents the mux
|
||||
and config setting for one pin. The first 4 integers
|
||||
<mux_conf_reg input_reg mux_mode input_val> are specified
|
||||
using a PIN_FUNC_ID macro, which can be found in
|
||||
imx7ulp-pinfunc.h in the device tree source folder.
|
||||
The last integer CONFIG is the pad setting value like
|
||||
pull-up on this pin.
|
||||
|
||||
Please refer to i.MX7ULP Reference Manual for detailed
|
||||
CONFIG settings.
|
||||
|
||||
CONFIG bits definition:
|
||||
PAD_CTL_OBE (1 << 17)
|
||||
PAD_CTL_IBE (1 << 16)
|
||||
PAD_CTL_LK (1 << 16)
|
||||
PAD_CTL_DSE_HI (1 << 6)
|
||||
PAD_CTL_DSE_STD (0 << 6)
|
||||
PAD_CTL_ODE (1 << 5)
|
||||
PAD_CTL_PUSH_PULL (0 << 5)
|
||||
PAD_CTL_SRE_SLOW (1 << 2)
|
||||
PAD_CTL_SRE_STD (0 << 2)
|
||||
PAD_CTL_PE (1 << 0)
|
||||
|
||||
Examples:
|
||||
#include "imx7ulp-pinfunc.h"
|
||||
|
||||
/* Pin Controller Node */
|
||||
iomuxc1: pinctrl@40ac0000 {
|
||||
compatible = "fsl,imx7ulp-iomuxc1";
|
||||
reg = <0x40ac0000 0x1000>;
|
||||
|
||||
/* Pin Configuration Node */
|
||||
pinctrl_lpuart4: lpuart4grp {
|
||||
fsl,pins = <
|
||||
IMX7ULP_PAD_PTC3__LPUART4_RX 0x1
|
||||
IMX7ULP_PAD_PTC2__LPUART4_TX 0x1
|
||||
>;
|
||||
};
|
||||
};
|
84
bindings/pinctrl/fsl,imx8mm-pinctrl.yaml
Normal file
84
bindings/pinctrl/fsl,imx8mm-pinctrl.yaml
Normal file
@@ -0,0 +1,84 @@
|
||||
# SPDX-License-Identifier: GPL-2.0
|
||||
%YAML 1.2
|
||||
---
|
||||
$id: http://devicetree.org/schemas/pinctrl/fsl,imx8mm-pinctrl.yaml#
|
||||
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
||||
|
||||
title: Freescale IMX8MM IOMUX Controller
|
||||
|
||||
maintainers:
|
||||
- Anson Huang <Anson.Huang@nxp.com>
|
||||
|
||||
description:
|
||||
Please refer to fsl,imx-pinctrl.txt and pinctrl-bindings.txt in this directory
|
||||
for common binding part and usage.
|
||||
|
||||
properties:
|
||||
compatible:
|
||||
const: fsl,imx8mm-iomuxc
|
||||
|
||||
reg:
|
||||
maxItems: 1
|
||||
|
||||
# Client device subnode's properties
|
||||
patternProperties:
|
||||
'grp$':
|
||||
type: object
|
||||
description:
|
||||
Pinctrl node's client devices use subnodes for desired pin configuration.
|
||||
Client device subnodes use below standard properties.
|
||||
|
||||
properties:
|
||||
fsl,pins:
|
||||
description:
|
||||
each entry consists of 6 integers and represents the mux and config
|
||||
setting for one pin. The first 5 integers <mux_reg conf_reg input_reg
|
||||
mux_val input_val> are specified using a PIN_FUNC_ID macro, which can
|
||||
be found in <arch/arm64/boot/dts/freescale/imx8mm-pinfunc.h>. The last
|
||||
integer CONFIG is the pad setting value like pull-up on this pin. Please
|
||||
refer to i.MX8M Mini Reference Manual for detailed CONFIG settings.
|
||||
$ref: /schemas/types.yaml#/definitions/uint32-matrix
|
||||
items:
|
||||
items:
|
||||
- description: |
|
||||
"mux_reg" indicates the offset of mux register.
|
||||
- description: |
|
||||
"conf_reg" indicates the offset of pad configuration register.
|
||||
- description: |
|
||||
"input_reg" indicates the offset of select input register.
|
||||
- description: |
|
||||
"mux_val" indicates the mux value to be applied.
|
||||
- description: |
|
||||
"input_val" indicates the select input value to be applied.
|
||||
- description: |
|
||||
"pad_setting" indicates the pad configuration value to be applied.
|
||||
|
||||
required:
|
||||
- fsl,pins
|
||||
|
||||
additionalProperties: false
|
||||
|
||||
allOf:
|
||||
- $ref: "pinctrl.yaml#"
|
||||
|
||||
required:
|
||||
- compatible
|
||||
- reg
|
||||
|
||||
additionalProperties: false
|
||||
|
||||
examples:
|
||||
# Pinmux controller node
|
||||
- |
|
||||
iomuxc: pinctrl@30330000 {
|
||||
compatible = "fsl,imx8mm-iomuxc";
|
||||
reg = <0x30330000 0x10000>;
|
||||
|
||||
pinctrl_uart2: uart2grp {
|
||||
fsl,pins =
|
||||
<0x23C 0x4A4 0x4FC 0x0 0x0 0x140>,
|
||||
<0x240 0x4A8 0x000 0x0 0x0 0x140>;
|
||||
};
|
||||
};
|
||||
|
||||
...
|
84
bindings/pinctrl/fsl,imx8mn-pinctrl.yaml
Normal file
84
bindings/pinctrl/fsl,imx8mn-pinctrl.yaml
Normal file
@@ -0,0 +1,84 @@
|
||||
# SPDX-License-Identifier: GPL-2.0
|
||||
%YAML 1.2
|
||||
---
|
||||
$id: http://devicetree.org/schemas/pinctrl/fsl,imx8mn-pinctrl.yaml#
|
||||
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
||||
|
||||
title: Freescale IMX8MN IOMUX Controller
|
||||
|
||||
maintainers:
|
||||
- Anson Huang <Anson.Huang@nxp.com>
|
||||
|
||||
description:
|
||||
Please refer to fsl,imx-pinctrl.txt and pinctrl-bindings.txt in this directory
|
||||
for common binding part and usage.
|
||||
|
||||
properties:
|
||||
compatible:
|
||||
const: fsl,imx8mn-iomuxc
|
||||
|
||||
reg:
|
||||
maxItems: 1
|
||||
|
||||
# Client device subnode's properties
|
||||
patternProperties:
|
||||
'grp$':
|
||||
type: object
|
||||
description:
|
||||
Pinctrl node's client devices use subnodes for desired pin configuration.
|
||||
Client device subnodes use below standard properties.
|
||||
|
||||
properties:
|
||||
fsl,pins:
|
||||
description:
|
||||
each entry consists of 6 integers and represents the mux and config
|
||||
setting for one pin. The first 5 integers <mux_reg conf_reg input_reg
|
||||
mux_val input_val> are specified using a PIN_FUNC_ID macro, which can
|
||||
be found in <arch/arm64/boot/dts/freescale/imx8mn-pinfunc.h>. The last
|
||||
integer CONFIG is the pad setting value like pull-up on this pin. Please
|
||||
refer to i.MX8M Nano Reference Manual for detailed CONFIG settings.
|
||||
$ref: /schemas/types.yaml#/definitions/uint32-matrix
|
||||
items:
|
||||
items:
|
||||
- description: |
|
||||
"mux_reg" indicates the offset of mux register.
|
||||
- description: |
|
||||
"conf_reg" indicates the offset of pad configuration register.
|
||||
- description: |
|
||||
"input_reg" indicates the offset of select input register.
|
||||
- description: |
|
||||
"mux_val" indicates the mux value to be applied.
|
||||
- description: |
|
||||
"input_val" indicates the select input value to be applied.
|
||||
- description: |
|
||||
"pad_setting" indicates the pad configuration value to be applied.
|
||||
|
||||
required:
|
||||
- fsl,pins
|
||||
|
||||
additionalProperties: false
|
||||
|
||||
allOf:
|
||||
- $ref: "pinctrl.yaml#"
|
||||
|
||||
required:
|
||||
- compatible
|
||||
- reg
|
||||
|
||||
additionalProperties: false
|
||||
|
||||
examples:
|
||||
# Pinmux controller node
|
||||
- |
|
||||
iomuxc: pinctrl@30330000 {
|
||||
compatible = "fsl,imx8mn-iomuxc";
|
||||
reg = <0x30330000 0x10000>;
|
||||
|
||||
pinctrl_uart2: uart2grp {
|
||||
fsl,pins =
|
||||
<0x23C 0x4A4 0x4FC 0x0 0x0 0x140>,
|
||||
<0x240 0x4A8 0x000 0x0 0x0 0x140>;
|
||||
};
|
||||
};
|
||||
|
||||
...
|
84
bindings/pinctrl/fsl,imx8mp-pinctrl.yaml
Normal file
84
bindings/pinctrl/fsl,imx8mp-pinctrl.yaml
Normal file
@@ -0,0 +1,84 @@
|
||||
# SPDX-License-Identifier: GPL-2.0
|
||||
%YAML 1.2
|
||||
---
|
||||
$id: http://devicetree.org/schemas/pinctrl/fsl,imx8mp-pinctrl.yaml#
|
||||
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
||||
|
||||
title: Freescale IMX8MP IOMUX Controller
|
||||
|
||||
maintainers:
|
||||
- Anson Huang <Anson.Huang@nxp.com>
|
||||
|
||||
description:
|
||||
Please refer to fsl,imx-pinctrl.txt and pinctrl-bindings.txt in this directory
|
||||
for common binding part and usage.
|
||||
|
||||
properties:
|
||||
compatible:
|
||||
const: fsl,imx8mp-iomuxc
|
||||
|
||||
reg:
|
||||
maxItems: 1
|
||||
|
||||
# Client device subnode's properties
|
||||
patternProperties:
|
||||
'grp$':
|
||||
type: object
|
||||
description:
|
||||
Pinctrl node's client devices use subnodes for desired pin configuration.
|
||||
Client device subnodes use below standard properties.
|
||||
|
||||
properties:
|
||||
fsl,pins:
|
||||
description:
|
||||
each entry consists of 6 integers and represents the mux and config
|
||||
setting for one pin. The first 5 integers <mux_reg conf_reg input_reg
|
||||
mux_val input_val> are specified using a PIN_FUNC_ID macro, which can
|
||||
be found in <arch/arm64/boot/dts/freescale/imx8mp-pinfunc.h>. The last
|
||||
integer CONFIG is the pad setting value like pull-up on this pin. Please
|
||||
refer to i.MX8M Plus Reference Manual for detailed CONFIG settings.
|
||||
$ref: /schemas/types.yaml#/definitions/uint32-matrix
|
||||
items:
|
||||
items:
|
||||
- description: |
|
||||
"mux_reg" indicates the offset of mux register.
|
||||
- description: |
|
||||
"conf_reg" indicates the offset of pad configuration register.
|
||||
- description: |
|
||||
"input_reg" indicates the offset of select input register.
|
||||
- description: |
|
||||
"mux_val" indicates the mux value to be applied.
|
||||
- description: |
|
||||
"input_val" indicates the select input value to be applied.
|
||||
- description: |
|
||||
"pad_setting" indicates the pad configuration value to be applied.
|
||||
|
||||
required:
|
||||
- fsl,pins
|
||||
|
||||
additionalProperties: false
|
||||
|
||||
allOf:
|
||||
- $ref: "pinctrl.yaml#"
|
||||
|
||||
required:
|
||||
- compatible
|
||||
- reg
|
||||
|
||||
additionalProperties: false
|
||||
|
||||
examples:
|
||||
# Pinmux controller node
|
||||
- |
|
||||
iomuxc: pinctrl@30330000 {
|
||||
compatible = "fsl,imx8mp-iomuxc";
|
||||
reg = <0x30330000 0x10000>;
|
||||
|
||||
pinctrl_uart2: uart2grp {
|
||||
fsl,pins =
|
||||
<0x228 0x488 0x5F0 0x0 0x6 0x49>,
|
||||
<0x228 0x488 0x000 0x0 0x0 0x49>;
|
||||
};
|
||||
};
|
||||
|
||||
...
|
84
bindings/pinctrl/fsl,imx8mq-pinctrl.yaml
Normal file
84
bindings/pinctrl/fsl,imx8mq-pinctrl.yaml
Normal file
@@ -0,0 +1,84 @@
|
||||
# SPDX-License-Identifier: GPL-2.0
|
||||
%YAML 1.2
|
||||
---
|
||||
$id: http://devicetree.org/schemas/pinctrl/fsl,imx8mq-pinctrl.yaml#
|
||||
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
||||
|
||||
title: Freescale IMX8MQ IOMUX Controller
|
||||
|
||||
maintainers:
|
||||
- Anson Huang <Anson.Huang@nxp.com>
|
||||
|
||||
description:
|
||||
Please refer to fsl,imx-pinctrl.txt and pinctrl-bindings.txt in this directory
|
||||
for common binding part and usage.
|
||||
|
||||
properties:
|
||||
compatible:
|
||||
const: fsl,imx8mq-iomuxc
|
||||
|
||||
reg:
|
||||
maxItems: 1
|
||||
|
||||
# Client device subnode's properties
|
||||
patternProperties:
|
||||
'grp$':
|
||||
type: object
|
||||
description:
|
||||
Pinctrl node's client devices use subnodes for desired pin configuration.
|
||||
Client device subnodes use below standard properties.
|
||||
|
||||
properties:
|
||||
fsl,pins:
|
||||
description:
|
||||
each entry consists of 6 integers and represents the mux and config
|
||||
setting for one pin. The first 5 integers <mux_reg conf_reg input_reg
|
||||
mux_val input_val> are specified using a PIN_FUNC_ID macro, which can
|
||||
be found in <arch/arm64/boot/dts/freescale/imx8mq-pinfunc.h>. The last
|
||||
integer CONFIG is the pad setting value like pull-up on this pin. Please
|
||||
refer to i.MX8M Quad Reference Manual for detailed CONFIG settings.
|
||||
$ref: /schemas/types.yaml#/definitions/uint32-matrix
|
||||
items:
|
||||
items:
|
||||
- description: |
|
||||
"mux_reg" indicates the offset of mux register.
|
||||
- description: |
|
||||
"conf_reg" indicates the offset of pad configuration register.
|
||||
- description: |
|
||||
"input_reg" indicates the offset of select input register.
|
||||
- description: |
|
||||
"mux_val" indicates the mux value to be applied.
|
||||
- description: |
|
||||
"input_val" indicates the select input value to be applied.
|
||||
- description: |
|
||||
"pad_setting" indicates the pad configuration value to be applied.
|
||||
|
||||
required:
|
||||
- fsl,pins
|
||||
|
||||
additionalProperties: false
|
||||
|
||||
allOf:
|
||||
- $ref: "pinctrl.yaml#"
|
||||
|
||||
required:
|
||||
- compatible
|
||||
- reg
|
||||
|
||||
additionalProperties: false
|
||||
|
||||
examples:
|
||||
# Pinmux controller node
|
||||
- |
|
||||
iomuxc: pinctrl@30330000 {
|
||||
compatible = "fsl,imx8mq-iomuxc";
|
||||
reg = <0x30330000 0x10000>;
|
||||
|
||||
pinctrl_uart1: uart1grp {
|
||||
fsl,pins =
|
||||
<0x234 0x49C 0x4F4 0x0 0x0 0x49>,
|
||||
<0x238 0x4A0 0x4F4 0x0 0x0 0x49>;
|
||||
};
|
||||
};
|
||||
|
||||
...
|
82
bindings/pinctrl/fsl,imx8ulp-pinctrl.yaml
Normal file
82
bindings/pinctrl/fsl,imx8ulp-pinctrl.yaml
Normal file
@@ -0,0 +1,82 @@
|
||||
# SPDX-License-Identifier: GPL-2.0
|
||||
%YAML 1.2
|
||||
---
|
||||
$id: http://devicetree.org/schemas/pinctrl/fsl,imx8ulp-pinctrl.yaml#
|
||||
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
||||
|
||||
title: Freescale IMX8ULP IOMUX Controller
|
||||
|
||||
maintainers:
|
||||
- Jacky Bai <ping.bai@nxp.com>
|
||||
|
||||
description:
|
||||
Please refer to fsl,imx-pinctrl.txt and pinctrl-bindings.txt in this directory
|
||||
for common binding part and usage.
|
||||
|
||||
properties:
|
||||
compatible:
|
||||
const: fsl,imx8ulp-iomuxc1
|
||||
|
||||
reg:
|
||||
maxItems: 1
|
||||
|
||||
# Client device subnode's properties
|
||||
patternProperties:
|
||||
'grp$':
|
||||
type: object
|
||||
description:
|
||||
Pinctrl node's client devices use subnodes for desired pin configuration.
|
||||
Client device subnodes use below standard properties.
|
||||
|
||||
properties:
|
||||
fsl,pins:
|
||||
description:
|
||||
each entry consists of 5 integers and represents the mux and config
|
||||
setting for one pin. The first 4 integers <mux_config_reg input_reg
|
||||
mux_mode input_val> are specified using a PIN_FUNC_ID macro, which can
|
||||
be found in <arch/arm64/boot/dts/freescale/imx8ulp-pinfunc.h>. The last
|
||||
integer CONFIG is the pad setting value like pull-up on this pin. Please
|
||||
refer to i.MX8ULP Reference Manual for detailed CONFIG settings.
|
||||
$ref: /schemas/types.yaml#/definitions/uint32-matrix
|
||||
items:
|
||||
items:
|
||||
- description: |
|
||||
"mux_config_reg" indicates the offset of mux register.
|
||||
- description: |
|
||||
"input_reg" indicates the offset of select input register.
|
||||
- description: |
|
||||
"mux_mode" indicates the mux value to be applied.
|
||||
- description: |
|
||||
"input_val" indicates the select input value to be applied.
|
||||
- description: |
|
||||
"pad_setting" indicates the pad configuration value to be applied.
|
||||
|
||||
required:
|
||||
- fsl,pins
|
||||
|
||||
additionalProperties: false
|
||||
|
||||
allOf:
|
||||
- $ref: "pinctrl.yaml#"
|
||||
|
||||
required:
|
||||
- compatible
|
||||
- reg
|
||||
|
||||
additionalProperties: false
|
||||
|
||||
examples:
|
||||
# Pinmux controller node
|
||||
- |
|
||||
iomuxc: pinctrl@298c0000 {
|
||||
compatible = "fsl,imx8ulp-iomuxc1";
|
||||
reg = <0x298c0000 0x10000>;
|
||||
|
||||
pinctrl_lpuart5: lpuart5grp {
|
||||
fsl,pins =
|
||||
<0x0138 0x08F0 0x4 0x3 0x3>,
|
||||
<0x013C 0x08EC 0x4 0x3 0x3>;
|
||||
};
|
||||
};
|
||||
|
||||
...
|
85
bindings/pinctrl/fsl,imx93-pinctrl.yaml
Normal file
85
bindings/pinctrl/fsl,imx93-pinctrl.yaml
Normal file
@@ -0,0 +1,85 @@
|
||||
# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
|
||||
%YAML 1.2
|
||||
---
|
||||
$id: http://devicetree.org/schemas/pinctrl/fsl,imx93-pinctrl.yaml#
|
||||
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
||||
|
||||
title: Freescale IMX93 IOMUX Controller
|
||||
|
||||
maintainers:
|
||||
- Peng Fan <peng.fan@nxp.com>
|
||||
|
||||
description:
|
||||
Please refer to fsl,imx-pinctrl.txt and pinctrl-bindings.txt in this directory
|
||||
for common binding part and usage.
|
||||
|
||||
allOf:
|
||||
- $ref: "pinctrl.yaml#"
|
||||
|
||||
properties:
|
||||
compatible:
|
||||
const: fsl,imx93-iomuxc
|
||||
|
||||
reg:
|
||||
maxItems: 1
|
||||
|
||||
# Client device subnode's properties
|
||||
patternProperties:
|
||||
'grp$':
|
||||
type: object
|
||||
description:
|
||||
Pinctrl node's client devices use subnodes for desired pin configuration.
|
||||
Client device subnodes use below standard properties.
|
||||
|
||||
properties:
|
||||
fsl,pins:
|
||||
description:
|
||||
each entry consists of 6 integers and represents the mux and config
|
||||
setting for one pin. The first 5 integers <mux_reg conf_reg input_reg
|
||||
mux_val input_val> are specified using a PIN_FUNC_ID macro, which can
|
||||
be found in <arch/arm64/boot/dts/freescale/imx8mp-pinfunc.h>. The last
|
||||
integer CONFIG is the pad setting value like pull-up on this pin. Please
|
||||
refer to i.MX8M Plus Reference Manual for detailed CONFIG settings.
|
||||
$ref: /schemas/types.yaml#/definitions/uint32-matrix
|
||||
items:
|
||||
items:
|
||||
- description: |
|
||||
"mux_reg" indicates the offset of mux register.
|
||||
- description: |
|
||||
"conf_reg" indicates the offset of pad configuration register.
|
||||
- description: |
|
||||
"input_reg" indicates the offset of select input register.
|
||||
- description: |
|
||||
"mux_val" indicates the mux value to be applied.
|
||||
- description: |
|
||||
"input_val" indicates the select input value to be applied.
|
||||
- description: |
|
||||
"pad_setting" indicates the pad configuration value to be applied.
|
||||
|
||||
|
||||
required:
|
||||
- fsl,pins
|
||||
|
||||
additionalProperties: false
|
||||
|
||||
required:
|
||||
- compatible
|
||||
- reg
|
||||
|
||||
additionalProperties: false
|
||||
|
||||
examples:
|
||||
# Pinmux controller node
|
||||
- |
|
||||
iomuxc: pinctrl@443c0000 {
|
||||
compatible = "fsl,imx93-iomuxc";
|
||||
reg = <0x30330000 0x10000>;
|
||||
|
||||
pinctrl_uart3: uart3grp {
|
||||
fsl,pins =
|
||||
<0x48 0x1f8 0x41c 0x1 0x0 0x49>,
|
||||
<0x4c 0x1fc 0x418 0x1 0x0 0x49>;
|
||||
};
|
||||
};
|
||||
|
||||
...
|
79
bindings/pinctrl/fsl,imxrt1050.yaml
Normal file
79
bindings/pinctrl/fsl,imxrt1050.yaml
Normal file
@@ -0,0 +1,79 @@
|
||||
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
|
||||
%YAML 1.2
|
||||
---
|
||||
$id: http://devicetree.org/schemas/pinctrl/fsl,imxrt1050.yaml#
|
||||
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
||||
|
||||
title: Freescale IMXRT1050 IOMUX Controller
|
||||
|
||||
maintainers:
|
||||
- Giulio Benetti <giulio.benetti@benettiengineering.com>
|
||||
- Jesse Taube <Mr.Bossman075@gmail.com>
|
||||
|
||||
description:
|
||||
Please refer to fsl,imx-pinctrl.txt and pinctrl-bindings.txt in this directory
|
||||
for common binding part and usage.
|
||||
|
||||
properties:
|
||||
compatible:
|
||||
const: fsl,imxrt1050-iomuxc
|
||||
|
||||
reg:
|
||||
maxItems: 1
|
||||
|
||||
# Client device subnode's properties
|
||||
patternProperties:
|
||||
'grp$':
|
||||
type: object
|
||||
description:
|
||||
Pinctrl node's client devices use subnodes for desired pin configuration.
|
||||
Client device subnodes use below standard properties.
|
||||
|
||||
properties:
|
||||
fsl,pins:
|
||||
description:
|
||||
each entry consists of 6 integers and represents the mux and config
|
||||
setting for one pin. The first 5 integers <mux_reg conf_reg input_reg
|
||||
mux_val input_val> are specified using a PIN_FUNC_ID macro, which can
|
||||
be found in <include/dt-bindings/pinctrl/pins-imxrt1050.h>. The last
|
||||
integer CONFIG is the pad setting value like pull-up on this pin. Please
|
||||
refer to i.MXRT1050 Reference Manual for detailed CONFIG settings.
|
||||
$ref: /schemas/types.yaml#/definitions/uint32-matrix
|
||||
items:
|
||||
items:
|
||||
- description: |
|
||||
"mux_reg" indicates the offset of mux register.
|
||||
- description: |
|
||||
"conf_reg" indicates the offset of pad configuration register.
|
||||
- description: |
|
||||
"input_reg" indicates the offset of select input register.
|
||||
- description: |
|
||||
"mux_val" indicates the mux value to be applied.
|
||||
- description: |
|
||||
"input_val" indicates the select input value to be applied.
|
||||
- description: |
|
||||
"pad_setting" indicates the pad configuration value to be applied.
|
||||
|
||||
required:
|
||||
- fsl,pins
|
||||
|
||||
additionalProperties: false
|
||||
|
||||
required:
|
||||
- compatible
|
||||
- reg
|
||||
|
||||
additionalProperties: false
|
||||
|
||||
examples:
|
||||
- |
|
||||
iomuxc: iomuxc@401f8000 {
|
||||
compatible = "fsl,imxrt1050-iomuxc";
|
||||
reg = <0x401f8000 0x4000>;
|
||||
|
||||
pinctrl_lpuart1: lpuart1grp {
|
||||
fsl,pins =
|
||||
<0x0EC 0x2DC 0x000 0x2 0x0 0xf1>,
|
||||
<0x0F0 0x2E0 0x000 0x2 0x0 0xf1>;
|
||||
};
|
||||
};
|
77
bindings/pinctrl/fsl,imxrt1170.yaml
Normal file
77
bindings/pinctrl/fsl,imxrt1170.yaml
Normal file
@@ -0,0 +1,77 @@
|
||||
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
|
||||
%YAML 1.2
|
||||
---
|
||||
$id: http://devicetree.org/schemas/pinctrl/fsl,imxrt1170.yaml#
|
||||
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
||||
|
||||
title: Freescale i.MXRT1170 IOMUX Controller
|
||||
|
||||
maintainers:
|
||||
- Giulio Benetti <giulio.benetti@benettiengineering.com>
|
||||
- Jesse Taube <Mr.Bossman075@gmail.com>
|
||||
|
||||
description:
|
||||
Please refer to fsl,imx-pinctrl.txt and pinctrl-bindings.txt in this directory
|
||||
for common binding part and usage.
|
||||
|
||||
properties:
|
||||
compatible:
|
||||
const: fsl,imxrt1170-iomuxc
|
||||
|
||||
reg:
|
||||
maxItems: 1
|
||||
|
||||
# Client device subnode's properties
|
||||
patternProperties:
|
||||
'grp$':
|
||||
type: object
|
||||
description:
|
||||
Pinctrl node's client devices use subnodes for desired pin configuration.
|
||||
Client device subnodes use below standard properties.
|
||||
|
||||
properties:
|
||||
fsl,pins:
|
||||
description:
|
||||
each entry consists of 6 integers and represents the mux and config
|
||||
setting for one pin. The first 5 integers <mux_reg conf_reg input_reg
|
||||
mux_val input_val> are specified using a PIN_FUNC_ID macro, which can
|
||||
be found in <arch/arm/boot/dts/imxrt1170-pinfunc.h>. The last
|
||||
integer CONFIG is the pad setting value like pull-up on this pin. Please
|
||||
refer to i.MXRT1170 Reference Manual for detailed CONFIG settings.
|
||||
$ref: /schemas/types.yaml#/definitions/uint32-matrix
|
||||
items:
|
||||
items:
|
||||
- description: |
|
||||
"mux_reg" indicates the offset of mux register.
|
||||
- description: |
|
||||
"conf_reg" indicates the offset of pad configuration register.
|
||||
- description: |
|
||||
"input_reg" indicates the offset of select input register.
|
||||
- description: |
|
||||
"mux_val" indicates the mux value to be applied.
|
||||
- description: |
|
||||
"input_val" indicates the select input value to be applied.
|
||||
- description: |
|
||||
"pad_setting" indicates the pad configuration value to be applied.
|
||||
required:
|
||||
- fsl,pins
|
||||
|
||||
additionalProperties: false
|
||||
|
||||
required:
|
||||
- compatible
|
||||
- reg
|
||||
|
||||
additionalProperties: false
|
||||
|
||||
examples:
|
||||
- |
|
||||
iomuxc: iomuxc@400e8000 {
|
||||
compatible = "fsl,imxrt1170-iomuxc";
|
||||
reg = <0x400e8000 0x4000>;
|
||||
pinctrl_lpuart1: lpuart1grp {
|
||||
fsl,pins =
|
||||
<0x16C 0x3B0 0x620 0x0 0x0 0xf1>,
|
||||
<0x170 0x3B4 0x61C 0x0 0x0 0xf1>;
|
||||
};
|
||||
};
|
127
bindings/pinctrl/fsl,mxs-pinctrl.txt
Normal file
127
bindings/pinctrl/fsl,mxs-pinctrl.txt
Normal file
@@ -0,0 +1,127 @@
|
||||
* Freescale MXS Pin Controller
|
||||
|
||||
The pins controlled by mxs pin controller are organized in banks, each bank
|
||||
has 32 pins. Each pin has 4 multiplexing functions, and generally, the 4th
|
||||
function is GPIO. The configuration on the pins includes drive strength,
|
||||
voltage and pull-up.
|
||||
|
||||
Required properties:
|
||||
- compatible: "fsl,imx23-pinctrl" or "fsl,imx28-pinctrl"
|
||||
- reg: Should contain the register physical address and length for the
|
||||
pin controller.
|
||||
|
||||
Please refer to pinctrl-bindings.txt in this directory for details of the
|
||||
common pinctrl bindings used by client devices.
|
||||
|
||||
The node of mxs pin controller acts as a container for an arbitrary number of
|
||||
subnodes. Each of these subnodes represents some desired configuration for
|
||||
a group of pins, and only affects those parameters that are explicitly listed.
|
||||
In other words, a subnode that describes a drive strength parameter implies no
|
||||
information about pull-up. For this reason, even seemingly boolean values are
|
||||
actually tristates in this binding: unspecified, off, or on. Unspecified is
|
||||
represented as an absent property, and off/on are represented as integer
|
||||
values 0 and 1.
|
||||
|
||||
Those subnodes under mxs pin controller node will fall into two categories.
|
||||
One is to set up a group of pins for a function, both mux selection and pin
|
||||
configurations, and it's called group node in the binding document. The other
|
||||
one is to adjust the pin configuration for some particular pins that need a
|
||||
different configuration than what is defined in group node. The binding
|
||||
document calls this type of node config node.
|
||||
|
||||
On mxs, there is no hardware pin group. The pin group in this binding only
|
||||
means a group of pins put together for particular peripheral to work in
|
||||
particular function, like SSP0 functioning as mmc0-8bit. That said, the
|
||||
group node should include all the pins needed for one function rather than
|
||||
having these pins defined in several group nodes. It also means each of
|
||||
"pinctrl-*" phandle in client device node should only have one group node
|
||||
pointed in there, while the phandle can have multiple config node referenced
|
||||
there to adjust configurations for some pins in the group.
|
||||
|
||||
Required subnode-properties:
|
||||
- fsl,pinmux-ids: An integer array. Each integer in the array specify a pin
|
||||
with given mux function, with bank, pin and mux packed as below.
|
||||
|
||||
[15..12] : bank number
|
||||
[11..4] : pin number
|
||||
[3..0] : mux selection
|
||||
|
||||
This integer with mux selection packed is used as an entity by both group
|
||||
and config nodes to identify a pin. The mux selection in the integer takes
|
||||
effects only on group node, and will get ignored by driver with config node,
|
||||
since config node is only meant to set up pin configurations.
|
||||
|
||||
Valid values for these integers are listed below.
|
||||
|
||||
- reg: Should be the index of the group nodes for same function. This property
|
||||
is required only for group nodes, and should not be present in any config
|
||||
nodes.
|
||||
|
||||
Optional subnode-properties:
|
||||
- fsl,drive-strength: Integer.
|
||||
0: MXS_DRIVE_4mA
|
||||
1: MXS_DRIVE_8mA
|
||||
2: MXS_DRIVE_12mA
|
||||
3: MXS_DRIVE_16mA
|
||||
- fsl,voltage: Integer.
|
||||
0: MXS_VOLTAGE_LOW - 1.8 V
|
||||
1: MXS_VOLTAGE_HIGH - 3.3 V
|
||||
- fsl,pull-up: Integer.
|
||||
0: MXS_PULL_DISABLE - Disable the internal pull-up
|
||||
1: MXS_PULL_ENABLE - Enable the internal pull-up
|
||||
|
||||
Note that when enabling the pull-up, the internal pad keeper gets disabled.
|
||||
Also, some pins doesn't have a pull up, in that case, setting the fsl,pull-up
|
||||
will only disable the internal pad keeper.
|
||||
|
||||
Examples:
|
||||
|
||||
pinctrl@80018000 {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
compatible = "fsl,imx28-pinctrl";
|
||||
reg = <0x80018000 2000>;
|
||||
|
||||
mmc0_8bit_pins_a: mmc0-8bit@0 {
|
||||
reg = <0>;
|
||||
fsl,pinmux-ids = <
|
||||
MX28_PAD_SSP0_DATA0__SSP0_D0
|
||||
MX28_PAD_SSP0_DATA1__SSP0_D1
|
||||
MX28_PAD_SSP0_DATA2__SSP0_D2
|
||||
MX28_PAD_SSP0_DATA3__SSP0_D3
|
||||
MX28_PAD_SSP0_DATA4__SSP0_D4
|
||||
MX28_PAD_SSP0_DATA5__SSP0_D5
|
||||
MX28_PAD_SSP0_DATA6__SSP0_D6
|
||||
MX28_PAD_SSP0_DATA7__SSP0_D7
|
||||
MX28_PAD_SSP0_CMD__SSP0_CMD
|
||||
MX28_PAD_SSP0_DETECT__SSP0_CARD_DETECT
|
||||
MX28_PAD_SSP0_SCK__SSP0_SCK
|
||||
>;
|
||||
fsl,drive-strength = <MXS_DRIVE_4mA>;
|
||||
fsl,voltage = <MXS_VOLTAGE_HIGH>;
|
||||
fsl,pull-up = <MXS_PULL_ENABLE>;
|
||||
};
|
||||
|
||||
mmc_cd_cfg: mmc-cd-cfg {
|
||||
fsl,pinmux-ids = <MX28_PAD_SSP0_DETECT__SSP0_CARD_DETECT>;
|
||||
fsl,pull-up = <MXS_PULL_DISABLE>;
|
||||
};
|
||||
|
||||
mmc_sck_cfg: mmc-sck-cfg {
|
||||
fsl,pinmux-ids = <MX28_PAD_SSP0_SCK__SSP0_SCK>;
|
||||
fsl,drive-strength = <MXS_DRIVE_12mA>;
|
||||
fsl,pull-up = <MXS_PULL_DISABLE>;
|
||||
};
|
||||
};
|
||||
|
||||
In this example, group node mmc0-8bit defines a group of pins for mxs SSP0
|
||||
to function as a 8-bit mmc device, with 8mA, 3.3V and pull-up configurations
|
||||
applied on all these pins. And config nodes mmc-cd-cfg and mmc-sck-cfg are
|
||||
adjusting the configuration for pins card-detection and clock from what group
|
||||
node mmc0-8bit defines. Only the configuration properties to be adjusted need
|
||||
to be listed in the config nodes.
|
||||
|
||||
Valid values for i.MX28/i.MX23 pinmux-id are defined in
|
||||
arch/arm/boot/dts/imx28-pinfunc.h and arch/arm/boot/dts/imx23-pinfunc.h.
|
||||
The definitions for the padconfig properties can be found in
|
||||
arch/arm/boot/dts/mxs-pinfunc.h.
|
74
bindings/pinctrl/fsl,scu-pinctrl.yaml
Normal file
74
bindings/pinctrl/fsl,scu-pinctrl.yaml
Normal file
@@ -0,0 +1,74 @@
|
||||
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
|
||||
%YAML 1.2
|
||||
---
|
||||
$id: http://devicetree.org/schemas/pinctrl/fsl,scu-pinctrl.yaml#
|
||||
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
||||
|
||||
title: i.MX SCU Client Device Node - Pinctrl bindings based on SCU Message Protocol
|
||||
|
||||
maintainers:
|
||||
- Dong Aisheng <aisheng.dong@nxp.com>
|
||||
|
||||
description: i.MX SCU Client Device Node
|
||||
Client nodes are maintained as children of the relevant IMX-SCU device node.
|
||||
This binding uses the i.MX common pinctrl binding.
|
||||
(Documentation/devicetree/bindings/pinctrl/fsl,imx-pinctrl.txt)
|
||||
|
||||
allOf:
|
||||
- $ref: pinctrl.yaml#
|
||||
|
||||
properties:
|
||||
compatible:
|
||||
enum:
|
||||
- fsl,imx8qm-iomuxc
|
||||
- fsl,imx8qxp-iomuxc
|
||||
- fsl,imx8dxl-iomuxc
|
||||
|
||||
patternProperties:
|
||||
'grp$':
|
||||
type: object
|
||||
description:
|
||||
Pinctrl node's client devices use subnodes for desired pin configuration.
|
||||
Client device subnodes use below standard properties.
|
||||
|
||||
properties:
|
||||
fsl,pins:
|
||||
description:
|
||||
each entry consists of 3 integers and represents the pin ID, the mux value
|
||||
and pad setting for the pin. The first 2 integers - pin_id and mux_val - are
|
||||
specified using a PIN_FUNC_ID macro, which can be found in
|
||||
<include/dt-bindings/pinctrl/pads-imx8qxp.h>. The last integer is
|
||||
the pad setting value like pull-up on this pin. Please refer to the
|
||||
appropriate i.MX8 Reference Manual for detailed pad CONFIG settings.
|
||||
$ref: /schemas/types.yaml#/definitions/uint32-matrix
|
||||
items:
|
||||
items:
|
||||
- description: |
|
||||
"pin_id" indicates the pin ID
|
||||
- description: |
|
||||
"mux_val" indicates the mux value to be applied.
|
||||
- description: |
|
||||
"pad_setting" indicates the pad configuration value to be applied.
|
||||
|
||||
required:
|
||||
- fsl,pins
|
||||
|
||||
additionalProperties: false
|
||||
|
||||
required:
|
||||
- compatible
|
||||
|
||||
additionalProperties: false
|
||||
|
||||
examples:
|
||||
- |
|
||||
pinctrl {
|
||||
compatible = "fsl,imx8qxp-iomuxc";
|
||||
|
||||
pinctrl_lpuart0: lpuart0grp {
|
||||
fsl,pins = <
|
||||
111 0 0x06000020
|
||||
112 0 0x06000020
|
||||
>;
|
||||
};
|
||||
};
|
41
bindings/pinctrl/fsl,vf610-pinctrl.txt
Normal file
41
bindings/pinctrl/fsl,vf610-pinctrl.txt
Normal file
@@ -0,0 +1,41 @@
|
||||
Freescale Vybrid VF610 IOMUX Controller
|
||||
|
||||
Please refer to fsl,imx-pinctrl.txt in this directory for common binding part
|
||||
and usage.
|
||||
|
||||
Required properties:
|
||||
- compatible: "fsl,vf610-iomuxc"
|
||||
- fsl,pins: two integers array, represents a group of pins mux and config
|
||||
setting. The format is fsl,pins = <PIN_FUNC_ID CONFIG>, PIN_FUNC_ID is
|
||||
a pin working on a specific function, CONFIG is the pad setting value
|
||||
such as pull-up, speed, ode for this pin. Please refer to Vybrid VF610
|
||||
datasheet for the valid pad config settings.
|
||||
|
||||
CONFIG bits definition:
|
||||
PAD_CTL_SPEED_LOW (1 << 12)
|
||||
PAD_CTL_SPEED_MED (2 << 12)
|
||||
PAD_CTL_SPEED_HIGH (3 << 12)
|
||||
PAD_CTL_SRE_FAST (1 << 11)
|
||||
PAD_CTL_SRE_SLOW (0 << 11)
|
||||
PAD_CTL_ODE (1 << 10)
|
||||
PAD_CTL_HYS (1 << 9)
|
||||
PAD_CTL_DSE_DISABLE (0 << 6)
|
||||
PAD_CTL_DSE_150ohm (1 << 6)
|
||||
PAD_CTL_DSE_75ohm (2 << 6)
|
||||
PAD_CTL_DSE_50ohm (3 << 6)
|
||||
PAD_CTL_DSE_37ohm (4 << 6)
|
||||
PAD_CTL_DSE_30ohm (5 << 6)
|
||||
PAD_CTL_DSE_25ohm (6 << 6)
|
||||
PAD_CTL_DSE_20ohm (7 << 6)
|
||||
PAD_CTL_PUS_100K_DOWN (0 << 4)
|
||||
PAD_CTL_PUS_47K_UP (1 << 4)
|
||||
PAD_CTL_PUS_100K_UP (2 << 4)
|
||||
PAD_CTL_PUS_22K_UP (3 << 4)
|
||||
PAD_CTL_PKE (1 << 3)
|
||||
PAD_CTL_PUE (1 << 2)
|
||||
PAD_CTL_OBE_ENABLE (1 << 1)
|
||||
PAD_CTL_IBE_ENABLE (1 << 0)
|
||||
PAD_CTL_OBE_IBE_ENABLE (3 << 0)
|
||||
|
||||
Please refer to vf610-pinfunc.h in device tree source folder
|
||||
for all available PIN_FUNC_ID for Vybrid VF610.
|
217
bindings/pinctrl/img,pistachio-pinctrl.txt
Normal file
217
bindings/pinctrl/img,pistachio-pinctrl.txt
Normal file
@@ -0,0 +1,217 @@
|
||||
Imagination Technologies Pistachio SoC pin controllers
|
||||
======================================================
|
||||
|
||||
The pin controllers on Pistachio are a combined GPIO controller, (GPIO)
|
||||
interrupt controller, and pinmux + pinconf device. The system ("east") pin
|
||||
controller on Pistachio has 99 pins, 90 of which are MFIOs which can be
|
||||
configured as GPIOs. The 90 GPIOs are divided into 6 banks of up to 16 GPIOs
|
||||
each. The GPIO banks are represented as sub-nodes of the pad controller node.
|
||||
|
||||
Please refer to pinctrl-bindings.txt, ../gpio/gpio.txt, and
|
||||
../interrupt-controller/interrupts.txt for generic information regarding
|
||||
pin controller, GPIO, and interrupt bindings.
|
||||
|
||||
Required properties for pin controller node:
|
||||
--------------------------------------------
|
||||
- compatible: "img,pistachio-system-pinctrl".
|
||||
- reg: Address range of the pinctrl registers.
|
||||
|
||||
Required properties for GPIO bank sub-nodes:
|
||||
--------------------------------------------
|
||||
- interrupts: Interrupt line for the GPIO bank.
|
||||
- gpio-controller: Indicates the device is a GPIO controller.
|
||||
- #gpio-cells: Must be two. The first cell is the GPIO pin number and the
|
||||
second cell indicates the polarity. See <dt-bindings/gpio/gpio.h> for
|
||||
a list of possible values.
|
||||
- interrupt-controller: Indicates the device is an interrupt controller.
|
||||
- #interrupt-cells: Must be two. The first cell is the GPIO pin number and
|
||||
the second cell encodes the interrupt flags. See
|
||||
<dt-bindings/interrupt-controller/irq.h> for a list of valid flags.
|
||||
|
||||
Note that the N GPIO bank sub-nodes *must* be named gpio0, gpio1, ... gpioN-1.
|
||||
|
||||
Required properties for pin configuration sub-nodes:
|
||||
----------------------------------------------------
|
||||
- pins: List of pins to which the configuration applies. See below for a
|
||||
list of possible pins.
|
||||
|
||||
Optional properties for pin configuration sub-nodes:
|
||||
----------------------------------------------------
|
||||
- function: Mux function for the specified pins. This is not applicable for
|
||||
non-MFIO pins. See below for a list of valid functions for each pin.
|
||||
- bias-high-impedance: Enable high-impedance mode.
|
||||
- bias-pull-up: Enable weak pull-up.
|
||||
- bias-pull-down: Enable weak pull-down.
|
||||
- bias-bus-hold: Enable bus-keeper mode.
|
||||
- drive-strength: Drive strength in mA. Supported values: 2, 4, 8, 12.
|
||||
- input-schmitt-enable: Enable Schmitt trigger.
|
||||
- input-schmitt-disable: Disable Schmitt trigger.
|
||||
- slew-rate: Slew rate control. 0 for slow, 1 for fast.
|
||||
|
||||
Pin Functions
|
||||
--- ---------
|
||||
mfio0 spim1
|
||||
mfio1 spim1, spim0, uart1
|
||||
mfio2 spim1, spim0, uart1
|
||||
mfio3 spim1
|
||||
mfio4 spim1
|
||||
mfio5 spim1
|
||||
mfio6 spim1
|
||||
mfio7 spim1
|
||||
mfio8 spim0
|
||||
mfio9 spim0
|
||||
mfio10 spim0
|
||||
mfio11 spis
|
||||
mfio12 spis
|
||||
mfio13 spis
|
||||
mfio14 spis
|
||||
mfio15 sdhost, mips_trace_clk, mips_trace_data
|
||||
mfio16 sdhost, mips_trace_dint, mips_trace_data
|
||||
mfio17 sdhost, mips_trace_trigout, mips_trace_data
|
||||
mfio18 sdhost, mips_trace_trigin, mips_trace_data
|
||||
mfio19 sdhost, mips_trace_dm, mips_trace_data
|
||||
mfio20 sdhost, mips_trace_probe_n, mips_trace_data
|
||||
mfio21 sdhost, mips_trace_data
|
||||
mfio22 sdhost, mips_trace_data
|
||||
mfio23 sdhost
|
||||
mfio24 sdhost
|
||||
mfio25 sdhost
|
||||
mfio26 sdhost
|
||||
mfio27 sdhost
|
||||
mfio28 i2c0, spim0
|
||||
mfio29 i2c0, spim0
|
||||
mfio30 i2c1, spim0
|
||||
mfio31 i2c1, spim1
|
||||
mfio32 i2c2
|
||||
mfio33 i2c2
|
||||
mfio34 i2c3
|
||||
mfio35 i2c3
|
||||
mfio36 i2s_out, audio_clk_in
|
||||
mfio37 i2s_out, debug_raw_cca_ind
|
||||
mfio38 i2s_out, debug_ed_sec20_cca_ind
|
||||
mfio39 i2s_out, debug_ed_sec40_cca_ind
|
||||
mfio40 i2s_out, debug_agc_done_0
|
||||
mfio41 i2s_out, debug_agc_done_1
|
||||
mfio42 i2s_out, debug_ed_cca_ind
|
||||
mfio43 i2s_out, debug_s2l_done
|
||||
mfio44 i2s_out
|
||||
mfio45 i2s_dac_clk, audio_sync
|
||||
mfio46 audio_trigger
|
||||
mfio47 i2s_in
|
||||
mfio48 i2s_in
|
||||
mfio49 i2s_in
|
||||
mfio50 i2s_in
|
||||
mfio51 i2s_in
|
||||
mfio52 i2s_in
|
||||
mfio53 i2s_in
|
||||
mfio54 i2s_in, spdif_in
|
||||
mfio55 uart0, spim0, spim1
|
||||
mfio56 uart0, spim0, spim1
|
||||
mfio57 uart0, spim0, spim1
|
||||
mfio58 uart0, spim1
|
||||
mfio59 uart1
|
||||
mfio60 uart1
|
||||
mfio61 spdif_out
|
||||
mfio62 spdif_in
|
||||
mfio63 eth, mips_trace_clk, mips_trace_data
|
||||
mfio64 eth, mips_trace_dint, mips_trace_data
|
||||
mfio65 eth, mips_trace_trigout, mips_trace_data
|
||||
mfio66 eth, mips_trace_trigin, mips_trace_data
|
||||
mfio67 eth, mips_trace_dm, mips_trace_data
|
||||
mfio68 eth, mips_trace_probe_n, mips_trace_data
|
||||
mfio69 eth, mips_trace_data
|
||||
mfio70 eth, mips_trace_data
|
||||
mfio71 eth
|
||||
mfio72 ir
|
||||
mfio73 pwmpdm, mips_trace_clk, sram_debug
|
||||
mfio74 pwmpdm, mips_trace_dint, sram_debug
|
||||
mfio75 pwmpdm, mips_trace_trigout, rom_debug
|
||||
mfio76 pwmpdm, mips_trace_trigin, rom_debug
|
||||
mfio77 mdc_debug, mips_trace_dm, rpu_debug
|
||||
mfio78 mdc_debug, mips_trace_probe_n, rpu_debug
|
||||
mfio79 ddr_debug, mips_trace_data, mips_debug
|
||||
mfio80 ddr_debug, mips_trace_data, mips_debug
|
||||
mfio81 dreq0, mips_trace_data, eth_debug
|
||||
mfio82 dreq1, mips_trace_data, eth_debug
|
||||
mfio83 mips_pll_lock, mips_trace_data, usb_debug
|
||||
mfio84 audio_pll_lock, mips_trace_data, usb_debug
|
||||
mfio85 rpu_v_pll_lock, mips_trace_data, sdhost_debug
|
||||
mfio86 rpu_l_pll_lock, mips_trace_data, sdhost_debug
|
||||
mfio87 sys_pll_lock, dreq2, socif_debug
|
||||
mfio88 wifi_pll_lock, dreq3, socif_debug
|
||||
mfio89 bt_pll_lock, dreq4, dreq5
|
||||
tck
|
||||
trstn
|
||||
tdi
|
||||
tms
|
||||
tdo
|
||||
jtag_comply
|
||||
safe_mode
|
||||
por_disable
|
||||
resetn
|
||||
|
||||
Example:
|
||||
--------
|
||||
pinctrl@18101c00 {
|
||||
compatible = "img,pistachio-system-pinctrl";
|
||||
reg = <0x18101C00 0x400>;
|
||||
|
||||
gpio0: gpio0 {
|
||||
interrupts = <GIC_SHARED 71 IRQ_TYPE_LEVEL_HIGH>;
|
||||
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
|
||||
interrupt-controller;
|
||||
#interrupt-cells = <2>;
|
||||
};
|
||||
|
||||
...
|
||||
|
||||
gpio5: gpio5 {
|
||||
interrupts = <GIC_SHARED 76 IRQ_TYPE_LEVEL_HIGH>;
|
||||
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
|
||||
interrupt-controller;
|
||||
#interrupt-cells = <2>;
|
||||
};
|
||||
|
||||
...
|
||||
|
||||
uart0_xfer: uart0-xfer {
|
||||
uart0-rxd {
|
||||
pins = "mfio55";
|
||||
function = "uart0";
|
||||
};
|
||||
uart0-txd {
|
||||
pins = "mfio56";
|
||||
function = "uart0";
|
||||
};
|
||||
};
|
||||
|
||||
uart0_rts_cts: uart0-rts-cts {
|
||||
uart0-rts {
|
||||
pins = "mfio57";
|
||||
function = "uart0";
|
||||
};
|
||||
uart0-cts {
|
||||
pins = "mfio58";
|
||||
function = "uart0";
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
uart@... {
|
||||
...
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&uart0_xfer>, <&uart0_rts_cts>;
|
||||
...
|
||||
};
|
||||
|
||||
usb_vbus: fixed-regulator {
|
||||
...
|
||||
gpio = <&gpio5 6 GPIO_ACTIVE_HIGH>;
|
||||
...
|
||||
};
|
193
bindings/pinctrl/ingenic,pinctrl.yaml
Normal file
193
bindings/pinctrl/ingenic,pinctrl.yaml
Normal file
@@ -0,0 +1,193 @@
|
||||
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
|
||||
%YAML 1.2
|
||||
---
|
||||
$id: http://devicetree.org/schemas/pinctrl/ingenic,pinctrl.yaml#
|
||||
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
||||
|
||||
title: Ingenic SoCs pin controller devicetree bindings
|
||||
|
||||
description: >
|
||||
Please refer to pinctrl-bindings.txt in this directory for details of the
|
||||
common pinctrl bindings used by client devices, including the meaning of the
|
||||
phrase "pin configuration node".
|
||||
|
||||
For the Ingenic SoCs, pin control is tightly bound with GPIO ports. All pins
|
||||
may be used as GPIOs, multiplexed device functions are configured within the
|
||||
GPIO port configuration registers and it is typical to refer to pins using the
|
||||
naming scheme "PxN" where x is a character identifying the GPIO port with
|
||||
which the pin is associated and N is an integer from 0 to 31 identifying the
|
||||
pin within that GPIO port. For example PA0 is the first pin in GPIO port A,
|
||||
and PB31 is the last pin in GPIO port B. The JZ4730, the JZ4740, the JZ4725B,
|
||||
the X1000 and the X1830 contains 4 GPIO ports, PA to PD, for a total of 128
|
||||
pins. The X2000 and the X2100 contains 5 GPIO ports, PA to PE, for a total of
|
||||
160 pins. The JZ4750, the JZ4755 the JZ4760, the JZ4770 and the JZ4780 contains
|
||||
6 GPIO ports, PA to PF, for a total of 192 pins. The JZ4775 contains 7 GPIO
|
||||
ports, PA to PG, for a total of 224 pins.
|
||||
|
||||
maintainers:
|
||||
- Paul Cercueil <paul@crapouillou.net>
|
||||
|
||||
properties:
|
||||
compatible:
|
||||
oneOf:
|
||||
- enum:
|
||||
- ingenic,jz4730-pinctrl
|
||||
- ingenic,jz4740-pinctrl
|
||||
- ingenic,jz4725b-pinctrl
|
||||
- ingenic,jz4750-pinctrl
|
||||
- ingenic,jz4755-pinctrl
|
||||
- ingenic,jz4760-pinctrl
|
||||
- ingenic,jz4770-pinctrl
|
||||
- ingenic,jz4775-pinctrl
|
||||
- ingenic,jz4780-pinctrl
|
||||
- ingenic,x1000-pinctrl
|
||||
- ingenic,x1500-pinctrl
|
||||
- ingenic,x1830-pinctrl
|
||||
- ingenic,x2000-pinctrl
|
||||
- ingenic,x2100-pinctrl
|
||||
- items:
|
||||
- const: ingenic,jz4760b-pinctrl
|
||||
- const: ingenic,jz4760-pinctrl
|
||||
- items:
|
||||
- const: ingenic,x1000e-pinctrl
|
||||
- const: ingenic,x1000-pinctrl
|
||||
- items:
|
||||
- const: ingenic,x2000e-pinctrl
|
||||
- const: ingenic,x2000-pinctrl
|
||||
|
||||
reg:
|
||||
maxItems: 1
|
||||
|
||||
"#address-cells":
|
||||
const: 1
|
||||
|
||||
"#size-cells":
|
||||
const: 0
|
||||
|
||||
patternProperties:
|
||||
"^gpio@[0-9]$":
|
||||
type: object
|
||||
properties:
|
||||
compatible:
|
||||
enum:
|
||||
- ingenic,jz4730-gpio
|
||||
- ingenic,jz4740-gpio
|
||||
- ingenic,jz4725b-gpio
|
||||
- ingenic,jz4750-gpio
|
||||
- ingenic,jz4755-gpio
|
||||
- ingenic,jz4760-gpio
|
||||
- ingenic,jz4770-gpio
|
||||
- ingenic,jz4775-gpio
|
||||
- ingenic,jz4780-gpio
|
||||
- ingenic,x1000-gpio
|
||||
- ingenic,x1500-gpio
|
||||
- ingenic,x1830-gpio
|
||||
- ingenic,x2000-gpio
|
||||
- ingenic,x2100-gpio
|
||||
|
||||
reg:
|
||||
items:
|
||||
- description: The GPIO bank number
|
||||
|
||||
gpio-controller: true
|
||||
|
||||
"#gpio-cells":
|
||||
const: 2
|
||||
|
||||
gpio-ranges:
|
||||
maxItems: 1
|
||||
|
||||
interrupt-controller: true
|
||||
|
||||
"#interrupt-cells":
|
||||
const: 2
|
||||
description:
|
||||
Refer to ../interrupt-controller/interrupts.txt for more details.
|
||||
|
||||
interrupts:
|
||||
maxItems: 1
|
||||
|
||||
required:
|
||||
- compatible
|
||||
- reg
|
||||
- gpio-controller
|
||||
- "#gpio-cells"
|
||||
- interrupts
|
||||
- interrupt-controller
|
||||
- "#interrupt-cells"
|
||||
|
||||
additionalProperties: false
|
||||
|
||||
allOf:
|
||||
- $ref: "pinctrl.yaml#"
|
||||
|
||||
required:
|
||||
- compatible
|
||||
- reg
|
||||
- "#address-cells"
|
||||
- "#size-cells"
|
||||
|
||||
additionalProperties:
|
||||
anyOf:
|
||||
- type: object
|
||||
allOf:
|
||||
- $ref: pincfg-node.yaml#
|
||||
- $ref: pinmux-node.yaml#
|
||||
|
||||
properties:
|
||||
phandle: true
|
||||
function: true
|
||||
groups: true
|
||||
pins: true
|
||||
bias-disable: true
|
||||
bias-pull-up: true
|
||||
bias-pull-down: true
|
||||
output-low: true
|
||||
output-high: true
|
||||
additionalProperties: false
|
||||
|
||||
- type: object
|
||||
properties:
|
||||
phandle: true
|
||||
additionalProperties:
|
||||
type: object
|
||||
allOf:
|
||||
- $ref: pincfg-node.yaml#
|
||||
- $ref: pinmux-node.yaml#
|
||||
|
||||
properties:
|
||||
phandle: true
|
||||
function: true
|
||||
groups: true
|
||||
pins: true
|
||||
bias-disable: true
|
||||
bias-pull-up: true
|
||||
bias-pull-down: true
|
||||
output-low: true
|
||||
output-high: true
|
||||
additionalProperties: false
|
||||
|
||||
examples:
|
||||
- |
|
||||
pinctrl@10010000 {
|
||||
compatible = "ingenic,jz4770-pinctrl";
|
||||
reg = <0x10010000 0x600>;
|
||||
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
|
||||
gpio@0 {
|
||||
compatible = "ingenic,jz4770-gpio";
|
||||
reg = <0>;
|
||||
|
||||
gpio-controller;
|
||||
gpio-ranges = <&pinctrl 0 0 32>;
|
||||
#gpio-cells = <2>;
|
||||
|
||||
interrupt-controller;
|
||||
#interrupt-cells = <2>;
|
||||
|
||||
interrupt-parent = <&intc>;
|
||||
interrupts = <17>;
|
||||
};
|
||||
};
|
76
bindings/pinctrl/intel,lgm-io.yaml
Normal file
76
bindings/pinctrl/intel,lgm-io.yaml
Normal file
@@ -0,0 +1,76 @@
|
||||
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
|
||||
%YAML 1.2
|
||||
---
|
||||
$id: http://devicetree.org/schemas/pinctrl/intel,lgm-io.yaml#
|
||||
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
||||
|
||||
title: Intel Lightning Mountain SoC pinmux & GPIO controller binding
|
||||
|
||||
maintainers:
|
||||
- Rahul Tanwar <rahul.tanwar@linux.intel.com>
|
||||
|
||||
description: |
|
||||
Pinmux & GPIO controller controls pin multiplexing & configuration including
|
||||
GPIO function selection & GPIO attributes configuration.
|
||||
|
||||
properties:
|
||||
compatible:
|
||||
const: intel,lgm-io
|
||||
|
||||
reg:
|
||||
maxItems: 1
|
||||
|
||||
# Client device subnode's properties
|
||||
patternProperties:
|
||||
'-pins$':
|
||||
type: object
|
||||
description:
|
||||
Pinctrl node's client devices use subnodes for desired pin configuration.
|
||||
Client device subnodes use below standard properties.
|
||||
$ref: pinmux-node.yaml#
|
||||
|
||||
properties:
|
||||
function: true
|
||||
groups: true
|
||||
pins: true
|
||||
pinmux: true
|
||||
bias-pull-up: true
|
||||
bias-pull-down: true
|
||||
drive-strength: true
|
||||
slew-rate: true
|
||||
drive-open-drain: true
|
||||
output-enable: true
|
||||
|
||||
required:
|
||||
- function
|
||||
- groups
|
||||
|
||||
additionalProperties: false
|
||||
|
||||
allOf:
|
||||
- $ref: "pinctrl.yaml#"
|
||||
|
||||
required:
|
||||
- compatible
|
||||
- reg
|
||||
|
||||
additionalProperties: false
|
||||
|
||||
examples:
|
||||
# Pinmux controller node
|
||||
- |
|
||||
pinctrl: pinctrl@e2880000 {
|
||||
compatible = "intel,lgm-io";
|
||||
reg = <0xe2880000 0x100000>;
|
||||
|
||||
uart0-pins {
|
||||
pins = <64>, /* UART_RX0 */
|
||||
<65>; /* UART_TX0 */
|
||||
function = "CONSOLE_UART0";
|
||||
pinmux = <1>,
|
||||
<1>;
|
||||
groups = "CONSOLE_UART0";
|
||||
};
|
||||
};
|
||||
|
||||
...
|
136
bindings/pinctrl/intel,pinctrl-keembay.yaml
Normal file
136
bindings/pinctrl/intel,pinctrl-keembay.yaml
Normal file
@@ -0,0 +1,136 @@
|
||||
# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
|
||||
%YAML 1.2
|
||||
---
|
||||
$id: http://devicetree.org/schemas/pinctrl/intel,pinctrl-keembay.yaml#
|
||||
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
||||
|
||||
title: Intel Keem Bay pin controller
|
||||
|
||||
maintainers:
|
||||
- Lakshmi Sowjanya D <lakshmi.sowjanya.d@intel.com>
|
||||
|
||||
description: |
|
||||
Intel Keem Bay SoC integrates a pin controller which enables control
|
||||
of pin directions, input/output values and configuration
|
||||
for a total of 80 pins.
|
||||
|
||||
properties:
|
||||
compatible:
|
||||
const: intel,keembay-pinctrl
|
||||
|
||||
reg:
|
||||
maxItems: 2
|
||||
|
||||
gpio-controller: true
|
||||
|
||||
'#gpio-cells':
|
||||
const: 2
|
||||
|
||||
ngpios:
|
||||
description: The number of GPIOs exposed.
|
||||
const: 80
|
||||
|
||||
interrupts:
|
||||
description:
|
||||
Specifies the interrupt lines to be used by the controller.
|
||||
Each interrupt line is shared by upto 4 GPIO lines.
|
||||
maxItems: 8
|
||||
|
||||
interrupt-controller: true
|
||||
|
||||
'#interrupt-cells':
|
||||
const: 2
|
||||
|
||||
patternProperties:
|
||||
'^gpio@[0-9a-f]*$':
|
||||
type: object
|
||||
additionalProperties: false
|
||||
|
||||
description:
|
||||
Child nodes can be specified to contain pin configuration information,
|
||||
which can then be utilized by pinctrl client devices.
|
||||
The following properties are supported.
|
||||
|
||||
properties:
|
||||
pins:
|
||||
description: |
|
||||
The name(s) of the pins to be configured in the child node.
|
||||
Supported pin names are "GPIO0" up to "GPIO79".
|
||||
|
||||
bias-disable: true
|
||||
|
||||
bias-pull-down: true
|
||||
|
||||
bias-pull-up: true
|
||||
|
||||
drive-strength:
|
||||
description: IO pads drive strength in milli Ampere.
|
||||
enum: [2, 4, 8, 12]
|
||||
|
||||
bias-bus-hold:
|
||||
type: boolean
|
||||
|
||||
input-schmitt-enable:
|
||||
type: boolean
|
||||
|
||||
slew-rate:
|
||||
description: GPIO slew rate control.
|
||||
0 - Fast(~100MHz)
|
||||
1 - Slow(~50MHz)
|
||||
enum: [0, 1]
|
||||
|
||||
additionalProperties: false
|
||||
|
||||
required:
|
||||
- compatible
|
||||
- reg
|
||||
- gpio-controller
|
||||
- ngpios
|
||||
- '#gpio-cells'
|
||||
- interrupts
|
||||
- interrupt-controller
|
||||
- '#interrupt-cells'
|
||||
|
||||
examples:
|
||||
- |
|
||||
#include <dt-bindings/interrupt-controller/arm-gic.h>
|
||||
#include <dt-bindings/interrupt-controller/irq.h>
|
||||
// Example 1
|
||||
gpio@0 {
|
||||
compatible = "intel,keembay-pinctrl";
|
||||
reg = <0x600b0000 0x88>,
|
||||
<0x600b0190 0x1ac>;
|
||||
gpio-controller;
|
||||
ngpios = <0x50>;
|
||||
#gpio-cells = <0x2>;
|
||||
interrupts = <GIC_SPI 94 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<GIC_SPI 95 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<GIC_SPI 96 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<GIC_SPI 97 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<GIC_SPI 98 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<GIC_SPI 99 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<GIC_SPI 100 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<GIC_SPI 101 IRQ_TYPE_LEVEL_HIGH>;
|
||||
interrupt-controller;
|
||||
#interrupt-cells = <2>;
|
||||
};
|
||||
|
||||
// Example 2
|
||||
gpio@1 {
|
||||
compatible = "intel,keembay-pinctrl";
|
||||
reg = <0x600c0000 0x88>,
|
||||
<0x600c0190 0x1ac>;
|
||||
gpio-controller;
|
||||
ngpios = <0x50>;
|
||||
#gpio-cells = <0x2>;
|
||||
interrupts = <GIC_SPI 94 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<GIC_SPI 95 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<GIC_SPI 96 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<GIC_SPI 97 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<GIC_SPI 98 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<GIC_SPI 99 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<GIC_SPI 100 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<GIC_SPI 101 IRQ_TYPE_LEVEL_HIGH>;
|
||||
interrupt-controller;
|
||||
#interrupt-cells = <2>;
|
||||
};
|
120
bindings/pinctrl/intel,pinctrl-thunderbay.yaml
Normal file
120
bindings/pinctrl/intel,pinctrl-thunderbay.yaml
Normal file
@@ -0,0 +1,120 @@
|
||||
# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
|
||||
%YAML 1.2
|
||||
---
|
||||
$id: http://devicetree.org/schemas/pinctrl/intel,pinctrl-thunderbay.yaml#
|
||||
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
||||
|
||||
title: Intel Thunder Bay pin controller
|
||||
|
||||
maintainers:
|
||||
- Lakshmi Sowjanya D <lakshmi.sowjanya.d@intel.com>
|
||||
|
||||
description: |
|
||||
Intel Thunder Bay SoC integrates a pin controller which enables control
|
||||
of pin directions, input/output values and configuration
|
||||
for a total of 67 pins.
|
||||
|
||||
properties:
|
||||
compatible:
|
||||
const: intel,thunderbay-pinctrl
|
||||
|
||||
reg:
|
||||
maxItems: 1
|
||||
|
||||
gpio-controller: true
|
||||
|
||||
'#gpio-cells':
|
||||
const: 2
|
||||
|
||||
gpio-ranges:
|
||||
maxItems: 1
|
||||
|
||||
interrupts:
|
||||
description:
|
||||
Specifies the interrupt lines to be used by the controller.
|
||||
maxItems: 2
|
||||
|
||||
interrupt-controller: true
|
||||
|
||||
'#interrupt-cells':
|
||||
const: 2
|
||||
|
||||
patternProperties:
|
||||
'^gpio@[0-9a-f]*$':
|
||||
type: object
|
||||
additionalProperties: false
|
||||
|
||||
description:
|
||||
Child nodes can be specified to contain pin configuration information,
|
||||
which can then be utilized by pinctrl client devices.
|
||||
The following properties are supported.
|
||||
|
||||
properties:
|
||||
pins:
|
||||
description: |
|
||||
The name(s) of the pins to be configured in the child node.
|
||||
Supported pin names are "GPIO0" up to "GPIO66".
|
||||
|
||||
bias-disable: true
|
||||
|
||||
bias-pull-down: true
|
||||
|
||||
bias-pull-up: true
|
||||
|
||||
drive-strength:
|
||||
description: Drive strength for the pad.
|
||||
enum: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15]
|
||||
|
||||
bias-bus-hold:
|
||||
type: boolean
|
||||
|
||||
input-schmitt-enable:
|
||||
type: boolean
|
||||
|
||||
slew-rate:
|
||||
description: GPIO slew rate control.
|
||||
0 - Slow
|
||||
1 - Fast
|
||||
enum: [0, 1]
|
||||
|
||||
additionalProperties: false
|
||||
|
||||
required:
|
||||
- compatible
|
||||
- reg
|
||||
- gpio-controller
|
||||
- '#gpio-cells'
|
||||
- gpio-ranges
|
||||
- interrupts
|
||||
- interrupt-controller
|
||||
- '#interrupt-cells'
|
||||
|
||||
examples:
|
||||
- |
|
||||
#include <dt-bindings/interrupt-controller/arm-gic.h>
|
||||
#include <dt-bindings/interrupt-controller/irq.h>
|
||||
// Example 1
|
||||
pinctrl0: gpio@0 {
|
||||
compatible = "intel,thunderbay-pinctrl";
|
||||
reg = <0x600b0000 0x88>;
|
||||
gpio-controller;
|
||||
#gpio-cells = <0x2>;
|
||||
gpio-ranges = <&pinctrl0 0 0 67>;
|
||||
interrupts = <GIC_SPI 94 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<GIC_SPI 95 IRQ_TYPE_LEVEL_HIGH>;
|
||||
interrupt-controller;
|
||||
#interrupt-cells = <2>;
|
||||
};
|
||||
|
||||
// Example 2
|
||||
pinctrl1: gpio@1 {
|
||||
compatible = "intel,thunderbay-pinctrl";
|
||||
reg = <0x600c0000 0x88>;
|
||||
gpio-controller;
|
||||
#gpio-cells = <0x2>;
|
||||
gpio-ranges = <&pinctrl1 0 0 53>;
|
||||
interrupts = <GIC_SPI 94 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<GIC_SPI 95 IRQ_TYPE_LEVEL_HIGH>;
|
||||
interrupt-controller;
|
||||
#interrupt-cells = <2>;
|
||||
};
|
83
bindings/pinctrl/lantiq,pinctrl-falcon.txt
Normal file
83
bindings/pinctrl/lantiq,pinctrl-falcon.txt
Normal file
@@ -0,0 +1,83 @@
|
||||
Lantiq FALCON pinmux controller
|
||||
|
||||
Required properties:
|
||||
- compatible: "lantiq,pinctrl-falcon"
|
||||
- reg: Should contain the physical address and length of the gpio/pinmux
|
||||
register range
|
||||
|
||||
Please refer to pinctrl-bindings.txt in this directory for details of the
|
||||
common pinctrl bindings used by client devices, including the meaning of the
|
||||
phrase "pin configuration node".
|
||||
|
||||
Lantiq's pin configuration nodes act as a container for an arbitrary number of
|
||||
subnodes. Each of these subnodes represents some desired configuration for a
|
||||
pin, a group, or a list of pins or groups. This configuration can include the
|
||||
mux function to select on those group(s), and two pin configuration parameters:
|
||||
pull-up and open-drain
|
||||
|
||||
The name of each subnode is not important as long as it is unique; all subnodes
|
||||
should be enumerated and processed purely based on their content.
|
||||
|
||||
Each subnode only affects those parameters that are explicitly listed. In
|
||||
other words, a subnode that lists a mux function but no pin configuration
|
||||
parameters implies no information about any pin configuration parameters.
|
||||
Similarly, a pin subnode that describes a pullup parameter implies no
|
||||
information about e.g. the mux function.
|
||||
|
||||
We support 2 types of nodes.
|
||||
|
||||
Definition of mux function groups:
|
||||
|
||||
Required subnode-properties:
|
||||
- lantiq,groups : An array of strings. Each string contains the name of a group.
|
||||
Valid values for these names are listed below.
|
||||
- lantiq,function: A string containing the name of the function to mux to the
|
||||
group. Valid values for function names are listed below.
|
||||
|
||||
Valid values for group and function names:
|
||||
|
||||
mux groups:
|
||||
por, ntr, ntr8k, hrst, mdio, bootled, asc0, spi, spi cs0, spi cs1, i2c,
|
||||
jtag, slic, pcm, asc1
|
||||
|
||||
functions:
|
||||
rst, ntr, mdio, led, asc, spi, i2c, jtag, slic, pcm
|
||||
|
||||
|
||||
Definition of pin configurations:
|
||||
|
||||
Required subnode-properties:
|
||||
- lantiq,pins : An array of strings. Each string contains the name of a pin.
|
||||
Valid values for these names are listed below.
|
||||
|
||||
Optional subnode-properties:
|
||||
- lantiq,pull: Integer, representing the pull-down/up to apply to the pin.
|
||||
0: none, 1: down
|
||||
- lantiq,drive-current: Boolean, enables drive-current
|
||||
- lantiq,slew-rate: Boolean, enables slew-rate
|
||||
|
||||
Example:
|
||||
pinmux0 {
|
||||
compatible = "lantiq,pinctrl-falcon";
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&state_default>;
|
||||
|
||||
state_default: pinmux {
|
||||
asc0 {
|
||||
lantiq,groups = "asc0";
|
||||
lantiq,function = "asc";
|
||||
};
|
||||
ntr {
|
||||
lantiq,groups = "ntr8k";
|
||||
lantiq,function = "ntr";
|
||||
};
|
||||
i2c {
|
||||
lantiq,groups = "i2c";
|
||||
lantiq,function = "i2c";
|
||||
};
|
||||
hrst {
|
||||
lantiq,groups = "hrst";
|
||||
lantiq,function = "rst";
|
||||
};
|
||||
};
|
||||
};
|
191
bindings/pinctrl/lantiq,pinctrl-xway.txt
Normal file
191
bindings/pinctrl/lantiq,pinctrl-xway.txt
Normal file
@@ -0,0 +1,191 @@
|
||||
Lantiq XWAY pinmux controller
|
||||
|
||||
Required properties:
|
||||
- compatible: "lantiq,pinctrl-xway", (DEPRECATED: Use "lantiq,pinctrl-danube")
|
||||
"lantiq,pinctrl-xr9", (DEPRECATED: Use "lantiq,xrx100-pinctrl" or
|
||||
"lantiq,xrx200-pinctrl")
|
||||
"lantiq,pinctrl-ase", (DEPRECATED: Use "lantiq,ase-pinctrl")
|
||||
"lantiq,<chip>-pinctrl", where <chip> is:
|
||||
"ase" (XWAY AMAZON Family)
|
||||
"danube" (XWAY DANUBE Family)
|
||||
"xrx100" (XWAY xRX100 Family)
|
||||
"xrx200" (XWAY xRX200 Family)
|
||||
"xrx300" (XWAY xRX300 Family)
|
||||
- reg: Should contain the physical address and length of the gpio/pinmux
|
||||
register range
|
||||
|
||||
Please refer to pinctrl-bindings.txt in this directory for details of the
|
||||
common pinctrl bindings used by client devices, including the meaning of the
|
||||
phrase "pin configuration node".
|
||||
|
||||
Lantiq's pin configuration nodes act as a container for an arbitrary number of
|
||||
subnodes. Each of these subnodes represents some desired configuration for a
|
||||
pin, a group, or a list of pins or groups. This configuration can include the
|
||||
mux function to select on those group(s), and two pin configuration parameters:
|
||||
pull-up and open-drain
|
||||
|
||||
The name of each subnode is not important as long as it is unique; all subnodes
|
||||
should be enumerated and processed purely based on their content.
|
||||
|
||||
Each subnode only affects those parameters that are explicitly listed. In
|
||||
other words, a subnode that lists a mux function but no pin configuration
|
||||
parameters implies no information about any pin configuration parameters.
|
||||
Similarly, a pin subnode that describes a pullup parameter implies no
|
||||
information about e.g. the mux function.
|
||||
|
||||
We support 2 types of nodes.
|
||||
|
||||
Definition of mux function groups:
|
||||
|
||||
Required subnode-properties:
|
||||
- lantiq,groups : An array of strings. Each string contains the name of a group.
|
||||
Valid values for these names are listed below.
|
||||
- lantiq,function: A string containing the name of the function to mux to the
|
||||
group. Valid values for function names are listed below.
|
||||
|
||||
Valid values for group and function names:
|
||||
|
||||
XWAY: (DEPRECATED: Use DANUBE)
|
||||
mux groups:
|
||||
exin0, exin1, exin2, jtag, ebu a23, ebu a24, ebu a25, ebu clk, ebu cs1,
|
||||
ebu wait, nand ale, nand cs1, nand cle, spi, spi_cs1, spi_cs2, spi_cs3,
|
||||
spi_cs4, spi_cs5, spi_cs6, asc0, asc0 cts rts, stp, nmi, gpt1, gpt2,
|
||||
gpt3, clkout0, clkout1, clkout2, clkout3, gnt1, gnt2, gnt3, req1, req2,
|
||||
req3
|
||||
|
||||
functions:
|
||||
spi, asc, cgu, jtag, exin, stp, gpt, nmi, pci, ebu
|
||||
|
||||
XR9: ( DEPRECATED: Use xRX100/xRX200)
|
||||
mux groups:
|
||||
exin0, exin1, exin2, exin3, exin4, jtag, ebu a23, ebu a24, ebu a25,
|
||||
ebu clk, ebu cs1, ebu wait, nand ale, nand cs1, nand cle, nand rdy,
|
||||
nand rd, spi, spi_cs1, spi_cs2, spi_cs3, spi_cs4, spi_cs5, spi_cs6,
|
||||
asc0, asc0 cts rts, stp, nmi, gpt1, gpt2, gpt3, clkout0, clkout1,
|
||||
clkout2, clkout3, gnt1, gnt2, gnt3, gnt4, req1, req2, req3, req4, mdio,
|
||||
gphy0 led0, gphy0 led1, gphy0 led2, gphy1 led0, gphy1 led1, gphy1 led2
|
||||
|
||||
functions:
|
||||
spi, asc, cgu, jtag, exin, stp, gpt, nmi, pci, ebu, mdio, gphy
|
||||
|
||||
AMAZON:
|
||||
mux groups:
|
||||
exin0, exin1, exin2, jtag, spi_di, spi_do, spi_clk, spi_cs1, spi_cs2,
|
||||
spi_cs3, spi_cs4, spi_cs5, spi_cs6, asc, stp, gpt1, gpt2, gpt3, clkout0,
|
||||
clkout1, clkout2, mdio, dfe led0, dfe led1, ephy led0, ephy led1, ephy led2
|
||||
|
||||
functions:
|
||||
spi, asc, cgu, jtag, exin, stp, gpt, mdio, ephy, dfe
|
||||
|
||||
DANUBE:
|
||||
mux groups:
|
||||
exin0, exin1, exin2, jtag, ebu a23, ebu a24, ebu a25, ebu clk, ebu cs1,
|
||||
ebu wait, nand ale, nand cs1, nand cle, spi_di, spi_do, spi_clk, spi_cs1,
|
||||
spi_cs2, spi_cs3, spi_cs4, spi_cs5, spi_cs6, asc0, asc0 cts rts, stp, nmi,
|
||||
gpt1, gpt2, gpt3, clkout0, clkout1, clkout2, clkout3, gnt1, gnt2, gnt3,
|
||||
req1, req2, req3, dfe led0, dfe led1
|
||||
|
||||
functions:
|
||||
spi, asc, cgu, jtag, exin, stp, gpt, nmi, pci, ebu, dfe
|
||||
|
||||
xRX100:
|
||||
mux groups:
|
||||
exin0, exin1, exin2, exin3, exin4, ebu a23, ebu a24, ebu a25, ebu clk,
|
||||
ebu cs1, ebu wait, nand ale, nand cs1, nand cle, nand rdy, nand rd,
|
||||
spi_di, spi_do, spi_clk, spi_cs1, spi_cs2, spi_cs3, spi_cs4, spi_cs5,
|
||||
spi_cs6, asc0, asc0 cts rts, stp, nmi, gpt1, gpt2, gpt3, clkout0, clkout1,
|
||||
clkout2, clkout3, gnt1, gnt2, gnt3, gnt4, req1, req2, req3, req4, mdio,
|
||||
dfe led0, dfe led1
|
||||
|
||||
functions:
|
||||
spi, asc, cgu, exin, stp, gpt, nmi, pci, ebu, mdio, dfe
|
||||
|
||||
xRX200:
|
||||
mux groups:
|
||||
exin0, exin1, exin2, exin3, exin4, ebu a23, ebu a24, ebu a25, ebu clk,
|
||||
ebu cs1, ebu wait, nand ale, nand cs1, nand cle, nand rdy, nand rd,
|
||||
spi_di, spi_do, spi_clk, spi_cs1, spi_cs2, spi_cs3, spi_cs4, spi_cs5,
|
||||
spi_cs6, usif uart_rx, usif uart_tx, usif uart_rts, usif uart_cts,
|
||||
usif uart_dtr, usif uart_dsr, usif uart_dcd, usif uart_ri, usif spi_di,
|
||||
usif spi_do, usif spi_clk, usif spi_cs0, usif spi_cs1, usif spi_cs2,
|
||||
stp, nmi, gpt1, gpt2, gpt3, clkout0, clkout1, clkout2, clkout3, gnt1,
|
||||
gnt2, gnt3, gnt4, req1, req2, req3, req4, mdio, dfe led0, dfe led1,
|
||||
gphy0 led0, gphy0 led1, gphy0 led2, gphy1 led0, gphy1 led1, gphy1 led2
|
||||
|
||||
functions:
|
||||
spi, usif, cgu, exin, stp, gpt, nmi, pci, ebu, mdio, dfe, gphy
|
||||
|
||||
xRX300:
|
||||
mux groups:
|
||||
exin0, exin1, exin2, exin4, nand ale, nand cs0, nand cs1, nand cle,
|
||||
nand rdy, nand rd, nand_d0, nand_d1, nand_d2, nand_d3, nand_d4, nand_d5,
|
||||
nand_d6, nand_d7, nand_d1, nand wr, nand wp, nand se, spi_di, spi_do,
|
||||
spi_clk, spi_cs1, spi_cs4, spi_cs6, usif uart_rx, usif uart_tx,
|
||||
usif spi_di, usif spi_do, usif spi_clk, usif spi_cs0, stp, clkout2,
|
||||
mdio, dfe led0, dfe led1, ephy0 led0, ephy0 led1, ephy1 led0, ephy1 led1
|
||||
|
||||
functions:
|
||||
spi, usif, cgu, exin, stp, ebu, mdio, dfe, ephy
|
||||
|
||||
|
||||
Definition of pin configurations:
|
||||
|
||||
Required subnode-properties:
|
||||
- lantiq,pins : An array of strings. Each string contains the name of a pin.
|
||||
Valid values for these names are listed below.
|
||||
|
||||
Optional subnode-properties:
|
||||
- lantiq,pull: Integer, representing the pull-down/up to apply to the pin.
|
||||
0: none, 1: down, 2: up.
|
||||
- lantiq,open-drain: Boolean, enables open-drain on the defined pin.
|
||||
|
||||
Valid values for XWAY pin names: (DEPRECATED: Use DANUBE)
|
||||
Pinconf pins can be referenced via the names io0-io31.
|
||||
|
||||
Valid values for XR9 pin names: (DEPRECATED: Use xrX100/xRX200)
|
||||
Pinconf pins can be referenced via the names io0-io55.
|
||||
|
||||
Valid values for AMAZON pin names:
|
||||
Pinconf pins can be referenced via the names io0-io31.
|
||||
|
||||
Valid values for DANUBE pin names:
|
||||
Pinconf pins can be referenced via the names io0-io31.
|
||||
|
||||
Valid values for xRX100 pin names:
|
||||
Pinconf pins can be referenced via the names io0-io55.
|
||||
|
||||
Valid values for xRX200 pin names:
|
||||
Pinconf pins can be referenced via the names io0-io49.
|
||||
|
||||
Valid values for xRX300 pin names:
|
||||
Pinconf pins can be referenced via the names io0-io1,io3-io6,io8-io11,
|
||||
io13-io19,io23-io27,io34-io36,
|
||||
io42-io43,io48-io61.
|
||||
|
||||
Example:
|
||||
gpio: pinmux@e100b10 {
|
||||
compatible = "lantiq,danube-pinctrl";
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&state_default>;
|
||||
|
||||
#gpio-cells = <2>;
|
||||
gpio-controller;
|
||||
reg = <0xE100B10 0xA0>;
|
||||
|
||||
state_default: pinmux {
|
||||
stp {
|
||||
lantiq,groups = "stp";
|
||||
lantiq,function = "stp";
|
||||
};
|
||||
pci {
|
||||
lantiq,groups = "gnt1";
|
||||
lantiq,function = "pci";
|
||||
};
|
||||
conf_out {
|
||||
lantiq,pins = "io4", "io5", "io6"; /* stp */
|
||||
lantiq,open-drain;
|
||||
lantiq,pull = <0>;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
73
bindings/pinctrl/marvell,ac5-pinctrl.yaml
Normal file
73
bindings/pinctrl/marvell,ac5-pinctrl.yaml
Normal file
@@ -0,0 +1,73 @@
|
||||
# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
|
||||
%YAML 1.2
|
||||
---
|
||||
$id: http://devicetree.org/schemas/pinctrl/marvell,ac5-pinctrl.yaml#
|
||||
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
||||
|
||||
title: Marvell AC5 pin controller
|
||||
|
||||
maintainers:
|
||||
- Chris Packham <chris.packham@alliedtelesis.co.nz>
|
||||
|
||||
description:
|
||||
Bindings for Marvell's AC5 memory-mapped pin controller.
|
||||
|
||||
properties:
|
||||
compatible:
|
||||
items:
|
||||
- const: marvell,ac5-pinctrl
|
||||
|
||||
reg:
|
||||
maxItems: 1
|
||||
|
||||
patternProperties:
|
||||
'-pins$':
|
||||
type: object
|
||||
$ref: pinmux-node.yaml#
|
||||
additionalProperties: false
|
||||
|
||||
properties:
|
||||
marvell,function:
|
||||
$ref: "/schemas/types.yaml#/definitions/string"
|
||||
description:
|
||||
Indicates the function to select.
|
||||
enum: [ dev_init_done, ge, gpio, i2c0, i2c1, int_out, led, nand, pcie, ptp, sdio,
|
||||
spi0, spi1, synce, tsen_int, uart0, uart1, uart2, uart3, uartsd, wd_int, xg ]
|
||||
|
||||
marvell,pins:
|
||||
$ref: /schemas/types.yaml#/definitions/string-array
|
||||
description:
|
||||
Array of MPP pins to be used for the given function.
|
||||
minItems: 1
|
||||
items:
|
||||
enum: [ mpp0, mpp1, mpp2, mpp3, mpp4, mpp5, mpp6, mpp7, mpp8, mpp9,
|
||||
mpp10, mpp11, mpp12, mpp13, mpp14, mpp15, mpp16, mpp17, mpp18, mpp19,
|
||||
mpp20, mpp21, mpp22, mpp23, mpp24, mpp25, mpp26, mpp27, mpp28, mpp29,
|
||||
mpp30, mpp31, mpp32, mpp33, mpp34, mpp35, mpp36, mpp37, mpp38, mpp39,
|
||||
mpp40, mpp41, mpp42, mpp43, mpp44, mpp45 ]
|
||||
|
||||
allOf:
|
||||
- $ref: "pinctrl.yaml#"
|
||||
|
||||
required:
|
||||
- compatible
|
||||
- reg
|
||||
|
||||
additionalProperties: false
|
||||
|
||||
examples:
|
||||
- |
|
||||
pinctrl@80020100 {
|
||||
compatible = "marvell,ac5-pinctrl";
|
||||
reg = <0x80020100 0x20>;
|
||||
|
||||
i2c0_pins: i2c0-pins {
|
||||
marvell,pins = "mpp26", "mpp27";
|
||||
marvell,function = "i2c0";
|
||||
};
|
||||
|
||||
i2c0_gpio: i2c0-gpio-pins {
|
||||
marvell,pins = "mpp26", "mpp27";
|
||||
marvell,function = "gpio";
|
||||
};
|
||||
};
|
99
bindings/pinctrl/marvell,armada-370-pinctrl.txt
Normal file
99
bindings/pinctrl/marvell,armada-370-pinctrl.txt
Normal file
@@ -0,0 +1,99 @@
|
||||
* Marvell Armada 370 SoC pinctrl driver for mpp
|
||||
|
||||
Please refer to marvell,mvebu-pinctrl.txt in this directory for common binding
|
||||
part and usage.
|
||||
|
||||
Required properties:
|
||||
- compatible: "marvell,88f6710-pinctrl"
|
||||
- reg: register specifier of MPP registers
|
||||
|
||||
Available mpp pins/groups and functions:
|
||||
Note: brackets (x) are not part of the mpp name for marvell,function and given
|
||||
only for more detailed description in this document.
|
||||
|
||||
name pins functions
|
||||
================================================================================
|
||||
mpp0 0 gpio, uart0(rxd)
|
||||
mpp1 1 gpo, uart0(txd)
|
||||
mpp2 2 gpio, i2c0(sck), uart0(txd)
|
||||
mpp3 3 gpio, i2c0(sda), uart0(rxd)
|
||||
mpp4 4 gpio, vdd(cpu-pd)
|
||||
mpp5 5 gpo, ge0(txclkout), uart1(txd), spi1(sck), audio(mclk)
|
||||
mpp6 6 gpio, ge0(txd0), sata0(prsnt), tdm(rst), audio(sdo)
|
||||
mpp7 7 gpo, ge0(txd1), tdm(dtx), audio(lrclk)
|
||||
mpp8 8 gpio, ge0(txd2), uart0(rts), tdm(drx), audio(bclk)
|
||||
mpp9 9 gpo, ge0(txd3), uart1(txd), sd0(clk), audio(spdifo)
|
||||
mpp10 10 gpio, ge0(txctl), uart0(cts), tdm(fsync), audio(sdi)
|
||||
mpp11 11 gpio, ge0(rxd0), uart1(rxd), sd0(cmd), spi0(cs1),
|
||||
sata1(prsnt), spi1(cs1)
|
||||
mpp12 12 gpio, ge0(rxd1), i2c1(sda), sd0(d0), spi1(cs0),
|
||||
audio(spdifi)
|
||||
mpp13 13 gpio, ge0(rxd2), i2c1(sck), sd0(d1), tdm(pclk),
|
||||
audio(rmclk)
|
||||
mpp14 14 gpio, ge0(rxd3), pcie(clkreq0), sd0(d2), spi1(mosi),
|
||||
spi0(cs2)
|
||||
mpp15 15 gpio, ge0(rxctl), pcie(clkreq1), sd0(d3), spi1(miso),
|
||||
spi0(cs3)
|
||||
mpp16 16 gpio, ge0(rxclk), uart1(rxd), tdm(int), audio(extclk)
|
||||
mpp17 17 gpo, ge(mdc)
|
||||
mpp18 18 gpio, ge(mdio)
|
||||
mpp19 19 gpio, ge0(txclk), ge1(txclkout), tdm(pclk)
|
||||
mpp20 20 gpo, ge0(txd4), ge1(txd0)
|
||||
mpp21 21 gpo, ge0(txd5), ge1(txd1), uart1(txd)
|
||||
mpp22 22 gpo, ge0(txd6), ge1(txd2), uart0(rts)
|
||||
mpp23 23 gpo, ge0(txd7), ge1(txd3), spi1(mosi)
|
||||
mpp24 24 gpio, ge0(col), ge1(txctl), spi1(cs0)
|
||||
mpp25 25 gpio, ge0(rxerr), ge1(rxd0), uart1(rxd)
|
||||
mpp26 26 gpio, ge0(crs), ge1(rxd1), spi1(miso)
|
||||
mpp27 27 gpio, ge0(rxd4), ge1(rxd2), uart0(cts)
|
||||
mpp28 28 gpio, ge0(rxd5), ge1(rxd3)
|
||||
mpp29 29 gpio, ge0(rxd6), ge1(rxctl), i2c1(sda)
|
||||
mpp30 30 gpio, ge0(rxd7), ge1(rxclk), i2c1(sck)
|
||||
mpp31 31 gpio, tclk, ge0(txerr)
|
||||
mpp32 32 gpio, spi0(cs0)
|
||||
mpp33 33 gpio, dev(bootcs), spi0(cs0)
|
||||
mpp34 34 gpo, dev(we0), spi0(mosi)
|
||||
mpp35 35 gpo, dev(oe), spi0(sck)
|
||||
mpp36 36 gpo, dev(a1), spi0(miso)
|
||||
mpp37 37 gpo, dev(a0), sata0(prsnt)
|
||||
mpp38 38 gpio, dev(ready), uart1(cts), uart0(cts)
|
||||
mpp39 39 gpo, dev(ad0), audio(spdifo)
|
||||
mpp40 40 gpio, dev(ad1), uart1(rts), uart0(rts)
|
||||
mpp41 41 gpio, dev(ad2), uart1(rxd)
|
||||
mpp42 42 gpo, dev(ad3), uart1(txd)
|
||||
mpp43 43 gpo, dev(ad4), audio(bclk)
|
||||
mpp44 44 gpo, dev(ad5), audio(mclk)
|
||||
mpp45 45 gpo, dev(ad6), audio(lrclk)
|
||||
mpp46 46 gpo, dev(ad7), audio(sdo)
|
||||
mpp47 47 gpo, dev(ad8), sd0(clk), audio(spdifo)
|
||||
mpp48 48 gpio, dev(ad9), uart0(rts), sd0(cmd), sata1(prsnt),
|
||||
spi0(cs1)
|
||||
mpp49 49 gpio, dev(ad10), pcie(clkreq1), sd0(d0), spi1(cs0),
|
||||
audio(spdifi)
|
||||
mpp50 50 gpio, dev(ad11), uart0(cts), sd0(d1), spi1(miso),
|
||||
audio(rmclk)
|
||||
mpp51 51 gpio, dev(ad12), i2c1(sda), sd0(d2), spi1(mosi)
|
||||
mpp52 52 gpio, dev(ad13), i2c1(sck), sd0(d3), spi1(sck)
|
||||
mpp53 53 gpio, dev(ad14), sd0(clk), tdm(pclk), spi0(cs2),
|
||||
pcie(clkreq1)
|
||||
mpp54 54 gpo, dev(ad15), tdm(dtx)
|
||||
mpp55 55 gpio, dev(cs1), uart1(txd), tdm(rst), sata1(prsnt),
|
||||
sata0(prsnt)
|
||||
mpp56 56 gpio, dev(cs2), uart1(cts), uart0(cts), spi0(cs3),
|
||||
pcie(clkreq0), spi1(cs1)
|
||||
mpp57 57 gpio, dev(cs3), uart1(rxd), tdm(fsync), sata0(prsnt),
|
||||
audio(sdo)
|
||||
mpp58 58 gpio, dev(cs0), uart1(rts), tdm(int), audio(extclk),
|
||||
uart0(rts)
|
||||
mpp59 59 gpo, dev(ale0), uart1(rts), uart0(rts), audio(bclk)
|
||||
mpp60 60 gpio, dev(ale1), uart1(rxd), sata0(prsnt), pcie(rstout),
|
||||
audio(sdi)
|
||||
mpp61 61 gpo, dev(we1), uart1(txd), audio(lrclk)
|
||||
mpp62 62 gpio, dev(a2), uart1(cts), tdm(drx), pcie(clkreq0),
|
||||
audio(mclk), uart0(cts)
|
||||
mpp63 63 gpio, spi0(sck), tclk
|
||||
mpp64 64 gpio, spi0(miso), spi0(cs1)
|
||||
mpp65 65 gpio, spi0(mosi), spi0(cs2)
|
||||
|
||||
Note: According to the datasheet mpp63 is a gpo but there is at least
|
||||
one example of a gpio usage on the board D-Link DNS-327L
|
82
bindings/pinctrl/marvell,armada-375-pinctrl.txt
Normal file
82
bindings/pinctrl/marvell,armada-375-pinctrl.txt
Normal file
@@ -0,0 +1,82 @@
|
||||
* Marvell Armada 375 SoC pinctrl driver for mpp
|
||||
|
||||
Please refer to marvell,mvebu-pinctrl.txt in this directory for common binding
|
||||
part and usage.
|
||||
|
||||
Required properties:
|
||||
- compatible: "marvell,88f6720-pinctrl"
|
||||
- reg: register specifier of MPP registers
|
||||
|
||||
Available mpp pins/groups and functions:
|
||||
Note: brackets (x) are not part of the mpp name for marvell,function and given
|
||||
only for more detailed description in this document.
|
||||
|
||||
name pins functions
|
||||
================================================================================
|
||||
mpp0 0 gpio, dev(ad2), spi0(cs1), spi1(cs1)
|
||||
mpp1 1 gpio, dev(ad3), spi0(mosi), spi1(mosi)
|
||||
mpp2 2 gpio, dev(ad4), ptp(evreq), led(c0), audio(sdi)
|
||||
mpp3 3 gpio, dev(ad5), ptp(trig), led(p3), audio(mclk)
|
||||
mpp4 4 gpio, dev(ad6), spi0(miso), spi1(miso)
|
||||
mpp5 5 gpio, dev(ad7), spi0(cs2), spi1(cs2)
|
||||
mpp6 6 gpio, dev(ad0), led(p1), audio(lrclk)
|
||||
mpp7 7 gpio, dev(ad1), ptp(clk), led(p2), audio(extclk)
|
||||
mpp8 8 gpio, dev (bootcs), spi0(cs0), spi1(cs0)
|
||||
mpp9 9 gpio, spi0(sck), spi1(sck), nand(we)
|
||||
mpp10 10 gpio, dram(vttctrl), led(c1), nand(re)
|
||||
mpp11 11 gpio, dev(a0), led(c2), audio(sdo)
|
||||
mpp12 12 gpio, dev(a1), audio(bclk)
|
||||
mpp13 13 gpio, dev(ready), pcie0(rstout), pcie1(rstout)
|
||||
mpp14 14 gpio, i2c0(sda), uart1(txd)
|
||||
mpp15 15 gpio, i2c0(sck), uart1(rxd)
|
||||
mpp16 16 gpio, uart0(txd)
|
||||
mpp17 17 gpio, uart0(rxd)
|
||||
mpp18 18 gpio, tdm(int)
|
||||
mpp19 19 gpio, tdm(rst)
|
||||
mpp20 20 gpio, tdm(pclk)
|
||||
mpp21 21 gpio, tdm(fsync)
|
||||
mpp22 22 gpio, tdm(drx)
|
||||
mpp23 23 gpio, tdm(dtx)
|
||||
mpp24 24 gpio, led(p0), ge1(rxd0), sd(cmd), uart0(rts)
|
||||
mpp25 25 gpio, led(p2), ge1(rxd1), sd(d0), uart0(cts)
|
||||
mpp26 26 gpio, pcie0(clkreq), ge1(rxd2), sd(d2), uart1(rts)
|
||||
mpp27 27 gpio, pcie1(clkreq), ge1(rxd3), sd(d1), uart1(cts)
|
||||
mpp28 28 gpio, led(p3), ge1(txctl), sd(clk)
|
||||
mpp29 29 gpio, pcie1(clkreq), ge1(rxclk), sd(d3)
|
||||
mpp30 30 gpio, ge1(txd0), spi1(cs0)
|
||||
mpp31 31 gpio, ge1(txd1), spi1(mosi)
|
||||
mpp32 32 gpio, ge1(txd2), spi1(sck), ptp(trig)
|
||||
mpp33 33 gpio, ge1(txd3), spi1(miso)
|
||||
mpp34 34 gpio, ge1(txclkout), spi1(sck)
|
||||
mpp35 35 gpio, ge1(rxctl), spi1(cs1), spi0(cs2)
|
||||
mpp36 36 gpio, pcie0(clkreq)
|
||||
mpp37 37 gpio, pcie0(clkreq), tdm(int), ge(mdc)
|
||||
mpp38 38 gpio, pcie1(clkreq), ge(mdio)
|
||||
mpp39 39 gpio, ref(clkout)
|
||||
mpp40 40 gpio, uart1(txd)
|
||||
mpp41 41 gpio, uart1(rxd)
|
||||
mpp42 42 gpio, spi1(cs2), led(c0)
|
||||
mpp43 43 gpio, sata0(prsnt), dram(vttctrl)
|
||||
mpp44 44 gpio, sata0(prsnt)
|
||||
mpp45 45 gpio, spi0(cs2), pcie0(rstout)
|
||||
mpp46 46 gpio, led(p0), ge0(txd0), ge1(txd0), dev(we1)
|
||||
mpp47 47 gpio, led(p1), ge0(txd1), ge1(txd1)
|
||||
mpp48 48 gpio, led(p2), ge0(txd2), ge1(txd2)
|
||||
mpp49 49 gpio, led(p3), ge0(txd3), ge1(txd3)
|
||||
mpp50 50 gpio, led(c0), ge0(rxd0), ge1(rxd0)
|
||||
mpp51 51 gpio, led(c1), ge0(rxd1), ge1(rxd1)
|
||||
mpp52 52 gpio, led(c2), ge0(rxd2), ge1(rxd2)
|
||||
mpp53 53 gpio, pcie1(rstout), ge0(rxd3), ge1(rxd3)
|
||||
mpp54 54 gpio, pcie0(rstout), ge0(rxctl), ge1(rxctl)
|
||||
mpp55 55 gpio, ge0(rxclk), ge1(rxclk)
|
||||
mpp56 56 gpio, ge0(txclkout), ge1(txclkout)
|
||||
mpp57 57 gpio, ge0(txctl), ge1(txctl), dev(we0)
|
||||
mpp58 58 gpio, led(c0)
|
||||
mpp59 59 gpio, led(c1)
|
||||
mpp60 60 gpio, uart1(txd), led(c2)
|
||||
mpp61 61 gpio, i2c1(sda), uart1(rxd), spi1(cs2), led(p0)
|
||||
mpp62 62 gpio, i2c1(sck), led(p1)
|
||||
mpp63 63 gpio, ptp(trig), led(p2), dev(burst/last)
|
||||
mpp64 64 gpio, dram(vttctrl), led(p3)
|
||||
mpp65 65 gpio, sata1(prsnt)
|
||||
mpp66 66 gpio, ptp(evreq), spi1(cs3)
|
195
bindings/pinctrl/marvell,armada-37xx-pinctrl.txt
Normal file
195
bindings/pinctrl/marvell,armada-37xx-pinctrl.txt
Normal file
@@ -0,0 +1,195 @@
|
||||
* Marvell Armada 37xx SoC pin and gpio controller
|
||||
|
||||
Each Armada 37xx SoC come with two pin and gpio controller one for the
|
||||
south bridge and the other for the north bridge.
|
||||
|
||||
Inside this set of register the gpio latch allows exposing some
|
||||
configuration of the SoC and especially the clock frequency of the
|
||||
xtal. Hence, this node is a represent as syscon allowing sharing the
|
||||
register between multiple hardware block.
|
||||
|
||||
GPIO and pin controller:
|
||||
------------------------
|
||||
|
||||
Main node:
|
||||
|
||||
Refer to pinctrl-bindings.txt in this directory for details of the
|
||||
common pinctrl bindings used by client devices, including the meaning
|
||||
of the phrase "pin configuration node".
|
||||
|
||||
Required properties for pinctrl driver:
|
||||
|
||||
- compatible: "marvell,armada3710-sb-pinctrl", "syscon, "simple-mfd"
|
||||
for the south bridge
|
||||
"marvell,armada3710-nb-pinctrl", "syscon, "simple-mfd"
|
||||
for the north bridge
|
||||
- reg: The first set of register are for pinctrl/gpio and the second
|
||||
set for the interrupt controller
|
||||
- interrupts: list of the interrupt use by the gpio
|
||||
|
||||
Available groups and functions for the North bridge:
|
||||
|
||||
group: jtag
|
||||
- pins 20-24
|
||||
- functions jtag, gpio
|
||||
|
||||
group sdio0
|
||||
- pins 8-10
|
||||
- functions sdio, gpio
|
||||
|
||||
group emmc_nb
|
||||
- pins 27-35
|
||||
- functions emmc, gpio
|
||||
|
||||
group pwm0
|
||||
- pin 11 (GPIO1-11)
|
||||
- functions pwm, led, gpio
|
||||
|
||||
group pwm1
|
||||
- pin 12
|
||||
- functions pwm, led, gpio
|
||||
|
||||
group pwm2
|
||||
- pin 13
|
||||
- functions pwm, led, gpio
|
||||
|
||||
group pwm3
|
||||
- pin 14
|
||||
- functions pwm, led, gpio
|
||||
|
||||
group pmic1
|
||||
- pin 7
|
||||
- functions pmic, gpio
|
||||
|
||||
group pmic0
|
||||
- pin 6
|
||||
- functions pmic, gpio
|
||||
|
||||
group i2c2
|
||||
- pins 2-3
|
||||
- functions i2c, gpio
|
||||
|
||||
group i2c1
|
||||
- pins 0-1
|
||||
- functions i2c, gpio
|
||||
|
||||
group spi_cs1
|
||||
- pin 17
|
||||
- functions spi, gpio
|
||||
|
||||
group spi_cs2
|
||||
- pin 18
|
||||
- functions spi, gpio
|
||||
|
||||
group spi_cs3
|
||||
- pin 19
|
||||
- functions spi, gpio
|
||||
|
||||
group onewire
|
||||
- pin 4
|
||||
- functions onewire, gpio
|
||||
|
||||
group uart1
|
||||
- pins 25-26
|
||||
- functions uart, gpio
|
||||
|
||||
group spi_quad
|
||||
- pins 15-16
|
||||
- functions spi, gpio
|
||||
|
||||
group uart2
|
||||
- pins 9-10 and 18-19
|
||||
- functions uart, gpio
|
||||
|
||||
Available groups and functions for the South bridge:
|
||||
|
||||
group usb32_drvvbus0
|
||||
- pin 36
|
||||
- functions drvbus, gpio
|
||||
|
||||
group usb2_drvvbus1
|
||||
- pin 37
|
||||
- functions drvbus, gpio
|
||||
|
||||
group sdio_sb
|
||||
- pins 60-65
|
||||
- functions sdio, gpio
|
||||
|
||||
group rgmii
|
||||
- pins 42-53
|
||||
- functions mii, gpio
|
||||
|
||||
group pcie1
|
||||
- pins 39
|
||||
- functions pcie, gpio
|
||||
|
||||
group pcie1_clkreq
|
||||
- pins 40
|
||||
- functions pcie, gpio
|
||||
|
||||
group pcie1_wakeup
|
||||
- pins 41
|
||||
- functions pcie, gpio
|
||||
|
||||
group smi
|
||||
- pins 54-55
|
||||
- functions smi, gpio
|
||||
|
||||
group ptp
|
||||
- pins 56
|
||||
- functions ptp, gpio
|
||||
|
||||
group ptp_clk
|
||||
- pin 57
|
||||
- functions ptp, mii
|
||||
|
||||
group ptp_trig
|
||||
- pin 58
|
||||
- functions ptp, mii
|
||||
|
||||
group mii_col
|
||||
- pin 59
|
||||
- functions mii, mii_err
|
||||
|
||||
GPIO subnode:
|
||||
|
||||
Please refer to gpio.txt in this directory for details of gpio-ranges property
|
||||
and the common GPIO bindings used by client devices.
|
||||
|
||||
Required properties for gpio driver under the gpio subnode:
|
||||
- interrupts: List of interrupt specifier for the controllers interrupt.
|
||||
- gpio-controller: Marks the device node as a gpio controller.
|
||||
- #gpio-cells: Should be 2. The first cell is the GPIO number and the
|
||||
second cell specifies GPIO flags, as defined in
|
||||
<dt-bindings/gpio/gpio.h>. Only the GPIO_ACTIVE_HIGH and
|
||||
GPIO_ACTIVE_LOW flags are supported.
|
||||
- gpio-ranges: Range of pins managed by the GPIO controller.
|
||||
|
||||
Xtal Clock bindings for Marvell Armada 37xx SoCs
|
||||
------------------------------------------------
|
||||
|
||||
see Documentation/devicetree/bindings/clock/armada3700-xtal-clock.txt
|
||||
|
||||
|
||||
Example:
|
||||
pinctrl_sb: pinctrl-sb@18800 {
|
||||
compatible = "marvell,armada3710-sb-pinctrl", "syscon", "simple-mfd";
|
||||
reg = <0x18800 0x100>, <0x18C00 0x20>;
|
||||
gpio {
|
||||
#gpio-cells = <2>;
|
||||
gpio-ranges = <&pinctrl_sb 0 0 29>;
|
||||
gpio-controller;
|
||||
interrupts =
|
||||
<GIC_SPI 160 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<GIC_SPI 159 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<GIC_SPI 158 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<GIC_SPI 157 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<GIC_SPI 156 IRQ_TYPE_LEVEL_HIGH>;
|
||||
};
|
||||
|
||||
rgmii_pins: mii-pins {
|
||||
groups = "rgmii";
|
||||
function = "mii";
|
||||
};
|
||||
|
||||
};
|
80
bindings/pinctrl/marvell,armada-38x-pinctrl.txt
Normal file
80
bindings/pinctrl/marvell,armada-38x-pinctrl.txt
Normal file
@@ -0,0 +1,80 @@
|
||||
* Marvell Armada 380/385 SoC pinctrl driver for mpp
|
||||
|
||||
Please refer to marvell,mvebu-pinctrl.txt in this directory for common binding
|
||||
part and usage.
|
||||
|
||||
Required properties:
|
||||
- compatible: "marvell,88f6810-pinctrl", "marvell,88f6820-pinctrl" or
|
||||
"marvell,88f6828-pinctrl" depending on the specific variant of the
|
||||
SoC being used.
|
||||
- reg: register specifier of MPP registers
|
||||
|
||||
Available mpp pins/groups and functions:
|
||||
Note: brackets (x) are not part of the mpp name for marvell,function and given
|
||||
only for more detailed description in this document.
|
||||
|
||||
name pins functions
|
||||
================================================================================
|
||||
mpp0 0 gpio, ua0(rxd)
|
||||
mpp1 1 gpio, ua0(txd)
|
||||
mpp2 2 gpio, i2c0(sck)
|
||||
mpp3 3 gpio, i2c0(sda)
|
||||
mpp4 4 gpio, ge(mdc), ua1(txd), ua0(rts)
|
||||
mpp5 5 gpio, ge(mdio), ua1(rxd), ua0(cts)
|
||||
mpp6 6 gpio, ge0(txclkout), ge0(crs), dev(cs3)
|
||||
mpp7 7 gpio, ge0(txd0), dev(ad9)
|
||||
mpp8 8 gpio, ge0(txd1), dev(ad10)
|
||||
mpp9 9 gpio, ge0(txd2), dev(ad11)
|
||||
mpp10 10 gpio, ge0(txd3), dev(ad12)
|
||||
mpp11 11 gpio, ge0(txctl), dev(ad13)
|
||||
mpp12 12 gpio, ge0(rxd0), pcie0(rstout), spi0(cs1), dev(ad14), pcie3(clkreq)
|
||||
mpp13 13 gpio, ge0(rxd1), pcie0(clkreq), pcie1(clkreq) [1], spi0(cs2), dev(ad15), pcie2(clkreq)
|
||||
mpp14 14 gpio, ge0(rxd2), ptp(clk), dram(vttctrl), spi0(cs3), dev(we1), pcie3(clkreq)
|
||||
mpp15 15 gpio, ge0(rxd3), ge(mdc slave), pcie0(rstout), spi0(mosi)
|
||||
mpp16 16 gpio, ge0(rxctl), ge(mdio slave), dram(deccerr), spi0(miso), pcie0(clkreq), pcie1(clkreq) [1]
|
||||
mpp17 17 gpio, ge0(rxclk), ptp(clk), ua1(rxd), spi0(sck), sata1(prsnt), sata0(prsnt)
|
||||
mpp18 18 gpio, ge0(rxerr), ptp(trig), ua1(txd), spi0(cs0)
|
||||
mpp19 19 gpio, ge0(col), ptp(evreq), ge0(txerr), sata1(prsnt), ua0(cts)
|
||||
mpp20 20 gpio, ge0(txclk), ptp(clk), sata0(prsnt), ua0(rts)
|
||||
mpp21 21 gpio, spi0(cs1), ge1(rxd0), sata0(prsnt), sd0(cmd), dev(bootcs), sata1(prsnt)
|
||||
mpp22 22 gpio, spi0(mosi), dev(ad0)
|
||||
mpp23 23 gpio, spi0(sck), dev(ad2)
|
||||
mpp24 24 gpio, spi0(miso), ua0(cts), ua1(rxd), sd0(d4), dev(ready)
|
||||
mpp25 25 gpio, spi0(cs0), ua0(rts), ua1(txd), sd0(d5), dev(cs0)
|
||||
mpp26 26 gpio, spi0(cs2), i2c1(sck), sd0(d6), dev(cs1)
|
||||
mpp27 27 gpio, spi0(cs3), ge1(txclkout), i2c1(sda), sd0(d7), dev(cs2)
|
||||
mpp28 28 gpio, ge1(txd0), sd0(clk), dev(ad5)
|
||||
mpp29 29 gpio, ge1(txd1), dev(ale0)
|
||||
mpp30 30 gpio, ge1(txd2), dev(oe)
|
||||
mpp31 31 gpio, ge1(txd3), dev(ale1)
|
||||
mpp32 32 gpio, ge1(txctl), dev(we0)
|
||||
mpp33 33 gpio, dram(deccerr), dev(ad3)
|
||||
mpp34 34 gpio, dev(ad1)
|
||||
mpp35 35 gpio, ref(clk_out1), dev(a1)
|
||||
mpp36 36 gpio, ptp(trig), dev(a0)
|
||||
mpp37 37 gpio, ptp(clk), ge1(rxclk), sd0(d3), dev(ad8)
|
||||
mpp38 38 gpio, ptp(evreq), ge1(rxd1), ref(clk_out0), sd0(d0), dev(ad4)
|
||||
mpp39 39 gpio, i2c1(sck), ge1(rxd2), ua0(cts), sd0(d1), dev(a2)
|
||||
mpp40 40 gpio, i2c1(sda), ge1(rxd3), ua0(rts), sd0(d2), dev(ad6)
|
||||
mpp41 41 gpio, ua1(rxd), ge1(rxctl), ua0(cts), spi1(cs3), dev(burst/last), nand(rb0)
|
||||
mpp42 42 gpio, ua1(txd), ua0(rts), dev(ad7)
|
||||
mpp43 43 gpio, pcie0(clkreq), dram(vttctrl), dram(deccerr), spi1(cs2), dev(clkout), nand(rb1)
|
||||
mpp44 44 gpio, sata0(prsnt), sata1(prsnt), sata2(prsnt) [2], sata3(prsnt) [3]
|
||||
mpp45 45 gpio, ref(clk_out0), pcie0(rstout), ua1(rxd)
|
||||
mpp46 46 gpio, ref(clk_out1), pcie0(rstout), ua1(txd)
|
||||
mpp47 47 gpio, sata0(prsnt), sata1(prsnt), sata2(prsnt) [2], sata3(prsnt) [2]
|
||||
mpp48 48 gpio, sata0(prsnt), dram(vttctrl), tdm(pclk), audio(mclk), sd0(d4), pcie0(clkreq)
|
||||
mpp49 49 gpio, sata2(prsnt) [2], sata3(prsnt) [2], tdm(fsync), audio(lrclk), sd0(d5), pcie1(clkreq)
|
||||
mpp50 50 gpio, pcie0(rstout), tdm(drx), audio(extclk), sd0(cmd)
|
||||
mpp51 51 gpio, tdm(dtx), audio(sdo), dram(deccerr), ptp(trig)
|
||||
mpp52 52 gpio, pcie0(rstout), tdm(int), audio(sdi), sd0(d6), ptp(clk)
|
||||
mpp53 53 gpio, sata1(prsnt), sata0(prsnt), tdm(rst), audio(bclk), sd0(d7), ptp(evreq)
|
||||
mpp54 54 gpio, sata0(prsnt), sata1(prsnt), pcie0(rstout), ge0(txerr), sd0(d3)
|
||||
mpp55 55 gpio, ua1(cts), ge(mdio), pcie1(clkreq) [1], spi1(cs1), sd0(d0), ua1(rxd)
|
||||
mpp56 56 gpio, ua1(rts), ge(mdc), dram(deccerr), spi1(mosi), ua1(txd)
|
||||
mpp57 57 gpio, spi1(sck), sd0(clk), ua1(txd)
|
||||
mpp58 58 gpio, pcie1(clkreq) [1], i2c1(sck), pcie2(clkreq), spi1(miso), sd0(d1), ua1(rxd)
|
||||
mpp59 59 gpio, pcie0(rstout), i2c1(sda), spi1(cs0), sd0(d2)
|
||||
|
||||
[1]: only available on 88F6820 and 88F6828
|
||||
[2]: only available on 88F6828
|
84
bindings/pinctrl/marvell,armada-39x-pinctrl.txt
Normal file
84
bindings/pinctrl/marvell,armada-39x-pinctrl.txt
Normal file
@@ -0,0 +1,84 @@
|
||||
* Marvell Armada 39x SoC pinctrl driver for mpp
|
||||
|
||||
Please refer to marvell,mvebu-pinctrl.txt in this directory for common binding
|
||||
part and usage.
|
||||
|
||||
Required properties:
|
||||
- compatible: "marvell,88f6920-pinctrl", "marvell,88f6925-pinctrl" or
|
||||
"marvell,88f6928-pinctrl" depending on the specific variant of the
|
||||
SoC being used.
|
||||
- reg: register specifier of MPP registers
|
||||
|
||||
Available mpp pins/groups and functions:
|
||||
Note: brackets (x) are not part of the mpp name for marvell,function and given
|
||||
only for more detailed description in this document.
|
||||
|
||||
name pins functions
|
||||
================================================================================
|
||||
mpp0 0 gpio, ua0(rxd)
|
||||
mpp1 1 gpio, ua0(txd)
|
||||
mpp2 2 gpio, i2c0(sck)
|
||||
mpp3 3 gpio, i2c0(sda)
|
||||
mpp4 4 gpio, ua1(txd), ua0(rts), smi(mdc)
|
||||
mpp5 5 gpio, ua1(rxd), ua0(cts), smi(mdio)
|
||||
mpp6 6 gpio, dev(cs3), xsmi(mdio)
|
||||
mpp7 7 gpio, dev(ad9), xsmi(mdc)
|
||||
mpp8 8 gpio, dev(ad10), ptp(trig)
|
||||
mpp9 9 gpio, dev(ad11), ptp(clk)
|
||||
mpp10 10 gpio, dev(ad12), ptp(evreq)
|
||||
mpp11 11 gpio, dev(ad13), led(clk)
|
||||
mpp12 12 gpio, pcie0(rstout), dev(ad14), led(stb)
|
||||
mpp13 13 gpio, dev(ad15), pcie2(clkreq), led(data)
|
||||
mpp14 14 gpio, dram(vttctrl), dev(we1), ua1(txd)
|
||||
mpp15 15 gpio, pcie0(rstout), spi0(mosi), i2c1(sck)
|
||||
mpp16 16 gpio, dram(deccerr), spi0(miso), pcie0(clkreq), i2c1(sda)
|
||||
mpp17 17 gpio, ua1(rxd), spi0(sck), sata1(prsnt) [1], sata0(prsnt) [1], smi(mdio)
|
||||
mpp18 18 gpio, ua1(txd), spi0(cs0), i2c2(sck)
|
||||
mpp19 19 gpio, sata1(prsnt) [1], ua0(cts), ua1(rxd), i2c2(sda)
|
||||
mpp20 20 gpio, sata0(prsnt) [1], ua0(rts), ua1(txd), smi(mdc)
|
||||
mpp21 21 gpio, spi0(cs1), sata0(prsnt) [1], sd0(cmd), dev(bootcs),
|
||||
sata1(prsnt) [1], ge(rxd0)
|
||||
mpp22 22 gpio, spi0(mosi), dev(ad0)
|
||||
mpp23 23 gpio, spi0(sck), dev(ad2)
|
||||
mpp24 24 gpio, spi0(miso), ua0(cts), ua1(rxd), sd0(d4), dev(ready)
|
||||
mpp25 25 gpio, spi0(cs0), ua0(rts), ua1(txd), sd0(d5), dev(cs0)
|
||||
mpp26 26 gpio, spi0(cs2), i2c1(sck), sd0(d6), dev(cs1)
|
||||
mpp27 27 gpio, spi0(cs3), i2c1(sda), sd0(d7), dev(cs2), ge(txclkout)
|
||||
mpp28 28 gpio, sd0(clk), dev(ad5), ge(txd0)
|
||||
mpp29 29 gpio, dev(ale0), ge(txd1)
|
||||
mpp30 30 gpio, dev(oe), ge(txd2)
|
||||
mpp31 31 gpio, dev(ale1), ge(txd3)
|
||||
mpp32 32 gpio, dev(we0), ge(txctl)
|
||||
mpp33 33 gpio, dram(deccerr), dev(ad3)
|
||||
mpp34 34 gpio, dev(ad1)
|
||||
mpp35 35 gpio, ref(clk), dev(a1)
|
||||
mpp36 36 gpio, dev(a0)
|
||||
mpp37 37 gpio, sd0(d3), dev(ad8), ge(rxclk)
|
||||
mpp38 38 gpio, ref(clk), sd0(d0), dev(ad4), ge(rxd1)
|
||||
mpp39 39 gpio, i2c1(sck), ua0(cts), sd0(d1), dev(a2), ge(rxd2)
|
||||
mpp40 40 gpio, i2c1(sda), ua0(rts), sd0(d2), dev(ad6), ge(rxd3)
|
||||
mpp41 41 gpio, ua1(rxd), ua0(cts), spi1(cs3), dev(burst/last), nand(rb0), ge(rxctl)
|
||||
mpp42 42 gpio, ua1(txd), ua0(rts), dev(ad7)
|
||||
mpp43 43 gpio, pcie0(clkreq), dram(vttctrl), dram(deccerr), spi1(cs2), dev(clkout), nand(rb1)
|
||||
mpp44 44 gpio, sata0(prsnt) [1], sata1(prsnt) [1], sata2(prsnt) [2],
|
||||
sata3(prsnt) [2], led(clk)
|
||||
mpp45 45 gpio, ref(clk), pcie0(rstout), ua1(rxd)
|
||||
mpp46 46 gpio, ref(clk), pcie0(rstout), ua1(txd), led(stb)
|
||||
mpp47 47 gpio, sata0(prsnt) [1], sata1(prsnt) [1], sata2(prsnt) [2],
|
||||
sata3(prsnt) [2], led(data)
|
||||
mpp48 48 gpio, sata0(prsnt) [1], dram(vttctrl), tdm(pclk) [2], audio(mclk) [2], sd0(d4), pcie0(clkreq), ua1(txd)
|
||||
mpp49 49 gpio, sata2(prsnt) [2], sata3(prsnt) [2], tdm(fsync) [2],
|
||||
audio(lrclk) [2], sd0(d5), ua2(rxd)
|
||||
mpp50 50 gpio, pcie0(rstout), tdm(drx) [2], audio(extclk) [2], sd0(cmd), ua2(rxd)
|
||||
mpp51 51 gpio, tdm(dtx) [2], audio(sdo) [2], dram(deccerr), ua2(txd)
|
||||
mpp52 52 gpio, pcie0(rstout), tdm(int) [2], audio(sdi) [2], sd0(d6), i2c3(sck)
|
||||
mpp53 53 gpio, sata1(prsnt) [1], sata0(prsnt) [1], tdm(rst) [2], audio(bclk) [2], sd0(d7), i2c3(sda)
|
||||
mpp54 54 gpio, sata0(prsnt) [1], sata1(prsnt) [1], pcie0(rstout), sd0(d3), ua3(txd)
|
||||
mpp55 55 gpio, ua1(cts), spi1(cs1), sd0(d0), ua1(rxd), ua3(rxd)
|
||||
mpp56 56 gpio, ua1(rts), dram(deccerr), spi1(mosi), ua1(txd)
|
||||
mpp57 57 gpio, spi1(sck), sd0(clk), ua1(txd)
|
||||
mpp58 58 gpio, i2c1(sck), pcie2(clkreq), spi1(miso), sd0(d1), ua1(rxd)
|
||||
mpp59 59 gpio, pcie0(rstout), i2c1(sda), spi1(cs0), sd0(d2)
|
||||
|
||||
[1]: only available on 88F6925/88F6928
|
||||
[2]: only available on 88F6928
|
46
bindings/pinctrl/marvell,armada-98dx3236-pinctrl.txt
Normal file
46
bindings/pinctrl/marvell,armada-98dx3236-pinctrl.txt
Normal file
@@ -0,0 +1,46 @@
|
||||
* Marvell 98dx3236 pinctrl driver for mpp
|
||||
|
||||
Please refer to marvell,mvebu-pinctrl.txt in this directory for common binding
|
||||
part and usage
|
||||
|
||||
Required properties:
|
||||
- compatible: "marvell,98dx3236-pinctrl" or "marvell,98dx4251-pinctrl"
|
||||
- reg: register specifier of MPP registers
|
||||
|
||||
This driver supports all 98dx3236, 98dx3336 and 98dx4251 variants
|
||||
|
||||
name pins functions
|
||||
================================================================================
|
||||
mpp0 0 gpo, spi0(mosi), dev(ad8)
|
||||
mpp1 1 gpio, spi0(miso), dev(ad9)
|
||||
mpp2 2 gpo, spi0(sck), dev(ad10)
|
||||
mpp3 3 gpio, spi0(cs0), dev(ad11)
|
||||
mpp4 4 gpio, spi0(cs1), smi(mdc), dev(cs0)
|
||||
mpp5 5 gpio, pex(rsto), sd0(cmd), dev(bootcs)
|
||||
mpp6 6 gpo, sd0(clk), dev(a2)
|
||||
mpp7 7 gpio, sd0(d0), dev(ale0)
|
||||
mpp8 8 gpio, sd0(d1), dev(ale1)
|
||||
mpp9 9 gpio, sd0(d2), dev(ready0)
|
||||
mpp10 10 gpio, sd0(d3), dev(ad12)
|
||||
mpp11 11 gpio, uart1(rxd), uart0(cts), dev(ad13)
|
||||
mpp12 12 gpo, uart1(txd), uart0(rts), dev(ad14)
|
||||
mpp13 13 gpio, intr(out), dev(ad15)
|
||||
mpp14 14 gpio, i2c0(sck)
|
||||
mpp15 15 gpio, i2c0(sda)
|
||||
mpp16 16 gpo, dev(oe)
|
||||
mpp17 17 gpo, dev(clkout)
|
||||
mpp18 18 gpio, uart1(txd)
|
||||
mpp19 19 gpio, uart1(rxd), dev(rb)
|
||||
mpp20 20 gpo, dev(we0)
|
||||
mpp21 21 gpo, dev(ad0)
|
||||
mpp22 22 gpo, dev(ad1)
|
||||
mpp23 23 gpo, dev(ad2)
|
||||
mpp24 24 gpo, dev(ad3)
|
||||
mpp25 25 gpo, dev(ad4)
|
||||
mpp26 26 gpo, dev(ad5)
|
||||
mpp27 27 gpo, dev(ad6)
|
||||
mpp28 28 gpo, dev(ad7)
|
||||
mpp29 29 gpo, dev(a0)
|
||||
mpp30 30 gpo, dev(a1)
|
||||
mpp31 31 gpio, slv_smi(mdc), smi(mdc), dev(we1)
|
||||
mpp32 32 gpio, slv_smi(mdio), smi(mdio), dev(cs1)
|
99
bindings/pinctrl/marvell,armada-xp-pinctrl.txt
Normal file
99
bindings/pinctrl/marvell,armada-xp-pinctrl.txt
Normal file
@@ -0,0 +1,99 @@
|
||||
* Marvell Armada XP SoC pinctrl driver for mpp
|
||||
|
||||
Please refer to marvell,mvebu-pinctrl.txt in this directory for common binding
|
||||
part and usage.
|
||||
|
||||
Required properties:
|
||||
- compatible: "marvell,mv78230-pinctrl", "marvell,mv78260-pinctrl",
|
||||
"marvell,mv78460-pinctrl"
|
||||
- reg: register specifier of MPP registers
|
||||
|
||||
This driver supports all Armada XP variants, i.e. mv78230, mv78260, and mv78460.
|
||||
|
||||
Available mpp pins/groups and functions:
|
||||
Note: brackets (x) are not part of the mpp name for marvell,function and given
|
||||
only for more detailed description in this document.
|
||||
|
||||
* Marvell Armada XP (all variants)
|
||||
|
||||
name pins functions
|
||||
================================================================================
|
||||
mpp0 0 gpio, ge0(txclkout), lcd(d0)
|
||||
mpp1 1 gpio, ge0(txd0), lcd(d1)
|
||||
mpp2 2 gpio, ge0(txd1), lcd(d2)
|
||||
mpp3 3 gpio, ge0(txd2), lcd(d3)
|
||||
mpp4 4 gpio, ge0(txd3), lcd(d4)
|
||||
mpp5 5 gpio, ge0(txctl), lcd(d5)
|
||||
mpp6 6 gpio, ge0(rxd0), lcd(d6)
|
||||
mpp7 7 gpio, ge0(rxd1), lcd(d7)
|
||||
mpp8 8 gpio, ge0(rxd2), lcd(d8)
|
||||
mpp9 9 gpio, ge0(rxd3), lcd(d9)
|
||||
mpp10 10 gpio, ge0(rxctl), lcd(d10)
|
||||
mpp11 11 gpio, ge0(rxclk), lcd(d11)
|
||||
mpp12 12 gpio, ge0(txd4), ge1(txclkout), lcd(d12)
|
||||
mpp13 13 gpio, ge0(txd5), ge1(txd0), spi1(mosi), lcd(d13)
|
||||
mpp14 14 gpio, ge0(txd6), ge1(txd1), spi1(sck), lcd(d15)
|
||||
mpp15 15 gpio, ge0(txd7), ge1(txd2), lcd(d16)
|
||||
mpp16 16 gpio, ge0(txd7), ge1(txd3), spi1(cs0), lcd(d16)
|
||||
mpp17 17 gpio, ge0(col), ge1(txctl), spi1(miso), lcd(d17)
|
||||
mpp18 18 gpio, ge0(rxerr), ge1(rxd0), lcd(d18), ptp(trig)
|
||||
mpp19 19 gpio, ge0(crs), ge1(rxd1), lcd(d19), ptp(evreq)
|
||||
mpp20 20 gpio, ge0(rxd4), ge1(rxd2), lcd(d20), ptp(clk)
|
||||
mpp21 21 gpio, ge0(rxd5), ge1(rxd3), lcd(d21), dram(bat)
|
||||
mpp22 22 gpio, ge0(rxd6), ge1(rxctl), lcd(d22), sata0(prsnt)
|
||||
mpp23 23 gpio, ge0(rxd7), ge1(rxclk), lcd(d23), sata1(prsnt)
|
||||
mpp24 24 gpio, lcd(hsync), sata1(prsnt), tdm(rst)
|
||||
mpp25 25 gpio, lcd(vsync), sata0(prsnt), tdm(pclk)
|
||||
mpp26 26 gpio, lcd(clk), tdm(fsync)
|
||||
mpp27 27 gpio, lcd(e), tdm(dtx), ptp(trig)
|
||||
mpp28 28 gpio, lcd(pwm), tdm(drx), ptp(evreq)
|
||||
mpp29 29 gpio, lcd(ref-clk), tdm(int0), ptp(clk)
|
||||
mpp30 30 gpio, tdm(int1), sd0(clk)
|
||||
mpp31 31 gpio, tdm(int2), sd0(cmd)
|
||||
mpp32 32 gpio, tdm(int3), sd0(d0)
|
||||
mpp33 33 gpio, tdm(int4), sd0(d1), dram(bat), dram(vttctrl)
|
||||
mpp34 34 gpio, tdm(int5), sd0(d2), sata0(prsnt), dram(deccerr)
|
||||
mpp35 35 gpio, tdm(int6), sd0(d3), sata1(prsnt)
|
||||
mpp36 36 gpio, spi0(mosi)
|
||||
mpp37 37 gpio, spi0(miso)
|
||||
mpp38 38 gpio, spi0(sck)
|
||||
mpp39 39 gpio, spi0(cs0)
|
||||
mpp40 40 gpio, spi0(cs1), uart2(cts), lcd(vga-hsync), pcie(clkreq0),
|
||||
spi1(cs1)
|
||||
mpp41 41 gpio, spi0(cs2), uart2(rts), lcd(vga-vsync), sata1(prsnt),
|
||||
pcie(clkreq1), spi1(cs2)
|
||||
mpp42 42 gpio, uart2(rxd), uart0(cts), tdm(int7), tdm(timer)
|
||||
mpp43 43 gpio, uart2(txd), uart0(rts), spi0(cs3), pcie(rstout),
|
||||
spi1(cs3)
|
||||
mpp44 44 gpio, uart2(cts), uart3(rxd), spi0(cs4), pcie(clkreq2),
|
||||
dram(bat), spi1(cs4)
|
||||
mpp45 45 gpio, uart2(rts), uart3(txd), spi0(cs5), sata1(prsnt),
|
||||
spi1(cs5), dram(vttctrl)
|
||||
mpp46 46 gpio, uart3(rts), uart1(rts), spi0(cs6), sata0(prsnt),
|
||||
spi1(cs6)
|
||||
mpp47 47 gpio, uart3(cts), uart1(cts), spi0(cs7), pcie(clkreq3),
|
||||
ref(clkout), spi1(cs7)
|
||||
mpp48 48 gpio, dev(clkout), dev(burst/last), nand(rb)
|
||||
|
||||
* Marvell Armada XP (mv78260 and mv78460 only)
|
||||
|
||||
name pins functions
|
||||
================================================================================
|
||||
mpp49 49 gpio, dev(we3)
|
||||
mpp50 50 gpio, dev(we2)
|
||||
mpp51 51 gpio, dev(ad16)
|
||||
mpp52 52 gpio, dev(ad17)
|
||||
mpp53 53 gpio, dev(ad18)
|
||||
mpp54 54 gpio, dev(ad19)
|
||||
mpp55 55 gpio, dev(ad20)
|
||||
mpp56 56 gpio, dev(ad21)
|
||||
mpp57 57 gpio, dev(ad22)
|
||||
mpp58 58 gpio, dev(ad23)
|
||||
mpp59 59 gpio, dev(ad24)
|
||||
mpp60 60 gpio, dev(ad25)
|
||||
mpp61 61 gpio, dev(ad26)
|
||||
mpp62 62 gpio, dev(ad27)
|
||||
mpp63 63 gpio, dev(ad28)
|
||||
mpp64 64 gpio, dev(ad29)
|
||||
mpp65 65 gpio, dev(ad30)
|
||||
mpp66 66 gpio, dev(ad31)
|
90
bindings/pinctrl/marvell,dove-pinctrl.txt
Normal file
90
bindings/pinctrl/marvell,dove-pinctrl.txt
Normal file
@@ -0,0 +1,90 @@
|
||||
* Marvell Dove SoC pinctrl driver for mpp
|
||||
|
||||
Please refer to marvell,mvebu-pinctrl.txt in this directory for common binding
|
||||
part and usage.
|
||||
|
||||
Required properties:
|
||||
- compatible: "marvell,dove-pinctrl"
|
||||
- clocks: (optional) phandle of pdma clock
|
||||
- reg: register specifiers of MPP, MPP4, and PMU MPP registers
|
||||
|
||||
Available mpp pins/groups and functions:
|
||||
Note: brackets (x) are not part of the mpp name for marvell,function and given
|
||||
only for more detailed description in this document.
|
||||
Note: pmu* also allows for Power Management functions listed below
|
||||
|
||||
name pins functions
|
||||
================================================================================
|
||||
mpp0 0 gpio, pmu, uart2(rts), sdio0(cd), lcd0(pwm), pmu*
|
||||
mpp1 1 gpio, pmu, uart2(cts), sdio0(wp), lcd1(pwm), pmu*
|
||||
mpp2 2 gpio, pmu, uart2(txd), sdio0(buspwr), sata(prsnt),
|
||||
uart1(rts), pmu*
|
||||
mpp3 3 gpio, pmu, uart2(rxd), sdio0(ledctrl), sata(act),
|
||||
uart1(cts), lcd-spi(cs1), pmu*
|
||||
mpp4 4 gpio, pmu, uart3(rts), sdio1(cd), spi1(miso), pmu*
|
||||
mpp5 5 gpio, pmu, uart3(cts), sdio1(wp), spi1(cs), pmu*
|
||||
mpp6 6 gpio, pmu, uart3(txd), sdio1(buspwr), spi1(mosi), pmu*
|
||||
mpp7 7 gpio, pmu, uart3(rxd), sdio1(ledctrl), spi1(sck), pmu*
|
||||
mpp8 8 gpio, pmu, watchdog(rstout), pmu*
|
||||
mpp9 9 gpio, pmu, pex1(clkreq), pmu*
|
||||
mpp10 10 gpio, pmu, ssp(sclk), pmu*
|
||||
mpp11 11 gpio, pmu, sata(prsnt), sata-1(act), sdio0(ledctrl),
|
||||
sdio1(ledctrl), pex0(clkreq), pmu*
|
||||
mpp12 12 gpio, pmu, uart2(rts), audio0(extclk), sdio1(cd),
|
||||
sata(act), pmu*
|
||||
mpp13 13 gpio, pmu, uart2(cts), audio1(extclk), sdio1(wp),
|
||||
ssp(extclk), pmu*
|
||||
mpp14 14 gpio, pmu, uart2(txd), sdio1(buspwr), ssp(rxd), pmu*
|
||||
mpp15 15 gpio, pmu, uart2(rxd), sdio1(ledctrl), ssp(sfrm), pmu*
|
||||
mpp16 16 gpio, uart3(rts), sdio0(cd), ac97(sdi1), lcd-spi(cs1)
|
||||
mpp17 17 gpio, uart3(cts), sdio0(wp), ac97(sdi2), twsi(sda),
|
||||
ac97-1(sysclko)
|
||||
mpp18 18 gpio, uart3(txd), sdio0(buspwr), ac97(sdi3), lcd0(pwm)
|
||||
mpp19 19 gpio, uart3(rxd), sdio0(ledctrl), twsi(sck)
|
||||
mpp20 20 gpio, sdio0(cd), sdio1(cd), spi1(miso), lcd-spi(miso),
|
||||
ac97(sysclko)
|
||||
mpp21 21 gpio, sdio0(wp), sdio1(wp), spi1(cs), lcd-spi(cs0),
|
||||
uart1(cts), ssp(sfrm)
|
||||
mpp22 22 gpio, sdio0(buspwr), sdio1(buspwr), spi1(mosi),
|
||||
lcd-spi(mosi), uart1(cts), ssp(txd)
|
||||
mpp23 23 gpio, sdio0(ledctrl), sdio1(ledctrl), spi1(sck),
|
||||
lcd-spi(sck), ssp(sclk)
|
||||
mpp_camera 24-39 gpio, camera
|
||||
mpp_sdio0 40-45 gpio, sdio0
|
||||
mpp_sdio1 46-51 gpio, sdio1
|
||||
mpp_audio1 52-57 gpio, i2s1/spdifo, i2s1, spdifo, twsi, ssp/spdifo, ssp,
|
||||
ssp/twsi
|
||||
mpp_spi0 58-61 gpio, spi0
|
||||
mpp_uart1 62-63 gpio, uart1
|
||||
mpp_nand 64-71 gpo, nand
|
||||
audio0 - i2s, ac97
|
||||
twsi - none, opt1, opt2, opt3
|
||||
|
||||
Power Management functions (pmu*):
|
||||
pmu-nc Pin not driven by any PM function
|
||||
pmu-low Pin driven low (0)
|
||||
pmu-high Pin driven high (1)
|
||||
pmic(sdi) Pin is used for PMIC SDI
|
||||
cpu-pwr-down Pin is used for CPU_PWRDWN
|
||||
standby-pwr-down Pin is used for STBY_PWRDWN
|
||||
core-pwr-good Pin is used for CORE_PWR_GOOD (Pins 0-7 only)
|
||||
cpu-pwr-good Pin is used for CPU_PWR_GOOD (Pins 8-15 only)
|
||||
bat-fault Pin is used for BATTERY_FAULT
|
||||
ext0-wakeup Pin is used for EXT0_WU
|
||||
ext1-wakeup Pin is used for EXT0_WU
|
||||
ext2-wakeup Pin is used for EXT0_WU
|
||||
pmu-blink Pin is used for blink function
|
||||
|
||||
Notes:
|
||||
* group "mpp_audio1" allows the following functions and gpio pins:
|
||||
- gpio : gpio on pins 52-57
|
||||
- i2s1/spdifo : audio1 i2s on pins 52-55 and spdifo on 57, no gpios
|
||||
- i2s1 : audio1 i2s on pins 52-55, gpio on pins 56,57
|
||||
- spdifo : spdifo on pin 57, gpio on pins 52-55
|
||||
- twsi : twsi on pins 56,57, gpio on pins 52-55
|
||||
- ssp/spdifo : ssp on pins 52-55, spdifo on pin 57, no gpios
|
||||
- ssp : ssp on pins 52-55, gpio on pins 56,57
|
||||
- ssp/twsi : ssp on pins 52-55, twsi on pins 56,57, no gpios
|
||||
* group "audio0" internally muxes i2s0 or ac97 controller to the dedicated
|
||||
audio0 pins.
|
||||
* group "twsi" internally muxes twsi controller to the dedicated or option pins.
|
359
bindings/pinctrl/marvell,kirkwood-pinctrl.txt
Normal file
359
bindings/pinctrl/marvell,kirkwood-pinctrl.txt
Normal file
@@ -0,0 +1,359 @@
|
||||
* Marvell Kirkwood SoC pinctrl driver for mpp
|
||||
|
||||
Please refer to marvell,mvebu-pinctrl.txt in this directory for common binding
|
||||
part and usage.
|
||||
|
||||
Required properties:
|
||||
- compatible: "marvell,88f6180-pinctrl",
|
||||
"marvell,88f6190-pinctrl", "marvell,88f6192-pinctrl",
|
||||
"marvell,88f6281-pinctrl", "marvell,88f6282-pinctrl",
|
||||
"marvell,98dx4122-pinctrl", "marvell,98dx1135-pinctrl"
|
||||
- reg: register specifier of MPP registers
|
||||
|
||||
This driver supports all kirkwood variants, i.e. 88f6180, 88f619x, and 88f628x.
|
||||
It also support the 88f6281-based variant in the 98dx412x Bobcat SoCs.
|
||||
|
||||
Available mpp pins/groups and functions:
|
||||
Note: brackets (x) are not part of the mpp name for marvell,function and given
|
||||
only for more detailed description in this document.
|
||||
|
||||
* Marvell Kirkwood 88f6180
|
||||
|
||||
name pins functions
|
||||
================================================================================
|
||||
mpp0 0 gpio, nand(io2), spi(cs)
|
||||
mpp1 1 gpo, nand(io3), spi(mosi)
|
||||
mpp2 2 gpo, nand(io4), spi(sck)
|
||||
mpp3 3 gpo, nand(io5), spi(miso)
|
||||
mpp4 4 gpio, nand(io6), uart0(rxd), ptp(clk)
|
||||
mpp5 5 gpo, nand(io7), uart0(txd), ptp(trig)
|
||||
mpp6 6 sysrst(out), spi(mosi), ptp(trig)
|
||||
mpp7 7 gpo, pex(rsto), spi(cs), ptp(trig)
|
||||
mpp8 8 gpio, twsi0(sda), uart0(rts), uart1(rts), ptp(clk),
|
||||
mii(col)
|
||||
mpp9 9 gpio, twsi(sck), uart0(cts), uart1(cts), ptp(evreq),
|
||||
mii(crs)
|
||||
mpp10 10 gpo, spi(sck), uart0(txd), ptp(trig)
|
||||
mpp11 11 gpio, spi(miso), uart0(rxd), ptp(clk), ptp-1(evreq),
|
||||
ptp-2(trig)
|
||||
mpp12 12 gpo, sdio(clk)
|
||||
mpp13 13 gpio, sdio(cmd), uart1(txd)
|
||||
mpp14 14 gpio, sdio(d0), uart1(rxd), mii(col)
|
||||
mpp15 15 gpio, sdio(d1), uart0(rts), uart1(txd)
|
||||
mpp16 16 gpio, sdio(d2), uart0(cts), uart1(rxd), mii(crs)
|
||||
mpp17 17 gpio, sdio(d3)
|
||||
mpp18 18 gpo, nand(io0)
|
||||
mpp19 19 gpo, nand(io1)
|
||||
mpp35 35 gpio, mii(rxerr)
|
||||
mpp36 36 gpio, audio(spdifi)
|
||||
mpp37 37 gpio, audio(spdifo)
|
||||
mpp38 38 gpio, audio(rmclk)
|
||||
mpp39 39 gpio, audio(bclk)
|
||||
mpp40 40 gpio, audio(sdo)
|
||||
mpp41 41 gpio, audio(lrclk)
|
||||
mpp42 42 gpio, audio(mclk)
|
||||
mpp43 43 gpio, audio(sdi)
|
||||
mpp44 44 gpio, audio(extclk)
|
||||
|
||||
* Marvell Kirkwood 88f6190
|
||||
|
||||
name pins functions
|
||||
================================================================================
|
||||
mpp0 0 gpio, nand(io2), spi(cs)
|
||||
mpp1 1 gpo, nand(io3), spi(mosi)
|
||||
mpp2 2 gpo, nand(io4), spi(sck)
|
||||
mpp3 3 gpo, nand(io5), spi(miso)
|
||||
mpp4 4 gpio, nand(io6), uart0(rxd), ptp(clk)
|
||||
mpp5 5 gpo, nand(io7), uart0(txd), ptp(trig), sata0(act)
|
||||
mpp6 6 sysrst(out), spi(mosi), ptp(trig)
|
||||
mpp7 7 gpo, pex(rsto), spi(cs), ptp(trig)
|
||||
mpp8 8 gpio, twsi0(sda), uart0(rts), uart1(rts), ptp(clk),
|
||||
mii(col), mii-1(rxerr)
|
||||
mpp9 9 gpio, twsi(sck), uart0(cts), uart1(cts), ptp(evreq),
|
||||
mii(crs), sata0(prsnt)
|
||||
mpp10 10 gpo, spi(sck), uart0(txd), ptp(trig)
|
||||
mpp11 11 gpio, spi(miso), uart0(rxd), ptp(clk), ptp-1(evreq),
|
||||
ptp-2(trig), sata0(act)
|
||||
mpp12 12 gpo, sdio(clk)
|
||||
mpp13 13 gpio, sdio(cmd), uart1(txd)
|
||||
mpp14 14 gpio, sdio(d0), uart1(rxd), mii(col)
|
||||
mpp15 15 gpio, sdio(d1), uart0(rts), uart1(txd), sata0(act)
|
||||
mpp16 16 gpio, sdio(d2), uart0(cts), uart1(rxd), mii(crs)
|
||||
mpp17 17 gpio, sdio(d3), sata0(prsnt)
|
||||
mpp18 18 gpo, nand(io0)
|
||||
mpp19 19 gpo, nand(io1)
|
||||
mpp20 20 gpio, ge1(txd0)
|
||||
mpp21 21 gpio, ge1(txd1), sata0(act)
|
||||
mpp22 22 gpio, ge1(txd2)
|
||||
mpp23 23 gpio, ge1(txd3), sata0(prsnt)
|
||||
mpp24 24 gpio, ge1(rxd0)
|
||||
mpp25 25 gpio, ge1(rxd1)
|
||||
mpp26 26 gpio, ge1(rxd2)
|
||||
mpp27 27 gpio, ge1(rxd3)
|
||||
mpp28 28 gpio, ge1(col)
|
||||
mpp29 29 gpio, ge1(txclk)
|
||||
mpp30 30 gpio, ge1(rxclk)
|
||||
mpp31 31 gpio, ge1(rxclk)
|
||||
mpp32 32 gpio, ge1(txclko)
|
||||
mpp33 33 gpo, ge1(txclk)
|
||||
mpp34 34 gpio, ge1(txen)
|
||||
mpp35 35 gpio, ge1(rxerr), sata0(act), mii(rxerr)
|
||||
|
||||
* Marvell Kirkwood 88f6192
|
||||
|
||||
name pins functions
|
||||
================================================================================
|
||||
mpp0 0 gpio, nand(io2), spi(cs)
|
||||
mpp1 1 gpo, nand(io3), spi(mosi)
|
||||
mpp2 2 gpo, nand(io4), spi(sck)
|
||||
mpp3 3 gpo, nand(io5), spi(miso)
|
||||
mpp4 4 gpio, nand(io6), uart0(rxd), ptp(clk), sata1(act)
|
||||
mpp5 5 gpo, nand(io7), uart0(txd), ptp(trig), sata0(act)
|
||||
mpp6 6 sysrst(out), spi(mosi), ptp(trig)
|
||||
mpp7 7 gpo, pex(rsto), spi(cs), ptp(trig)
|
||||
mpp8 8 gpio, twsi0(sda), uart0(rts), uart1(rts), ptp(clk),
|
||||
mii(col), mii-1(rxerr), sata1(prsnt)
|
||||
mpp9 9 gpio, twsi(sck), uart0(cts), uart1(cts), ptp(evreq),
|
||||
mii(crs), sata0(prsnt)
|
||||
mpp10 10 gpo, spi(sck), uart0(txd), ptp(trig), sata1(act)
|
||||
mpp11 11 gpio, spi(miso), uart0(rxd), ptp(clk), ptp-1(evreq),
|
||||
ptp-2(trig), sata0(act)
|
||||
mpp12 12 gpo, sdio(clk)
|
||||
mpp13 13 gpio, sdio(cmd), uart1(txd)
|
||||
mpp14 14 gpio, sdio(d0), uart1(rxd), mii(col), sata1(prsnt)
|
||||
mpp15 15 gpio, sdio(d1), uart0(rts), uart1(txd), sata0(act)
|
||||
mpp16 16 gpio, sdio(d2), uart0(cts), uart1(rxd), mii(crs),
|
||||
sata1(act)
|
||||
mpp17 17 gpio, sdio(d3), sata0(prsnt)
|
||||
mpp18 18 gpo, nand(io0)
|
||||
mpp19 19 gpo, nand(io1)
|
||||
mpp20 20 gpio, ge1(txd0), ts(mp0), tdm(tx0ql), audio(spdifi),
|
||||
sata1(act)
|
||||
mpp21 21 gpio, ge1(txd1), sata0(act), ts(mp1), tdm(rx0ql),
|
||||
audio(spdifo)
|
||||
mpp22 22 gpio, ge1(txd2), ts(mp2), tdm(tx2ql), audio(rmclk),
|
||||
sata1(prsnt)
|
||||
mpp23 23 gpio, ge1(txd3), sata0(prsnt), ts(mp3), tdm(rx2ql),
|
||||
audio(bclk)
|
||||
mpp24 24 gpio, ge1(rxd0), ts(mp4), tdm(spi-cs0), audio(sdo)
|
||||
mpp25 25 gpio, ge1(rxd1), ts(mp5), tdm(spi-sck), audio(lrclk)
|
||||
mpp26 26 gpio, ge1(rxd2), ts(mp6), tdm(spi-miso), audio(mclk)
|
||||
mpp27 27 gpio, ge1(rxd3), ts(mp7), tdm(spi-mosi), audio(sdi)
|
||||
mpp28 28 gpio, ge1(col), ts(mp8), tdm(int), audio(extclk)
|
||||
mpp29 29 gpio, ge1(txclk), ts(mp9), tdm(rst)
|
||||
mpp30 30 gpio, ge1(rxclk), ts(mp10), tdm(pclk)
|
||||
mpp31 31 gpio, ge1(rxclk), ts(mp11), tdm(fs)
|
||||
mpp32 32 gpio, ge1(txclko), ts(mp12), tdm(drx)
|
||||
mpp33 33 gpo, ge1(txclk), tdm(drx)
|
||||
mpp34 34 gpio, ge1(txen), tdm(spi-cs1)
|
||||
mpp35 35 gpio, ge1(rxerr), sata0(act), mii(rxerr), tdm(tx0ql)
|
||||
|
||||
* Marvell Kirkwood 88f6281
|
||||
|
||||
name pins functions
|
||||
================================================================================
|
||||
mpp0 0 gpio, nand(io2), spi(cs)
|
||||
mpp1 1 gpo, nand(io3), spi(mosi)
|
||||
mpp2 2 gpo, nand(io4), spi(sck)
|
||||
mpp3 3 gpo, nand(io5), spi(miso)
|
||||
mpp4 4 gpio, nand(io6), uart0(rxd), ptp(clk), sata1(act)
|
||||
mpp5 5 gpo, nand(io7), uart0(txd), ptp(trig), sata0(act)
|
||||
mpp6 6 sysrst(out), spi(mosi), ptp(trig)
|
||||
mpp7 7 gpo, pex(rsto), spi(cs), ptp(trig)
|
||||
mpp8 8 gpio, twsi0(sda), uart0(rts), uart1(rts), ptp(clk),
|
||||
mii(col), mii-1(rxerr), sata1(prsnt)
|
||||
mpp9 9 gpio, twsi(sck), uart0(cts), uart1(cts), ptp(evreq),
|
||||
mii(crs), sata0(prsnt)
|
||||
mpp10 10 gpo, spi(sck), uart0(txd), ptp(trig), sata1(act)
|
||||
mpp11 11 gpio, spi(miso), uart0(rxd), ptp(clk), ptp-1(evreq),
|
||||
ptp-2(trig), sata0(act)
|
||||
mpp12 12 gpio, sdio(clk)
|
||||
mpp13 13 gpio, sdio(cmd), uart1(txd)
|
||||
mpp14 14 gpio, sdio(d0), uart1(rxd), mii(col), sata1(prsnt)
|
||||
mpp15 15 gpio, sdio(d1), uart0(rts), uart1(txd), sata0(act)
|
||||
mpp16 16 gpio, sdio(d2), uart0(cts), uart1(rxd), mii(crs),
|
||||
sata1(act)
|
||||
mpp17 17 gpio, sdio(d3), sata0(prsnt)
|
||||
mpp18 18 gpo, nand(io0)
|
||||
mpp19 19 gpo, nand(io1)
|
||||
mpp20 20 gpio, ge1(txd0), ts(mp0), tdm(tx0ql), audio(spdifi),
|
||||
sata1(act)
|
||||
mpp21 21 gpio, ge1(txd1), sata0(act), ts(mp1), tdm(rx0ql),
|
||||
audio(spdifo)
|
||||
mpp22 22 gpio, ge1(txd2), ts(mp2), tdm(tx2ql), audio(rmclk),
|
||||
sata1(prsnt)
|
||||
mpp23 23 gpio, ge1(txd3), sata0(prsnt), ts(mp3), tdm(rx2ql),
|
||||
audio(bclk)
|
||||
mpp24 24 gpio, ge1(rxd0), ts(mp4), tdm(spi-cs0), audio(sdo)
|
||||
mpp25 25 gpio, ge1(rxd1), ts(mp5), tdm(spi-sck), audio(lrclk)
|
||||
mpp26 26 gpio, ge1(rxd2), ts(mp6), tdm(spi-miso), audio(mclk)
|
||||
mpp27 27 gpio, ge1(rxd3), ts(mp7), tdm(spi-mosi), audio(sdi)
|
||||
mpp28 28 gpio, ge1(col), ts(mp8), tdm(int), audio(extclk)
|
||||
mpp29 29 gpio, ge1(txclk), ts(mp9), tdm(rst)
|
||||
mpp30 30 gpio, ge1(rxclk), ts(mp10), tdm(pclk)
|
||||
mpp31 31 gpio, ge1(rxclk), ts(mp11), tdm(fs)
|
||||
mpp32 32 gpio, ge1(txclko), ts(mp12), tdm(drx)
|
||||
mpp33 33 gpo, ge1(txclk), tdm(drx)
|
||||
mpp34 34 gpio, ge1(txen), tdm(spi-cs1), sata1(act)
|
||||
mpp35 35 gpio, ge1(rxerr), sata0(act), mii(rxerr), tdm(tx0ql)
|
||||
mpp36 36 gpio, ts(mp0), tdm(spi-cs1), audio(spdifi)
|
||||
mpp37 37 gpio, ts(mp1), tdm(tx2ql), audio(spdifo)
|
||||
mpp38 38 gpio, ts(mp2), tdm(rx2ql), audio(rmclk)
|
||||
mpp39 39 gpio, ts(mp3), tdm(spi-cs0), audio(bclk)
|
||||
mpp40 40 gpio, ts(mp4), tdm(spi-sck), audio(sdo)
|
||||
mpp41 41 gpio, ts(mp5), tdm(spi-miso), audio(lrclk)
|
||||
mpp42 42 gpio, ts(mp6), tdm(spi-mosi), audio(mclk)
|
||||
mpp43 43 gpio, ts(mp7), tdm(int), audio(sdi)
|
||||
mpp44 44 gpio, ts(mp8), tdm(rst), audio(extclk)
|
||||
mpp45 45 gpio, ts(mp9), tdm(pclk)
|
||||
mpp46 46 gpio, ts(mp10), tdm(fs)
|
||||
mpp47 47 gpio, ts(mp11), tdm(drx)
|
||||
mpp48 48 gpio, ts(mp12), tdm(dtx)
|
||||
mpp49 49 gpio, ts(mp9), tdm(rx0ql), ptp(clk)
|
||||
|
||||
* Marvell Kirkwood 88f6282
|
||||
|
||||
name pins functions
|
||||
================================================================================
|
||||
mpp0 0 gpio, nand(io2), spi(cs)
|
||||
mpp1 1 gpo, nand(io3), spi(mosi)
|
||||
mpp2 2 gpo, nand(io4), spi(sck)
|
||||
mpp3 3 gpo, nand(io5), spi(miso)
|
||||
mpp4 4 gpio, nand(io6), uart0(rxd), sata1(act), lcd(hsync)
|
||||
mpp5 5 gpo, nand(io7), uart0(txd), sata0(act), lcd(vsync)
|
||||
mpp6 6 sysrst(out), spi(mosi)
|
||||
mpp7 7 gpo, spi(cs), lcd(pwm)
|
||||
mpp8 8 gpio, twsi0(sda), uart0(rts), uart1(rts), mii(col),
|
||||
mii-1(rxerr), sata1(prsnt)
|
||||
mpp9 9 gpio, twsi(sck), uart0(cts), uart1(cts), mii(crs),
|
||||
sata0(prsnt)
|
||||
mpp10 10 gpo, spi(sck), uart0(txd), sata1(act)
|
||||
mpp11 11 gpio, spi(miso), uart0(rxd), sata0(act)
|
||||
mpp12 12 gpo, sdio(clk), audio(spdifo), spi(mosi), twsi(sda)
|
||||
mpp13 13 gpio, sdio(cmd), uart1(txd), audio(rmclk), lcd(pwm)
|
||||
mpp14 14 gpio, sdio(d0), uart1(rxd), mii(col), sata1(prsnt),
|
||||
audio(spdifi), audio-1(sdi)
|
||||
mpp15 15 gpio, sdio(d1), uart0(rts), uart1(txd), sata0(act),
|
||||
spi(cs)
|
||||
mpp16 16 gpio, sdio(d2), uart0(cts), uart1(rxd), mii(crs),
|
||||
sata1(act), lcd(extclk)
|
||||
mpp17 17 gpio, sdio(d3), sata0(prsnt), sata1(act), twsi1(sck)
|
||||
mpp18 18 gpo, nand(io0), pex(clkreq)
|
||||
mpp19 19 gpo, nand(io1)
|
||||
mpp20 20 gpio, ge1(txd0), ts(mp0), tdm(tx0ql), audio(spdifi),
|
||||
sata1(act), lcd(d0)
|
||||
mpp21 21 gpio, ge1(txd1), sata0(act), ts(mp1), tdm(rx0ql),
|
||||
audio(spdifo), lcd(d1)
|
||||
mpp22 22 gpio, ge1(txd2), ts(mp2), tdm(tx2ql), audio(rmclk),
|
||||
sata1(prsnt), lcd(d2)
|
||||
mpp23 23 gpio, ge1(txd3), sata0(prsnt), ts(mp3), tdm(rx2ql),
|
||||
audio(bclk), lcd(d3)
|
||||
mpp24 24 gpio, ge1(rxd0), ts(mp4), tdm(spi-cs0), audio(sdo),
|
||||
lcd(d4)
|
||||
mpp25 25 gpio, ge1(rxd1), ts(mp5), tdm(spi-sck), audio(lrclk),
|
||||
lcd(d5)
|
||||
mpp26 26 gpio, ge1(rxd2), ts(mp6), tdm(spi-miso), audio(mclk),
|
||||
lcd(d6)
|
||||
mpp27 27 gpio, ge1(rxd3), ts(mp7), tdm(spi-mosi), audio(sdi),
|
||||
lcd(d7)
|
||||
mpp28 28 gpio, ge1(col), ts(mp8), tdm(int), audio(extclk),
|
||||
lcd(d8)
|
||||
mpp29 29 gpio, ge1(txclk), ts(mp9), tdm(rst), lcd(d9)
|
||||
mpp30 30 gpio, ge1(rxclk), ts(mp10), tdm(pclk), lcd(d10)
|
||||
mpp31 31 gpio, ge1(rxclk), ts(mp11), tdm(fs), lcd(d11)
|
||||
mpp32 32 gpio, ge1(txclko), ts(mp12), tdm(drx), lcd(d12)
|
||||
mpp33 33 gpo, ge1(txclk), tdm(drx), lcd(d13)
|
||||
mpp34 34 gpio, ge1(txen), tdm(spi-cs1), sata1(act), lcd(d14)
|
||||
mpp35 35 gpio, ge1(rxerr), sata0(act), mii(rxerr), tdm(tx0ql),
|
||||
lcd(d15)
|
||||
mpp36 36 gpio, ts(mp0), tdm(spi-cs1), audio(spdifi), twsi1(sda)
|
||||
mpp37 37 gpio, ts(mp1), tdm(tx2ql), audio(spdifo), twsi1(sck)
|
||||
mpp38 38 gpio, ts(mp2), tdm(rx2ql), audio(rmclk), lcd(d18)
|
||||
mpp39 39 gpio, ts(mp3), tdm(spi-cs0), audio(bclk), lcd(d19)
|
||||
mpp40 40 gpio, ts(mp4), tdm(spi-sck), audio(sdo), lcd(d20)
|
||||
mpp41 41 gpio, ts(mp5), tdm(spi-miso), audio(lrclk), lcd(d21)
|
||||
mpp42 42 gpio, ts(mp6), tdm(spi-mosi), audio(mclk), lcd(d22)
|
||||
mpp43 43 gpio, ts(mp7), tdm(int), audio(sdi), lcd(d23)
|
||||
mpp44 44 gpio, ts(mp8), tdm(rst), audio(extclk), lcd(clk)
|
||||
mpp45 45 gpio, ts(mp9), tdm(pclk), lcd(e)
|
||||
mpp46 46 gpio, ts(mp10), tdm(fs), lcd(hsync)
|
||||
mpp47 47 gpio, ts(mp11), tdm(drx), lcd(vsync)
|
||||
mpp48 48 gpio, ts(mp12), tdm(dtx), lcd(d16)
|
||||
mpp49 49 gpo, tdm(rx0ql), pex(clkreq), lcd(d17)
|
||||
|
||||
* Marvell Bobcat 98dx4122
|
||||
|
||||
name pins functions
|
||||
================================================================================
|
||||
mpp0 0 gpio, nand(io2), spi(cs)
|
||||
mpp1 1 gpo, nand(io3), spi(mosi)
|
||||
mpp2 2 gpo, nand(io4), spi(sck)
|
||||
mpp3 3 gpo, nand(io5), spi(miso)
|
||||
mpp4 4 gpio, nand(io6), uart0(rxd)
|
||||
mpp5 5 gpo, nand(io7), uart0(txd)
|
||||
mpp6 6 sysrst(out), spi(mosi)
|
||||
mpp7 7 gpo, pex(rsto), spi(cs)
|
||||
mpp8 8 gpio, twsi0(sda), uart0(rts), uart1(rts)
|
||||
mpp9 9 gpio, twsi(sck), uart0(cts), uart1(cts)
|
||||
mpp10 10 gpo, spi(sck), uart0(txd)
|
||||
mpp11 11 gpio, spi(miso), uart0(rxd)
|
||||
mpp13 13 gpio, uart1(txd)
|
||||
mpp14 14 gpio, uart1(rxd)
|
||||
mpp15 15 gpio, uart0(rts)
|
||||
mpp16 16 gpio, uart0(cts)
|
||||
mpp18 18 gpo, nand(io0)
|
||||
mpp19 19 gpo, nand(io1)
|
||||
mpp34 34 gpio
|
||||
mpp35 35 gpio
|
||||
mpp36 36 gpio
|
||||
mpp37 37 gpio
|
||||
mpp38 38 gpio
|
||||
mpp39 39 gpio
|
||||
mpp40 40 gpio
|
||||
mpp41 41 gpio
|
||||
mpp42 42 gpio
|
||||
mpp43 43 gpio
|
||||
mpp44 44 gpio
|
||||
mpp45 45 gpio
|
||||
mpp49 49 gpio
|
||||
|
||||
* Marvell Poncat2 98dx1135
|
||||
|
||||
name pins functions
|
||||
================================================================================
|
||||
|
||||
mpp0 0 gpio, nand(io2), spi(cs)
|
||||
mpp1 1 gpo, nand(io3), spi(mosi)
|
||||
mpp2 2 gpo, nand(io4), spi(sck)
|
||||
mpp3 3 gpo, nand(io5), spi(miso)
|
||||
mpp4 4 gpio, nand(io6), uart0(rxd)
|
||||
mpp5 5 gpo, nand(io7), uart0(txd)
|
||||
mpp6 6 sysrst(out)
|
||||
mpp7 7 gpo, spi(cs)
|
||||
mpp8 8 gpio, twsi0(sda), uart1(rts)
|
||||
mpp9 9 gpio, twsi(sck), uart1(cts)
|
||||
mpp10 10 gpo, uart0(txd)
|
||||
mpp11 11 gpio, uart0(rxd)
|
||||
mpp13 13 gpio, uart1(txd)
|
||||
mpp14 14 gpio, uart1(rxd)
|
||||
mpp15 15 gpio, uart0(rts)
|
||||
mpp16 16 gpio, uart0(cts)
|
||||
mpp17 17 gpio, nand(cle)
|
||||
mpp18 18 gpo, nand(io0)
|
||||
mpp19 19 gpo, nand(io1)
|
||||
mpp20 20 gpio
|
||||
mpp21 21 gpio
|
||||
mpp22 22 gpio
|
||||
mpp23 23 gpio
|
||||
mpp24 24 gpio
|
||||
mpp25 25 gpio
|
||||
mpp26 26 gpio
|
||||
mpp27 27 gpio
|
||||
mpp28 28 gpio, nand(ren)
|
||||
mpp29 29 gpio, nand(wen)
|
||||
mpp30 30 gpio
|
||||
mpp31 31 gpio
|
||||
mpp32 32 gpio
|
||||
mpp33 33 gpio
|
||||
mpp34 34 gpio, nand(ale)
|
||||
mpp35 35 gpio, nand(cen)
|
46
bindings/pinctrl/marvell,mvebu-pinctrl.txt
Normal file
46
bindings/pinctrl/marvell,mvebu-pinctrl.txt
Normal file
@@ -0,0 +1,46 @@
|
||||
* Marvell SoC pinctrl core driver for mpp
|
||||
|
||||
The pinctrl driver enables Marvell SoCs to configure the multi-purpose pins
|
||||
(mpp) to a specific function. For each SoC family there is a SoC specific
|
||||
driver using this core driver.
|
||||
|
||||
Please refer to pinctrl-bindings.txt in this directory for details of the
|
||||
common pinctrl bindings used by client devices, including the meaning of the
|
||||
phrase "pin configuration node".
|
||||
|
||||
A Marvell SoC pin configuration node is a node of a group of pins which can
|
||||
be used for a specific device or function. Each node requires one or more
|
||||
mpp pins or group of pins and a mpp function common to all pins.
|
||||
|
||||
Required properties for pinctrl driver:
|
||||
- compatible: "marvell,<soc>-pinctrl"
|
||||
Please refer to each marvell,<soc>-pinctrl.txt binding doc for supported SoCs.
|
||||
|
||||
Required properties for pin configuration node:
|
||||
- marvell,pins: string array of mpp pins or group of pins to be muxed.
|
||||
- marvell,function: string representing a function to mux to for all
|
||||
marvell,pins given in this pin configuration node. The function has to be
|
||||
common for all marvell,pins. Please refer to marvell,<soc>-pinctrl.txt for
|
||||
valid pin/pin group names and available function names for each SoC.
|
||||
|
||||
Examples:
|
||||
|
||||
uart1: serial@12100 {
|
||||
compatible = "ns16550a";
|
||||
reg = <0x12100 0x100>;
|
||||
reg-shift = <2>;
|
||||
interrupts = <7>;
|
||||
|
||||
pinctrl-0 = <&pmx_uart1_sw>;
|
||||
pinctrl-names = "default";
|
||||
};
|
||||
|
||||
pinctrl: pinctrl@d0200 {
|
||||
compatible = "marvell,dove-pinctrl";
|
||||
reg = <0xd0200 0x14>, <0xd0440 0x04>, <0xd802c 0x08>;
|
||||
|
||||
pmx_uart1_sw: pmx-uart1-sw {
|
||||
marvell,pins = "mpp_uart1";
|
||||
marvell,function = "uart1";
|
||||
};
|
||||
};
|
93
bindings/pinctrl/marvell,orion-pinctrl.txt
Normal file
93
bindings/pinctrl/marvell,orion-pinctrl.txt
Normal file
@@ -0,0 +1,93 @@
|
||||
* Marvell Orion SoC pinctrl driver for mpp
|
||||
|
||||
Please refer to marvell,mvebu-pinctrl.txt in this directory for common binding
|
||||
part and usage.
|
||||
|
||||
Required properties:
|
||||
- compatible: "marvell,88f5181-pinctrl",
|
||||
"marvell,88f5181l-pinctrl",
|
||||
"marvell,88f5182-pinctrl",
|
||||
"marvell,88f5281-pinctrl"
|
||||
|
||||
- reg: two register areas, the first one describing the first two
|
||||
contiguous MPP registers, and the second one describing the single
|
||||
final MPP register, separated from the previous one.
|
||||
|
||||
Available mpp pins/groups and functions:
|
||||
Note: brackets (x) are not part of the mpp name for marvell,function and given
|
||||
only for more detailed description in this document.
|
||||
|
||||
* Marvell Orion 88f5181l
|
||||
|
||||
name pins functions
|
||||
================================================================================
|
||||
mpp0 0 pcie(rstout), pci(req2), gpio
|
||||
mpp1 1 gpio, pci(gnt2)
|
||||
mpp2 2 gpio, pci(req3), pci-1(pme)
|
||||
mpp3 3 gpio, pci(gnt3)
|
||||
mpp4 4 gpio, pci(req4)
|
||||
mpp5 5 gpio, pci(gnt4)
|
||||
mpp6 6 gpio, pci(req5), pci-1(clk)
|
||||
mpp7 7 gpio, pci(gnt5), pci-1(clk)
|
||||
mpp8 8 gpio, ge(col)
|
||||
mpp9 9 gpio, ge(rxerr)
|
||||
mpp10 10 gpio, ge(crs)
|
||||
mpp11 11 gpio, ge(txerr)
|
||||
mpp12 12 gpio, ge(txd4)
|
||||
mpp13 13 gpio, ge(txd5)
|
||||
mpp14 14 gpio, ge(txd6)
|
||||
mpp15 15 gpio, ge(txd7)
|
||||
mpp16 16 ge(rxd4)
|
||||
mpp17 17 ge(rxd5)
|
||||
mpp18 18 ge(rxd6)
|
||||
mpp19 19 ge(rxd7)
|
||||
|
||||
* Marvell Orion 88f5182
|
||||
|
||||
name pins functions
|
||||
================================================================================
|
||||
mpp0 0 pcie(rstout), pci(req2), gpio
|
||||
mpp1 1 gpio, pci(gnt2)
|
||||
mpp2 2 gpio, pci(req3), pci-1(pme)
|
||||
mpp3 3 gpio, pci(gnt3)
|
||||
mpp4 4 gpio, pci(req4), bootnand(re), sata0(prsnt)
|
||||
mpp5 5 gpio, pci(gnt4), bootnand(we), sata1(prsnt)
|
||||
mpp6 6 gpio, pci(req5), nand(re0), sata0(act)
|
||||
mpp7 7 gpio, pci(gnt5), nand(we0), sata1(act)
|
||||
mpp8 8 gpio, ge(col)
|
||||
mpp9 9 gpio, ge(rxerr)
|
||||
mpp10 10 gpio, ge(crs)
|
||||
mpp11 11 gpio, ge(txerr)
|
||||
mpp12 12 gpio, ge(txd4), nand(re1), sata0(ledprsnt)
|
||||
mpp13 13 gpio, ge(txd5), nand(we1), sata1(ledprsnt)
|
||||
mpp14 14 gpio, ge(txd6), nand(re2), sata0(ledact)
|
||||
mpp15 15 gpio, ge(txd7), nand(we2), sata1(ledact)
|
||||
mpp16 16 uart1(rxd), ge(rxd4), gpio
|
||||
mpp17 17 uart1(txd), ge(rxd5), gpio
|
||||
mpp18 18 uart1(cts), ge(rxd6), gpio
|
||||
mpp19 19 uart1(rts), ge(rxd7), gpio
|
||||
|
||||
* Marvell Orion 88f5281
|
||||
|
||||
name pins functions
|
||||
================================================================================
|
||||
mpp0 0 pcie(rstout), pci(req2), gpio
|
||||
mpp1 1 gpio, pci(gnt2)
|
||||
mpp2 2 gpio, pci(req3), pci(pme)
|
||||
mpp3 3 gpio, pci(gnt3)
|
||||
mpp4 4 gpio, pci(req4), bootnand(re)
|
||||
mpp5 5 gpio, pci(gnt4), bootnand(we)
|
||||
mpp6 6 gpio, pci(req5), nand(re0)
|
||||
mpp7 7 gpio, pci(gnt5), nand(we0)
|
||||
mpp8 8 gpio, ge(col)
|
||||
mpp9 9 gpio, ge(rxerr)
|
||||
mpp10 10 gpio, ge(crs)
|
||||
mpp11 11 gpio, ge(txerr)
|
||||
mpp12 12 gpio, ge(txd4), nand(re1)
|
||||
mpp13 13 gpio, ge(txd5), nand(we1)
|
||||
mpp14 14 gpio, ge(txd6), nand(re2)
|
||||
mpp15 15 gpio, ge(txd7), nand(we2)
|
||||
mpp16 16 uart1(rxd), ge(rxd4)
|
||||
mpp17 17 uart1(txd), ge(rxd5)
|
||||
mpp18 18 uart1(cts), ge(rxd6)
|
||||
mpp19 19 uart1(rts), ge(rxd7)
|
211
bindings/pinctrl/mediatek,mt65xx-pinctrl.yaml
Normal file
211
bindings/pinctrl/mediatek,mt65xx-pinctrl.yaml
Normal file
@@ -0,0 +1,211 @@
|
||||
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
|
||||
%YAML 1.2
|
||||
---
|
||||
$id: http://devicetree.org/schemas/pinctrl/mediatek,mt65xx-pinctrl.yaml#
|
||||
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
||||
|
||||
title: Mediatek MT65xx Pin Controller
|
||||
|
||||
maintainers:
|
||||
- Sean Wang <sean.wang@kernel.org>
|
||||
|
||||
description: |+
|
||||
The Mediatek's Pin controller is used to control SoC pins.
|
||||
|
||||
properties:
|
||||
compatible:
|
||||
enum:
|
||||
- mediatek,mt2701-pinctrl
|
||||
- mediatek,mt2712-pinctrl
|
||||
- mediatek,mt6397-pinctrl
|
||||
- mediatek,mt7623-pinctrl
|
||||
- mediatek,mt8127-pinctrl
|
||||
- mediatek,mt8135-pinctrl
|
||||
- mediatek,mt8167-pinctrl
|
||||
- mediatek,mt8173-pinctrl
|
||||
- mediatek,mt8516-pinctrl
|
||||
|
||||
reg:
|
||||
maxItems: 1
|
||||
|
||||
pins-are-numbered:
|
||||
$ref: /schemas/types.yaml#/definitions/flag
|
||||
description: |
|
||||
Specify the subnodes are using numbered pinmux to specify pins.
|
||||
|
||||
gpio-controller: true
|
||||
|
||||
"#gpio-cells":
|
||||
const: 2
|
||||
description: |
|
||||
Number of cells in GPIO specifier. Since the generic GPIO
|
||||
binding is used, the amount of cells must be specified as 2. See the below
|
||||
mentioned gpio binding representation for description of particular cells.
|
||||
|
||||
mediatek,pctl-regmap:
|
||||
$ref: /schemas/types.yaml#/definitions/phandle-array
|
||||
items:
|
||||
maxItems: 1
|
||||
minItems: 1
|
||||
maxItems: 2
|
||||
description: |
|
||||
Should be phandles of the syscfg node.
|
||||
|
||||
interrupt-controller: true
|
||||
|
||||
interrupts:
|
||||
minItems: 1
|
||||
maxItems: 3
|
||||
|
||||
"#interrupt-cells":
|
||||
const: 2
|
||||
|
||||
required:
|
||||
- compatible
|
||||
- pins-are-numbered
|
||||
- gpio-controller
|
||||
- "#gpio-cells"
|
||||
|
||||
allOf:
|
||||
- $ref: "pinctrl.yaml#"
|
||||
|
||||
patternProperties:
|
||||
'-[0-9]+$':
|
||||
type: object
|
||||
additionalProperties: false
|
||||
patternProperties:
|
||||
'pins':
|
||||
type: object
|
||||
additionalProperties: false
|
||||
description: |
|
||||
A pinctrl node should contain at least one subnodes representing the
|
||||
pinctrl groups available on the machine. Each subnode will list the
|
||||
pins it needs, and how they should be configured, with regard to muxer
|
||||
configuration, pullups, drive strength, input enable/disable and input
|
||||
schmitt.
|
||||
$ref: "/schemas/pinctrl/pincfg-node.yaml"
|
||||
|
||||
properties:
|
||||
pinmux:
|
||||
description:
|
||||
integer array, represents gpio pin number and mux setting.
|
||||
Supported pin number and mux varies for different SoCs, and are
|
||||
defined as macros in <soc>-pinfunc.h directly.
|
||||
|
||||
bias-disable: true
|
||||
|
||||
bias-pull-up:
|
||||
description: |
|
||||
Besides generic pinconfig options, it can be used as the pull up
|
||||
settings for 2 pull resistors, R0 and R1. User can configure those
|
||||
special pins. Some macros have been defined for this usage, such
|
||||
as MTK_PUPD_SET_R1R0_00. See dt-bindings/pinctrl/mt65xx.h for
|
||||
valid arguments.
|
||||
|
||||
bias-pull-down: true
|
||||
|
||||
input-enable: true
|
||||
|
||||
input-disable: true
|
||||
|
||||
output-low: true
|
||||
|
||||
output-high: true
|
||||
|
||||
input-schmitt-enable: true
|
||||
|
||||
input-schmitt-disable: true
|
||||
|
||||
drive-strength:
|
||||
description: |
|
||||
Can support some arguments, such as MTK_DRIVE_4mA, MTK_DRIVE_6mA,
|
||||
etc. See dt-bindings/pinctrl/mt65xx.h for valid arguments.
|
||||
|
||||
required:
|
||||
- pinmux
|
||||
|
||||
additionalProperties: false
|
||||
|
||||
examples:
|
||||
- |
|
||||
#include <dt-bindings/interrupt-controller/irq.h>
|
||||
#include <dt-bindings/interrupt-controller/arm-gic.h>
|
||||
#include <dt-bindings/pinctrl/mt8135-pinfunc.h>
|
||||
|
||||
soc {
|
||||
#address-cells = <2>;
|
||||
#size-cells = <2>;
|
||||
|
||||
syscfg_pctl_a: syscfg-pctl-a@10005000 {
|
||||
compatible = "mediatek,mt8135-pctl-a-syscfg", "syscon";
|
||||
reg = <0 0x10005000 0 0x1000>;
|
||||
};
|
||||
|
||||
syscfg_pctl_b: syscfg-pctl-b@1020c020 {
|
||||
compatible = "mediatek,mt8135-pctl-b-syscfg", "syscon";
|
||||
reg = <0 0x1020C020 0 0x1000>;
|
||||
};
|
||||
|
||||
pinctrl@1c20800 {
|
||||
compatible = "mediatek,mt8135-pinctrl";
|
||||
reg = <0 0x1000B000 0 0x1000>;
|
||||
mediatek,pctl-regmap = <&syscfg_pctl_a>, <&syscfg_pctl_b>;
|
||||
pins-are-numbered;
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
interrupt-controller;
|
||||
#interrupt-cells = <2>;
|
||||
interrupts = <GIC_SPI 116 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<GIC_SPI 117 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<GIC_SPI 118 IRQ_TYPE_LEVEL_HIGH>;
|
||||
|
||||
i2c0_pins_a: i2c0-0 {
|
||||
pins1 {
|
||||
pinmux = <MT8135_PIN_100_SDA0__FUNC_SDA0>,
|
||||
<MT8135_PIN_101_SCL0__FUNC_SCL0>;
|
||||
bias-disable;
|
||||
};
|
||||
};
|
||||
|
||||
i2c1_pins_a: i2c1-0 {
|
||||
pins {
|
||||
pinmux = <MT8135_PIN_195_SDA1__FUNC_SDA1>,
|
||||
<MT8135_PIN_196_SCL1__FUNC_SCL1>;
|
||||
bias-pull-up = <MTK_PUPD_SET_R1R0_01>;
|
||||
};
|
||||
};
|
||||
|
||||
i2c2_pins_a: i2c2-0 {
|
||||
pins1 {
|
||||
pinmux = <MT8135_PIN_193_SDA2__FUNC_SDA2>;
|
||||
bias-pull-down;
|
||||
};
|
||||
|
||||
pins2 {
|
||||
pinmux = <MT8135_PIN_49_WATCHDOG__FUNC_GPIO49>;
|
||||
bias-pull-up;
|
||||
};
|
||||
};
|
||||
|
||||
i2c3_pins_a: i2c3-0 {
|
||||
pins1 {
|
||||
pinmux = <MT8135_PIN_40_DAC_CLK__FUNC_GPIO40>,
|
||||
<MT8135_PIN_41_DAC_WS__FUNC_GPIO41>;
|
||||
bias-pull-up = <MTK_PUPD_SET_R1R0_01>;
|
||||
};
|
||||
|
||||
pins2 {
|
||||
pinmux = <MT8135_PIN_35_SCL3__FUNC_SCL3>,
|
||||
<MT8135_PIN_36_SDA3__FUNC_SDA3>;
|
||||
output-low;
|
||||
bias-pull-up = <MTK_PUPD_SET_R1R0_01>;
|
||||
};
|
||||
|
||||
pins3 {
|
||||
pinmux = <MT8135_PIN_57_JTCK__FUNC_GPIO57>,
|
||||
<MT8135_PIN_60_JTDI__FUNC_JTDI>;
|
||||
drive-strength = <32>;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
207
bindings/pinctrl/mediatek,mt6779-pinctrl.yaml
Normal file
207
bindings/pinctrl/mediatek,mt6779-pinctrl.yaml
Normal file
@@ -0,0 +1,207 @@
|
||||
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
|
||||
%YAML 1.2
|
||||
---
|
||||
$id: http://devicetree.org/schemas/pinctrl/mediatek,mt6779-pinctrl.yaml#
|
||||
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
||||
|
||||
title: Mediatek MT6779 Pin Controller
|
||||
|
||||
maintainers:
|
||||
- Andy Teng <andy.teng@mediatek.com>
|
||||
|
||||
description: |+
|
||||
The pin controller node should be the child of a syscon node with the
|
||||
required property:
|
||||
- compatible: "syscon"
|
||||
|
||||
properties:
|
||||
compatible:
|
||||
const: mediatek,mt6779-pinctrl
|
||||
|
||||
reg:
|
||||
minItems: 9
|
||||
maxItems: 9
|
||||
|
||||
reg-names:
|
||||
items:
|
||||
- const: "gpio"
|
||||
- const: "iocfg_rm"
|
||||
- const: "iocfg_br"
|
||||
- const: "iocfg_lm"
|
||||
- const: "iocfg_lb"
|
||||
- const: "iocfg_rt"
|
||||
- const: "iocfg_lt"
|
||||
- const: "iocfg_tl"
|
||||
- const: "eint"
|
||||
|
||||
gpio-controller: true
|
||||
|
||||
"#gpio-cells":
|
||||
const: 2
|
||||
description: |
|
||||
Number of cells in GPIO specifier. Since the generic GPIO
|
||||
binding is used, the amount of cells must be specified as 2. See the below
|
||||
mentioned gpio binding representation for description of particular cells.
|
||||
|
||||
gpio-ranges:
|
||||
minItems: 1
|
||||
maxItems: 5
|
||||
description: |
|
||||
GPIO valid number range.
|
||||
|
||||
interrupt-controller: true
|
||||
|
||||
interrupts:
|
||||
maxItems: 1
|
||||
description: |
|
||||
Specifies the summary IRQ.
|
||||
|
||||
"#interrupt-cells":
|
||||
const: 2
|
||||
|
||||
allOf:
|
||||
- $ref: "pinctrl.yaml#"
|
||||
|
||||
required:
|
||||
- compatible
|
||||
- reg
|
||||
- reg-names
|
||||
- gpio-controller
|
||||
- "#gpio-cells"
|
||||
- gpio-ranges
|
||||
- interrupt-controller
|
||||
- interrupts
|
||||
- "#interrupt-cells"
|
||||
|
||||
patternProperties:
|
||||
'-[0-9]*$':
|
||||
type: object
|
||||
additionalProperties: false
|
||||
|
||||
patternProperties:
|
||||
'-pins*$':
|
||||
type: object
|
||||
description: |
|
||||
A pinctrl node should contain at least one subnodes representing the
|
||||
pinctrl groups available on the machine. Each subnode will list the
|
||||
pins it needs, and how they should be configured, with regard to muxer
|
||||
configuration, pullups, drive strength, input enable/disable and input schmitt.
|
||||
$ref: "/schemas/pinctrl/pincfg-node.yaml"
|
||||
|
||||
properties:
|
||||
pinmux:
|
||||
description:
|
||||
integer array, represents gpio pin number and mux setting.
|
||||
Supported pin number and mux varies for different SoCs, and are defined
|
||||
as macros in boot/dts/<soc>-pinfunc.h directly.
|
||||
|
||||
bias-disable: true
|
||||
|
||||
bias-pull-up: true
|
||||
|
||||
bias-pull-down: true
|
||||
|
||||
input-enable: true
|
||||
|
||||
input-disable: true
|
||||
|
||||
output-low: true
|
||||
|
||||
output-high: true
|
||||
|
||||
input-schmitt-enable: true
|
||||
|
||||
input-schmitt-disable: true
|
||||
|
||||
mediatek,pull-up-adv:
|
||||
description: |
|
||||
Pull up setings for 2 pull resistors, R0 and R1. User can
|
||||
configure those special pins. Valid arguments are described as below:
|
||||
0: (R1, R0) = (0, 0) which means R1 disabled and R0 disabled.
|
||||
1: (R1, R0) = (0, 1) which means R1 disabled and R0 enabled.
|
||||
2: (R1, R0) = (1, 0) which means R1 enabled and R0 disabled.
|
||||
3: (R1, R0) = (1, 1) which means R1 enabled and R0 enabled.
|
||||
$ref: /schemas/types.yaml#/definitions/uint32
|
||||
enum: [0, 1, 2, 3]
|
||||
|
||||
mediatek,pull-down-adv:
|
||||
description: |
|
||||
Pull down settings for 2 pull resistors, R0 and R1. User can
|
||||
configure those special pins. Valid arguments are described as below:
|
||||
0: (R1, R0) = (0, 0) which means R1 disabled and R0 disabled.
|
||||
1: (R1, R0) = (0, 1) which means R1 disabled and R0 enabled.
|
||||
2: (R1, R0) = (1, 0) which means R1 enabled and R0 disabled.
|
||||
3: (R1, R0) = (1, 1) which means R1 enabled and R0 enabled.
|
||||
$ref: /schemas/types.yaml#/definitions/uint32
|
||||
enum: [0, 1, 2, 3]
|
||||
|
||||
required:
|
||||
- pinmux
|
||||
|
||||
additionalProperties: false
|
||||
|
||||
additionalProperties: false
|
||||
|
||||
examples:
|
||||
- |
|
||||
#include <dt-bindings/interrupt-controller/irq.h>
|
||||
#include <dt-bindings/interrupt-controller/arm-gic.h>
|
||||
#include <dt-bindings/pinctrl/mt6779-pinfunc.h>
|
||||
|
||||
soc {
|
||||
#address-cells = <2>;
|
||||
#size-cells = <2>;
|
||||
|
||||
pio: pinctrl@10005000 {
|
||||
compatible = "mediatek,mt6779-pinctrl";
|
||||
reg = <0 0x10005000 0 0x1000>,
|
||||
<0 0x11c20000 0 0x1000>,
|
||||
<0 0x11d10000 0 0x1000>,
|
||||
<0 0x11e20000 0 0x1000>,
|
||||
<0 0x11e70000 0 0x1000>,
|
||||
<0 0x11ea0000 0 0x1000>,
|
||||
<0 0x11f20000 0 0x1000>,
|
||||
<0 0x11f30000 0 0x1000>,
|
||||
<0 0x1000b000 0 0x1000>;
|
||||
reg-names = "gpio", "iocfg_rm",
|
||||
"iocfg_br", "iocfg_lm",
|
||||
"iocfg_lb", "iocfg_rt",
|
||||
"iocfg_lt", "iocfg_tl",
|
||||
"eint";
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
gpio-ranges = <&pio 0 0 210>;
|
||||
interrupt-controller;
|
||||
#interrupt-cells = <2>;
|
||||
interrupts = <GIC_SPI 204 IRQ_TYPE_LEVEL_HIGH>;
|
||||
|
||||
mmc0_pins_default: mmc0-0 {
|
||||
cmd-dat-pins {
|
||||
pinmux = <PINMUX_GPIO168__FUNC_MSDC0_DAT0>,
|
||||
<PINMUX_GPIO172__FUNC_MSDC0_DAT1>,
|
||||
<PINMUX_GPIO169__FUNC_MSDC0_DAT2>,
|
||||
<PINMUX_GPIO177__FUNC_MSDC0_DAT3>,
|
||||
<PINMUX_GPIO170__FUNC_MSDC0_DAT4>,
|
||||
<PINMUX_GPIO173__FUNC_MSDC0_DAT5>,
|
||||
<PINMUX_GPIO171__FUNC_MSDC0_DAT6>,
|
||||
<PINMUX_GPIO174__FUNC_MSDC0_DAT7>,
|
||||
<PINMUX_GPIO167__FUNC_MSDC0_CMD>;
|
||||
input-enable;
|
||||
mediatek,pull-up-adv = <1>;
|
||||
};
|
||||
clk-pins {
|
||||
pinmux = <PINMUX_GPIO176__FUNC_MSDC0_CLK>;
|
||||
mediatek,pull-down-adv = <2>;
|
||||
};
|
||||
rst-pins {
|
||||
pinmux = <PINMUX_GPIO178__FUNC_MSDC0_RSTB>;
|
||||
mediatek,pull-up-adv = <0>;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
mmc0 {
|
||||
pinctrl-0 = <&mmc0_pins_default>;
|
||||
pinctrl-names = "default";
|
||||
};
|
||||
};
|
176
bindings/pinctrl/mediatek,mt6797-pinctrl.yaml
Normal file
176
bindings/pinctrl/mediatek,mt6797-pinctrl.yaml
Normal file
@@ -0,0 +1,176 @@
|
||||
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
|
||||
%YAML 1.2
|
||||
---
|
||||
$id: http://devicetree.org/schemas/pinctrl/mediatek,mt6797-pinctrl.yaml#
|
||||
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
||||
|
||||
title: Mediatek MT6797 Pin Controller
|
||||
|
||||
maintainers:
|
||||
- Sean Wang <sean.wang@kernel.org>
|
||||
|
||||
description: |+
|
||||
The MediaTek's MT6797 Pin controller is used to control SoC pins.
|
||||
|
||||
properties:
|
||||
compatible:
|
||||
const: mediatek,mt6797-pinctrl
|
||||
|
||||
reg:
|
||||
minItems: 5
|
||||
maxItems: 5
|
||||
|
||||
reg-names:
|
||||
items:
|
||||
- const: gpio
|
||||
- const: iocfgl
|
||||
- const: iocfgb
|
||||
- const: iocfgr
|
||||
- const: iocfgt
|
||||
|
||||
gpio-controller: true
|
||||
|
||||
"#gpio-cells":
|
||||
const: 2
|
||||
description: |
|
||||
Number of cells in GPIO specifier. Since the generic GPIO
|
||||
binding is used, the amount of cells must be specified as 2. See the below
|
||||
mentioned gpio binding representation for description of particular cells.
|
||||
|
||||
interrupt-controller: true
|
||||
|
||||
interrupts:
|
||||
maxItems: 1
|
||||
|
||||
"#interrupt-cells":
|
||||
const: 2
|
||||
|
||||
allOf:
|
||||
- $ref: "pinctrl.yaml#"
|
||||
|
||||
required:
|
||||
- compatible
|
||||
- reg
|
||||
- reg-names
|
||||
- gpio-controller
|
||||
- "#gpio-cells"
|
||||
|
||||
patternProperties:
|
||||
'-[0-9]+$':
|
||||
type: object
|
||||
additionalProperties: false
|
||||
patternProperties:
|
||||
'pins':
|
||||
type: object
|
||||
additionalProperties: false
|
||||
description: |
|
||||
A pinctrl node should contain at least one subnodes representing the
|
||||
pinctrl groups available on the machine. Each subnode will list the
|
||||
pins it needs, and how they should be configured, with regard to muxer
|
||||
configuration, pullups, drive strength, input enable/disable and input
|
||||
schmitt.
|
||||
$ref: "/schemas/pinctrl/pincfg-node.yaml"
|
||||
|
||||
properties:
|
||||
pinmux:
|
||||
description:
|
||||
integer array, represents gpio pin number and mux setting.
|
||||
Supported pin number and mux varies for different SoCs, and are
|
||||
defined as macros in <soc>-pinfunc.h directly.
|
||||
|
||||
bias-disable: true
|
||||
|
||||
bias-pull-up: true
|
||||
|
||||
bias-pull-down: true
|
||||
|
||||
input-enable: true
|
||||
|
||||
input-disable: true
|
||||
|
||||
output-enable: true
|
||||
|
||||
output-low: true
|
||||
|
||||
output-high: true
|
||||
|
||||
input-schmitt-enable: true
|
||||
|
||||
input-schmitt-disable: true
|
||||
|
||||
drive-strength:
|
||||
enum: [2, 4, 8, 12, 16]
|
||||
|
||||
slew-rate:
|
||||
enum: [0, 1]
|
||||
|
||||
mediatek,pull-up-adv:
|
||||
description: |
|
||||
Pull up setings for 2 pull resistors, R0 and R1. User can
|
||||
configure those special pins. Valid arguments are described as below:
|
||||
0: (R1, R0) = (0, 0) which means R1 disabled and R0 disabled.
|
||||
1: (R1, R0) = (0, 1) which means R1 disabled and R0 enabled.
|
||||
2: (R1, R0) = (1, 0) which means R1 enabled and R0 disabled.
|
||||
3: (R1, R0) = (1, 1) which means R1 enabled and R0 enabled.
|
||||
$ref: /schemas/types.yaml#/definitions/uint32
|
||||
enum: [0, 1, 2, 3]
|
||||
|
||||
mediatek,pull-down-adv:
|
||||
description: |
|
||||
Pull down settings for 2 pull resistors, R0 and R1. User can
|
||||
configure those special pins. Valid arguments are described as below:
|
||||
0: (R1, R0) = (0, 0) which means R1 disabled and R0 disabled.
|
||||
1: (R1, R0) = (0, 1) which means R1 disabled and R0 enabled.
|
||||
2: (R1, R0) = (1, 0) which means R1 enabled and R0 disabled.
|
||||
3: (R1, R0) = (1, 1) which means R1 enabled and R0 enabled.
|
||||
$ref: /schemas/types.yaml#/definitions/uint32
|
||||
enum: [0, 1, 2, 3]
|
||||
|
||||
mediatek,tdsel:
|
||||
description: |
|
||||
An integer describing the steps for output level shifter duty
|
||||
cycle when asserted (high pulse width adjustment). Valid arguments
|
||||
are from 0 to 15.
|
||||
$ref: /schemas/types.yaml#/definitions/uint32
|
||||
|
||||
mediatek,rdsel:
|
||||
description: |
|
||||
An integer describing the steps for input level shifter duty cycle
|
||||
when asserted (high pulse width adjustment). Valid arguments are
|
||||
from 0 to 63.
|
||||
$ref: /schemas/types.yaml#/definitions/uint32
|
||||
|
||||
required:
|
||||
- pinmux
|
||||
|
||||
additionalProperties: false
|
||||
|
||||
examples:
|
||||
- |
|
||||
#include <dt-bindings/interrupt-controller/irq.h>
|
||||
#include <dt-bindings/interrupt-controller/arm-gic.h>
|
||||
#include <dt-bindings/pinctrl/mt6797-pinfunc.h>
|
||||
|
||||
soc {
|
||||
#address-cells = <2>;
|
||||
#size-cells = <2>;
|
||||
|
||||
pio: pinctrl@10005000 {
|
||||
compatible = "mediatek,mt6797-pinctrl";
|
||||
reg = <0 0x10005000 0 0x1000>,
|
||||
<0 0x10002000 0 0x400>,
|
||||
<0 0x10002400 0 0x400>,
|
||||
<0 0x10002800 0 0x400>,
|
||||
<0 0x10002C00 0 0x400>;
|
||||
reg-names = "gpio", "iocfgl", "iocfgb", "iocfgr", "iocfgt";
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
|
||||
uart_pins_a: uart-0 {
|
||||
pins1 {
|
||||
pinmux = <MT6797_GPIO232__FUNC_URXD1>,
|
||||
<MT6797_GPIO233__FUNC_UTXD1>;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
376
bindings/pinctrl/mediatek,mt7622-pinctrl.yaml
Normal file
376
bindings/pinctrl/mediatek,mt7622-pinctrl.yaml
Normal file
@@ -0,0 +1,376 @@
|
||||
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
|
||||
%YAML 1.2
|
||||
---
|
||||
$id: http://devicetree.org/schemas/pinctrl/mediatek,mt7622-pinctrl.yaml#
|
||||
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
||||
|
||||
title: Mediatek MT7622 Pin Controller
|
||||
|
||||
maintainers:
|
||||
- Sean Wang <sean.wang@kernel.org>
|
||||
|
||||
description: |+
|
||||
The MediaTek's MT7622 Pin controller is used to control SoC pins.
|
||||
|
||||
properties:
|
||||
compatible:
|
||||
enum:
|
||||
- mediatek,mt7622-pinctrl
|
||||
- mediatek,mt7629-pinctrl
|
||||
|
||||
reg:
|
||||
maxItems: 1
|
||||
|
||||
reg-names:
|
||||
items:
|
||||
- const: eint
|
||||
|
||||
gpio-controller: true
|
||||
|
||||
"#gpio-cells":
|
||||
const: 2
|
||||
description: |
|
||||
Number of cells in GPIO specifier. Since the generic GPIO
|
||||
binding is used, the amount of cells must be specified as 2. See the below
|
||||
mentioned gpio binding representation for description of particular cells.
|
||||
|
||||
interrupt-controller: true
|
||||
|
||||
interrupts:
|
||||
maxItems: 1
|
||||
|
||||
"#interrupt-cells":
|
||||
const: 2
|
||||
|
||||
allOf:
|
||||
- $ref: "pinctrl.yaml#"
|
||||
|
||||
required:
|
||||
- compatible
|
||||
- reg
|
||||
- gpio-controller
|
||||
- "#gpio-cells"
|
||||
|
||||
if:
|
||||
required:
|
||||
- interrupt-controller
|
||||
then:
|
||||
required:
|
||||
- reg-names
|
||||
- interrupts
|
||||
- "#interrupt-cells"
|
||||
|
||||
patternProperties:
|
||||
'-[0-9]+$':
|
||||
type: object
|
||||
additionalProperties: false
|
||||
patternProperties:
|
||||
'mux':
|
||||
type: object
|
||||
additionalProperties: false
|
||||
description: |
|
||||
pinmux configuration nodes.
|
||||
$ref: "/schemas/pinctrl/pinmux-node.yaml"
|
||||
properties:
|
||||
function:
|
||||
description: |
|
||||
A string containing the name of the function to mux to the group.
|
||||
enum: [emmc, eth, i2c, i2s, ir, led, flash, pcie, pmic, pwm, sd,
|
||||
spi, tdm, uart, watchdog, wifi]
|
||||
|
||||
groups:
|
||||
description: |
|
||||
An array of strings. Each string contains the name of a group.
|
||||
|
||||
drive-strength:
|
||||
enum: [4, 8, 12, 16]
|
||||
|
||||
required:
|
||||
- groups
|
||||
- function
|
||||
|
||||
allOf:
|
||||
- if:
|
||||
properties:
|
||||
function:
|
||||
const: emmc
|
||||
then:
|
||||
properties:
|
||||
groups:
|
||||
enum: [emmc, emmc_rst]
|
||||
- if:
|
||||
properties:
|
||||
function:
|
||||
const: eth
|
||||
then:
|
||||
properties:
|
||||
groups:
|
||||
enum: [esw, esw_p0_p1, esw_p2_p3_p4, rgmii_via_esw,
|
||||
rgmii_via_gmac1, rgmii_via_gmac2, mdc_mdio]
|
||||
- if:
|
||||
properties:
|
||||
function:
|
||||
const: i2c
|
||||
then:
|
||||
properties:
|
||||
groups:
|
||||
enum: [i2c0, i2c_0, i2c_1, i2c1_0, i2c1_1, i2c1_2, i2c2_0,
|
||||
i2c2_1, i2c2_2]
|
||||
- if:
|
||||
properties:
|
||||
function:
|
||||
const: i2s
|
||||
then:
|
||||
properties:
|
||||
groups:
|
||||
enum: [i2s_in_mclk_bclk_ws, i2s1_in_data, i2s2_in_data,
|
||||
i2s3_in_data, i2s4_in_data, i2s_out_mclk_bclk_ws,
|
||||
i2s1_out_data, i2s2_out_data, i2s3_out_data,
|
||||
i2s4_out_data]
|
||||
- if:
|
||||
properties:
|
||||
function:
|
||||
const: ir
|
||||
then:
|
||||
properties:
|
||||
groups:
|
||||
enum: [ir_0_tx, ir_1_tx, ir_2_tx, ir_0_rx, ir_1_rx, ir_2_rx]
|
||||
- if:
|
||||
properties:
|
||||
function:
|
||||
const: led
|
||||
then:
|
||||
properties:
|
||||
groups:
|
||||
enum: [ephy_leds, ephy0_led, ephy1_led, ephy2_led, ephy3_led,
|
||||
ephy4_led, wled, wf2g_led, wf5g_led]
|
||||
- if:
|
||||
properties:
|
||||
function:
|
||||
const: flash
|
||||
then:
|
||||
properties:
|
||||
groups:
|
||||
enum: [par_nand, snfi, spi_nor]
|
||||
- if:
|
||||
properties:
|
||||
function:
|
||||
const: pcie
|
||||
then:
|
||||
properties:
|
||||
groups:
|
||||
enum: [pcie0_0_waken, pcie0_1_waken, pcie1_0_waken,
|
||||
pcie0_0_clkreq, pcie0_1_clkreq, pcie1_0_clkreq,
|
||||
pcie0_pad_perst, pcie1_pad_perst, pcie_pereset,
|
||||
pcie_wake, pcie_clkreq]
|
||||
- if:
|
||||
properties:
|
||||
function:
|
||||
const: pmic
|
||||
then:
|
||||
properties:
|
||||
groups:
|
||||
enum: [pmic_bus]
|
||||
- if:
|
||||
properties:
|
||||
function:
|
||||
const: pwm
|
||||
then:
|
||||
properties:
|
||||
groups:
|
||||
enum: [pwm_ch1_0, pwm_ch1_1, pwm_ch1_2, pwm_ch2_0, pwm_ch2_1,
|
||||
pwm_ch2_2, pwm_ch3_0, pwm_ch3_1, pwm_ch3_2, pwm_ch4_0,
|
||||
pwm_ch4_1, pwm_ch4_2, pwm_ch4_3, pwm_ch5_0, pwm_ch5_1,
|
||||
pwm_ch5_2, pwm_ch6_0, pwm_ch6_1, pwm_ch6_2, pwm_ch6_3,
|
||||
pwm_ch7_0, pwm_0, pwm_1]
|
||||
- if:
|
||||
properties:
|
||||
function:
|
||||
const: sd
|
||||
then:
|
||||
properties:
|
||||
groups:
|
||||
enum: [sd_0, sd_1]
|
||||
- if:
|
||||
properties:
|
||||
function:
|
||||
const: spi
|
||||
then:
|
||||
properties:
|
||||
groups:
|
||||
enum: [spic0_0, spic0_1, spic1_0, spic1_1, spic2_0_wp_hold,
|
||||
spic2_0, spi_0, spi_1, spi_wp, spi_hold]
|
||||
- if:
|
||||
properties:
|
||||
function:
|
||||
const: tdm
|
||||
then:
|
||||
properties:
|
||||
groups:
|
||||
enum: [tdm_0_out_mclk_bclk_ws, tdm_0_in_mclk_bclk_ws,
|
||||
tdm_0_out_data, tdm_0_in_data, tdm_1_out_mclk_bclk_ws,
|
||||
tdm_1_in_mclk_bclk_ws, tdm_1_out_data, tdm_1_in_data]
|
||||
- if:
|
||||
properties:
|
||||
function:
|
||||
const: uart
|
||||
then:
|
||||
properties:
|
||||
groups:
|
||||
enum: [uart0_0_tx_rx, uart1_0_tx_rx, uart1_0_rts_cts,
|
||||
uart1_1_tx_rx, uart1_1_rts_cts, uart2_0_tx_rx,
|
||||
uart2_0_rts_cts, uart2_1_tx_rx, uart2_1_rts_cts,
|
||||
uart2_2_tx_rx, uart2_2_rts_cts, uart2_3_tx_rx,
|
||||
uart3_0_tx_rx, uart3_1_tx_rx, uart3_1_rts_cts,
|
||||
uart4_0_tx_rx, uart4_1_tx_rx, uart4_1_rts_cts,
|
||||
uart4_2_tx_rx, uart4_2_rts_cts, uart0_txd_rxd,
|
||||
uart1_0_txd_rxd, uart1_0_cts_rts, uart1_1_txd_rxd,
|
||||
uart1_1_cts_rts, uart2_0_txd_rxd, uart2_0_cts_rts,
|
||||
uart2_1_txd_rxd, uart2_1_cts_rts]
|
||||
- if:
|
||||
properties:
|
||||
function:
|
||||
const: watchdog
|
||||
then:
|
||||
properties:
|
||||
groups:
|
||||
enum: [watchdog]
|
||||
- if:
|
||||
properties:
|
||||
function:
|
||||
const: wifi
|
||||
then:
|
||||
properties:
|
||||
groups:
|
||||
enum: [wf0_2g, wf0_5g]
|
||||
|
||||
'conf':
|
||||
type: object
|
||||
additionalProperties: false
|
||||
description: |
|
||||
pinconf configuration nodes.
|
||||
$ref: "/schemas/pinctrl/pincfg-node.yaml"
|
||||
|
||||
properties:
|
||||
groups:
|
||||
description: |
|
||||
An array of strings. Each string contains the name of a group.
|
||||
Valid values are the same as the pinmux node.
|
||||
|
||||
pins:
|
||||
description: |
|
||||
An array of strings. Each string contains the name of a pin.
|
||||
enum: [GPIO_A, I2S1_IN, I2S1_OUT, I2S_BCLK, I2S_WS, I2S_MCLK, TXD0,
|
||||
RXD0, SPI_WP, SPI_HOLD, SPI_CLK, SPI_MOSI, SPI_MISO, SPI_CS,
|
||||
I2C_SDA, I2C_SCL, I2S2_IN, I2S3_IN, I2S4_IN, I2S2_OUT,
|
||||
I2S3_OUT, I2S4_OUT, GPIO_B, MDC, MDIO, G2_TXD0, G2_TXD1,
|
||||
G2_TXD2, G2_TXD3, G2_TXEN, G2_TXC, G2_RXD0, G2_RXD1, G2_RXD2,
|
||||
G2_RXD3, G2_RXDV, G2_RXC, NCEB, NWEB, NREB, NDL4, NDL5, NDL6,
|
||||
NDL7, NRB, NCLE, NALE, NDL0, NDL1, NDL2, NDL3, MDI_TP_P0,
|
||||
MDI_TN_P0, MDI_RP_P0, MDI_RN_P0, MDI_TP_P1, MDI_TN_P1,
|
||||
MDI_RP_P1, MDI_RN_P1, MDI_RP_P2, MDI_RN_P2, MDI_TP_P2,
|
||||
MDI_TN_P2, MDI_TP_P3, MDI_TN_P3, MDI_RP_P3, MDI_RN_P3,
|
||||
MDI_RP_P4, MDI_RN_P4, MDI_TP_P4, MDI_TN_P4, PMIC_SCL,
|
||||
PMIC_SDA, SPIC1_CLK, SPIC1_MOSI, SPIC1_MISO, SPIC1_CS,
|
||||
GPIO_D, WATCHDOG, RTS3_N, CTS3_N, TXD3, RXD3, PERST0_N,
|
||||
PERST1_N, WLED_N, EPHY_LED0_N, AUXIN0, AUXIN1, AUXIN2,
|
||||
AUXIN3, TXD4, RXD4, RTS4_N, CST4_N, PWM1, PWM2, PWM3, PWM4,
|
||||
PWM5, PWM6, PWM7, GPIO_E, TOP_5G_CLK, TOP_5G_DATA,
|
||||
WF0_5G_HB0, WF0_5G_HB1, WF0_5G_HB2, WF0_5G_HB3, WF0_5G_HB4,
|
||||
WF0_5G_HB5, WF0_5G_HB6, XO_REQ, TOP_RST_N, SYS_WATCHDOG,
|
||||
EPHY_LED0_N_JTDO, EPHY_LED1_N_JTDI, EPHY_LED2_N_JTMS,
|
||||
EPHY_LED3_N_JTCLK, EPHY_LED4_N_JTRST_N, WF2G_LED_N,
|
||||
WF5G_LED_N, GPIO_9, GPIO_10, GPIO_11, GPIO_12, UART1_TXD,
|
||||
UART1_RXD, UART1_CTS, UART1_RTS, UART2_TXD, UART2_RXD,
|
||||
UART2_CTS, UART2_RTS, SMI_MDC, SMI_MDIO, PCIE_PERESET_N,
|
||||
PWM_0, GPIO_0, GPIO_1, GPIO_2, GPIO_3, GPIO_4, GPIO_5,
|
||||
GPIO_6, GPIO_7, GPIO_8, UART0_TXD, UART0_RXD, TOP_2G_CLK,
|
||||
TOP_2G_DATA, WF0_2G_HB0, WF0_2G_HB1, WF0_2G_HB2, WF0_2G_HB3,
|
||||
WF0_2G_HB4, WF0_2G_HB5, WF0_2G_HB6]
|
||||
|
||||
bias-disable: true
|
||||
|
||||
bias-pull-up: true
|
||||
|
||||
bias-pull-down: true
|
||||
|
||||
input-enable: true
|
||||
|
||||
input-disable: true
|
||||
|
||||
output-enable: true
|
||||
|
||||
output-low: true
|
||||
|
||||
output-high: true
|
||||
|
||||
input-schmitt-enable: true
|
||||
|
||||
input-schmitt-disable: true
|
||||
|
||||
drive-strength:
|
||||
enum: [4, 8, 12, 16]
|
||||
|
||||
slew-rate:
|
||||
enum: [0, 1]
|
||||
|
||||
mediatek,tdsel:
|
||||
description: |
|
||||
An integer describing the steps for output level shifter duty
|
||||
cycle when asserted (high pulse width adjustment). Valid arguments
|
||||
are from 0 to 15.
|
||||
$ref: /schemas/types.yaml#/definitions/uint32
|
||||
|
||||
mediatek,rdsel:
|
||||
description: |
|
||||
An integer describing the steps for input level shifter duty cycle
|
||||
when asserted (high pulse width adjustment). Valid arguments are
|
||||
from 0 to 63.
|
||||
$ref: /schemas/types.yaml#/definitions/uint32
|
||||
|
||||
required:
|
||||
- pins
|
||||
|
||||
additionalProperties: false
|
||||
|
||||
examples:
|
||||
- |
|
||||
#include <dt-bindings/interrupt-controller/irq.h>
|
||||
#include <dt-bindings/interrupt-controller/arm-gic.h>
|
||||
|
||||
soc {
|
||||
#address-cells = <2>;
|
||||
#size-cells = <2>;
|
||||
|
||||
pio: pinctrl@10211000 {
|
||||
compatible = "mediatek,mt7622-pinctrl";
|
||||
reg = <0 0x10211000 0 0x1000>;
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
|
||||
pinctrl_eth_default: eth-0 {
|
||||
mux-mdio {
|
||||
groups = "mdc_mdio";
|
||||
function = "eth";
|
||||
drive-strength = <12>;
|
||||
};
|
||||
|
||||
mux-gmac2 {
|
||||
groups = "rgmii_via_gmac2";
|
||||
function = "eth";
|
||||
drive-strength = <12>;
|
||||
};
|
||||
|
||||
mux-esw {
|
||||
groups = "esw";
|
||||
function = "eth";
|
||||
drive-strength = <8>;
|
||||
};
|
||||
|
||||
conf-mdio {
|
||||
pins = "MDC";
|
||||
bias-pull-up;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
374
bindings/pinctrl/mediatek,mt7986-pinctrl.yaml
Normal file
374
bindings/pinctrl/mediatek,mt7986-pinctrl.yaml
Normal file
@@ -0,0 +1,374 @@
|
||||
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
|
||||
%YAML 1.2
|
||||
---
|
||||
$id: http://devicetree.org/schemas/pinctrl/mediatek,mt7986-pinctrl.yaml#
|
||||
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
||||
|
||||
title: Mediatek MT7986 Pin Controller
|
||||
|
||||
maintainers:
|
||||
- Sean Wang <sean.wang@kernel.org>
|
||||
|
||||
description: |+
|
||||
The MediaTek's MT7986 Pin controller is used to control SoC pins.
|
||||
|
||||
properties:
|
||||
compatible:
|
||||
enum:
|
||||
- mediatek,mt7986a-pinctrl
|
||||
- mediatek,mt7986b-pinctrl
|
||||
|
||||
reg:
|
||||
minItems: 8
|
||||
maxItems: 8
|
||||
|
||||
reg-names:
|
||||
items:
|
||||
- const: gpio
|
||||
- const: iocfg_rt
|
||||
- const: iocfg_rb
|
||||
- const: iocfg_lt
|
||||
- const: iocfg_lb
|
||||
- const: iocfg_tr
|
||||
- const: iocfg_tl
|
||||
- const: eint
|
||||
|
||||
gpio-controller: true
|
||||
|
||||
"#gpio-cells":
|
||||
const: 2
|
||||
description: |
|
||||
Number of cells in GPIO specifier. Since the generic GPIO
|
||||
binding is used, the amount of cells must be specified as 2. See the below
|
||||
mentioned gpio binding representation for description of particular cells.
|
||||
|
||||
gpio-ranges:
|
||||
minItems: 1
|
||||
maxItems: 5
|
||||
description: |
|
||||
GPIO valid number range.
|
||||
|
||||
interrupt-controller: true
|
||||
|
||||
interrupts:
|
||||
maxItems: 1
|
||||
|
||||
"#interrupt-cells":
|
||||
const: 2
|
||||
|
||||
allOf:
|
||||
- $ref: "pinctrl.yaml#"
|
||||
|
||||
required:
|
||||
- compatible
|
||||
- reg
|
||||
- reg-names
|
||||
- gpio-controller
|
||||
- "#gpio-cells"
|
||||
|
||||
patternProperties:
|
||||
'-pins$':
|
||||
type: object
|
||||
additionalProperties: false
|
||||
|
||||
patternProperties:
|
||||
'.*mux.*':
|
||||
type: object
|
||||
additionalProperties: false
|
||||
description: |
|
||||
pinmux configuration nodes.
|
||||
|
||||
The following table shows the effective values of "group", "function"
|
||||
properties and chip pinout pins
|
||||
|
||||
groups function pins (in pin#)
|
||||
---------------------------------------------------------------------
|
||||
"watchdog" "watchdog" 0
|
||||
"wifi_led" "led" 1, 2
|
||||
"i2c" "i2c" 3, 4
|
||||
"uart1_0" "uart" 7, 8, 9, 10
|
||||
"pcie_clk" "pcie" 9
|
||||
"pcie_wake" "pcie" 10
|
||||
"spi1_0" "spi" 11, 12, 13, 14
|
||||
"pwm1_1" "pwm" 20,
|
||||
"pwm0" "pwm" 21,
|
||||
"pwm1_0" "pwm" 22,
|
||||
"snfi" "flash" 23, 24, 25, 26, 27, 28
|
||||
"spi1_2" "spi" 29, 30, 31, 32
|
||||
"emmc_45" "emmc" 22, 23, 24, 25, 26, 27, 28, 29, 30,
|
||||
31, 32
|
||||
"spi1_1" "spi" 23, 24, 25, 26
|
||||
"uart1_2" "uart" 29, 30, 31, 32
|
||||
"uart1_1" "uart" 23, 24, 25, 26
|
||||
"uart2_0" "uart" 29, 30, 31, 32
|
||||
"spi0" "spi" 33, 34, 35, 36
|
||||
"spi0_wp_hold" "spi" 37, 38
|
||||
"uart1_3_rx_tx" "uart" 35, 36
|
||||
"uart1_3_cts_rts" "uart" 37, 38
|
||||
"uart2_1" "uart" 33, 34, 35, 36
|
||||
"spi1_3" "spi" 33, 34, 35, 36
|
||||
"uart0" "uart" 39, 40
|
||||
"pcie_pereset" "pcie" 41
|
||||
"uart1" "uart" 42, 43, 44, 45
|
||||
"uart2" "uart" 46, 47, 48, 49
|
||||
"emmc_51" "emmc" 50, 51, 52, 53, 54, 55, 56, 57, 57,
|
||||
59, 60, 61
|
||||
"pcm" "audio" 62, 63, 64, 65
|
||||
"i2s" "audio" 62, 63, 64, 65
|
||||
"switch_int" "eth" 66
|
||||
"mdc_mdio" "eth" 67
|
||||
"wf_2g" "wifi" 74, 75, 76, 77, 78, 79, 80, 81, 82, 83
|
||||
"wf_5g" "wifi" 91, 92, 93, 94, 95, 96, 97, 98, 99, 100
|
||||
"wf_dbdc" "wifi" 74, 75, 76, 77, 78, 79, 80, 81, 82, 83,
|
||||
84, 85
|
||||
|
||||
$ref: "/schemas/pinctrl/pinmux-node.yaml"
|
||||
properties:
|
||||
function:
|
||||
description: |
|
||||
A string containing the name of the function to mux to the group.
|
||||
There is no "audio", "pcie" functions on mt7986b, you can only use
|
||||
those functions on mt7986a.
|
||||
enum: [audio, emmc, eth, i2c, led, flash, pcie, pwm, spi, uart,
|
||||
watchdog, wifi]
|
||||
groups:
|
||||
description: |
|
||||
An array of strings. Each string contains the name of a group.
|
||||
There is no "pcie_pereset", "uart1", "uart2" "emmc_51", "pcm",
|
||||
and "i2s" groups on mt7986b, you can only use those groups on
|
||||
mt7986a.
|
||||
required:
|
||||
- function
|
||||
- groups
|
||||
|
||||
allOf:
|
||||
- if:
|
||||
properties:
|
||||
function:
|
||||
const: audio
|
||||
then:
|
||||
properties:
|
||||
groups:
|
||||
enum: [pcm, i2s]
|
||||
- if:
|
||||
properties:
|
||||
function:
|
||||
const: emmc
|
||||
then:
|
||||
properties:
|
||||
groups:
|
||||
enum: [emmc, emmc_rst]
|
||||
- if:
|
||||
properties:
|
||||
function:
|
||||
const: eth
|
||||
then:
|
||||
properties:
|
||||
groups:
|
||||
enum: [switch_int, mdc_mdio]
|
||||
- if:
|
||||
properties:
|
||||
function:
|
||||
const: i2c
|
||||
then:
|
||||
properties:
|
||||
groups:
|
||||
enum: [i2c]
|
||||
- if:
|
||||
properties:
|
||||
function:
|
||||
const: led
|
||||
then:
|
||||
properties:
|
||||
groups:
|
||||
enum: [wifi_led]
|
||||
- if:
|
||||
properties:
|
||||
function:
|
||||
const: flash
|
||||
then:
|
||||
properties:
|
||||
groups:
|
||||
enum: [snfi]
|
||||
- if:
|
||||
properties:
|
||||
function:
|
||||
const: pcie
|
||||
then:
|
||||
properties:
|
||||
groups:
|
||||
enum: [pcie_clk, pcie_wake, pcie_pereset]
|
||||
- if:
|
||||
properties:
|
||||
function:
|
||||
const: pwm
|
||||
then:
|
||||
properties:
|
||||
groups:
|
||||
enum: [pwm0, pwm1_0, pwm1_1]
|
||||
- if:
|
||||
properties:
|
||||
function:
|
||||
const: spi
|
||||
then:
|
||||
properties:
|
||||
groups:
|
||||
enum: [spi0, spi0_wp_hold, spi1_0, spi1_1, spi1_2, spi1_3]
|
||||
- if:
|
||||
properties:
|
||||
function:
|
||||
const: uart
|
||||
then:
|
||||
properties:
|
||||
groups:
|
||||
enum: [uart1_0, uart1_1, uart1_2, uart1_3_rx_tx,
|
||||
uart1_3_cts_rts, uart2_0, uart2_1, uart0, uart1, uart2]
|
||||
- if:
|
||||
properties:
|
||||
function:
|
||||
const: watchdog
|
||||
then:
|
||||
properties:
|
||||
groups:
|
||||
enum: [watchdog]
|
||||
- if:
|
||||
properties:
|
||||
function:
|
||||
const: wifi
|
||||
then:
|
||||
properties:
|
||||
groups:
|
||||
items:
|
||||
enum: [wf_2g, wf_5g, wf_dbdc]
|
||||
maxItems: 3
|
||||
'.*conf.*':
|
||||
type: object
|
||||
additionalProperties: false
|
||||
description: |
|
||||
pinconf configuration nodes.
|
||||
$ref: "/schemas/pinctrl/pincfg-node.yaml"
|
||||
|
||||
properties:
|
||||
pins:
|
||||
description: |
|
||||
An array of strings. Each string contains the name of a pin.
|
||||
There is no PIN 41 to PIN 65 above on mt7686b, you can only use
|
||||
those pins on mt7986a.
|
||||
items:
|
||||
enum: [SYS_WATCHDOG, WF2G_LED, WF5G_LED, I2C_SCL, I2C_SDA, GPIO_0,
|
||||
GPIO_1, GPIO_2, GPIO_3, GPIO_4, GPIO_5, GPIO_6, GPIO_7,
|
||||
GPIO_8, GPIO_9, GPIO_10, GPIO_11, GPIO_12, GPIO_13, GPIO_14,
|
||||
GPIO_15, PWM0, PWM1, SPI0_CLK, SPI0_MOSI, SPI0_MISO, SPI0_CS,
|
||||
SPI0_HOLD, SPI0_WP, SPI1_CLK, SPI1_MOSI, SPI1_MISO, SPI1_CS,
|
||||
SPI2_CLK, SPI2_MOSI, SPI2_MISO, SPI2_CS, SPI2_HOLD, SPI2_WP,
|
||||
UART0_RXD, UART0_TXD, PCIE_PERESET_N, UART1_RXD, UART1_TXD,
|
||||
UART1_CTS, UART1_RTS, UART2_RXD, UART2_TXD, UART2_CTS,
|
||||
UART2_RTS, EMMC_DATA_0, EMMC_DATA_1, EMMC_DATA_2,
|
||||
EMMC_DATA_3, EMMC_DATA_4, EMMC_DATA_5, EMMC_DATA_6,
|
||||
EMMC_DATA_7, EMMC_CMD, EMMC_CK, EMMC_DSL, EMMC_RSTB, PCM_DTX,
|
||||
PCM_DRX, PCM_CLK, PCM_FS, MT7531_INT, SMI_MDC, SMI_MDIO,
|
||||
WF0_DIG_RESETB, WF0_CBA_RESETB, WF0_XO_REQ, WF0_TOP_CLK,
|
||||
WF0_TOP_DATA, WF0_HB1, WF0_HB2, WF0_HB3, WF0_HB4, WF0_HB0,
|
||||
WF0_HB0_B, WF0_HB5, WF0_HB6, WF0_HB7, WF0_HB8, WF0_HB9,
|
||||
WF0_HB10, WF1_DIG_RESETB, WF1_CBA_RESETB, WF1_XO_REQ,
|
||||
WF1_TOP_CLK, WF1_TOP_DATA, WF1_HB1, WF1_HB2, WF1_HB3,
|
||||
WF1_HB4, WF1_HB0, WF1_HB0_B, WF1_HB5, WF1_HB6, WF1_HB7,
|
||||
WF1_HB8]
|
||||
maxItems: 101
|
||||
|
||||
bias-disable: true
|
||||
|
||||
bias-pull-up: true
|
||||
|
||||
bias-pull-down: true
|
||||
|
||||
input-enable: true
|
||||
|
||||
input-disable: true
|
||||
|
||||
output-enable: true
|
||||
|
||||
output-low: true
|
||||
|
||||
output-high: true
|
||||
|
||||
input-schmitt-enable: true
|
||||
|
||||
input-schmitt-disable: true
|
||||
|
||||
drive-strength:
|
||||
enum: [2, 4, 6, 8, 10, 12, 14, 16]
|
||||
|
||||
mediatek,pull-up-adv:
|
||||
description: |
|
||||
Valid arguments for 'mediatek,pull-up-adv' are '0', '1', '2', '3'
|
||||
Pull up setings for 2 pull resistors, R0 and R1. Valid arguments
|
||||
are described as below:
|
||||
0: (R1, R0) = (0, 0) which means R1 disabled and R0 disabled.
|
||||
1: (R1, R0) = (0, 1) which means R1 disabled and R0 enabled.
|
||||
2: (R1, R0) = (1, 0) which means R1 enabled and R0 disabled.
|
||||
3: (R1, R0) = (1, 1) which means R1 enabled and R0 enabled.
|
||||
$ref: /schemas/types.yaml#/definitions/uint32
|
||||
enum: [0, 1, 2, 3]
|
||||
|
||||
mediatek,pull-down-adv:
|
||||
description: |
|
||||
Valid arguments for 'mediatek,pull-up-adv' are '0', '1', '2', '3'
|
||||
Pull down setings for 2 pull resistors, R0 and R1. Valid arguments
|
||||
are described as below:
|
||||
0: (R1, R0) = (0, 0) which means R1 disabled and R0 disabled.
|
||||
1: (R1, R0) = (0, 1) which means R1 disabled and R0 enabled.
|
||||
2: (R1, R0) = (1, 0) which means R1 enabled and R0 disabled.
|
||||
3: (R1, R0) = (1, 1) which means R1 enabled and R0 enabled.
|
||||
$ref: /schemas/types.yaml#/definitions/uint32
|
||||
enum: [0, 1, 2, 3]
|
||||
|
||||
required:
|
||||
- pins
|
||||
|
||||
additionalProperties: false
|
||||
|
||||
examples:
|
||||
- |
|
||||
#include <dt-bindings/interrupt-controller/irq.h>
|
||||
#include <dt-bindings/interrupt-controller/arm-gic.h>
|
||||
|
||||
soc {
|
||||
#address-cells = <2>;
|
||||
#size-cells = <2>;
|
||||
pio: pinctrl@1001f000 {
|
||||
compatible = "mediatek,mt7986a-pinctrl";
|
||||
reg = <0 0x1001f000 0 0x1000>,
|
||||
<0 0x11c30000 0 0x1000>,
|
||||
<0 0x11c40000 0 0x1000>,
|
||||
<0 0x11e20000 0 0x1000>,
|
||||
<0 0x11e30000 0 0x1000>,
|
||||
<0 0x11f00000 0 0x1000>,
|
||||
<0 0x11f10000 0 0x1000>,
|
||||
<0 0x1000b000 0 0x1000>;
|
||||
reg-names = "gpio", "iocfg_rt", "iocfg_rb", "iocfg_lt",
|
||||
"iocfg_lb", "iocfg_tr", "iocfg_tl", "eint";
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
gpio-ranges = <&pio 0 0 100>;
|
||||
interrupt-controller;
|
||||
interrupts = <GIC_SPI 225 IRQ_TYPE_LEVEL_HIGH>;
|
||||
interrupt-parent = <&gic>;
|
||||
#interrupt-cells = <2>;
|
||||
|
||||
uart1_pins: uart1-pins {
|
||||
mux {
|
||||
function = "uart";
|
||||
groups = "uart1";
|
||||
};
|
||||
};
|
||||
|
||||
uart2_pins: uart2-pins {
|
||||
mux {
|
||||
function = "uart";
|
||||
groups = "uart2";
|
||||
};
|
||||
};
|
||||
|
||||
};
|
||||
};
|
231
bindings/pinctrl/mediatek,mt8183-pinctrl.yaml
Normal file
231
bindings/pinctrl/mediatek,mt8183-pinctrl.yaml
Normal file
@@ -0,0 +1,231 @@
|
||||
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
|
||||
%YAML 1.2
|
||||
---
|
||||
$id: http://devicetree.org/schemas/pinctrl/mediatek,mt8183-pinctrl.yaml#
|
||||
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
||||
|
||||
title: Mediatek MT8183 Pin Controller
|
||||
|
||||
maintainers:
|
||||
- Sean Wang <sean.wang@kernel.org>
|
||||
|
||||
description: |+
|
||||
The MediaTek's MT8183 Pin controller is used to control SoC pins.
|
||||
|
||||
properties:
|
||||
compatible:
|
||||
const: mediatek,mt8183-pinctrl
|
||||
|
||||
reg:
|
||||
minItems: 10
|
||||
maxItems: 10
|
||||
|
||||
reg-names:
|
||||
items:
|
||||
- const: iocfg0
|
||||
- const: iocfg1
|
||||
- const: iocfg2
|
||||
- const: iocfg3
|
||||
- const: iocfg4
|
||||
- const: iocfg5
|
||||
- const: iocfg6
|
||||
- const: iocfg7
|
||||
- const: iocfg8
|
||||
- const: eint
|
||||
|
||||
gpio-controller: true
|
||||
|
||||
"#gpio-cells":
|
||||
const: 2
|
||||
description: |
|
||||
Number of cells in GPIO specifier. Since the generic GPIO
|
||||
binding is used, the amount of cells must be specified as 2. See the below
|
||||
mentioned gpio binding representation for description of particular cells.
|
||||
|
||||
gpio-ranges:
|
||||
minItems: 1
|
||||
maxItems: 5
|
||||
description: |
|
||||
GPIO valid number range.
|
||||
|
||||
interrupt-controller: true
|
||||
|
||||
interrupts:
|
||||
maxItems: 1
|
||||
|
||||
"#interrupt-cells":
|
||||
const: 2
|
||||
|
||||
allOf:
|
||||
- $ref: "pinctrl.yaml#"
|
||||
|
||||
required:
|
||||
- compatible
|
||||
- reg
|
||||
- gpio-controller
|
||||
- "#gpio-cells"
|
||||
- gpio-ranges
|
||||
|
||||
patternProperties:
|
||||
'-[0-9]+$':
|
||||
type: object
|
||||
additionalProperties: false
|
||||
patternProperties:
|
||||
'pins':
|
||||
type: object
|
||||
additionalProperties: false
|
||||
description: |
|
||||
A pinctrl node should contain at least one subnodes representing the
|
||||
pinctrl groups available on the machine. Each subnode will list the
|
||||
pins it needs, and how they should be configured, with regard to muxer
|
||||
configuration, pullups, drive strength, input enable/disable and input
|
||||
schmitt.
|
||||
$ref: "/schemas/pinctrl/pincfg-node.yaml"
|
||||
|
||||
properties:
|
||||
pinmux:
|
||||
description:
|
||||
integer array, represents gpio pin number and mux setting.
|
||||
Supported pin number and mux varies for different SoCs, and are
|
||||
defined as macros in <soc>-pinfunc.h directly.
|
||||
|
||||
bias-disable: true
|
||||
|
||||
bias-pull-up: true
|
||||
|
||||
bias-pull-down: true
|
||||
|
||||
input-enable: true
|
||||
|
||||
input-disable: true
|
||||
|
||||
output-low: true
|
||||
|
||||
output-high: true
|
||||
|
||||
input-schmitt-enable: true
|
||||
|
||||
input-schmitt-disable: true
|
||||
|
||||
drive-strength:
|
||||
enum: [2, 4, 6, 8, 10, 12, 14, 16]
|
||||
|
||||
mediatek,drive-strength-adv:
|
||||
description: |
|
||||
Describe the specific driving setup property.
|
||||
For I2C pins, the existing generic driving setup can only support
|
||||
2/4/6/8/10/12/14/16mA driving. But in specific driving setup, they
|
||||
can support 0.125/0.25/0.5/1mA adjustment. If we enable specific
|
||||
driving setup, the existing generic setup will be disabled.
|
||||
The specific driving setup is controlled by E1E0EN.
|
||||
When E1=0/E0=0, the strength is 0.125mA.
|
||||
When E1=0/E0=1, the strength is 0.25mA.
|
||||
When E1=1/E0=0, the strength is 0.5mA.
|
||||
When E1=1/E0=1, the strength is 1mA.
|
||||
EN is used to enable or disable the specific driving setup.
|
||||
Valid arguments are described as below:
|
||||
0: (E1, E0, EN) = (0, 0, 0)
|
||||
1: (E1, E0, EN) = (0, 0, 1)
|
||||
2: (E1, E0, EN) = (0, 1, 0)
|
||||
3: (E1, E0, EN) = (0, 1, 1)
|
||||
4: (E1, E0, EN) = (1, 0, 0)
|
||||
5: (E1, E0, EN) = (1, 0, 1)
|
||||
6: (E1, E0, EN) = (1, 1, 0)
|
||||
7: (E1, E0, EN) = (1, 1, 1)
|
||||
So the valid arguments are from 0 to 7.
|
||||
$ref: /schemas/types.yaml#/definitions/uint32
|
||||
enum: [0, 1, 2, 3, 4, 5, 6, 7]
|
||||
|
||||
mediatek,pull-up-adv:
|
||||
description: |
|
||||
Pull up setings for 2 pull resistors, R0 and R1. User can
|
||||
configure those special pins. Valid arguments are described as below:
|
||||
0: (R1, R0) = (0, 0) which means R1 disabled and R0 disabled.
|
||||
1: (R1, R0) = (0, 1) which means R1 disabled and R0 enabled.
|
||||
2: (R1, R0) = (1, 0) which means R1 enabled and R0 disabled.
|
||||
3: (R1, R0) = (1, 1) which means R1 enabled and R0 enabled.
|
||||
$ref: /schemas/types.yaml#/definitions/uint32
|
||||
enum: [0, 1, 2, 3]
|
||||
|
||||
mediatek,pull-down-adv:
|
||||
description: |
|
||||
Pull down settings for 2 pull resistors, R0 and R1. User can
|
||||
configure those special pins. Valid arguments are described as below:
|
||||
0: (R1, R0) = (0, 0) which means R1 disabled and R0 disabled.
|
||||
1: (R1, R0) = (0, 1) which means R1 disabled and R0 enabled.
|
||||
2: (R1, R0) = (1, 0) which means R1 enabled and R0 disabled.
|
||||
3: (R1, R0) = (1, 1) which means R1 enabled and R0 enabled.
|
||||
$ref: /schemas/types.yaml#/definitions/uint32
|
||||
enum: [0, 1, 2, 3]
|
||||
|
||||
mediatek,tdsel:
|
||||
description: |
|
||||
An integer describing the steps for output level shifter duty
|
||||
cycle when asserted (high pulse width adjustment). Valid arguments
|
||||
are from 0 to 15.
|
||||
$ref: /schemas/types.yaml#/definitions/uint32
|
||||
|
||||
mediatek,rdsel:
|
||||
description: |
|
||||
An integer describing the steps for input level shifter duty cycle
|
||||
when asserted (high pulse width adjustment). Valid arguments are
|
||||
from 0 to 63.
|
||||
$ref: /schemas/types.yaml#/definitions/uint32
|
||||
|
||||
required:
|
||||
- pinmux
|
||||
|
||||
additionalProperties: false
|
||||
|
||||
examples:
|
||||
- |
|
||||
#include <dt-bindings/interrupt-controller/irq.h>
|
||||
#include <dt-bindings/interrupt-controller/arm-gic.h>
|
||||
#include <dt-bindings/pinctrl/mt8183-pinfunc.h>
|
||||
|
||||
soc {
|
||||
#address-cells = <2>;
|
||||
#size-cells = <2>;
|
||||
|
||||
pio: pinctrl@10005000 {
|
||||
compatible = "mediatek,mt8183-pinctrl";
|
||||
reg = <0 0x10005000 0 0x1000>,
|
||||
<0 0x11f20000 0 0x1000>,
|
||||
<0 0x11e80000 0 0x1000>,
|
||||
<0 0x11e70000 0 0x1000>,
|
||||
<0 0x11e90000 0 0x1000>,
|
||||
<0 0x11d30000 0 0x1000>,
|
||||
<0 0x11d20000 0 0x1000>,
|
||||
<0 0x11c50000 0 0x1000>,
|
||||
<0 0x11f30000 0 0x1000>,
|
||||
<0 0x1000b000 0 0x1000>;
|
||||
reg-names = "iocfg0", "iocfg1", "iocfg2",
|
||||
"iocfg3", "iocfg4", "iocfg5",
|
||||
"iocfg6", "iocfg7", "iocfg8",
|
||||
"eint";
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
gpio-ranges = <&pio 0 0 192>;
|
||||
interrupt-controller;
|
||||
interrupts = <GIC_SPI 177 IRQ_TYPE_LEVEL_HIGH>;
|
||||
#interrupt-cells = <2>;
|
||||
|
||||
i2c0_pins_a: i2c-0 {
|
||||
pins1 {
|
||||
pinmux = <PINMUX_GPIO48__FUNC_SCL5>,
|
||||
<PINMUX_GPIO49__FUNC_SDA5>;
|
||||
mediatek,pull-up-adv = <3>;
|
||||
mediatek,drive-strength-adv = <7>;
|
||||
};
|
||||
};
|
||||
|
||||
i2c1_pins_a: i2c-1 {
|
||||
pins {
|
||||
pinmux = <PINMUX_GPIO50__FUNC_SCL3>,
|
||||
<PINMUX_GPIO51__FUNC_SDA3>;
|
||||
mediatek,pull-down-adv = <2>;
|
||||
mediatek,drive-strength-adv = <4>;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
226
bindings/pinctrl/mediatek,mt8188-pinctrl.yaml
Normal file
226
bindings/pinctrl/mediatek,mt8188-pinctrl.yaml
Normal file
@@ -0,0 +1,226 @@
|
||||
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
|
||||
%YAML 1.2
|
||||
---
|
||||
$id: http://devicetree.org/schemas/pinctrl/mediatek,mt8188-pinctrl.yaml#
|
||||
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
||||
|
||||
title: MediaTek MT8188 Pin Controller
|
||||
|
||||
maintainers:
|
||||
- Hui Liu <hui.liu@mediatek.com>
|
||||
|
||||
description: |
|
||||
The MediaTek's MT8188 Pin controller is used to control SoC pins.
|
||||
|
||||
properties:
|
||||
compatible:
|
||||
const: mediatek,mt8188-pinctrl
|
||||
|
||||
gpio-controller: true
|
||||
|
||||
'#gpio-cells':
|
||||
description: |
|
||||
Number of cells in GPIO specifier, should be two. The first cell
|
||||
is the pin number, the second cell is used to specify optional
|
||||
parameters which are defined in <dt-bindings/gpio/gpio.h>.
|
||||
const: 2
|
||||
|
||||
gpio-ranges:
|
||||
maxItems: 1
|
||||
|
||||
gpio-line-names: true
|
||||
|
||||
reg:
|
||||
items:
|
||||
- description: gpio registers base address
|
||||
- description: rm group io configuration registers base address
|
||||
- description: lt group io configuration registers base address
|
||||
- description: lm group io configuration registers base address
|
||||
- description: rt group io configuration registers base address
|
||||
- description: eint registers base address
|
||||
|
||||
reg-names:
|
||||
items:
|
||||
- const: iocfg0
|
||||
- const: iocfg_rm
|
||||
- const: iocfg_lt
|
||||
- const: iocfg_lm
|
||||
- const: iocfg_rt
|
||||
- const: eint
|
||||
|
||||
interrupt-controller: true
|
||||
|
||||
'#interrupt-cells':
|
||||
const: 2
|
||||
|
||||
interrupts:
|
||||
description: The interrupt outputs to sysirq.
|
||||
maxItems: 1
|
||||
|
||||
mediatek,rsel-resistance-in-si-unit:
|
||||
type: boolean
|
||||
description: |
|
||||
We provide two methods to select the resistance for I2C when pull up or pull down.
|
||||
The first is by RSEL definition value, another one is by resistance value(ohm).
|
||||
This flag is used to identify if the method is resistance(si unit) value.
|
||||
|
||||
# PIN CONFIGURATION NODES
|
||||
patternProperties:
|
||||
'-pins$':
|
||||
type: object
|
||||
additionalProperties: false
|
||||
|
||||
patternProperties:
|
||||
'^pins':
|
||||
type: object
|
||||
$ref: "/schemas/pinctrl/pincfg-node.yaml"
|
||||
additionalProperties: false
|
||||
description: |
|
||||
A pinctrl node should contain at least one subnode representing the
|
||||
pinctrl groups available on the machine. Each subnode will list the
|
||||
pins it needs, and how they should be configured, with regard to muxer
|
||||
configuration, pullups, drive strength, input enable/disable and
|
||||
input schmitt.
|
||||
|
||||
properties:
|
||||
pinmux:
|
||||
description: |
|
||||
Integer array, represents gpio pin number and mux setting.
|
||||
Supported pin number and mux varies for different SoCs, and are
|
||||
defined as macros in dt-bindings/pinctrl/mediatek,<soc>-pinfunc.h
|
||||
directly.
|
||||
|
||||
drive-strength:
|
||||
enum: [2, 4, 6, 8, 10, 12, 14, 16]
|
||||
|
||||
drive-strength-microamp:
|
||||
enum: [125, 250, 500, 1000]
|
||||
|
||||
bias-pull-down:
|
||||
oneOf:
|
||||
- type: boolean
|
||||
- enum: [100, 101, 102, 103]
|
||||
description: mt8188 pull down PUPD/R0/R1 type define value.
|
||||
- enum: [200, 201, 202, 203, 204, 205, 206, 207]
|
||||
description: mt8188 pull down RSEL type define value.
|
||||
- enum: [75000, 5000]
|
||||
description: mt8188 pull down RSEL type si unit value(ohm).
|
||||
description: |
|
||||
For pull down type is normal, it doesn't need add RSEL & R1R0 define
|
||||
and resistance value.
|
||||
For pull down type is PUPD/R0/R1 type, it can add R1R0 define to
|
||||
set different resistance. It can support "MTK_PUPD_SET_R1R0_00" &
|
||||
"MTK_PUPD_SET_R1R0_01" & "MTK_PUPD_SET_R1R0_10" & "MTK_PUPD_SET_R1R0_11"
|
||||
define in mt8188.
|
||||
For pull down type is RSEL, it can add RSEL define & resistance value(ohm)
|
||||
to set different resistance by identifying property "mediatek,rsel-resistance-in-si-unit".
|
||||
It can support "MTK_PULL_SET_RSEL_000" & "MTK_PULL_SET_RSEL_001"
|
||||
& "MTK_PULL_SET_RSEL_010" & "MTK_PULL_SET_RSEL_011" & "MTK_PULL_SET_RSEL_100"
|
||||
& "MTK_PULL_SET_RSEL_101" & "MTK_PULL_SET_RSEL_110" & "MTK_PULL_SET_RSEL_111"
|
||||
define in mt8188. It can also support resistance value(ohm) "75000" & "5000" in mt8188.
|
||||
|
||||
bias-pull-up:
|
||||
oneOf:
|
||||
- type: boolean
|
||||
- enum: [100, 101, 102, 103]
|
||||
description: mt8188 pull up PUPD/R0/R1 type define value.
|
||||
- enum: [200, 201, 202, 203, 204, 205, 206, 207]
|
||||
description: mt8188 pull up RSEL type define value.
|
||||
- enum: [1000, 1500, 2000, 3000, 4000, 5000, 10000, 75000]
|
||||
description: mt8188 pull up RSEL type si unit value(ohm).
|
||||
description: |
|
||||
For pull up type is normal, it don't need add RSEL & R1R0 define
|
||||
and resistance value.
|
||||
For pull up type is PUPD/R0/R1 type, it can add R1R0 define to
|
||||
set different resistance. It can support "MTK_PUPD_SET_R1R0_00" &
|
||||
"MTK_PUPD_SET_R1R0_01" & "MTK_PUPD_SET_R1R0_10" & "MTK_PUPD_SET_R1R0_11"
|
||||
define in mt8188.
|
||||
For pull up type is RSEL, it can add RSEL define & resistance value(ohm)
|
||||
to set different resistance by identifying property "mediatek,rsel-resistance-in-si-unit".
|
||||
It can support "MTK_PULL_SET_RSEL_000" & "MTK_PULL_SET_RSEL_001"
|
||||
& "MTK_PULL_SET_RSEL_010" & "MTK_PULL_SET_RSEL_011" & "MTK_PULL_SET_RSEL_100"
|
||||
& "MTK_PULL_SET_RSEL_101" & "MTK_PULL_SET_RSEL_110" & "MTK_PULL_SET_RSEL_111"
|
||||
define in mt8188. It can also support resistance value(ohm)
|
||||
"1000" & "1500" & "2000" & "3000" & "4000" & "5000" & "10000" & "75000" in mt8188.
|
||||
|
||||
bias-disable: true
|
||||
|
||||
output-high: true
|
||||
|
||||
output-low: true
|
||||
|
||||
input-enable: true
|
||||
|
||||
input-disable: true
|
||||
|
||||
input-schmitt-enable: true
|
||||
|
||||
input-schmitt-disable: true
|
||||
|
||||
required:
|
||||
- pinmux
|
||||
|
||||
required:
|
||||
- compatible
|
||||
- reg
|
||||
- interrupts
|
||||
- interrupt-controller
|
||||
- '#interrupt-cells'
|
||||
- gpio-controller
|
||||
- '#gpio-cells'
|
||||
- gpio-ranges
|
||||
|
||||
additionalProperties: false
|
||||
|
||||
examples:
|
||||
- |
|
||||
#include <dt-bindings/pinctrl/mediatek,mt8188-pinfunc.h>
|
||||
#include <dt-bindings/interrupt-controller/arm-gic.h>
|
||||
|
||||
pio: pinctrl@10005000 {
|
||||
compatible = "mediatek,mt8188-pinctrl";
|
||||
reg = <0x10005000 0x1000>,
|
||||
<0x11c00000 0x1000>,
|
||||
<0x11e10000 0x1000>,
|
||||
<0x11e20000 0x1000>,
|
||||
<0x11ea0000 0x1000>,
|
||||
<0x1000b000 0x1000>;
|
||||
reg-names = "iocfg0", "iocfg_rm",
|
||||
"iocfg_lt", "iocfg_lm", "iocfg_rt",
|
||||
"eint";
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
gpio-ranges = <&pio 0 0 176>;
|
||||
interrupt-controller;
|
||||
interrupts = <GIC_SPI 225 IRQ_TYPE_LEVEL_HIGH 0>;
|
||||
#interrupt-cells = <2>;
|
||||
|
||||
pio-pins {
|
||||
pins {
|
||||
pinmux = <PINMUX_GPIO0__FUNC_B_GPIO0>;
|
||||
output-low;
|
||||
};
|
||||
};
|
||||
|
||||
spi0-pins {
|
||||
pins-spi {
|
||||
pinmux = <PINMUX_GPIO75__FUNC_O_SPIM1_CSB>,
|
||||
<PINMUX_GPIO76__FUNC_O_SPIM1_CLK>,
|
||||
<PINMUX_GPIO77__FUNC_B0_SPIM1_MOSI>;
|
||||
drive-strength = <6>;
|
||||
};
|
||||
pins-spi-mi {
|
||||
pinmux = <PINMUX_GPIO78__FUNC_B0_SPIM1_MISO>;
|
||||
bias-pull-down = <MTK_PUPD_SET_R1R0_10>;
|
||||
};
|
||||
};
|
||||
|
||||
i2c0-pins {
|
||||
pins {
|
||||
pinmux = <PINMUX_GPIO55__FUNC_B1_SCL0>,
|
||||
<PINMUX_GPIO56__FUNC_B1_SDA0>;
|
||||
bias-disable;
|
||||
drive-strength-microamp = <1000>;
|
||||
};
|
||||
};
|
||||
};
|
224
bindings/pinctrl/mediatek,pinctrl-mt6795.yaml
Normal file
224
bindings/pinctrl/mediatek,pinctrl-mt6795.yaml
Normal file
@@ -0,0 +1,224 @@
|
||||
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
|
||||
%YAML 1.2
|
||||
---
|
||||
$id: http://devicetree.org/schemas/pinctrl/mediatek,pinctrl-mt6795.yaml#
|
||||
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
||||
|
||||
title: Mediatek MT6795 Pin Controller
|
||||
|
||||
maintainers:
|
||||
- AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
|
||||
- Sean Wang <sean.wang@kernel.org>
|
||||
|
||||
description: |
|
||||
The Mediatek's Pin controller is used to control SoC pins.
|
||||
|
||||
properties:
|
||||
compatible:
|
||||
const: mediatek,mt6795-pinctrl
|
||||
|
||||
gpio-controller: true
|
||||
|
||||
'#gpio-cells':
|
||||
description: |
|
||||
Number of cells in GPIO specifier. Since the generic GPIO binding is used,
|
||||
the amount of cells must be specified as 2. See the below
|
||||
mentioned gpio binding representation for description of particular cells.
|
||||
const: 2
|
||||
|
||||
gpio-ranges:
|
||||
description: GPIO valid number range.
|
||||
maxItems: 1
|
||||
|
||||
reg:
|
||||
description:
|
||||
Physical address base for gpio base and eint registers.
|
||||
minItems: 2
|
||||
|
||||
reg-names:
|
||||
items:
|
||||
- const: base
|
||||
- const: eint
|
||||
|
||||
interrupt-controller: true
|
||||
|
||||
'#interrupt-cells':
|
||||
const: 2
|
||||
|
||||
interrupts:
|
||||
description: The interrupt outputs to sysirq.
|
||||
maxItems: 1
|
||||
|
||||
# PIN CONFIGURATION NODES
|
||||
patternProperties:
|
||||
'-pins$':
|
||||
type: object
|
||||
additionalProperties: false
|
||||
patternProperties:
|
||||
'^pins':
|
||||
type: object
|
||||
additionalProperties: false
|
||||
description: |
|
||||
A pinctrl node should contain at least one subnodes representing the
|
||||
pinctrl groups available on the machine. Each subnode will list the
|
||||
pins it needs, and how they should be configured, with regard to muxer
|
||||
configuration, pullups, drive strength, input enable/disable and
|
||||
input schmitt.
|
||||
An example of using macro:
|
||||
pincontroller {
|
||||
/* GPIO0 set as multifunction GPIO0 */
|
||||
gpio-pins {
|
||||
pins {
|
||||
pinmux = <PINMUX_GPIO0__FUNC_GPIO0>;
|
||||
}
|
||||
};
|
||||
/* GPIO45 set as multifunction SDA0 */
|
||||
i2c0-pins {
|
||||
pins {
|
||||
pinmux = <PINMUX_GPIO45__FUNC_SDA0>;
|
||||
}
|
||||
};
|
||||
};
|
||||
$ref: "pinmux-node.yaml"
|
||||
|
||||
properties:
|
||||
pinmux:
|
||||
description: |
|
||||
Integer array, represents gpio pin number and mux setting.
|
||||
Supported pin number and mux varies for different SoCs, and are
|
||||
defined as macros in dt-bindings/pinctrl/<soc>-pinfunc.h
|
||||
directly.
|
||||
|
||||
drive-strength:
|
||||
enum: [2, 4, 6, 8, 10, 12, 14, 16]
|
||||
|
||||
bias-pull-down:
|
||||
oneOf:
|
||||
- type: boolean
|
||||
- enum: [100, 101, 102, 103]
|
||||
description: mt6795 pull down PUPD/R0/R1 type define value.
|
||||
description: |
|
||||
For normal pull down type, it is not necessary to specify R1R0
|
||||
values; When pull down type is PUPD/R0/R1, adding R1R0 defines
|
||||
will set different resistance values.
|
||||
|
||||
bias-pull-up:
|
||||
oneOf:
|
||||
- type: boolean
|
||||
- enum: [100, 101, 102, 103]
|
||||
description: mt6795 pull up PUPD/R0/R1 type define value.
|
||||
description: |
|
||||
For normal pull up type, it is not necessary to specify R1R0
|
||||
values; When pull up type is PUPD/R0/R1, adding R1R0 defines
|
||||
will set different resistance values.
|
||||
|
||||
bias-disable: true
|
||||
|
||||
output-high: true
|
||||
|
||||
output-low: true
|
||||
|
||||
input-enable: true
|
||||
|
||||
input-disable: true
|
||||
|
||||
input-schmitt-enable: true
|
||||
|
||||
input-schmitt-disable: true
|
||||
|
||||
mediatek,pull-up-adv:
|
||||
description: |
|
||||
Pull up setings for 2 pull resistors, R0 and R1. User can
|
||||
configure those special pins. Valid arguments are described as below:
|
||||
0: (R1, R0) = (0, 0) which means R1 disabled and R0 disabled.
|
||||
1: (R1, R0) = (0, 1) which means R1 disabled and R0 enabled.
|
||||
2: (R1, R0) = (1, 0) which means R1 enabled and R0 disabled.
|
||||
3: (R1, R0) = (1, 1) which means R1 enabled and R0 enabled.
|
||||
$ref: /schemas/types.yaml#/definitions/uint32
|
||||
enum: [0, 1, 2, 3]
|
||||
|
||||
mediatek,pull-down-adv:
|
||||
description: |
|
||||
Pull down settings for 2 pull resistors, R0 and R1. User can
|
||||
configure those special pins. Valid arguments are described as below:
|
||||
0: (R1, R0) = (0, 0) which means R1 disabled and R0 disabled.
|
||||
1: (R1, R0) = (0, 1) which means R1 disabled and R0 enabled.
|
||||
2: (R1, R0) = (1, 0) which means R1 enabled and R0 disabled.
|
||||
3: (R1, R0) = (1, 1) which means R1 enabled and R0 enabled.
|
||||
$ref: /schemas/types.yaml#/definitions/uint32
|
||||
enum: [0, 1, 2, 3]
|
||||
|
||||
required:
|
||||
- pinmux
|
||||
|
||||
allOf:
|
||||
- $ref: "pinctrl.yaml#"
|
||||
|
||||
required:
|
||||
- compatible
|
||||
- reg
|
||||
- reg-names
|
||||
- interrupts
|
||||
- interrupt-controller
|
||||
- '#interrupt-cells'
|
||||
- gpio-controller
|
||||
- '#gpio-cells'
|
||||
- gpio-ranges
|
||||
|
||||
additionalProperties: false
|
||||
|
||||
examples:
|
||||
- |
|
||||
#include <dt-bindings/interrupt-controller/arm-gic.h>
|
||||
#include <dt-bindings/interrupt-controller/irq.h>
|
||||
#include <dt-bindings/pinctrl/mt6795-pinfunc.h>
|
||||
|
||||
soc {
|
||||
#address-cells = <2>;
|
||||
#size-cells = <2>;
|
||||
|
||||
pio: pinctrl@10005000 {
|
||||
compatible = "mediatek,mt6795-pinctrl";
|
||||
reg = <0 0x10005000 0 0x1000>, <0 0x1000b000 0 0x1000>;
|
||||
reg-names = "base", "eint";
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
gpio-ranges = <&pio 0 0 196>;
|
||||
interrupt-controller;
|
||||
interrupts = <GIC_SPI 153 IRQ_TYPE_LEVEL_HIGH>;
|
||||
#interrupt-cells = <2>;
|
||||
|
||||
i2c0-pins {
|
||||
pins-sda-scl {
|
||||
pinmux = <PINMUX_GPIO45__FUNC_SDA0>,
|
||||
<PINMUX_GPIO46__FUNC_SCL0>;
|
||||
};
|
||||
};
|
||||
|
||||
mmc0-pins {
|
||||
pins-cmd-dat {
|
||||
pinmux = <PINMUX_GPIO154__FUNC_MSDC0_DAT0>,
|
||||
<PINMUX_GPIO155__FUNC_MSDC0_DAT1>,
|
||||
<PINMUX_GPIO156__FUNC_MSDC0_DAT2>,
|
||||
<PINMUX_GPIO157__FUNC_MSDC0_DAT3>,
|
||||
<PINMUX_GPIO158__FUNC_MSDC0_DAT4>,
|
||||
<PINMUX_GPIO159__FUNC_MSDC0_DAT5>,
|
||||
<PINMUX_GPIO160__FUNC_MSDC0_DAT6>,
|
||||
<PINMUX_GPIO161__FUNC_MSDC0_DAT7>,
|
||||
<PINMUX_GPIO162__FUNC_MSDC0_CMD>;
|
||||
input-enable;
|
||||
bias-pull-up = <MTK_PUPD_SET_R1R0_01>;
|
||||
};
|
||||
|
||||
pins-clk {
|
||||
pinmux = <PINMUX_GPIO163__FUNC_MSDC0_CLK>;
|
||||
bias-pull-down = <MTK_PUPD_SET_R1R0_10>;
|
||||
};
|
||||
|
||||
pins-rst {
|
||||
pinmux = <PINMUX_GPIO165__FUNC_MSDC0_RSTB>;
|
||||
bias-pull-up = <MTK_PUPD_SET_R1R0_10>;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
94
bindings/pinctrl/meson,pinctrl.txt
Normal file
94
bindings/pinctrl/meson,pinctrl.txt
Normal file
@@ -0,0 +1,94 @@
|
||||
== Amlogic Meson pinmux controller ==
|
||||
|
||||
Required properties for the root node:
|
||||
- compatible: one of "amlogic,meson8-cbus-pinctrl"
|
||||
"amlogic,meson8b-cbus-pinctrl"
|
||||
"amlogic,meson8m2-cbus-pinctrl"
|
||||
"amlogic,meson8-aobus-pinctrl"
|
||||
"amlogic,meson8b-aobus-pinctrl"
|
||||
"amlogic,meson8m2-aobus-pinctrl"
|
||||
"amlogic,meson-gxbb-periphs-pinctrl"
|
||||
"amlogic,meson-gxbb-aobus-pinctrl"
|
||||
"amlogic,meson-gxl-periphs-pinctrl"
|
||||
"amlogic,meson-gxl-aobus-pinctrl"
|
||||
"amlogic,meson-axg-periphs-pinctrl"
|
||||
"amlogic,meson-axg-aobus-pinctrl"
|
||||
"amlogic,meson-g12a-periphs-pinctrl"
|
||||
"amlogic,meson-g12a-aobus-pinctrl"
|
||||
"amlogic,meson-a1-periphs-pinctrl"
|
||||
"amlogic,meson-s4-periphs-pinctrl"
|
||||
- reg: address and size of registers controlling irq functionality
|
||||
|
||||
=== GPIO sub-nodes ===
|
||||
|
||||
The GPIO bank for the controller is represented as a sub-node and it acts as a
|
||||
GPIO controller.
|
||||
|
||||
Required properties for sub-nodes are:
|
||||
- reg: should contain a list of address and size, one tuple for each entry
|
||||
in reg-names.
|
||||
- reg-names: an array of strings describing the "reg" entries.
|
||||
Must contain "mux" and "gpio".
|
||||
May contain "pull", "pull-enable" and "ds" when appropriate.
|
||||
- gpio-controller: identifies the node as a gpio controller
|
||||
- #gpio-cells: must be 2
|
||||
|
||||
=== Other sub-nodes ===
|
||||
|
||||
Child nodes without the "gpio-controller" represent some desired
|
||||
configuration for a pin or a group. Those nodes can be pinmux nodes or
|
||||
configuration nodes.
|
||||
|
||||
Required properties for pinmux nodes are:
|
||||
- groups: a list of pinmux groups. The list of all available groups
|
||||
depends on the SoC and can be found in driver sources.
|
||||
- function: the name of a function to activate for the specified set
|
||||
of groups. The list of all available functions depends on the SoC
|
||||
and can be found in driver sources.
|
||||
|
||||
Required properties for configuration nodes:
|
||||
- pins: a list of pin names
|
||||
|
||||
Configuration nodes support the following generic properties, as
|
||||
described in file pinctrl-bindings.txt:
|
||||
- "bias-disable"
|
||||
- "bias-pull-up"
|
||||
- "bias-pull-down"
|
||||
- "output-enable"
|
||||
- "output-disable"
|
||||
- "output-low"
|
||||
- "output-high"
|
||||
|
||||
Optional properties :
|
||||
- drive-strength-microamp: Drive strength for the specified pins in uA.
|
||||
This property is only valid for G12A and newer.
|
||||
|
||||
=== Example ===
|
||||
|
||||
pinctrl: pinctrl@c1109880 {
|
||||
compatible = "amlogic,meson8-cbus-pinctrl";
|
||||
reg = <0xc1109880 0x10>;
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
ranges;
|
||||
|
||||
gpio: banks@c11080b0 {
|
||||
reg = <0xc11080b0 0x28>,
|
||||
<0xc11080e8 0x18>,
|
||||
<0xc1108120 0x18>,
|
||||
<0xc1108030 0x30>;
|
||||
reg-names = "mux", "pull", "pull-enable", "gpio";
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
};
|
||||
|
||||
nand {
|
||||
mux {
|
||||
groups = "nand_io", "nand_io_ce0", "nand_io_ce1",
|
||||
"nand_io_rb0", "nand_ale", "nand_cle",
|
||||
"nand_wen_clk", "nand_ren_clk", "nand_dqs",
|
||||
"nand_ce2", "nand_ce3";
|
||||
function = "nand";
|
||||
};
|
||||
};
|
||||
};
|
60
bindings/pinctrl/microchip,pic32-pinctrl.txt
Normal file
60
bindings/pinctrl/microchip,pic32-pinctrl.txt
Normal file
@@ -0,0 +1,60 @@
|
||||
* Microchip PIC32 Pin Controller
|
||||
|
||||
Please refer to pinctrl-bindings.txt, ../gpio/gpio.txt, and
|
||||
../interrupt-controller/interrupts.txt for generic information regarding
|
||||
pin controller, GPIO, and interrupt bindings.
|
||||
|
||||
PIC32 'pin configuration node' is a node of a group of pins which can be
|
||||
used for a specific device or function. This node represents configurations of
|
||||
pins, optional function, and optional mux related configuration.
|
||||
|
||||
Required properties for pin controller node:
|
||||
- compatible: "microchip,pic32mada-pinctrl"
|
||||
- reg: Address range of the pinctrl registers.
|
||||
- clocks: Clock specifier (see clock bindings for details)
|
||||
|
||||
Required properties for pin configuration sub-nodes:
|
||||
- pins: List of pins to which the configuration applies.
|
||||
|
||||
Optional properties for pin configuration sub-nodes:
|
||||
----------------------------------------------------
|
||||
- function: Mux function for the specified pins.
|
||||
- bias-pull-up: Enable weak pull-up.
|
||||
- bias-pull-down: Enable weak pull-down.
|
||||
- input-enable: Set the pin as an input.
|
||||
- output-low: Set the pin as an output level low.
|
||||
- output-high: Set the pin as an output level high.
|
||||
- microchip,digital: Enable digital I/O.
|
||||
- microchip,analog: Enable analog I/O.
|
||||
|
||||
Example:
|
||||
|
||||
pic32_pinctrl: pinctrl@1f801400{
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
compatible = "microchip,pic32mzda-pinctrl";
|
||||
reg = <0x1f801400 0x400>;
|
||||
clocks = <&rootclk PB1CLK>;
|
||||
|
||||
pinctrl_uart2: pinctrl_uart2 {
|
||||
uart2-tx {
|
||||
pins = "G9";
|
||||
function = "U2TX";
|
||||
microchip,digital;
|
||||
output-low;
|
||||
};
|
||||
uart2-rx {
|
||||
pins = "B0";
|
||||
function = "U2RX";
|
||||
microchip,digital;
|
||||
input-enable;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
uart2: serial@1f822200 {
|
||||
compatible = "microchip,pic32mzda-uart";
|
||||
reg = <0x1f822200 0x50>;
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&pinctrl_uart2>;
|
||||
};
|
168
bindings/pinctrl/microchip,sparx5-sgpio.yaml
Normal file
168
bindings/pinctrl/microchip,sparx5-sgpio.yaml
Normal file
@@ -0,0 +1,168 @@
|
||||
# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
|
||||
%YAML 1.2
|
||||
---
|
||||
$id: http://devicetree.org/schemas/pinctrl/microchip,sparx5-sgpio.yaml#
|
||||
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
||||
|
||||
title: Microsemi/Microchip Serial GPIO controller
|
||||
|
||||
maintainers:
|
||||
- Lars Povlsen <lars.povlsen@microchip.com>
|
||||
|
||||
description: |
|
||||
By using a serial interface, the SIO controller significantly extend
|
||||
the number of available GPIOs with a minimum number of additional
|
||||
pins on the device. The primary purpose of the SIO controllers is to
|
||||
connect control signals from SFP modules and to act as an LED
|
||||
controller.
|
||||
|
||||
properties:
|
||||
$nodename:
|
||||
pattern: "^gpio@[0-9a-f]+$"
|
||||
|
||||
compatible:
|
||||
enum:
|
||||
- microchip,sparx5-sgpio
|
||||
- mscc,ocelot-sgpio
|
||||
- mscc,luton-sgpio
|
||||
|
||||
"#address-cells":
|
||||
const: 1
|
||||
|
||||
"#size-cells":
|
||||
const: 0
|
||||
|
||||
reg:
|
||||
maxItems: 1
|
||||
|
||||
clocks:
|
||||
maxItems: 1
|
||||
|
||||
microchip,sgpio-port-ranges:
|
||||
description: This is a sequence of tuples, defining intervals of
|
||||
enabled ports in the serial input stream. The enabled ports must
|
||||
match the hardware configuration in order for signals to be
|
||||
properly written/read to/from the controller holding
|
||||
registers. Being tuples, then number of arguments must be
|
||||
even. The tuples mast be ordered (low, high) and are
|
||||
inclusive.
|
||||
$ref: /schemas/types.yaml#/definitions/uint32-matrix
|
||||
items:
|
||||
items:
|
||||
- description: |
|
||||
"low" indicates start bit number of range
|
||||
minimum: 0
|
||||
maximum: 31
|
||||
- description: |
|
||||
"high" indicates end bit number of range
|
||||
minimum: 0
|
||||
maximum: 31
|
||||
minItems: 1
|
||||
maxItems: 32
|
||||
|
||||
bus-frequency:
|
||||
description: The sgpio controller frequency (Hz). This dictates
|
||||
the serial bitstream speed, which again affects the latency in
|
||||
getting control signals back and forth between external shift
|
||||
registers. The speed must be no larger than half the system
|
||||
clock, and larger than zero.
|
||||
default: 12500000
|
||||
|
||||
resets:
|
||||
maxItems: 1
|
||||
|
||||
reset-names:
|
||||
items:
|
||||
- const: switch
|
||||
|
||||
patternProperties:
|
||||
"^gpio@[0-1]$":
|
||||
type: object
|
||||
properties:
|
||||
compatible:
|
||||
const: microchip,sparx5-sgpio-bank
|
||||
|
||||
reg:
|
||||
description: |
|
||||
The GPIO bank number. "0" is designates the input pin bank,
|
||||
"1" the output bank.
|
||||
maxItems: 1
|
||||
|
||||
gpio-controller: true
|
||||
|
||||
'#gpio-cells':
|
||||
description: |
|
||||
Specifies the pin (port and bit) and flags. Note that the
|
||||
SGIO pin is defined by *2* numbers, a port number between 0
|
||||
and 31, and a bit index, 0 to 3. The maximum bit number is
|
||||
controlled indirectly by the "ngpios" property: (ngpios/32).
|
||||
const: 3
|
||||
|
||||
interrupts:
|
||||
description: Specifies the sgpio IRQ (in parent controller)
|
||||
maxItems: 1
|
||||
|
||||
interrupt-controller: true
|
||||
|
||||
'#interrupt-cells':
|
||||
description:
|
||||
Specifies the pin (port and bit) and flags, as defined in
|
||||
defined in include/dt-bindings/interrupt-controller/irq.h
|
||||
const: 3
|
||||
|
||||
ngpios:
|
||||
description: The numbers of GPIO's exposed. This must be a
|
||||
multiple of 32.
|
||||
minimum: 32
|
||||
maximum: 128
|
||||
|
||||
required:
|
||||
- compatible
|
||||
- reg
|
||||
- gpio-controller
|
||||
- '#gpio-cells'
|
||||
- ngpios
|
||||
|
||||
additionalProperties: false
|
||||
|
||||
additionalProperties: false
|
||||
|
||||
required:
|
||||
- compatible
|
||||
- reg
|
||||
- clocks
|
||||
- microchip,sgpio-port-ranges
|
||||
- "#address-cells"
|
||||
- "#size-cells"
|
||||
|
||||
examples:
|
||||
- |
|
||||
#include <dt-bindings/interrupt-controller/arm-gic.h>
|
||||
sgpio2: gpio@1101059c {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
compatible = "microchip,sparx5-sgpio";
|
||||
clocks = <&sys_clk>;
|
||||
pinctrl-0 = <&sgpio2_pins>;
|
||||
pinctrl-names = "default";
|
||||
reg = <0x1101059c 0x118>;
|
||||
microchip,sgpio-port-ranges = <0 0>, <16 18>, <28 31>;
|
||||
bus-frequency = <25000000>;
|
||||
sgpio_in2: gpio@0 {
|
||||
reg = <0>;
|
||||
compatible = "microchip,sparx5-sgpio-bank";
|
||||
gpio-controller;
|
||||
#gpio-cells = <3>;
|
||||
ngpios = <96>;
|
||||
interrupts = <GIC_SPI 19 IRQ_TYPE_LEVEL_HIGH>;
|
||||
interrupt-controller;
|
||||
#interrupt-cells = <3>;
|
||||
};
|
||||
sgpio_out2: gpio@1 {
|
||||
compatible = "microchip,sparx5-sgpio-bank";
|
||||
reg = <1>;
|
||||
gpio-controller;
|
||||
#gpio-cells = <3>;
|
||||
ngpios = <96>;
|
||||
};
|
||||
};
|
116
bindings/pinctrl/mscc,ocelot-pinctrl.yaml
Normal file
116
bindings/pinctrl/mscc,ocelot-pinctrl.yaml
Normal file
@@ -0,0 +1,116 @@
|
||||
# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
|
||||
%YAML 1.2
|
||||
---
|
||||
$id: http://devicetree.org/schemas/pinctrl/mscc,ocelot-pinctrl.yaml#
|
||||
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
||||
|
||||
title: Microsemi Ocelot pin controller
|
||||
|
||||
maintainers:
|
||||
- Alexandre Belloni <alexandre.belloni@bootlin.com>
|
||||
- Lars Povlsen <lars.povlsen@microchip.com>
|
||||
|
||||
properties:
|
||||
compatible:
|
||||
enum:
|
||||
- microchip,lan966x-pinctrl
|
||||
- microchip,sparx5-pinctrl
|
||||
- mscc,jaguar2-pinctrl
|
||||
- mscc,luton-pinctrl
|
||||
- mscc,ocelot-pinctrl
|
||||
- mscc,serval-pinctrl
|
||||
- mscc,servalt-pinctrl
|
||||
|
||||
reg:
|
||||
items:
|
||||
- description: Base address
|
||||
- description: Extended pin configuration registers
|
||||
minItems: 1
|
||||
|
||||
gpio-controller: true
|
||||
|
||||
'#gpio-cells':
|
||||
const: 2
|
||||
|
||||
gpio-ranges: true
|
||||
|
||||
interrupts:
|
||||
maxItems: 1
|
||||
|
||||
interrupt-controller: true
|
||||
|
||||
"#interrupt-cells":
|
||||
const: 2
|
||||
|
||||
resets:
|
||||
maxItems: 1
|
||||
|
||||
reset-names:
|
||||
description: Optional shared switch reset.
|
||||
items:
|
||||
- const: switch
|
||||
|
||||
patternProperties:
|
||||
'-pins$':
|
||||
type: object
|
||||
allOf:
|
||||
- $ref: "pinmux-node.yaml"
|
||||
- $ref: "pincfg-node.yaml"
|
||||
|
||||
properties:
|
||||
function: true
|
||||
pins: true
|
||||
output-high: true
|
||||
output-low: true
|
||||
drive-strength: true
|
||||
|
||||
required:
|
||||
- function
|
||||
- pins
|
||||
|
||||
additionalProperties: false
|
||||
|
||||
required:
|
||||
- compatible
|
||||
- reg
|
||||
- gpio-controller
|
||||
- '#gpio-cells'
|
||||
- gpio-ranges
|
||||
|
||||
allOf:
|
||||
- $ref: "pinctrl.yaml#"
|
||||
- if:
|
||||
properties:
|
||||
compatible:
|
||||
contains:
|
||||
enum:
|
||||
- microchip,lan966x-pinctrl
|
||||
- microchip,sparx5-pinctrl
|
||||
then:
|
||||
properties:
|
||||
reg:
|
||||
minItems: 2
|
||||
|
||||
additionalProperties: false
|
||||
|
||||
examples:
|
||||
- |
|
||||
gpio: pinctrl@71070034 {
|
||||
compatible = "mscc,ocelot-pinctrl";
|
||||
reg = <0x71070034 0x28>;
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
gpio-ranges = <&gpio 0 0 22>;
|
||||
|
||||
uart_pins: uart-pins {
|
||||
pins = "GPIO_6", "GPIO_7";
|
||||
function = "uart";
|
||||
};
|
||||
|
||||
uart2_pins: uart2-pins {
|
||||
pins = "GPIO_12", "GPIO_13";
|
||||
function = "uart2";
|
||||
};
|
||||
};
|
||||
|
||||
...
|
216
bindings/pinctrl/nuvoton,npcm7xx-pinctrl.txt
Normal file
216
bindings/pinctrl/nuvoton,npcm7xx-pinctrl.txt
Normal file
@@ -0,0 +1,216 @@
|
||||
Nuvoton NPCM7XX Pin Controllers
|
||||
|
||||
The Nuvoton BMC NPCM7XX Pin Controller multi-function routed through
|
||||
the multiplexing block, Each pin supports GPIO functionality (GPIOx)
|
||||
and multiple functions that directly connect the pin to different
|
||||
hardware blocks.
|
||||
|
||||
Required properties:
|
||||
- #address-cells : should be 1.
|
||||
- #size-cells : should be 1.
|
||||
- compatible : "nuvoton,npcm750-pinctrl" for Poleg NPCM7XX.
|
||||
- ranges : defines mapping ranges between pin controller node (parent)
|
||||
to GPIO bank node (children).
|
||||
|
||||
=== GPIO Bank Subnode ===
|
||||
|
||||
The NPCM7XX has 8 GPIO Banks each GPIO bank supports 32 GPIO.
|
||||
|
||||
Required GPIO Bank subnode-properties:
|
||||
- reg : specifies physical base address and size of the GPIO
|
||||
bank registers.
|
||||
- gpio-controller : Marks the device node as a GPIO controller.
|
||||
- #gpio-cells : Must be <2>. The first cell is the gpio pin number
|
||||
and the second cell is used for optional parameters.
|
||||
- interrupts : contain the GPIO bank interrupt with flags for falling edge.
|
||||
- gpio-ranges : defines the range of pins managed by the GPIO bank controller.
|
||||
|
||||
For example, GPIO bank subnodes like the following:
|
||||
gpio0: gpio@f0010000 {
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
reg = <0x0 0x80>;
|
||||
interrupts = <GIC_SPI 116 IRQ_TYPE_LEVEL_HIGH>;
|
||||
gpio-ranges = <&pinctrl 0 0 32>;
|
||||
};
|
||||
|
||||
=== Pin Mux Subnode ===
|
||||
|
||||
- pin: A string containing the name of the pin
|
||||
An array of strings, each string containing the name of a pin.
|
||||
These pin are used for selecting pin configuration.
|
||||
|
||||
The following are the list of pins available:
|
||||
"GPIO0/IOX1DI", "GPIO1/IOX1LD", "GPIO2/IOX1CK", "GPIO3/IOX1D0",
|
||||
"GPIO4/IOX2DI/SMB1DSDA", "GPIO5/IOX2LD/SMB1DSCL", "GPIO6/IOX2CK/SMB2DSDA",
|
||||
"GPIO7/IOX2D0/SMB2DSCL", "GPIO8/LKGPO1", "GPIO9/LKGPO2", "GPIO10/IOXHLD",
|
||||
"GPIO11/IOXHCK", "GPIO12/GSPICK/SMB5BSCL", "GPIO13/GSPIDO/SMB5BSDA",
|
||||
"GPIO14/GSPIDI/SMB5CSCL", "GPIO15/GSPICS/SMB5CSDA", "GPIO16/LKGPO0",
|
||||
"GPIO17/PSPI2DI/SMB4DEN","GPIO18/PSPI2D0/SMB4BSDA", "GPIO19/PSPI2CK/SMB4BSCL",
|
||||
"GPIO20/SMB4CSDA/SMB15SDA", "GPIO21/SMB4CSCL/SMB15SCL", "GPIO22/SMB4DSDA/SMB14SDA",
|
||||
"GPIO23/SMB4DSCL/SMB14SCL", "GPIO24/IOXHDO", "GPIO25/IOXHDI", "GPIO26/SMB5SDA",
|
||||
"GPIO27/SMB5SCL", "GPIO28/SMB4SDA", "GPIO29/SMB4SCL", "GPIO30/SMB3SDA",
|
||||
"GPIO31/SMB3SCL", "GPIO32/nSPI0CS1","SPI0D2", "SPI0D3", "GPIO37/SMB3CSDA",
|
||||
"GPIO38/SMB3CSCL", "GPIO39/SMB3BSDA", "GPIO40/SMB3BSCL", "GPIO41/BSPRXD",
|
||||
"GPO42/BSPTXD/STRAP11", "GPIO43/RXD1/JTMS2/BU1RXD", "GPIO44/nCTS1/JTDI2/BU1CTS",
|
||||
"GPIO45/nDCD1/JTDO2", "GPIO46/nDSR1/JTCK2", "GPIO47/nRI1/JCP_RDY2",
|
||||
"GPIO48/TXD2/BSPTXD", "GPIO49/RXD2/BSPRXD", "GPIO50/nCTS2", "GPO51/nRTS2/STRAP2",
|
||||
"GPIO52/nDCD2", "GPO53/nDTR2_BOUT2/STRAP1", "GPIO54/nDSR2", "GPIO55/nRI2",
|
||||
"GPIO56/R1RXERR", "GPIO57/R1MDC", "GPIO58/R1MDIO", "GPIO59/SMB3DSDA",
|
||||
"GPIO60/SMB3DSCL", "GPO61/nDTR1_BOUT1/STRAP6", "GPO62/nRTST1/STRAP5",
|
||||
"GPO63/TXD1/STRAP4", "GPIO64/FANIN0", "GPIO65/FANIN1", "GPIO66/FANIN2",
|
||||
"GPIO67/FANIN3", "GPIO68/FANIN4", "GPIO69/FANIN5", "GPIO70/FANIN6", "GPIO71/FANIN7",
|
||||
"GPIO72/FANIN8", "GPIO73/FANIN9", "GPIO74/FANIN10", "GPIO75/FANIN11",
|
||||
"GPIO76/FANIN12", "GPIO77/FANIN13","GPIO78/FANIN14", "GPIO79/FANIN15",
|
||||
"GPIO80/PWM0", "GPIO81/PWM1", "GPIO82/PWM2", "GPIO83/PWM3", "GPIO84/R2TXD0",
|
||||
"GPIO85/R2TXD1", "GPIO86/R2TXEN", "GPIO87/R2RXD0", "GPIO88/R2RXD1", "GPIO89/R2CRSDV",
|
||||
"GPIO90/R2RXERR", "GPIO91/R2MDC", "GPIO92/R2MDIO", "GPIO93/GA20/SMB5DSCL",
|
||||
"GPIO94/nKBRST/SMB5DSDA", "GPIO95/nLRESET/nESPIRST", "GPIO96/RG1TXD0",
|
||||
"GPIO97/RG1TXD1", "GPIO98/RG1TXD2", "GPIO99/RG1TXD3","GPIO100/RG1TXC",
|
||||
"GPIO101/RG1TXCTL", "GPIO102/RG1RXD0", "GPIO103/RG1RXD1", "GPIO104/RG1RXD2",
|
||||
"GPIO105/RG1RXD3", "GPIO106/RG1RXC", "GPIO107/RG1RXCTL", "GPIO108/RG1MDC",
|
||||
"GPIO109/RG1MDIO", "GPIO110/RG2TXD0/DDRV0", "GPIO111/RG2TXD1/DDRV1",
|
||||
"GPIO112/RG2TXD2/DDRV2", "GPIO113/RG2TXD3/DDRV3", "GPIO114/SMB0SCL",
|
||||
"GPIO115/SMB0SDA", "GPIO116/SMB1SCL", "GPIO117/SMB1SDA", "GPIO118/SMB2SCL",
|
||||
"GPIO119/SMB2SDA", "GPIO120/SMB2CSDA", "GPIO121/SMB2CSCL", "GPIO122/SMB2BSDA",
|
||||
"GPIO123/SMB2BSCL", "GPIO124/SMB1CSDA", "GPIO125/SMB1CSCL","GPIO126/SMB1BSDA",
|
||||
"GPIO127/SMB1BSCL", "GPIO128/SMB8SCL", "GPIO129/SMB8SDA", "GPIO130/SMB9SCL",
|
||||
"GPIO131/SMB9SDA", "GPIO132/SMB10SCL", "GPIO133/SMB10SDA","GPIO134/SMB11SCL",
|
||||
"GPIO135/SMB11SDA", "GPIO136/SD1DT0", "GPIO137/SD1DT1", "GPIO138/SD1DT2",
|
||||
"GPIO139/SD1DT3", "GPIO140/SD1CLK", "GPIO141/SD1WP", "GPIO142/SD1CMD",
|
||||
"GPIO143/SD1CD/SD1PWR", "GPIO144/PWM4", "GPIO145/PWM5", "GPIO146/PWM6",
|
||||
"GPIO147/PWM7", "GPIO148/MMCDT4", "GPIO149/MMCDT5", "GPIO150/MMCDT6",
|
||||
"GPIO151/MMCDT7", "GPIO152/MMCCLK", "GPIO153/MMCWP", "GPIO154/MMCCMD",
|
||||
"GPIO155/nMMCCD/nMMCRST", "GPIO156/MMCDT0", "GPIO157/MMCDT1", "GPIO158/MMCDT2",
|
||||
"GPIO159/MMCDT3", "GPIO160/CLKOUT/RNGOSCOUT", "GPIO161/nLFRAME/nESPICS",
|
||||
"GPIO162/SERIRQ", "GPIO163/LCLK/ESPICLK", "GPIO164/LAD0/ESPI_IO0",
|
||||
"GPIO165/LAD1/ESPI_IO1", "GPIO166/LAD2/ESPI_IO2", "GPIO167/LAD3/ESPI_IO3",
|
||||
"GPIO168/nCLKRUN/nESPIALERT", "GPIO169/nSCIPME", "GPIO170/nSMI", "GPIO171/SMB6SCL",
|
||||
"GPIO172/SMB6SDA", "GPIO173/SMB7SCL", "GPIO174/SMB7SDA", "GPIO175/PSPI1CK/FANIN19",
|
||||
"GPIO176/PSPI1DO/FANIN18", "GPIO177/PSPI1DI/FANIN17", "GPIO178/R1TXD0",
|
||||
"GPIO179/R1TXD1", "GPIO180/R1TXEN", "GPIO181/R1RXD0", "GPIO182/R1RXD1",
|
||||
"GPIO183/SPI3CK", "GPO184/SPI3D0/STRAP9", "GPO185/SPI3D1/STRAP10",
|
||||
"GPIO186/nSPI3CS0", "GPIO187/nSPI3CS1", "GPIO188/SPI3D2/nSPI3CS2",
|
||||
"GPIO189/SPI3D3/nSPI3CS3", "GPIO190/nPRD_SMI", "GPIO191", "GPIO192", "GPIO193/R1CRSDV",
|
||||
"GPIO194/SMB0BSCL", "GPIO195/SMB0BSDA", "GPIO196/SMB0CSCL", "GPIO197/SMB0DEN",
|
||||
"GPIO198/SMB0DSDA", "GPIO199/SMB0DSCL", "GPIO200/R2CK", "GPIO201/R1CK",
|
||||
"GPIO202/SMB0CSDA", "GPIO203/FANIN16", "GPIO204/DDC2SCL", "GPIO205/DDC2SDA",
|
||||
"GPIO206/HSYNC2", "GPIO207/VSYNC2", "GPIO208/RG2TXC/DVCK", "GPIO209/RG2TXCTL/DDRV4",
|
||||
"GPIO210/RG2RXD0/DDRV5", "GPIO211/RG2RXD1/DDRV6", "GPIO212/RG2RXD2/DDRV7",
|
||||
"GPIO213/RG2RXD3/DDRV8", "GPIO214/RG2RXC/DDRV9", "GPIO215/RG2RXCTL/DDRV10",
|
||||
"GPIO216/RG2MDC/DDRV11", "GPIO217/RG2MDIO/DVHSYNC", "GPIO218/nWDO1",
|
||||
"GPIO219/nWDO2", "GPIO220/SMB12SCL", "GPIO221/SMB12SDA", "GPIO222/SMB13SCL",
|
||||
"GPIO223/SMB13SDA", "GPIO224/SPIXCK", "GPO225/SPIXD0/STRAP12", "GPO226/SPIXD1/STRAP13",
|
||||
"GPIO227/nSPIXCS0", "GPIO228/nSPIXCS1", "GPO229/SPIXD2/STRAP3", "GPIO230/SPIXD3",
|
||||
"GPIO231/nCLKREQ", "GPI255/DACOSEL"
|
||||
|
||||
Optional Properties:
|
||||
bias-disable, bias-pull-down, bias-pull-up, input-enable,
|
||||
input-disable, output-high, output-low, drive-push-pull,
|
||||
drive-open-drain, input-debounce, slew-rate, drive-strength
|
||||
|
||||
slew-rate valid arguments are:
|
||||
<0> - slow
|
||||
<1> - fast
|
||||
drive-strength valid arguments are:
|
||||
<2> - 2mA
|
||||
<4> - 4mA
|
||||
<8> - 8mA
|
||||
<12> - 12mA
|
||||
<16> - 16mA
|
||||
<24> - 24mA
|
||||
|
||||
For example, pinctrl might have pinmux subnodes like the following:
|
||||
|
||||
gpio0_iox1d1_pin: gpio0-iox1d1-pin {
|
||||
pins = "GPIO0/IOX1DI";
|
||||
output-high;
|
||||
};
|
||||
gpio0_iox1ck_pin: gpio0-iox1ck-pin {
|
||||
pins = "GPIO2/IOX1CK";
|
||||
output_high;
|
||||
};
|
||||
|
||||
=== Pin Group Subnode ===
|
||||
|
||||
Required pin group subnode-properties:
|
||||
- groups : A string containing the name of the group to mux.
|
||||
- function: A string containing the name of the function to mux to the
|
||||
group.
|
||||
|
||||
The following are the list of the available groups and functions :
|
||||
smb0, smb0b, smb0c, smb0d, smb0den, smb1, smb1b, smb1c, smb1d,
|
||||
smb2, smb2b, smb2c, smb2d, smb3, smb3b, smb3c, smb3d, smb4, smb4b,
|
||||
smb4c, smb4d, smb4den, smb5, smb5b, smb5c, smb5d, ga20kbc, smb6,
|
||||
smb7, smb8, smb9, smb10, smb11, smb12, smb13, smb14, smb15, fanin0,
|
||||
fanin1, fanin2, fanin3, fanin4, fanin5, fanin6, fanin7, fanin8,
|
||||
fanin9, fanin10, fanin11 fanin12 fanin13, fanin14, fanin15, faninx,
|
||||
pwm0, pwm1, pwm2, pwm3, pwm4, pwm5, pwm6, pwm7, rg1, rg1mdio, rg2,
|
||||
rg2mdio, ddr, uart1, uart2, bmcuart0a, bmcuart0b, bmcuart1, iox1,
|
||||
iox2, ioxh, gspi, mmc, mmcwp, mmccd, mmcrst, mmc8, r1, r1err, r1md,
|
||||
r2, r2err, r2md, sd1, sd1pwr, wdog1, wdog2, scipme, sci, serirq,
|
||||
jtag2, spix, spixcs1, pspi1, pspi2, ddc, clkreq, clkout, spi3, spi3cs1,
|
||||
spi3quad, spi3cs2, spi3cs3, spi0cs1, lpc, lpcclk, espi, lkgpo0, lkgpo1,
|
||||
lkgpo2, nprd_smi
|
||||
|
||||
For example, pinctrl might have group subnodes like the following:
|
||||
r1err_pins: r1err-pins {
|
||||
groups = "r1err";
|
||||
function = "r1err";
|
||||
};
|
||||
r1md_pins: r1md-pins {
|
||||
groups = "r1md";
|
||||
function = "r1md";
|
||||
};
|
||||
r1_pins: r1-pins {
|
||||
groups = "r1";
|
||||
function = "r1";
|
||||
};
|
||||
|
||||
Examples
|
||||
========
|
||||
pinctrl: pinctrl@f0800000 {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
compatible = "nuvoton,npcm750-pinctrl";
|
||||
ranges = <0 0xf0010000 0x8000>;
|
||||
|
||||
gpio0: gpio@f0010000 {
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
reg = <0x0 0x80>;
|
||||
interrupts = <GIC_SPI 116 IRQ_TYPE_LEVEL_HIGH>;
|
||||
gpio-ranges = <&pinctrl 0 0 32>;
|
||||
};
|
||||
|
||||
....
|
||||
|
||||
gpio7: gpio@f0017000 {
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
reg = <0x7000 0x80>;
|
||||
interrupts = <GIC_SPI 123 IRQ_TYPE_LEVEL_HIGH>;
|
||||
gpio-ranges = <&pinctrl 0 224 32>;
|
||||
};
|
||||
|
||||
gpio0_iox1d1_pin: gpio0-iox1d1-pin {
|
||||
pins = "GPIO0/IOX1DI";
|
||||
output-high;
|
||||
};
|
||||
|
||||
iox1_pins: iox1-pins {
|
||||
groups = "iox1";
|
||||
function = "iox1";
|
||||
};
|
||||
iox2_pins: iox2-pins {
|
||||
groups = "iox2";
|
||||
function = "iox2";
|
||||
};
|
||||
|
||||
....
|
||||
|
||||
clkreq_pins: clkreq-pins {
|
||||
groups = "clkreq";
|
||||
function = "clkreq";
|
||||
};
|
||||
};
|
161
bindings/pinctrl/nuvoton,wpcm450-pinctrl.yaml
Normal file
161
bindings/pinctrl/nuvoton,wpcm450-pinctrl.yaml
Normal file
@@ -0,0 +1,161 @@
|
||||
# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
|
||||
%YAML 1.2
|
||||
---
|
||||
$id: http://devicetree.org/schemas/pinctrl/nuvoton,wpcm450-pinctrl.yaml#
|
||||
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
||||
|
||||
title: Nuvoton WPCM450 pin control and GPIO
|
||||
|
||||
maintainers:
|
||||
- Jonathan Neuschäfer <j.neuschaefer@gmx.net>
|
||||
|
||||
properties:
|
||||
compatible:
|
||||
const: nuvoton,wpcm450-pinctrl
|
||||
|
||||
reg:
|
||||
maxItems: 1
|
||||
|
||||
'#address-cells':
|
||||
const: 1
|
||||
|
||||
'#size-cells':
|
||||
const: 0
|
||||
|
||||
patternProperties:
|
||||
# There are three kinds of subnodes:
|
||||
# 1. a GPIO controller node for each GPIO bank
|
||||
# 2. a pinmux node configures pin muxing for a group of pins (e.g. rmii2)
|
||||
# 3. a pinconf node configures properties of a single pin
|
||||
|
||||
"^gpio@[0-7]$":
|
||||
type: object
|
||||
additionalProperties: false
|
||||
|
||||
description:
|
||||
Eight GPIO banks (gpio@0 to gpio@7), that each contain between 14 and 18
|
||||
GPIOs. Some GPIOs support interrupts.
|
||||
|
||||
properties:
|
||||
reg:
|
||||
minimum: 0
|
||||
maximum: 7
|
||||
|
||||
gpio-controller: true
|
||||
|
||||
"#gpio-cells":
|
||||
const: 2
|
||||
|
||||
interrupt-controller: true
|
||||
|
||||
"#interrupt-cells":
|
||||
const: 2
|
||||
|
||||
interrupts:
|
||||
maxItems: 3
|
||||
description:
|
||||
The interrupts associated with this GPIO bank
|
||||
|
||||
required:
|
||||
- reg
|
||||
- gpio-controller
|
||||
- '#gpio-cells'
|
||||
|
||||
"^mux-":
|
||||
$ref: pinmux-node.yaml#
|
||||
|
||||
properties:
|
||||
groups:
|
||||
description:
|
||||
One or more groups of pins to mux to a certain function
|
||||
items:
|
||||
enum: [ smb3, smb4, smb5, scs1, scs2, scs3, smb0, smb1, smb2, bsp,
|
||||
hsp1, hsp2, r1err, r1md, rmii2, r2err, r2md, kbcc, dvo,
|
||||
clko, smi, uinc, gspi, mben, xcs2, xcs1, sdio, sspi, fi0,
|
||||
fi1, fi2, fi3, fi4, fi5, fi6, fi7, fi8, fi9, fi10, fi11,
|
||||
fi12, fi13, fi14, fi15, pwm0, pwm1, pwm2, pwm3, pwm4, pwm5,
|
||||
pwm6, pwm7, hg0, hg1, hg2, hg3, hg4, hg5, hg6, hg7 ]
|
||||
function:
|
||||
description:
|
||||
The function that a group of pins is muxed to
|
||||
enum: [ smb3, smb4, smb5, scs1, scs2, scs3, smb0, smb1, smb2, bsp,
|
||||
hsp1, hsp2, r1err, r1md, rmii2, r2err, r2md, kbcc, dvo0,
|
||||
dvo1, dvo2, dvo3, dvo4, dvo5, dvo6, dvo7, clko, smi, uinc,
|
||||
gspi, mben, xcs2, xcs1, sdio, sspi, fi0, fi1, fi2, fi3, fi4,
|
||||
fi5, fi6, fi7, fi8, fi9, fi10, fi11, fi12, fi13, fi14, fi15,
|
||||
pwm0, pwm1, pwm2, pwm3, pwm4, pwm5, pwm6, pwm7, hg0, hg1,
|
||||
hg2, hg3, hg4, hg5, hg6, hg7, gpio ]
|
||||
|
||||
dependencies:
|
||||
groups: [ function ]
|
||||
function: [ groups ]
|
||||
|
||||
additionalProperties: false
|
||||
|
||||
"^cfg-":
|
||||
$ref: pincfg-node.yaml#
|
||||
|
||||
properties:
|
||||
pins:
|
||||
description:
|
||||
A list of pins to configure in certain ways, such as enabling
|
||||
debouncing
|
||||
items:
|
||||
pattern: "^gpio1?[0-9]{1,2}$"
|
||||
|
||||
input-debounce: true
|
||||
|
||||
additionalProperties: false
|
||||
|
||||
required:
|
||||
- compatible
|
||||
- reg
|
||||
|
||||
additionalProperties: false
|
||||
|
||||
examples:
|
||||
- |
|
||||
#include <dt-bindings/interrupt-controller/irq.h>
|
||||
#include <dt-bindings/gpio/gpio.h>
|
||||
pinctrl: pinctrl@b8003000 {
|
||||
compatible = "nuvoton,wpcm450-pinctrl";
|
||||
reg = <0xb8003000 0x1000>;
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
|
||||
gpio0: gpio@0 {
|
||||
reg = <0>;
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
interrupts = <2 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<3 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<4 IRQ_TYPE_LEVEL_HIGH>;
|
||||
};
|
||||
|
||||
mux-rmii2 {
|
||||
groups = "rmii2";
|
||||
function = "rmii2";
|
||||
};
|
||||
|
||||
pinmux_uid: mux-uid {
|
||||
groups = "gspi", "sspi";
|
||||
function = "gpio";
|
||||
};
|
||||
|
||||
pinctrl_uid: cfg-uid {
|
||||
pins = "gpio14";
|
||||
input-debounce = <1>;
|
||||
};
|
||||
};
|
||||
|
||||
gpio-keys {
|
||||
compatible = "gpio-keys";
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&pinctrl_uid>, <&pinmux_uid>;
|
||||
|
||||
button-uid {
|
||||
label = "UID";
|
||||
linux,code = <102>;
|
||||
gpios = <&gpio0 14 GPIO_ACTIVE_HIGH>;
|
||||
};
|
||||
};
|
178
bindings/pinctrl/nvidia,tegra-pinmux-common.yaml
Normal file
178
bindings/pinctrl/nvidia,tegra-pinmux-common.yaml
Normal file
@@ -0,0 +1,178 @@
|
||||
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
|
||||
%YAML 1.2
|
||||
---
|
||||
$id: http://devicetree.org/schemas/pinctrl/nvidia,tegra-pinmux-common.yaml#
|
||||
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
||||
|
||||
title: NVIDIA Tegra Pinmux Controller
|
||||
|
||||
maintainers:
|
||||
- Thierry Reding <thierry.reding@gmail.com>
|
||||
- Jonathan Hunter <jonathanh@nvidia.com>
|
||||
|
||||
description: |
|
||||
Please refer to pinctrl-bindings.txt in this directory for details of the
|
||||
common pinctrl bindings used by client devices, including the meaning of
|
||||
the phrase "pin configuration node".
|
||||
|
||||
Tegra's pin configuration nodes act as a container for an arbitrary number
|
||||
of subnodes. Each of these subnodes represents some desired configuration
|
||||
for a pin, a group, or a list of pins or groups. This configuration can
|
||||
include the mux function to select on those pin(s)/ group(s), and various
|
||||
pin configuration parameters, such as pull-up, tristate, drive strength,
|
||||
etc.
|
||||
|
||||
The name of each subnode is not important; all subnodes should be
|
||||
enumerated and processed purely based on their content.
|
||||
|
||||
Each subnode only affects those parameters that are explicitly listed. In
|
||||
other words, a subnode that lists a mux function but no pin configuration
|
||||
parameters implies no information about any pin configuration parameters.
|
||||
|
||||
Similarly, a pin subnode that describes a pullup parameter implies no
|
||||
information about e.g. the mux function or tristate parameter. For this
|
||||
reason, even seemingly boolean values are actually tristates in this
|
||||
binding: unspecified, off, or on. Unspecified is represented as an absent
|
||||
property, and off/on are represented as integer values 0 and 1.
|
||||
|
||||
Note that many of these properties are only valid for certain specific pins
|
||||
or groups. See the Tegra TRM and various pinmux spreadsheets for complete
|
||||
details regarding which groups support which functionality. The Linux
|
||||
pinctrl driver may also be a useful reference, since it consolidates,
|
||||
disambiguates, and corrects data from all those sources.
|
||||
|
||||
properties:
|
||||
nvidia,pins:
|
||||
$ref: /schemas/types.yaml#/definitions/string-array
|
||||
description: An array of strings. Each string contains the name of a pin
|
||||
or group. Valid values for these names are listed below.
|
||||
|
||||
nvidia,function:
|
||||
$ref: /schemas/types.yaml#/definitions/string
|
||||
description: A string containing the name of the function to mux to the
|
||||
pin or group. Valid values for function names are listed below. See the
|
||||
Tegra TRM to determine which are valid for each pin or group.
|
||||
|
||||
nvidia,pull:
|
||||
description: Pull-down/up setting to apply to the pin.
|
||||
$ref: /schemas/types.yaml#/definitions/uint32
|
||||
oneOf:
|
||||
- description: none
|
||||
const: 0
|
||||
- description: down
|
||||
const: 1
|
||||
- description: up
|
||||
const: 2
|
||||
|
||||
nvidia,tristate:
|
||||
description: Tristate setting to apply to the pin.
|
||||
$ref: /schemas/types.yaml#/definitions/uint32
|
||||
oneOf:
|
||||
- description: drive
|
||||
const: 0
|
||||
- description: tristate
|
||||
const: 1
|
||||
|
||||
nvidia,schmitt:
|
||||
description: Enable Schmitt trigger on the input.
|
||||
$ref: /schemas/types.yaml#/definitions/uint32
|
||||
oneOf:
|
||||
- description: disable Schmitt trigger on the input
|
||||
const: 0
|
||||
- description: enable Schmitt trigger on the input
|
||||
const: 1
|
||||
|
||||
nvidia,pull-down-strength:
|
||||
description: Controls drive strength. 0 is weakest. The range of valid
|
||||
values depends on the pingroup. See "CAL_DRVDN" in the Tegra TRM.
|
||||
$ref: /schemas/types.yaml#/definitions/uint32
|
||||
|
||||
nvidia,pull-up-strength:
|
||||
description: Controls drive strength. 0 is weakest. The range of valid
|
||||
values depends on the pingroup. See "CAL_DRVUP" in the Tegra TRM.
|
||||
$ref: /schemas/types.yaml#/definitions/uint32
|
||||
|
||||
nvidia,high-speed-mode:
|
||||
description: Enable high speed mode the pins.
|
||||
$ref: /schemas/types.yaml#/definitions/uint32
|
||||
oneOf:
|
||||
- description: normal speed mode
|
||||
const: 0
|
||||
- description: high speed mode
|
||||
const: 1
|
||||
|
||||
nvidia,low-power-mode:
|
||||
description: Controls the drive power or current. Valid values are from 0
|
||||
through 3, where 0 specifies the least power and 3 specifies the most
|
||||
power. See "Low Power Mode" or "LPMD1" and "LPMD0" in the Tegra TRM.
|
||||
$ref: /schemas/types.yaml#/definitions/uint32
|
||||
enum: [ 0, 1, 2, 3 ]
|
||||
|
||||
nvidia,enable-input:
|
||||
description: Enable the pin's input path.
|
||||
$ref: /schemas/types.yaml#/definitions/uint32
|
||||
oneOf:
|
||||
- description: disable input (i.e. output only)
|
||||
const: 0
|
||||
- description: enable input
|
||||
const: 1
|
||||
|
||||
nvidia,open-drain:
|
||||
description: Open-drain configuration for the pin.
|
||||
$ref: /schemas/types.yaml#/definitions/uint32
|
||||
oneOf:
|
||||
- description: disable open-drain
|
||||
const: 0
|
||||
- description: enable open-drain
|
||||
const: 1
|
||||
|
||||
nvidia,lock:
|
||||
description: Lock the pin configuration against further changes until
|
||||
reset.
|
||||
$ref: /schemas/types.yaml#/definitions/uint32
|
||||
oneOf:
|
||||
- description: disable pin configuration lock
|
||||
const: 0
|
||||
- description: enable pin configuration lock
|
||||
const: 1
|
||||
|
||||
nvidia,io-reset:
|
||||
description: reset the I/O path
|
||||
$ref: /schemas/types.yaml#/definitions/uint32
|
||||
enum: [ 0, 1 ]
|
||||
|
||||
nvidia,rcv-sel:
|
||||
description: select VIL/VIH receivers
|
||||
$ref: /schemas/types.yaml#/definitions/uint32
|
||||
oneOf:
|
||||
- description: normal receivers
|
||||
const: 0
|
||||
- description: high-voltage receivers
|
||||
const: 1
|
||||
|
||||
nvidia,drive-type:
|
||||
description: Drive type to configure for the pin.
|
||||
$ref: /schemas/types.yaml#/definitions/uint32
|
||||
enum: [ 0, 1, 2, 3 ]
|
||||
|
||||
nvidia,io-hv:
|
||||
description: Select high-voltage receivers.
|
||||
$ref: /schemas/types.yaml#/definitions/uint32
|
||||
oneOf:
|
||||
- description: Use normal receivers.
|
||||
const: 0
|
||||
- description: Use high-voltage receivers.
|
||||
const: 1
|
||||
|
||||
nvidia,slew-rate-rising:
|
||||
description: Controls rising signal slew rate. 0 is fastest. The range of
|
||||
valid values depends on the pingroup. See "DRVDN_SLWR" in the Tegra TRM.
|
||||
$ref: /schemas/types.yaml#/definitions/uint32
|
||||
|
||||
nvidia,slew-rate-falling:
|
||||
description: Controls falling signal slew rate. 0 is fastest. The range of
|
||||
valid values depends on the pingroup. See "DRVUP_SLWF" in the Tegra TRM.
|
||||
$ref: /schemas/types.yaml#/definitions/uint32
|
||||
|
||||
additionalProperties: true
|
||||
...
|
155
bindings/pinctrl/nvidia,tegra114-pinmux.yaml
Normal file
155
bindings/pinctrl/nvidia,tegra114-pinmux.yaml
Normal file
@@ -0,0 +1,155 @@
|
||||
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
|
||||
%YAML 1.2
|
||||
---
|
||||
$id: http://devicetree.org/schemas/pinctrl/nvidia,tegra114-pinmux.yaml#
|
||||
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
||||
|
||||
title: NVIDIA Tegra114 pinmux Controller
|
||||
|
||||
maintainers:
|
||||
- Thierry Reding <thierry.reding@gmail.com>
|
||||
- Jon Hunter <jonathanh@nvidia.com>
|
||||
|
||||
properties:
|
||||
compatible:
|
||||
const: nvidia,tegra114-pinmux
|
||||
|
||||
reg:
|
||||
items:
|
||||
- description: pad control registers
|
||||
- description: mux registers
|
||||
|
||||
patternProperties:
|
||||
"^pinmux(-[a-z0-9-_]+)?$":
|
||||
type: object
|
||||
properties:
|
||||
phandle: true
|
||||
|
||||
# pin groups
|
||||
additionalProperties:
|
||||
$ref: nvidia,tegra-pinmux-common.yaml
|
||||
additionalProperties: false
|
||||
properties:
|
||||
nvidia,pins:
|
||||
items:
|
||||
enum: [ ulpi_data0_po1, ulpi_data1_po2, ulpi_data2_po3,
|
||||
ulpi_data3_po4, ulpi_data4_po5, ulpi_data5_po6,
|
||||
ulpi_data6_po7, ulpi_data7_po0, ulpi_clk_py0, ulpi_dir_py1,
|
||||
ulpi_nxt_py2, ulpi_stp_py3, dap3_fs_pp0, dap3_din_pp1,
|
||||
dap3_dout_pp2, dap3_sclk_pp3, pv0, pv1, sdmmc1_clk_pz0,
|
||||
sdmmc1_cmd_pz1, sdmmc1_dat3_py4, sdmmc1_dat2_py5,
|
||||
sdmmc1_dat1_py6, sdmmc1_dat0_py7, clk2_out_pw5,
|
||||
clk2_req_pcc5, hdmi_int_pn7, ddc_scl_pv4, ddc_sda_pv5,
|
||||
uart2_rxd_pc3, uart2_txd_pc2, uart2_rts_n_pj6,
|
||||
uart2_cts_n_pj5, uart3_txd_pw6, uart3_rxd_pw7,
|
||||
uart3_cts_n_pa1, uart3_rts_n_pc0, pu0, pu1, pu2, pu3, pu4,
|
||||
pu5, pu6, gen1_i2c_sda_pc5, gen1_i2c_scl_pc4, dap4_fs_pp4,
|
||||
dap4_din_pp5, dap4_dout_pp6, dap4_sclk_pp7, clk3_out_pee0,
|
||||
clk3_req_pee1, gmi_wp_n_pc7, gmi_iordy_pi5, gmi_wait_pi7,
|
||||
gmi_adv_n_pk0, gmi_clk_pk1, gmi_cs0_n_pj0, gmi_cs1_n_pj2,
|
||||
gmi_cs2_n_pk3, gmi_cs3_n_pk4, gmi_cs4_n_pk2, gmi_cs6_n_pi3,
|
||||
gmi_cs7_n_pi6, gmi_ad0_pg0, gmi_ad1_pg1, gmi_ad2_pg2,
|
||||
gmi_ad3_pg3, gmi_ad4_pg4, gmi_ad5_pg5, gmi_ad6_pg6,
|
||||
gmi_ad7_pg7, gmi_ad8_ph0, gmi_ad9_ph1, gmi_ad10_ph2,
|
||||
gmi_ad11_ph3, gmi_ad12_ph4, gmi_ad13_ph5, gmi_ad14_ph6,
|
||||
gmi_ad15_ph7, gmi_a16_pj7, gmi_a17_pb0, gmi_a18_pb1,
|
||||
gmi_a19_pk7, gmi_wr_n_pi0, gmi_oe_n_pi1, gmi_dqs_p_pj3,
|
||||
gmi_rst_n_pi4, gen2_i2c_scl_pt5, gen2_i2c_sda_pt6,
|
||||
sdmmc4_clk_pcc4, sdmmc4_cmd_pt7, sdmmc4_dat0_paa0,
|
||||
sdmmc4_dat1_paa1, sdmmc4_dat2_paa2, sdmmc4_dat3_paa3,
|
||||
sdmmc4_dat4_paa4, sdmmc4_dat5_paa5, sdmmc4_dat6_paa6,
|
||||
sdmmc4_dat7_paa7, cam_mclk_pcc0, pcc1, pbb0,
|
||||
cam_i2c_scl_pbb1, cam_i2c_sda_pbb2, pbb3, pbb4, pbb5, pbb6,
|
||||
pbb7, pcc2, pwr_i2c_scl_pz6, pwr_i2c_sda_pz7, kb_row0_pr0,
|
||||
kb_row1_pr1, kb_row2_pr2, kb_row3_pr3, kb_row4_pr4,
|
||||
kb_row5_pr5, kb_row6_pr6, kb_row7_pr7, kb_row8_ps0,
|
||||
kb_row9_ps1, kb_row10_ps2, kb_col0_pq0, kb_col1_pq1,
|
||||
kb_col2_pq2, kb_col3_pq3, kb_col4_pq4, kb_col5_pq5,
|
||||
kb_col6_pq6, kb_col7_pq7, clk_32k_out_pa0, sys_clk_req_pz5,
|
||||
core_pwr_req, cpu_pwr_req, pwr_int_n, owr, dap1_fs_pn0,
|
||||
dap1_din_pn1, dap1_dout_pn2, dap1_sclk_pn3, clk1_req_pee2,
|
||||
clk1_out_pw4, spdif_in_pk6, spdif_out_pk5, dap2_fs_pa2,
|
||||
dap2_din_pa4, dap2_dout_pa5, dap2_sclk_pa3, dvfs_pwm_px0,
|
||||
gpio_x1_aud_px1, gpio_x3_aud_px3, dvfs_clk_px2,
|
||||
gpio_x4_aud_px4, gpio_x5_aud_px5, gpio_x6_aud_px6,
|
||||
gpio_x7_aud_px7, sdmmc3_clk_pa6, sdmmc3_cmd_pa7,
|
||||
sdmmc3_dat0_pb7, sdmmc3_dat1_pb6, sdmmc3_dat2_pb5,
|
||||
sdmmc3_dat3_pb4, hdmi_cec_pee3, sdmmc1_wp_n_pv3,
|
||||
sdmmc3_cd_n_pv2, gpio_w2_aud_pw2, gpio_w3_aud_pw3,
|
||||
usb_vbus_en0_pn4, usb_vbus_en1_pn5, sdmmc3_clk_lb_in_pee5,
|
||||
sdmmc3_clk_lb_out_pee4, reset_out_n,
|
||||
# drive groups
|
||||
drive_ao1, drive_ao2, drive_at1, drive_at2, drive_at3,
|
||||
drive_at4, drive_at5, drive_cdev1, drive_cdev2, drive_dap1,
|
||||
drive_dap2, drive_dap3, drive_dap4, drive_dbg, drive_sdio3,
|
||||
drive_spi, drive_uaa, drive_uab, drive_uart2, drive_uart3,
|
||||
drive_sdio1, drive_ddc, drive_gma, drive_gme, drive_gmf,
|
||||
drive_gmg, drive_gmh, drive_owr, drive_uda ]
|
||||
|
||||
nvidia,function:
|
||||
enum: [ blink, cec, cldvfs, clk12, cpu, dap, dap1, dap2, dev3,
|
||||
displaya, displaya_alt, displayb, dtv, emc_dll, extperiph1,
|
||||
extperiph2, extperiph3, gmi, gmi_alt, hda, hsi, i2c1, i2c2,
|
||||
i2c3, i2c4, i2cpwr, i2s0, i2s1, i2s2, i2s3, i2s4, irda, kbc,
|
||||
nand, nand_alt, owr, pmi, pwm0, pwm1, pwm2, pwm3, pwron,
|
||||
reset_out_n, rsvd1, rsvd2, rsvd3, rsvd4, sdmmc1, sdmmc2,
|
||||
sdmmc3, sdmmc4, soc, spdif, spi1, spi2, spi3, spi4, spi5,
|
||||
spi6, sysclk, trace, uarta, uartb, uartc, uartd, ulpi, usb,
|
||||
vgp1, vgp2, vgp3, vgp4, vgp5, vgp6, vi, vi_alt1, vi_alt3 ]
|
||||
|
||||
nvidia,pull: true
|
||||
nvidia,tristate: true
|
||||
nvidia,schmitt: true
|
||||
nvidia,pull-down-strength: true
|
||||
nvidia,pull-up-strength: true
|
||||
nvidia,high-speed-mode: true
|
||||
nvidia,low-power-mode: true
|
||||
nvidia,enable-input: true
|
||||
nvidia,open-drain: true
|
||||
nvidia,lock: true
|
||||
nvidia,io-reset: true
|
||||
nvidia,rcv-sel: true
|
||||
nvidia,drive-type: true
|
||||
nvidia,slew-rate-rising: true
|
||||
nvidia,slew-rate-falling: true
|
||||
|
||||
required:
|
||||
- nvidia,pins
|
||||
|
||||
additionalProperties: false
|
||||
|
||||
required:
|
||||
- compatible
|
||||
- reg
|
||||
|
||||
examples:
|
||||
- |
|
||||
pinmux@70000868 {
|
||||
compatible = "nvidia,tegra114-pinmux";
|
||||
reg = <0x70000868 0x148>, /* Pad control registers */
|
||||
<0x70003000 0x40c>; /* PinMux registers */
|
||||
|
||||
pinmux {
|
||||
sdmmc4_clk_pcc4 {
|
||||
nvidia,pins = "sdmmc4_clk_pcc4";
|
||||
nvidia,function = "sdmmc4";
|
||||
nvidia,pull = <0>;
|
||||
nvidia,tristate = <0>;
|
||||
};
|
||||
|
||||
sdmmc4_dat0_paa0 {
|
||||
nvidia,pins = "sdmmc4_dat0_paa0",
|
||||
"sdmmc4_dat1_paa1",
|
||||
"sdmmc4_dat2_paa2",
|
||||
"sdmmc4_dat3_paa3",
|
||||
"sdmmc4_dat4_paa4",
|
||||
"sdmmc4_dat5_paa5",
|
||||
"sdmmc4_dat6_paa6",
|
||||
"sdmmc4_dat7_paa7";
|
||||
nvidia,function = "sdmmc4";
|
||||
nvidia,pull = <2>;
|
||||
nvidia,tristate = <0>;
|
||||
};
|
||||
};
|
||||
};
|
||||
...
|
176
bindings/pinctrl/nvidia,tegra124-pinmux.yaml
Normal file
176
bindings/pinctrl/nvidia,tegra124-pinmux.yaml
Normal file
@@ -0,0 +1,176 @@
|
||||
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
|
||||
%YAML 1.2
|
||||
---
|
||||
$id: http://devicetree.org/schemas/pinctrl/nvidia,tegra124-pinmux.yaml#
|
||||
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
||||
|
||||
title: NVIDIA Tegra124 Pinmux Controller
|
||||
|
||||
maintainers:
|
||||
- Thierry Reding <thierry.reding@gmail.com>
|
||||
- Jon Hunter <jonathanh@nvidia.com>
|
||||
|
||||
description: The Tegra124 pinctrl binding is very similar to the Tegra20 and
|
||||
Tegra30 pinctrl binding, as described in nvidia,tegra20-pinmux.yaml and
|
||||
nvidia,tegra30-pinmux.yaml. In fact, this document assumes that binding as a
|
||||
baseline, and only documents the differences between the two bindings.
|
||||
|
||||
properties:
|
||||
compatible:
|
||||
oneOf:
|
||||
- const: nvidia,tegra124-pinmux
|
||||
- items:
|
||||
- const: nvidia,tegra132-pinmux
|
||||
- const: nvidia,tegra124-pinmux
|
||||
|
||||
reg:
|
||||
items:
|
||||
- description: driver strength and pad control registers
|
||||
- description: pinmux registers
|
||||
- description: MIPI_PAD_CTRL registers
|
||||
|
||||
patternProperties:
|
||||
"^pinmux(-[a-z0-9-_]+)?$":
|
||||
type: object
|
||||
properties:
|
||||
phandle: true
|
||||
|
||||
# pin groups
|
||||
additionalProperties:
|
||||
$ref: nvidia,tegra-pinmux-common.yaml
|
||||
additionalProperties: false
|
||||
properties:
|
||||
nvidia,pins:
|
||||
$ref: /schemas/types.yaml#/definitions/string-array
|
||||
items:
|
||||
enum: [ ulpi_data0_po1, ulpi_data1_po2, ulpi_data2_po3,
|
||||
ulpi_data3_po4, ulpi_data4_po5, ulpi_data5_po6,
|
||||
ulpi_data6_po7, ulpi_data7_po0, ulpi_clk_py0, ulpi_dir_py1,
|
||||
ulpi_nxt_py2, ulpi_stp_py3, dap3_fs_pp0, dap3_din_pp1,
|
||||
dap3_dout_pp2, dap3_sclk_pp3, pv0, pv1, sdmmc1_clk_pz0,
|
||||
sdmmc1_cmd_pz1, sdmmc1_dat3_py4, sdmmc1_dat2_py5,
|
||||
sdmmc1_dat1_py6, sdmmc1_dat0_py7, clk2_out_pw5,
|
||||
clk2_req_pcc5, hdmi_int_pn7, ddc_scl_pv4, ddc_sda_pv5,
|
||||
uart2_rxd_pc3, uart2_txd_pc2, uart2_rts_n_pj6,
|
||||
uart2_cts_n_pj5, uart3_txd_pw6, uart3_rxd_pw7,
|
||||
uart3_cts_n_pa1, uart3_rts_n_pc0, pu0, pu1, pu2, pu3, pu4,
|
||||
pu5, pu6, gen1_i2c_scl_pc4, gen1_i2c_sda_pc5, dap4_fs_pp4,
|
||||
dap4_din_pp5, dap4_dout_pp6, dap4_sclk_pp7, clk3_out_pee0,
|
||||
clk3_req_pee1, pc7, pi5, pi7, pk0, pk1, pj0, pj2, pk3, pk4,
|
||||
pk2, pi3, pi6, pg0, pg1, pg2, pg3, pg4, pg5, pg6, pg7, ph0,
|
||||
ph1, ph2, ph3, ph4, ph5, ph6, ph7, pj7, pb0, pb1, pk7, pi0,
|
||||
pi1, pi2, pi4, gen2_i2c_scl_pt5, gen2_i2c_sda_pt6,
|
||||
sdmmc4_clk_pcc4, sdmmc4_cmd_pt7, sdmmc4_dat0_paa0,
|
||||
sdmmc4_dat1_paa1, sdmmc4_dat2_paa2, sdmmc4_dat3_paa3,
|
||||
sdmmc4_dat4_paa4, sdmmc4_dat5_paa5, sdmmc4_dat6_paa6,
|
||||
sdmmc4_dat7_paa7, cam_mclk_pcc0, pcc1, pbb0,
|
||||
cam_i2c_scl_pbb1, cam_i2c_sda_pbb2, pbb3, pbb4, pbb5, pbb6,
|
||||
pbb7, pcc2, jtag_rtck, pwr_i2c_scl_pz6, pwr_i2c_sda_pz7,
|
||||
kb_row0_pr0, kb_row1_pr1, kb_row2_pr2, kb_row3_pr3,
|
||||
kb_row4_pr4, kb_row5_pr5, kb_row6_pr6, kb_row7_pr7,
|
||||
kb_row8_ps0, kb_row9_ps1, kb_row10_ps2, kb_row11_ps3,
|
||||
kb_row12_ps4, kb_row13_ps5, kb_row14_ps6, kb_row15_ps7,
|
||||
kb_col0_pq0, kb_col1_pq1, kb_col2_pq2, kb_col3_pq3,
|
||||
kb_col4_pq4, kb_col5_pq5, kb_col6_pq6, kb_col7_pq7,
|
||||
clk_32k_out_pa0, core_pwr_req, cpu_pwr_req, pwr_int_n,
|
||||
clk_32k_in, owr, dap1_fs_pn0, dap1_din_pn1, dap1_dout_pn2,
|
||||
dap1_sclk_pn3, dap_mclk1_req_pee2, dap_mclk1_pw4,
|
||||
spdif_in_pk6, spdif_out_pk5, dap2_fs_pa2, dap2_din_pa4,
|
||||
dap2_dout_pa5, dap2_sclk_pa3, dvfs_pwm_px0,
|
||||
gpio_x1_aud_px1, gpio_x3_aud_px3, dvfs_clk_px2,
|
||||
gpio_x4_aud_px4, gpio_x5_aud_px5, gpio_x6_aud_px6,
|
||||
gpio_x7_aud_px7, sdmmc3_clk_pa6, sdmmc3_cmd_pa7,
|
||||
sdmmc3_dat0_pb7, sdmmc3_dat1_pb6, sdmmc3_dat2_pb5,
|
||||
sdmmc3_dat3_pb4, pex_l0_rst_n_pdd1, pex_l0_clkreq_n_pdd2,
|
||||
pex_wake_n_pdd3, pex_l1_rst_n_pdd5, pex_l1_clkreq_n_pdd6,
|
||||
hdmi_cec_pee3, sdmmc1_wp_n_pv3, sdmmc3_cd_n_pv2,
|
||||
gpio_w2_aud_pw2, gpio_w3_aud_pw3, usb_vbus_en0_pn4,
|
||||
usb_vbus_en1_pn5, sdmmc3_clk_lb_out_pee4,
|
||||
sdmmc3_clk_lb_in_pee5, gmi_clk_lb, reset_out_n,
|
||||
kb_row16_pt0, kb_row17_pt1, usb_vbus_en2_pff1, pff2,
|
||||
dp_hpd_pff0,
|
||||
# drive groups
|
||||
drive_ao1, drive_ao2, drive_at1, drive_at2, drive_at3,
|
||||
drive_at4, drive_at5, drive_cdev1, drive_cdev2, drive_dap1,
|
||||
drive_dap2, drive_dap3, drive_dap4, drive_dbg, drive_sdio3,
|
||||
drive_spi, drive_uaa, drive_uab, drive_uart2, drive_uart3,
|
||||
drive_sdio1, drive_ddc, drive_gma, drive_gme, drive_gmf,
|
||||
drive_gmg, drive_gmh, drive_owr, drive_uda, drive_gpv,
|
||||
drive_dev3, drive_cec, drive_usb_vbus_en, drive_ao3,
|
||||
drive_ao0, drive_hv0, drive_sdio4, drive_ao4,
|
||||
# MIPI pad control groups
|
||||
mipi_pad_ctrl_dsi_b ]
|
||||
|
||||
nvidia,function:
|
||||
enum: [ blink, cec, cldvfs, clk12, cpu, dap, dap1, dap2, dev3,
|
||||
displaya, displaya_alt, displayb, dtv, extperiph1,
|
||||
extperiph2, extperiph3, gmi, gmi_alt, hda, hsi, i2c1, i2c2,
|
||||
i2c3, i2c4, i2cpwr, i2s0, i2s1, i2s2, i2s3, i2s4, irda, kbc,
|
||||
owr, pmi, pwm0, pwm1, pwm2, pwm3, pwron, reset_out_n, rsvd1,
|
||||
rsvd2, rsvd3, rsvd4, sdmmc1, sdmmc2, sdmmc3, sdmmc4, soc,
|
||||
spdif, spi1, spi2, spi3, spi4, spi5, spi6, trace, uarta,
|
||||
uartb, uartc, uartd, ulpi, usb, vgp1, vgp2, vgp3, vgp4, vgp5,
|
||||
vgp6, vi, vi_alt1, vi_alt3, vimclk2, vimclk2_alt, sata, ccla,
|
||||
pe0, pe, pe1, dp, rtck, sys, clk, tmds, csi, dsi_b ]
|
||||
|
||||
nvidia,pull: true
|
||||
nvidia,tristate: true
|
||||
nvidia,schmitt: true
|
||||
nvidia,pull-down-strength: true
|
||||
nvidia,pull-up-strength: true
|
||||
nvidia,high-speed-mode: true
|
||||
nvidia,low-power-mode: true
|
||||
nvidia,enable-input: true
|
||||
nvidia,open-drain: true
|
||||
nvidia,lock: true
|
||||
nvidia,io-reset: true
|
||||
nvidia,rcv-sel: true
|
||||
nvidia,drive-type: true
|
||||
nvidia,slew-rate-rising: true
|
||||
nvidia,slew-rate-falling: true
|
||||
|
||||
required:
|
||||
- nvidia,pins
|
||||
|
||||
additionalProperties: false
|
||||
|
||||
required:
|
||||
- compatible
|
||||
- reg
|
||||
|
||||
examples:
|
||||
- |
|
||||
#include <dt-bindings/clock/tegra124-car.h>
|
||||
#include <dt-bindings/interrupt-controller/arm-gic.h>
|
||||
#include <dt-bindings/pinctrl/pinctrl-tegra.h>
|
||||
|
||||
pinmux@70000868 {
|
||||
compatible = "nvidia,tegra124-pinmux";
|
||||
reg = <0x70000868 0x164>, /* Pad control registers */
|
||||
<0x70003000 0x434>, /* Mux registers */
|
||||
<0x70000820 0x8>; /* MIPI pad control */
|
||||
|
||||
sdmmc4_default: pinmux {
|
||||
sdmmc4_clk_pcc4 {
|
||||
nvidia,pins = "sdmmc4_clk_pcc4";
|
||||
nvidia,function = "sdmmc4";
|
||||
nvidia,pull = <TEGRA_PIN_PULL_NONE>;
|
||||
nvidia,tristate = <TEGRA_PIN_DISABLE>;
|
||||
};
|
||||
|
||||
sdmmc4_dat0_paa0 {
|
||||
nvidia,pins = "sdmmc4_dat0_paa0",
|
||||
"sdmmc4_dat1_paa1",
|
||||
"sdmmc4_dat2_paa2",
|
||||
"sdmmc4_dat3_paa3",
|
||||
"sdmmc4_dat4_paa4",
|
||||
"sdmmc4_dat5_paa5",
|
||||
"sdmmc4_dat6_paa6",
|
||||
"sdmmc4_dat7_paa7";
|
||||
nvidia,function = "sdmmc4";
|
||||
nvidia,pull = <TEGRA_PIN_PULL_UP>;
|
||||
nvidia,tristate = <TEGRA_PIN_DISABLE>;
|
||||
};
|
||||
};
|
||||
};
|
||||
...
|
135
bindings/pinctrl/nvidia,tegra124-xusb-padctl.txt
Normal file
135
bindings/pinctrl/nvidia,tegra124-xusb-padctl.txt
Normal file
@@ -0,0 +1,135 @@
|
||||
Device tree binding for NVIDIA Tegra XUSB pad controller
|
||||
========================================================
|
||||
|
||||
NOTE: It turns out that this binding isn't an accurate description of the XUSB
|
||||
pad controller. While the description is good enough for the functional subset
|
||||
required for PCIe and SATA, it lacks the flexibility to represent the features
|
||||
needed for USB. For the new binding, see ../phy/nvidia,tegra-xusb-padctl.txt.
|
||||
The binding described in this file is deprecated and should not be used.
|
||||
|
||||
The Tegra XUSB pad controller manages a set of lanes, each of which can be
|
||||
assigned to one out of a set of different pads. Some of these pads have an
|
||||
associated PHY that must be powered up before the pad can be used.
|
||||
|
||||
This document defines the device-specific binding for the XUSB pad controller.
|
||||
|
||||
Refer to pinctrl-bindings.txt in this directory for generic information about
|
||||
pin controller device tree bindings and ../phy/phy-bindings.txt for details on
|
||||
how to describe and reference PHYs in device trees.
|
||||
|
||||
Required properties:
|
||||
--------------------
|
||||
- compatible: For Tegra124, must contain "nvidia,tegra124-xusb-padctl".
|
||||
Otherwise, must contain '"nvidia,<chip>-xusb-padctl",
|
||||
"nvidia-tegra124-xusb-padctl"', where <chip> is tegra132 or tegra210.
|
||||
- reg: Physical base address and length of the controller's registers.
|
||||
- resets: Must contain an entry for each entry in reset-names.
|
||||
See ../reset/reset.txt for details.
|
||||
- reset-names: Must include the following entries:
|
||||
- padctl
|
||||
- #phy-cells: Should be 1. The specifier is the index of the PHY to reference.
|
||||
See <dt-bindings/pinctrl/pinctrl-tegra-xusb.h> for the list of valid values.
|
||||
|
||||
Lane muxing:
|
||||
------------
|
||||
|
||||
Child nodes contain the pinmux configurations following the conventions from
|
||||
the pinctrl-bindings.txt document. Typically a single, static configuration is
|
||||
given and applied at boot time.
|
||||
|
||||
Each subnode describes groups of lanes along with parameters and pads that
|
||||
they should be assigned to. The name of these subnodes is not important. All
|
||||
subnodes should be parsed solely based on their content.
|
||||
|
||||
Each subnode only applies the parameters that are explicitly listed. In other
|
||||
words, if a subnode that lists a function but no pin configuration parameters
|
||||
implies no information about any pin configuration parameters. Similarly, a
|
||||
subnode that describes only an IDDQ parameter implies no information about
|
||||
what function the pins are assigned to. For this reason even seemingly boolean
|
||||
values are actually tristates in this binding: unspecified, off or on.
|
||||
Unspecified is represented as an absent property, and off/on are represented
|
||||
as integer values 0 and 1.
|
||||
|
||||
Required properties:
|
||||
- nvidia,lanes: An array of strings. Each string is the name of a lane.
|
||||
|
||||
Optional properties:
|
||||
- nvidia,function: A string that is the name of the function (pad) that the
|
||||
pin or group should be assigned to. Valid values for function names are
|
||||
listed below.
|
||||
- nvidia,iddq: Enables IDDQ mode of the lane. (0: no, 1: yes)
|
||||
|
||||
Note that not all of these properties are valid for all lanes. Lanes can be
|
||||
divided into three groups:
|
||||
|
||||
- otg-0, otg-1, otg-2:
|
||||
|
||||
Valid functions for this group are: "snps", "xusb", "uart", "rsvd".
|
||||
|
||||
The nvidia,iddq property does not apply to this group.
|
||||
|
||||
- ulpi-0, hsic-0, hsic-1:
|
||||
|
||||
Valid functions for this group are: "snps", "xusb".
|
||||
|
||||
The nvidia,iddq property does not apply to this group.
|
||||
|
||||
- pcie-0, pcie-1, pcie-2, pcie-3, pcie-4, sata-0:
|
||||
|
||||
Valid functions for this group are: "pcie", "usb3", "sata", "rsvd".
|
||||
|
||||
|
||||
Example:
|
||||
========
|
||||
|
||||
SoC file extract:
|
||||
-----------------
|
||||
|
||||
padctl@7009f000 {
|
||||
compatible = "nvidia,tegra124-xusb-padctl";
|
||||
reg = <0x0 0x7009f000 0x0 0x1000>;
|
||||
resets = <&tegra_car 142>;
|
||||
reset-names = "padctl";
|
||||
|
||||
#phy-cells = <1>;
|
||||
};
|
||||
|
||||
Board file extract:
|
||||
-------------------
|
||||
|
||||
pcie-controller@1003000 {
|
||||
...
|
||||
|
||||
phys = <&padctl 0>;
|
||||
phy-names = "pcie";
|
||||
|
||||
...
|
||||
};
|
||||
|
||||
...
|
||||
|
||||
padctl: padctl@7009f000 {
|
||||
pinctrl-0 = <&padctl_default>;
|
||||
pinctrl-names = "default";
|
||||
|
||||
padctl_default: pinmux {
|
||||
usb3 {
|
||||
nvidia,lanes = "pcie-0", "pcie-1";
|
||||
nvidia,function = "usb3";
|
||||
nvidia,iddq = <0>;
|
||||
};
|
||||
|
||||
pcie {
|
||||
nvidia,lanes = "pcie-2", "pcie-3",
|
||||
"pcie-4";
|
||||
nvidia,function = "pcie";
|
||||
nvidia,iddq = <0>;
|
||||
};
|
||||
|
||||
sata {
|
||||
nvidia,lanes = "sata-0";
|
||||
nvidia,function = "sata";
|
||||
nvidia,iddq = <0>;
|
||||
};
|
||||
};
|
||||
};
|
284
bindings/pinctrl/nvidia,tegra194-pinmux.yaml
Normal file
284
bindings/pinctrl/nvidia,tegra194-pinmux.yaml
Normal file
@@ -0,0 +1,284 @@
|
||||
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
|
||||
%YAML 1.2
|
||||
---
|
||||
$id: http://devicetree.org/schemas/pinctrl/nvidia,tegra194-pinmux.yaml#
|
||||
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
||||
|
||||
title: NVIDIA Tegra194 Pinmux Controller
|
||||
|
||||
maintainers:
|
||||
- Thierry Reding <thierry.reding@gmail.com>
|
||||
- Jon Hunter <jonathanh@nvidia.com>
|
||||
|
||||
properties:
|
||||
compatible:
|
||||
enum:
|
||||
- nvidia,tegra194-pinmux
|
||||
- nvidia,tegra194-pinmux-aon
|
||||
|
||||
reg:
|
||||
items:
|
||||
- description: pinmux registers
|
||||
|
||||
patternProperties:
|
||||
"^pinmux(-[a-z0-9-_]+)?$":
|
||||
type: object
|
||||
properties:
|
||||
phandle: true
|
||||
|
||||
# pin groups
|
||||
additionalProperties:
|
||||
$ref: nvidia,tegra-pinmux-common.yaml
|
||||
unevaluatedProperties: false
|
||||
properties:
|
||||
nvidia,function:
|
||||
enum: [ aud, can0, can1, ccla, dca, dcb, dgpu, directdc, directdc1,
|
||||
displaya, displayb, dmic1, dmic2, dmic3, dmic4, dmic5, dp,
|
||||
dspk0, dspk1, eqos, extperiph1, extperiph2, extperiph3,
|
||||
extperiph4, gp, gpio, hdmi, i2c1, i2c2, i2c3, i2c5, i2c8,
|
||||
i2s1, i2s2, i2s3, i2s4, i2s5, i2s6, igpu, iqc1, iqc2, mipi,
|
||||
nv, pe0, pe1, pe2, pe3, pe4, pe5, qspi, qspi0, qspi1, rsvd0,
|
||||
rsvd1, rsvd2, rsvd3, sata, sce, sdmmc1, sdmmc3, sdmmc4, slvs,
|
||||
soc, spdif, spi1, spi2, spi3, touch, uarta, uartb, uartc,
|
||||
uartd, uarte, uartg, ufs0, usb, vgp1, vgp2, vgp3, vgp4, vgp5,
|
||||
vgp6, wdt ]
|
||||
|
||||
nvidia,pull: true
|
||||
nvidia,tristate: true
|
||||
nvidia,schmitt: true
|
||||
nvidia,enable-input: true
|
||||
nvidia,open-drain: true
|
||||
nvidia,lock: true
|
||||
nvidia,drive-type: true
|
||||
nvidia,io-hv: true
|
||||
|
||||
required:
|
||||
- nvidia,pins
|
||||
|
||||
additionalProperties: false
|
||||
|
||||
allOf:
|
||||
- if:
|
||||
properties:
|
||||
compatible:
|
||||
const: nvidia,tegra194-pinmux
|
||||
then:
|
||||
patternProperties:
|
||||
"^pinmux(-[a-z0-9-_]+)?$":
|
||||
type: object
|
||||
additionalProperties:
|
||||
properties:
|
||||
nvidia,pins:
|
||||
description: An array of strings. Each string contains the name
|
||||
of a pin or group. Valid values for these names are listed
|
||||
below.
|
||||
|
||||
Note that the pex_l5_clkreq_n_pgg0 and pex_l5_rst_n_pgg1 pins
|
||||
are part of PCIE C5 power partition. Client devices must
|
||||
enable this partition before accessing the configuration for
|
||||
these pins.
|
||||
items:
|
||||
enum: [ dap6_sclk_pa0, dap6_dout_pa1, dap6_din_pa2,
|
||||
dap6_fs_pa3, dap4_sclk_pa4, dap4_dout_pa5,
|
||||
dap4_din_pa6, dap4_fs_pa7, cpu_pwr_req_0_pb0,
|
||||
cpu_pwr_req_1_pb1, qspi0_sck_pc0, qspi0_cs_n_pc1,
|
||||
qspi0_io0_pc2, qspi0_io1_pc3, qspi0_io2_pc4,
|
||||
qspi0_io3_pc5, qspi1_sck_pc6, qspi1_cs_n_pc7,
|
||||
qspi1_io0_pd0, qspi1_io1_pd1, qspi1_io2_pd2,
|
||||
qspi1_io3_pd3, eqos_txc_pe0, eqos_td0_pe1,
|
||||
eqos_td1_pe2, eqos_td2_pe3, eqos_td3_pe4,
|
||||
eqos_tx_ctl_pe5, eqos_rd0_pe6, eqos_rd1_pe7,
|
||||
eqos_rd2_pf0, eqos_rd3_pf1, eqos_rx_ctl_pf2,
|
||||
eqos_rxc_pf3, eqos_sma_mdio_pf4, eqos_sma_mdc_pf5,
|
||||
soc_gpio00_pg0, soc_gpio01_pg1, soc_gpio02_pg2,
|
||||
soc_gpio03_pg3, soc_gpio08_pg4, soc_gpio09_pg5,
|
||||
soc_gpio10_pg6, soc_gpio11_pg7, soc_gpio12_ph0,
|
||||
soc_gpio13_ph1, soc_gpio14_ph2, uart4_tx_ph3,
|
||||
uart4_rx_ph4, uart4_rts_ph5, uart4_cts_ph6,
|
||||
dap2_sclk_ph7, dap2_dout_pi0, dap2_din_pi1,
|
||||
dap2_fs_pi2, gen1_i2c_scl_pi3, gen1_i2c_sda_pi4,
|
||||
sdmmc1_clk_pj0, sdmmc1_cmd_pj1, sdmmc1_dat0_pj2,
|
||||
sdmmc1_dat1_pj3, sdmmc1_dat2_pj4, sdmmc1_dat3_pj5,
|
||||
pex_l0_clkreq_n_pk0, pex_l0_rst_n_pk1,
|
||||
pex_l1_clkreq_n_pk2, pex_l1_rst_n_pk3,
|
||||
pex_l2_clkreq_n_pk4, pex_l2_rst_n_pk5,
|
||||
pex_l3_clkreq_n_pk6, pex_l3_rst_n_pk7,
|
||||
pex_l4_clkreq_n_pl0, pex_l4_rst_n_pl1,
|
||||
pex_wake_n_pl2, sata_dev_slp_pl3, dp_aux_ch0_hpd_pm0,
|
||||
dp_aux_ch1_hpd_pm1, dp_aux_ch2_hpd_pm2,
|
||||
dp_aux_ch3_hpd_pm3, hdmi_cec_pm4, soc_gpio50_pm5,
|
||||
soc_gpio51_pm6, soc_gpio52_pm7, soc_gpio53_pn0,
|
||||
soc_gpio54_pn1, soc_gpio55_pn2, sdmmc3_clk_po0,
|
||||
sdmmc3_cmd_po1, sdmmc3_dat0_po2, sdmmc3_dat1_po3,
|
||||
sdmmc3_dat2_po4, sdmmc3_dat3_po5, extperiph1_clk_pp0,
|
||||
extperiph2_clk_pp1, cam_i2c_scl_pp2, cam_i2c_sda_pp3,
|
||||
soc_gpio04_pp4, soc_gpio05_pp5, soc_gpio06_pp6,
|
||||
soc_gpio07_pp7, soc_gpio20_pq0, soc_gpio21_pq1,
|
||||
soc_gpio22_pq2, soc_gpio23_pq3, soc_gpio40_pq4,
|
||||
soc_gpio41_pq5, soc_gpio42_pq6, soc_gpio43_pq7,
|
||||
soc_gpio44_pr0, soc_gpio45_pr1, uart1_tx_pr2,
|
||||
uart1_rx_pr3, uart1_rts_pr4, uart1_cts_pr5,
|
||||
dap1_sclk_ps0, dap1_dout_ps1, dap1_din_ps2,
|
||||
dap1_fs_ps3, aud_mclk_ps4, soc_gpio30_ps5,
|
||||
soc_gpio31_ps6, soc_gpio32_ps7, soc_gpio33_pt0,
|
||||
dap3_sclk_pt1, dap3_dout_pt2, dap3_din_pt3,
|
||||
dap3_fs_pt4, dap5_sclk_pt5, dap5_dout_pt6,
|
||||
dap5_din_pt7, dap5_fs_pu0, directdc1_clk_pv0,
|
||||
directdc1_in_pv1, directdc1_out0_pv2,
|
||||
directdc1_out1_pv3, directdc1_out2_pv4,
|
||||
directdc1_out3_pv5, directdc1_out4_pv6,
|
||||
directdc1_out5_pv7, directdc1_out6_pw0,
|
||||
directdc1_out7_pw1, gpu_pwr_req_px0, cv_pwr_req_px1,
|
||||
gp_pwm2_px2, gp_pwm3_px3, uart2_tx_px4, uart2_rx_px5,
|
||||
uart2_rts_px6, uart2_cts_px7, spi3_sck_py0,
|
||||
spi3_miso_py1, spi3_mosi_py2, spi3_cs0_py3,
|
||||
spi3_cs1_py4, uart5_tx_py5, uart5_rx_py6,
|
||||
uart5_rts_py7, uart5_cts_pz0, usb_vbus_en0_pz1,
|
||||
usb_vbus_en1_pz2, spi1_sck_pz3, spi1_miso_pz4,
|
||||
spi1_mosi_pz5, spi1_cs0_pz6, spi1_cs1_pz7,
|
||||
ufs0_ref_clk_pff0, ufs0_rst_pff1,
|
||||
pex_l5_clkreq_n_pgg0, pex_l5_rst_n_pgg1,
|
||||
directdc_comp, sdmmc4_clk, sdmmc4_cmd, sdmmc4_dqs,
|
||||
sdmmc4_dat7, sdmmc4_dat6, sdmmc4_dat5, sdmmc4_dat4,
|
||||
sdmmc4_dat3, sdmmc4_dat2, sdmmc4_dat1, sdmmc4_dat0,
|
||||
sdmmc1_comp, sdmmc1_hv_trim, sdmmc3_comp,
|
||||
sdmmc3_hv_trim, eqos_comp, qspi_comp,
|
||||
# drive groups
|
||||
drive_soc_gpio33_pt0, drive_soc_gpio32_ps7,
|
||||
drive_soc_gpio31_ps6, drive_soc_gpio30_ps5,
|
||||
drive_aud_mclk_ps4, drive_dap1_fs_ps3,
|
||||
drive_dap1_din_ps2, drive_dap1_dout_ps1,
|
||||
drive_dap1_sclk_ps0, drive_dap3_fs_pt4,
|
||||
drive_dap3_din_pt3, drive_dap3_dout_pt2,
|
||||
drive_dap3_sclk_pt1, drive_dap5_fs_pu0,
|
||||
drive_dap5_din_pt7, drive_dap5_dout_pt6,
|
||||
drive_dap5_sclk_pt5, drive_dap6_fs_pa3,
|
||||
drive_dap6_din_pa2, drive_dap6_dout_pa1,
|
||||
drive_dap6_sclk_pa0, drive_dap4_fs_pa7,
|
||||
drive_dap4_din_pa6, drive_dap4_dout_pa5,
|
||||
drive_dap4_sclk_pa4, drive_extperiph2_clk_pp1,
|
||||
drive_extperiph1_clk_pp0, drive_cam_i2c_sda_pp3,
|
||||
drive_cam_i2c_scl_pp2, drive_soc_gpio40_pq4,
|
||||
drive_soc_gpio41_pq5, drive_soc_gpio42_pq6,
|
||||
drive_soc_gpio43_pq7, drive_soc_gpio44_pr0,
|
||||
drive_soc_gpio45_pr1, drive_soc_gpio20_pq0,
|
||||
drive_soc_gpio21_pq1, drive_soc_gpio22_pq2,
|
||||
drive_soc_gpio23_pq3, drive_soc_gpio04_pp4,
|
||||
drive_soc_gpio05_pp5, drive_soc_gpio06_pp6,
|
||||
drive_soc_gpio07_pp7, drive_uart1_cts_pr5,
|
||||
drive_uart1_rts_pr4, drive_uart1_rx_pr3,
|
||||
drive_uart1_tx_pr2, drive_dap2_din_pi1,
|
||||
drive_dap2_dout_pi0, drive_dap2_fs_pi2,
|
||||
drive_dap2_sclk_ph7, drive_uart4_cts_ph6,
|
||||
drive_uart4_rts_ph5, drive_uart4_rx_ph4,
|
||||
drive_uart4_tx_ph3, drive_soc_gpio03_pg3,
|
||||
drive_soc_gpio02_pg2, drive_soc_gpio01_pg1,
|
||||
drive_soc_gpio00_pg0, drive_gen1_i2c_scl_pi3,
|
||||
drive_gen1_i2c_sda_pi4, drive_soc_gpio08_pg4,
|
||||
drive_soc_gpio09_pg5, drive_soc_gpio10_pg6,
|
||||
drive_soc_gpio11_pg7, drive_soc_gpio12_ph0,
|
||||
drive_soc_gpio13_ph1, drive_soc_gpio14_ph2,
|
||||
drive_soc_gpio50_pm5, drive_soc_gpio51_pm6,
|
||||
drive_soc_gpio52_pm7, drive_soc_gpio53_pn0,
|
||||
drive_soc_gpio54_pn1, drive_soc_gpio55_pn2,
|
||||
drive_dp_aux_ch0_hpd_pm0, drive_dp_aux_ch1_hpd_pm1,
|
||||
drive_dp_aux_ch2_hpd_pm2, drive_dp_aux_ch3_hpd_pm3,
|
||||
drive_hdmi_cec_pm4, drive_pex_l2_clkreq_n_pk4,
|
||||
drive_pex_wake_n_pl2, drive_pex_l1_clkreq_n_pk2,
|
||||
drive_pex_l1_rst_n_pk3, drive_pex_l0_clkreq_n_pk0,
|
||||
drive_pex_l0_rst_n_pk1, drive_pex_l2_rst_n_pk5,
|
||||
drive_pex_l3_clkreq_n_pk6, drive_pex_l3_rst_n_pk7,
|
||||
drive_pex_l4_clkreq_n_pl0, drive_pex_l4_rst_n_pl1,
|
||||
drive_sata_dev_slp_pl3, drive_pex_l5_clkreq_n_pgg0,
|
||||
drive_pex_l5_rst_n_pgg1, drive_cpu_pwr_req_1_pb1,
|
||||
drive_cpu_pwr_req_0_pb0, drive_sdmmc1_clk_pj0,
|
||||
drive_sdmmc1_cmd_pj1, drive_sdmmc1_dat3_pj5,
|
||||
drive_sdmmc1_dat2_pj4, drive_sdmmc1_dat1_pj3,
|
||||
drive_sdmmc1_dat0_pj2, drive_sdmmc3_dat3_po5,
|
||||
drive_sdmmc3_dat2_po4, drive_sdmmc3_dat1_po3,
|
||||
drive_sdmmc3_dat0_po2, drive_sdmmc3_cmd_po1,
|
||||
drive_sdmmc3_clk_po0, drive_gpu_pwr_req_px0,
|
||||
drive_spi3_miso_py1, drive_spi1_cs0_pz6,
|
||||
drive_spi3_cs0_py3, drive_spi1_miso_pz4,
|
||||
drive_spi3_cs1_py4, drive_gp_pwm3_px3,
|
||||
drive_gp_pwm2_px2, drive_spi1_sck_pz3,
|
||||
drive_spi3_sck_py0, drive_spi1_cs1_pz7,
|
||||
drive_spi1_mosi_pz5, drive_spi3_mosi_py2,
|
||||
drive_cv_pwr_req_px1, drive_uart2_tx_px4,
|
||||
drive_uart2_rx_px5, drive_uart2_rts_px6,
|
||||
drive_uart2_cts_px7, drive_uart5_rx_py6,
|
||||
drive_uart5_tx_py5, drive_uart5_rts_py7,
|
||||
drive_uart5_cts_pz0, drive_usb_vbus_en0_pz1,
|
||||
drive_usb_vbus_en1_pz2, drive_ufs0_rst_pff1,
|
||||
drive_ufs0_ref_clk_pff0 ]
|
||||
|
||||
- if:
|
||||
properties:
|
||||
compatible:
|
||||
const: nvidia,tegra194-pinmux-aon
|
||||
then:
|
||||
patternProperties:
|
||||
"^pinmux(-[a-z0-9-_]+)?$":
|
||||
type: object
|
||||
additionalProperties:
|
||||
properties:
|
||||
nvidia,pins:
|
||||
items:
|
||||
enum: [ can1_dout_paa0, can1_din_paa1, can0_dout_paa2,
|
||||
can0_din_paa3, can0_stb_paa4, can0_en_paa5,
|
||||
can0_wake_paa6, can0_err_paa7, can1_stb_pbb0,
|
||||
can1_en_pbb1, can1_wake_pbb2, can1_err_pbb3,
|
||||
spi2_sck_pcc0, spi2_miso_pcc1, spi2_mosi_pcc2,
|
||||
spi2_cs0_pcc3, touch_clk_pcc4, uart3_tx_pcc5,
|
||||
uart3_rx_pcc6, gen2_i2c_scl_pcc7, gen2_i2c_sda_pdd0,
|
||||
gen8_i2c_scl_pdd1, gen8_i2c_sda_pdd2,
|
||||
safe_state_pee0, vcomp_alert_pee1,
|
||||
ao_retention_n_pee2, batt_oc_pee3, power_on_pee4,
|
||||
pwr_i2c_scl_pee5, pwr_i2c_sda_pee6, sys_reset_n,
|
||||
shutdown_n, pmu_int_n, soc_pwr_req, clk_32k_in,
|
||||
# drive groups
|
||||
drive_shutdown_n, drive_pmu_int_n,
|
||||
drive_safe_state_pee0, drive_vcomp_alert_pee1,
|
||||
drive_soc_pwr_req, drive_batt_oc_pee3,
|
||||
drive_clk_32k_in, drive_power_on_pee4,
|
||||
drive_pwr_i2c_scl_pee5, drive_pwr_i2c_sda_pee6,
|
||||
drive_ao_retention_n_pee2, drive_touch_clk_pcc4,
|
||||
drive_uart3_rx_pcc6, drive_uart3_tx_pcc5,
|
||||
drive_gen8_i2c_sda_pdd2, drive_gen8_i2c_scl_pdd1,
|
||||
drive_spi2_mosi_pcc2, drive_gen2_i2c_scl_pcc7,
|
||||
drive_spi2_cs0_pcc3, drive_gen2_i2c_sda_pdd0,
|
||||
drive_spi2_sck_pcc0, drive_spi2_miso_pcc1,
|
||||
drive_can1_dout_paa0, drive_can1_din_paa1,
|
||||
drive_can0_dout_paa2, drive_can0_din_paa3,
|
||||
drive_can0_stb_paa4, drive_can0_en_paa5,
|
||||
drive_can0_wake_paa6, drive_can0_err_paa7,
|
||||
drive_can1_stb_pbb0, drive_can1_en_pbb1,
|
||||
drive_can1_wake_pbb2, drive_can1_err_pbb3 ]
|
||||
|
||||
required:
|
||||
- compatible
|
||||
- reg
|
||||
|
||||
examples:
|
||||
- |
|
||||
#include <dt-bindings/pinctrl/pinctrl-tegra.h>
|
||||
|
||||
pinmux@2430000 {
|
||||
compatible = "nvidia,tegra194-pinmux";
|
||||
reg = <0x2430000 0x17000>;
|
||||
|
||||
pinctrl-names = "pex_rst";
|
||||
pinctrl-0 = <&pex_rst_c5_out_state>;
|
||||
|
||||
pex_rst_c5_out_state: pinmux-pex-rst-c5-out {
|
||||
pex_rst {
|
||||
nvidia,pins = "pex_l5_rst_n_pgg1";
|
||||
nvidia,schmitt = <TEGRA_PIN_DISABLE>;
|
||||
nvidia,enable-input = <TEGRA_PIN_DISABLE>;
|
||||
nvidia,io-hv = <TEGRA_PIN_ENABLE>;
|
||||
nvidia,tristate = <TEGRA_PIN_DISABLE>;
|
||||
nvidia,pull = <TEGRA_PIN_PULL_NONE>;
|
||||
};
|
||||
};
|
||||
};
|
||||
...
|
112
bindings/pinctrl/nvidia,tegra20-pinmux.yaml
Normal file
112
bindings/pinctrl/nvidia,tegra20-pinmux.yaml
Normal file
@@ -0,0 +1,112 @@
|
||||
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
|
||||
%YAML 1.2
|
||||
---
|
||||
$id: http://devicetree.org/schemas/pinctrl/nvidia,tegra20-pinmux.yaml#
|
||||
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
||||
|
||||
title: NVIDIA Tegra20 Pinmux Controller
|
||||
|
||||
maintainers:
|
||||
- Thierry Reding <thierry.reding@gmail.com>
|
||||
- Jon Hunter <jonathanh@nvidia.com>
|
||||
|
||||
properties:
|
||||
compatible:
|
||||
const: nvidia,tegra20-pinmux
|
||||
|
||||
reg:
|
||||
items:
|
||||
- description: tri-state registers
|
||||
- description: mux register
|
||||
- description: pull-up/down registers
|
||||
- description: pad control registers
|
||||
|
||||
patternProperties:
|
||||
"^pinmux(-[a-z0-9-_]+)?$":
|
||||
type: object
|
||||
properties:
|
||||
phandle: true
|
||||
|
||||
# pin groups
|
||||
additionalProperties:
|
||||
$ref: nvidia,tegra-pinmux-common.yaml
|
||||
additionalProperties: false
|
||||
properties:
|
||||
nvidia,pins:
|
||||
items:
|
||||
enum: [ ata, atb, atc, atd, ate, cdev1, cdev2, crtp, csus, dap1,
|
||||
dap2, dap3, dap4, ddc, dta, dtb, dtc, dtd, dte, dtf, gma,
|
||||
gmb, gmc, gmd, gme, gpu, gpu7, gpv, hdint, i2cp, irrx,
|
||||
irtx, kbca, kbcb, kbcc, kbcd, kbce, kbcf, lcsn, ld0, ld1,
|
||||
ld2, ld3, ld4, ld5, ld6, ld7, ld8, ld9, ld10, ld11, ld12,
|
||||
ld13, ld14, ld15, ld16, ld17, ldc, ldi, lhp0, lhp1, lhp2,
|
||||
lhs, lm0, lm1, lpp, lpw0, lpw1, lpw2, lsc0, lsc1, lsck,
|
||||
lsda, lsdi, lspi, lvp0, lvp1, lvs, owc, pmc, pta, rm, sdb,
|
||||
sdc, sdd, sdio1, slxa, slxc, slxd, slxk, spdi, spdo, spia,
|
||||
spib, spic, spid, spie, spif, spig, spih, uaa, uab, uac,
|
||||
uad, uca, ucb, uda,
|
||||
# tristate groups
|
||||
ck32, ddrc, pmca, pmcb, pmcc, pmcd, pmce, xm2c, xm2d, ls,
|
||||
lc, ld17_0, ld19_18, ld21_20, ld23_22,
|
||||
# drive groups
|
||||
drive_ao1, drive_ao2, drive_at1, drive_at2, drive_cdev1,
|
||||
drive_cdev2, drive_csus, drive_dap1, drive_dap2,
|
||||
drive_dap3, drive_dap4, drive_dbg, drive_lcd1, drive_lcd2,
|
||||
drive_sdmmc2, drive_sdmmc3, drive_spi, drive_uaa,
|
||||
drive_uab, drive_uart2, drive_uart3, drive_vi1, drive_vi2,
|
||||
drive_xm2a, drive_xm2c, drive_xm2d, drive_xm2clk,
|
||||
drive_sdio1, drive_crt, drive_ddc, drive_gma, drive_gmb,
|
||||
drive_gmc, drive_gmd, drive_gme, drive_owr, drive_uda ]
|
||||
|
||||
nvidia,function:
|
||||
enum: [ ahb_clk, apb_clk, audio_sync, crt, dap1, dap2, dap3, dap4,
|
||||
dap5, displaya, displayb, emc_test0_dll, emc_test1_dll, gmi,
|
||||
gmi_int, hdmi, i2cp, i2c1, i2c2, i2c3, ide, irda, kbc, mio,
|
||||
mipi_hs, nand, osc, owr, pcie, plla_out, pllc_out1,
|
||||
pllm_out1, pllp_out2, pllp_out3, pllp_out4, pwm, pwr_intr,
|
||||
pwr_on, rsvd1, rsvd2, rsvd3, rsvd4, rtck, sdio1, sdio2,
|
||||
sdio3, sdio4, sflash, spdif, spi1, spi2, spi2_alt, spi3,
|
||||
spi4, trace, twc, uarta, uartb, uartc, uartd, uarte, ulpi,
|
||||
vi, vi_sensor_clk, xio ]
|
||||
|
||||
nvidia,pull: true
|
||||
nvidia,tristate: true
|
||||
nvidia,schmitt: true
|
||||
nvidia,pull-down-strength: true
|
||||
nvidia,pull-up-strength: true
|
||||
nvidia,high-speed-mode: true
|
||||
nvidia,low-power-mode: true
|
||||
nvidia,slew-rate-rising: true
|
||||
nvidia,slew-rate-falling: true
|
||||
|
||||
required:
|
||||
- nvidia,pins
|
||||
|
||||
additionalProperties: false
|
||||
|
||||
required:
|
||||
- compatible
|
||||
- reg
|
||||
|
||||
examples:
|
||||
- |
|
||||
#include <dt-bindings/clock/tegra20-car.h>
|
||||
#include <dt-bindings/interrupt-controller/arm-gic.h>
|
||||
|
||||
pinctrl@70000000 {
|
||||
compatible = "nvidia,tegra20-pinmux";
|
||||
reg = <0x70000014 0x10>, /* Tri-state registers */
|
||||
<0x70000080 0x20>, /* Mux registers */
|
||||
<0x700000a0 0x14>, /* Pull-up/down registers */
|
||||
<0x70000868 0xa8>; /* Pad control registers */
|
||||
|
||||
pinmux {
|
||||
atb {
|
||||
nvidia,pins = "atb", "gma", "gme";
|
||||
nvidia,function = "sdio4";
|
||||
nvidia,pull = <0>;
|
||||
nvidia,tristate = <0>;
|
||||
};
|
||||
};
|
||||
};
|
||||
...
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user