blob: 051fc16f37063fe18a5957943f0e97b9e830336a [file] [log] [blame]
/*
* Copyright (C) 2013 STMicroelectronics Limited.
* Author: Srinivas Kandagatla <srinivas.kandagatla@st.com>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 as
* publishhed by the Free Software Foundation.
*/
#include "st-pincfg.h"
#include <dt-bindings/interrupt-controller/arm-gic.h>
/ {
aliases {
gpio0 = &pio0;
gpio1 = &pio1;
gpio2 = &pio2;
gpio3 = &pio3;
gpio4 = &pio4;
gpio5 = &pio40;
gpio6 = &pio5;
gpio7 = &pio6;
gpio8 = &pio7;
gpio9 = &pio8;
gpio10 = &pio9;
gpio11 = &pio10;
gpio12 = &pio11;
gpio13 = &pio12;
gpio14 = &pio30;
gpio15 = &pio31;
gpio16 = &pio13;
gpio17 = &pio14;
gpio18 = &pio15;
gpio19 = &pio16;
gpio20 = &pio17;
gpio21 = &pio18;
gpio22 = &pio100;
gpio23 = &pio101;
gpio24 = &pio102;
gpio25 = &pio103;
gpio26 = &pio104;
gpio27 = &pio105;
gpio28 = &pio106;
gpio29 = &pio107;
};
soc {
pin-controller-sbc {
#address-cells = <1>;
#size-cells = <1>;
compatible = "st,stih416-sbc-pinctrl";
st,syscfg = <&syscfg_sbc>;
reg = <0xfe61f080 0x4>;
reg-names = "irqmux";
interrupts = <GIC_SPI 182 IRQ_TYPE_LEVEL_HIGH>;
interrupt-names = "irqmux";
ranges = <0 0xfe610000 0x6000>;
pio0: gpio@fe610000 {
gpio-controller;
#gpio-cells = <1>;
interrupt-controller;
#interrupt-cells = <2>;
reg = <0 0x100>;
st,bank-name = "PIO0";
};
pio1: gpio@fe611000 {
gpio-controller;
#gpio-cells = <1>;
interrupt-controller;
#interrupt-cells = <2>;
reg = <0x1000 0x100>;
st,bank-name = "PIO1";
};
pio2: gpio@fe612000 {
gpio-controller;
#gpio-cells = <1>;
interrupt-controller;
#interrupt-cells = <2>;
reg = <0x2000 0x100>;
st,bank-name = "PIO2";
};
pio3: gpio@fe613000 {
gpio-controller;
#gpio-cells = <1>;
interrupt-controller;
#interrupt-cells = <2>;
reg = <0x3000 0x100>;
st,bank-name = "PIO3";
};
pio4: gpio@fe614000 {
gpio-controller;
#gpio-cells = <1>;
interrupt-controller;
#interrupt-cells = <2>;
reg = <0x4000 0x100>;
st,bank-name = "PIO4";
};
pio40: gpio@fe615000 {
gpio-controller;
#gpio-cells = <1>;
interrupt-controller;
#interrupt-cells = <2>;
reg = <0x5000 0x100>;
st,bank-name = "PIO40";
st,retime-pin-mask = <0x7f>;
};
rc{
pinctrl_ir: ir0 {
st,pins {
ir = <&pio4 0 ALT2 IN>;
};
};
};
sbc_serial1 {
pinctrl_sbc_serial1: sbc_serial1 {
st,pins {
tx = <&pio2 6 ALT3 OUT>;
rx = <&pio2 7 ALT3 IN>;
};
};
};
keyscan {
pinctrl_keyscan: keyscan {
st,pins {
keyin0 = <&pio0 2 ALT2 IN>;
keyin1 = <&pio0 3 ALT2 IN>;
keyin2 = <&pio0 4 ALT2 IN>;
keyin3 = <&pio2 6 ALT2 IN>;
keyout0 = <&pio1 6 ALT2 OUT>;
keyout1 = <&pio1 7 ALT2 OUT>;
keyout2 = <&pio0 6 ALT2 OUT>;
keyout3 = <&pio2 7 ALT2 OUT>;
};
};
};
sbc_i2c0 {
pinctrl_sbc_i2c0_default: sbc_i2c0-default {
st,pins {
sda = <&pio4 6 ALT1 BIDIR>;
scl = <&pio4 5 ALT1 BIDIR>;
};
};
};
usb {
pinctrl_usb3: usb3 {
st,pins {
oc-detect = <&pio40 0 ALT1 IN>;
pwr-enable = <&pio40 1 ALT1 OUT>;
};
};
};
sbc_i2c1 {
pinctrl_sbc_i2c1_default: sbc_i2c1-default {
st,pins {
sda = <&pio3 2 ALT2 BIDIR>;
scl = <&pio3 1 ALT2 BIDIR>;
};
};
};
gmac1 {
pinctrl_mii1: mii1 {
st,pins {
txd0 = <&pio0 0 ALT1 OUT SE_NICLK_IO 0 CLK_A>;
txd1 = <&pio0 1 ALT1 OUT SE_NICLK_IO 0 CLK_A>;
txd2 = <&pio0 2 ALT1 OUT SE_NICLK_IO 0 CLK_A>;
txd3 = <&pio0 3 ALT1 OUT SE_NICLK_IO 0 CLK_A>;
txer = <&pio0 4 ALT1 OUT SE_NICLK_IO 0 CLK_A>;
txen = <&pio0 5 ALT1 OUT SE_NICLK_IO 0 CLK_A>;
txclk = <&pio0 6 ALT1 IN NICLK 0 CLK_A>;
col = <&pio0 7 ALT1 IN BYPASS 1000>;
mdio = <&pio1 0 ALT1 OUT BYPASS 1500>;
mdc = <&pio1 1 ALT1 OUT NICLK 0 CLK_A>;
crs = <&pio1 2 ALT1 IN BYPASS 1000>;
mdint = <&pio1 3 ALT1 IN BYPASS 0>;
rxd0 = <&pio1 4 ALT1 IN SE_NICLK_IO 0 CLK_A>;
rxd1 = <&pio1 5 ALT1 IN SE_NICLK_IO 0 CLK_A>;
rxd2 = <&pio1 6 ALT1 IN SE_NICLK_IO 0 CLK_A>;
rxd3 = <&pio1 7 ALT1 IN SE_NICLK_IO 0 CLK_A>;
rxdv = <&pio2 0 ALT1 IN SE_NICLK_IO 0 CLK_A>;
rx_er = <&pio2 1 ALT1 IN SE_NICLK_IO 0 CLK_A>;
rxclk = <&pio2 2 ALT1 IN NICLK 0 CLK_A>;
phyclk = <&pio2 3 ALT1 OUT NICLK 0 CLK_A>;
};
};
pinctrl_rgmii1: rgmii1-0 {
st,pins {
txd0 = <&pio0 0 ALT1 OUT DE_IO 500 CLK_A>;
txd1 = <&pio0 1 ALT1 OUT DE_IO 500 CLK_A>;
txd2 = <&pio0 2 ALT1 OUT DE_IO 500 CLK_A>;
txd3 = <&pio0 3 ALT1 OUT DE_IO 500 CLK_A>;
txen = <&pio0 5 ALT1 OUT DE_IO 0 CLK_A>;
txclk = <&pio0 6 ALT1 IN NICLK 0 CLK_A>;
mdio = <&pio1 0 ALT1 OUT BYPASS 0>;
mdc = <&pio1 1 ALT1 OUT NICLK 0 CLK_A>;
rxd0 = <&pio1 4 ALT1 IN DE_IO 500 CLK_A>;
rxd1 = <&pio1 5 ALT1 IN DE_IO 500 CLK_A>;
rxd2 = <&pio1 6 ALT1 IN DE_IO 500 CLK_A>;
rxd3 = <&pio1 7 ALT1 IN DE_IO 500 CLK_A>;
rxdv = <&pio2 0 ALT1 IN DE_IO 500 CLK_A>;
rxclk = <&pio2 2 ALT1 IN NICLK 0 CLK_A>;
phyclk = <&pio2 3 ALT4 OUT NICLK 0 CLK_B>;
clk125= <&pio3 7 ALT4 IN NICLK 0 CLK_A>;
};
};
};
pwm1 {
pinctrl_pwm1_chan0_default: pwm1-0-default {
st,pins {
pwm-out = <&pio3 0 ALT1 OUT>;
};
};
pinctrl_pwm1_chan1_default: pwm1-1-default {
st,pins {
pwm-out = <&pio4 4 ALT1 OUT>;
};
};
pinctrl_pwm1_chan2_default: pwm1-2-default {
st,pins {
pwm-out = <&pio4 6 ALT3 OUT>;
};
};
pinctrl_pwm1_chan3_default: pwm1-3-default {
st,pins {
pwm-out = <&pio4 7 ALT3 OUT>;
};
};
};
};
pin-controller-front {
#address-cells = <1>;
#size-cells = <1>;
compatible = "st,stih416-front-pinctrl";
st,syscfg = <&syscfg_front>;
reg = <0xfee0f080 0x4>;
reg-names = "irqmux";
interrupts = <GIC_SPI 183 IRQ_TYPE_LEVEL_HIGH>;
interrupt-names = "irqmux";
ranges = <0 0xfee00000 0x10000>;
pio5: gpio@fee00000 {
gpio-controller;
#gpio-cells = <1>;
interrupt-controller;
#interrupt-cells = <2>;
reg = <0 0x100>;
st,bank-name = "PIO5";
};
pio6: gpio@fee01000 {
gpio-controller;
#gpio-cells = <1>;
interrupt-controller;
#interrupt-cells = <2>;
reg = <0x1000 0x100>;
st,bank-name = "PIO6";
};
pio7: gpio@fee02000 {
gpio-controller;
#gpio-cells = <1>;
interrupt-controller;
#interrupt-cells = <2>;
reg = <0x2000 0x100>;
st,bank-name = "PIO7";
};
pio8: gpio@fee03000 {
gpio-controller;
#gpio-cells = <1>;
interrupt-controller;
#interrupt-cells = <2>;
reg = <0x3000 0x100>;
st,bank-name = "PIO8";
};
pio9: gpio@fee04000 {
gpio-controller;
#gpio-cells = <1>;
interrupt-controller;
#interrupt-cells = <2>;
reg = <0x4000 0x100>;
st,bank-name = "PIO9";
};
pio10: gpio@fee05000 {
gpio-controller;
#gpio-cells = <1>;
interrupt-controller;
#interrupt-cells = <2>;
reg = <0x5000 0x100>;
st,bank-name = "PIO10";
};
pio11: gpio@fee06000 {
gpio-controller;
#gpio-cells = <1>;
interrupt-controller;
#interrupt-cells = <2>;
reg = <0x6000 0x100>;
st,bank-name = "PIO11";
};
pio12: gpio@fee07000 {
gpio-controller;
#gpio-cells = <1>;
interrupt-controller;
#interrupt-cells = <2>;
reg = <0x7000 0x100>;
st,bank-name = "PIO12";
};
pio30: gpio@fee08000 {
gpio-controller;
#gpio-cells = <1>;
interrupt-controller;
#interrupt-cells = <2>;
reg = <0x8000 0x100>;
st,bank-name = "PIO30";
};
pio31: gpio@fee09000 {
gpio-controller;
#gpio-cells = <1>;
interrupt-controller;
#interrupt-cells = <2>;
reg = <0x9000 0x100>;
st,bank-name = "PIO31";
};
pwm0 {
pinctrl_pwm0_chan0_default: pwm0-0-default {
st,pins {
pwm-out = <&pio9 7 ALT2 OUT>;
};
};
};
serial2-oe {
pinctrl_serial2_oe: serial2-1 {
st,pins {
output-enable = <&pio11 3 ALT2 OUT>;
};
};
};
i2c0 {
pinctrl_i2c0_default: i2c0-default {
st,pins {
sda = <&pio9 3 ALT1 BIDIR>;
scl = <&pio9 2 ALT1 BIDIR>;
};
};
};
usb {
pinctrl_usb0: usb0 {
st,pins {
oc-detect = <&pio9 4 ALT1 IN>;
pwr-enable = <&pio9 5 ALT1 OUT>;
};
};
};
i2c1 {
pinctrl_i2c1_default: i2c1-default {
st,pins {
sda = <&pio12 1 ALT1 BIDIR>;
scl = <&pio12 0 ALT1 BIDIR>;
};
};
};
fsm {
pinctrl_fsm: fsm {
st,pins {
spi-fsm-clk = <&pio12 2 ALT1 OUT>;
spi-fsm-cs = <&pio12 3 ALT1 OUT>;
spi-fsm-mosi = <&pio12 4 ALT1 OUT>;
spi-fsm-miso = <&pio12 5 ALT1 IN>;
spi-fsm-hol = <&pio12 6 ALT1 OUT>;
spi-fsm-wp = <&pio12 7 ALT1 OUT>;
};
};
};
};
pin-controller-rear {
#address-cells = <1>;
#size-cells = <1>;
compatible = "st,stih416-rear-pinctrl";
st,syscfg = <&syscfg_rear>;
reg = <0xfe82f080 0x4>;
reg-names = "irqmux";
interrupts = <GIC_SPI 184 IRQ_TYPE_LEVEL_HIGH>;
interrupt-names = "irqmux";
ranges = <0 0xfe820000 0x6000>;
pio13: gpio@fe820000 {
gpio-controller;
#gpio-cells = <1>;
interrupt-controller;
#interrupt-cells = <2>;
reg = <0 0x100>;
st,bank-name = "PIO13";
};
pio14: gpio@fe821000 {
gpio-controller;
#gpio-cells = <1>;
interrupt-controller;
#interrupt-cells = <2>;
reg = <0x1000 0x100>;
st,bank-name = "PIO14";
};
pio15: gpio@fe822000 {
gpio-controller;
#gpio-cells = <1>;
interrupt-controller;
#interrupt-cells = <2>;
reg = <0x2000 0x100>;
st,bank-name = "PIO15";
};
pio16: gpio@fe823000 {
gpio-controller;
#gpio-cells = <1>;
interrupt-controller;
#interrupt-cells = <2>;
reg = <0x3000 0x100>;
st,bank-name = "PIO16";
};
pio17: gpio@fe824000 {
gpio-controller;
#gpio-cells = <1>;
interrupt-controller;
#interrupt-cells = <2>;
reg = <0x4000 0x100>;
st,bank-name = "PIO17";
};
pio18: gpio@fe825000 {
gpio-controller;
#gpio-cells = <1>;
interrupt-controller;
#interrupt-cells = <2>;
reg = <0x5000 0x100>;
st,bank-name = "PIO18";
st,retime-pin-mask = <0xf>;
};
serial2 {
pinctrl_serial2: serial2-0 {
st,pins {
tx = <&pio17 4 ALT2 OUT>;
rx = <&pio17 5 ALT2 IN>;
};
};
};
gmac0 {
pinctrl_mii0: mii0 {
st,pins {
mdint = <&pio13 6 ALT2 IN BYPASS 0>;
txen = <&pio13 7 ALT2 OUT SE_NICLK_IO 0 CLK_A>;
txd0 = <&pio14 0 ALT2 OUT SE_NICLK_IO 0 CLK_A>;
txd1 = <&pio14 1 ALT2 OUT SE_NICLK_IO 0 CLK_A>;
txd2 = <&pio14 2 ALT2 OUT SE_NICLK_IO 0 CLK_B>;
txd3 = <&pio14 3 ALT2 OUT SE_NICLK_IO 0 CLK_B>;
txclk = <&pio15 0 ALT2 IN NICLK 0 CLK_A>;
txer = <&pio15 1 ALT2 OUT SE_NICLK_IO 0 CLK_A>;
crs = <&pio15 2 ALT2 IN BYPASS 1000>;
col = <&pio15 3 ALT2 IN BYPASS 1000>;
mdio= <&pio15 4 ALT2 OUT BYPASS 1500>;
mdc = <&pio15 5 ALT2 OUT NICLK 0 CLK_B>;
rxd0 = <&pio16 0 ALT2 IN SE_NICLK_IO 0 CLK_A>;
rxd1 = <&pio16 1 ALT2 IN SE_NICLK_IO 0 CLK_A>;
rxd2 = <&pio16 2 ALT2 IN SE_NICLK_IO 0 CLK_A>;
rxd3 = <&pio16 3 ALT2 IN SE_NICLK_IO 0 CLK_A>;
rxdv = <&pio15 6 ALT2 IN SE_NICLK_IO 0 CLK_A>;
rx_er = <&pio15 7 ALT2 IN SE_NICLK_IO 0 CLK_A>;
rxclk = <&pio17 0 ALT2 IN NICLK 0 CLK_A>;
phyclk = <&pio13 5 ALT2 OUT NICLK 0 CLK_B>;
};
};
pinctrl_gmii0: gmii0 {
st,pins {
};
};
pinctrl_rgmii0: rgmii0 {
st,pins {
phyclk = <&pio13 5 ALT4 OUT NICLK 0 CLK_B>;
txen = <&pio13 7 ALT2 OUT DE_IO 0 CLK_A>;
txd0 = <&pio14 0 ALT2 OUT DE_IO 500 CLK_A>;
txd1 = <&pio14 1 ALT2 OUT DE_IO 500 CLK_A>;
txd2 = <&pio14 2 ALT2 OUT DE_IO 500 CLK_B>;
txd3 = <&pio14 3 ALT2 OUT DE_IO 500 CLK_B>;
txclk = <&pio15 0 ALT2 IN NICLK 0 CLK_A>;
mdio = <&pio15 4 ALT2 OUT BYPASS 0>;
mdc = <&pio15 5 ALT2 OUT NICLK 0 CLK_B>;
rxdv = <&pio15 6 ALT2 IN DE_IO 500 CLK_A>;
rxd0 =<&pio16 0 ALT2 IN DE_IO 500 CLK_A>;
rxd1 =<&pio16 1 ALT2 IN DE_IO 500 CLK_A>;
rxd2 =<&pio16 2 ALT2 IN DE_IO 500 CLK_A>;
rxd3 =<&pio16 3 ALT2 IN DE_IO 500 CLK_A>;
rxclk =<&pio17 0 ALT2 IN NICLK 0 CLK_A>;
clk125=<&pio17 6 ALT1 IN NICLK 0 CLK_A>;
};
};
};
mmc0 {
pinctrl_mmc0: mmc0 {
st,pins {
mmcclk = <&pio13 4 ALT4 BIDIR_PU NICLK 0 CLK_B>;
data0 = <&pio14 4 ALT4 BIDIR_PU BYPASS 0>;
data1 = <&pio14 5 ALT4 BIDIR_PU BYPASS 0>;
data2 = <&pio14 6 ALT4 BIDIR_PU BYPASS 0>;
data3 = <&pio14 7 ALT4 BIDIR_PU BYPASS 0>;
cmd = <&pio15 1 ALT4 BIDIR_PU BYPASS 0>;
wp = <&pio15 3 ALT4 IN>;
data4 = <&pio16 4 ALT4 BIDIR_PU BYPASS 0>;
data5 = <&pio16 5 ALT4 BIDIR_PU BYPASS 0>;
data6 = <&pio16 6 ALT4 BIDIR_PU BYPASS 0>;
data7 = <&pio16 7 ALT4 BIDIR_PU BYPASS 0>;
pwr = <&pio17 1 ALT4 OUT>;
cd = <&pio17 2 ALT4 IN>;
led = <&pio17 3 ALT4 OUT>;
};
};
};
mmc1 {
pinctrl_mmc1: mmc1 {
st,pins {
mmcclk = <&pio15 0 ALT3 BIDIR_PU NICLK 0 CLK_B>;
data0 = <&pio13 7 ALT3 BIDIR_PU BYPASS 0>;
data1 = <&pio14 1 ALT3 BIDIR_PU BYPASS 0>;
data2 = <&pio14 2 ALT3 BIDIR_PU BYPASS 0>;
data3 = <&pio14 3 ALT3 BIDIR_PU BYPASS 0>;
cmd = <&pio15 4 ALT3 BIDIR_PU BYPASS 0>;
data4 = <&pio15 6 ALT3 BIDIR_PU BYPASS 0>;
data5 = <&pio15 7 ALT3 BIDIR_PU BYPASS 0>;
data6 = <&pio16 0 ALT3 BIDIR_PU BYPASS 0>;
data7 = <&pio16 1 ALT3 BIDIR_PU BYPASS 0>;
pwr = <&pio16 2 ALT3 OUT>;
nreset = <&pio13 6 ALT3 OUT>;
};
};
};
usb {
pinctrl_usb1: usb1 {
st,pins {
oc-detect = <&pio18 0 ALT1 IN>;
pwr-enable = <&pio18 1 ALT1 OUT>;
};
};
pinctrl_usb2: usb2 {
st,pins {
oc-detect = <&pio18 2 ALT1 IN>;
pwr-enable = <&pio18 3 ALT1 OUT>;
};
};
};
pwm0 {
pinctrl_pwm0_chan1_default: pwm0-1-default {
st,pins {
pwm-out = <&pio13 2 ALT2 OUT>;
};
};
pinctrl_pwm0_chan2_default: pwm0-2-default {
st,pins {
pwm-out = <&pio15 2 ALT4 OUT>;
};
};
pinctrl_pwm0_chan3_default: pwm0-3-default {
st,pins {
pwm-out = <&pio17 4 ALT1 OUT>;
};
};
};
};
pin-controller-fvdp-fe {
#address-cells = <1>;
#size-cells = <1>;
compatible = "st,stih416-fvdp-fe-pinctrl";
st,syscfg = <&syscfg_fvdp_fe>;
reg = <0xfd6bf080 0x4>;
reg-names = "irqmux";
interrupts = <GIC_SPI 113 IRQ_TYPE_LEVEL_HIGH>;
interrupt-names = "irqmux";
ranges = <0 0xfd6b0000 0x3000>;
pio100: gpio@fd6b0000 {
gpio-controller;
#gpio-cells = <1>;
interrupt-controller;
#interrupt-cells = <2>;
reg = <0 0x100>;
st,bank-name = "PIO100";
};
pio101: gpio@fd6b1000 {
gpio-controller;
#gpio-cells = <1>;
interrupt-controller;
#interrupt-cells = <2>;
reg = <0x1000 0x100>;
st,bank-name = "PIO101";
};
pio102: gpio@fd6b2000 {
gpio-controller;
#gpio-cells = <1>;
interrupt-controller;
#interrupt-cells = <2>;
reg = <0x2000 0x100>;
st,bank-name = "PIO102";
};
};
pin-controller-fvdp-lite {
#address-cells = <1>;
#size-cells = <1>;
compatible = "st,stih416-fvdp-lite-pinctrl";
st,syscfg = <&syscfg_fvdp_lite>;
reg = <0xfd33f080 0x4>;
reg-names = "irqmux";
interrupts = <GIC_SPI 114 IRQ_TYPE_LEVEL_HIGH>;
interrupt-names = "irqmux";
ranges = <0 0xfd330000 0x5000>;
pio103: gpio@fd330000 {
gpio-controller;
#gpio-cells = <1>;
interrupt-controller;
#interrupt-cells = <2>;
reg = <0 0x100>;
st,bank-name = "PIO103";
};
pio104: gpio@fd331000 {
gpio-controller;
#gpio-cells = <1>;
interrupt-controller;
#interrupt-cells = <2>;
reg = <0x1000 0x100>;
st,bank-name = "PIO104";
};
pio105: gpio@fd332000 {
gpio-controller;
#gpio-cells = <1>;
interrupt-controller;
#interrupt-cells = <2>;
reg = <0x2000 0x100>;
st,bank-name = "PIO105";
};
pio106: gpio@fd333000 {
gpio-controller;
#gpio-cells = <1>;
interrupt-controller;
#interrupt-cells = <2>;
reg = <0x3000 0x100>;
st,bank-name = "PIO106";
};
pio107: gpio@fd334000 {
gpio-controller;
#gpio-cells = <1>;
interrupt-controller;
#interrupt-cells = <2>;
reg = <0x4000 0x100>;
st,bank-name = "PIO107";
st,retime-pin-mask = <0xf>;
};
};
};
};