aboutsummaryrefslogtreecommitdiffstats
path: root/target/linux
diff options
context:
space:
mode:
authorJohn Crispin <john@openwrt.org>2013-09-17 21:45:44 +0000
committerJohn Crispin <john@openwrt.org>2013-09-17 21:45:44 +0000
commit8cd1c997079246942680893adbd21d884e131b84 (patch)
tree2e67af73e7ceed76eba06c8cf1c771dbb9785cda /target/linux
parent66bed0b0194cfc29bfa477bb525e7618eb696263 (diff)
downloadupstream-8cd1c997079246942680893adbd21d884e131b84.tar.gz
upstream-8cd1c997079246942680893adbd21d884e131b84.tar.bz2
upstream-8cd1c997079246942680893adbd21d884e131b84.zip
ralink: add pinctrl driver
Signed-off-by: John Crispin <blogic@openwrt.org> SVN-Revision: 38026
Diffstat (limited to 'target/linux')
-rw-r--r--target/linux/ramips/dts/3G-6200N.dts25
-rw-r--r--target/linux/ramips/dts/3G-6200NL.dts25
-rw-r--r--target/linux/ramips/dts/3G300M.dts29
-rw-r--r--target/linux/ramips/dts/AIR3GII.dts20
-rw-r--r--target/linux/ramips/dts/ALL0239-3G.dts25
-rw-r--r--target/linux/ramips/dts/ALL0256N-4M.dts20
-rw-r--r--target/linux/ramips/dts/ALL0256N-8M.dts20
-rw-r--r--target/linux/ramips/dts/ALL5002.dts21
-rw-r--r--target/linux/ramips/dts/ALL5003.dts21
-rw-r--r--target/linux/ramips/dts/ARGUS_ATP52B.dts25
-rw-r--r--target/linux/ramips/dts/ASL26555-16M.dts21
-rw-r--r--target/linux/ramips/dts/ASL26555-8M.dts21
-rw-r--r--target/linux/ramips/dts/AWM002-4M.dtsi1
-rw-r--r--target/linux/ramips/dts/AWM002-8M.dtsi1
-rw-r--r--target/linux/ramips/dts/AWM002.dtsi25
-rw-r--r--target/linux/ramips/dts/BC2.dts26
-rw-r--r--target/linux/ramips/dts/BR-6425.dts25
-rw-r--r--target/linux/ramips/dts/BROADWAY.dts25
-rw-r--r--target/linux/ramips/dts/CARAMBOLA.dts26
-rw-r--r--target/linux/ramips/dts/D105.dts26
-rw-r--r--target/linux/ramips/dts/DAP-1350.dts25
-rw-r--r--target/linux/ramips/dts/DIR-300-B1.dts25
-rw-r--r--target/linux/ramips/dts/DIR-600-B1.dts24
-rw-r--r--target/linux/ramips/dts/DIR-600-B2.dts24
-rw-r--r--target/linux/ramips/dts/DIR-610-A1.dts27
-rw-r--r--target/linux/ramips/dts/DIR-615-D.dts25
-rw-r--r--target/linux/ramips/dts/DIR-615-H1.dts32
-rw-r--r--target/linux/ramips/dts/DIR-620-A1.dts25
-rw-r--r--target/linux/ramips/dts/DIR-620-D1.dts33
-rw-r--r--target/linux/ramips/dts/DIR-645.dts28
-rw-r--r--target/linux/ramips/dts/DIR-810L.dts24
-rw-r--r--target/linux/ramips/dts/ESR-9753.dts25
-rw-r--r--target/linux/ramips/dts/F5D8235_V1.dts16
-rw-r--r--target/linux/ramips/dts/F5D8235_V2.dts26
-rw-r--r--target/linux/ramips/dts/F7C027.dts20
-rw-r--r--target/linux/ramips/dts/FONERA20N.dts25
-rw-r--r--target/linux/ramips/dts/FREESTATION5.dts24
-rw-r--r--target/linux/ramips/dts/HG255D.dts24
-rw-r--r--target/linux/ramips/dts/HW550-3G.dts26
-rw-r--r--target/linux/ramips/dts/IP2202.dts27
-rw-r--r--target/linux/ramips/dts/M3.dts22
-rw-r--r--target/linux/ramips/dts/M4-4M.dts26
-rw-r--r--target/linux/ramips/dts/M4-8M.dts21
-rw-r--r--target/linux/ramips/dts/MOFI3500-3GN.dts22
-rw-r--r--target/linux/ramips/dts/MPRA1.dts25
-rw-r--r--target/linux/ramips/dts/MPRA2.dts25
-rw-r--r--target/linux/ramips/dts/MT7620a.dts24
-rw-r--r--target/linux/ramips/dts/MT7620a_MT7610e.dts7
-rw-r--r--target/linux/ramips/dts/MZK-W300NH2.dts25
-rw-r--r--target/linux/ramips/dts/NBG-419N.dts24
-rw-r--r--target/linux/ramips/dts/NW718.dts25
-rw-r--r--target/linux/ramips/dts/OMNI-EMB-HPM.dts30
-rw-r--r--target/linux/ramips/dts/OMNI-EMB.dts24
-rw-r--r--target/linux/ramips/dts/PSR-680W.dts25
-rw-r--r--target/linux/ramips/dts/PWH2004.dts25
-rw-r--r--target/linux/ramips/dts/RP-N53.dts28
-rw-r--r--target/linux/ramips/dts/RT-G32-B1.dts24
-rw-r--r--target/linux/ramips/dts/RT-N10-PLUS.dts21
-rw-r--r--target/linux/ramips/dts/RT-N13U.dts24
-rw-r--r--target/linux/ramips/dts/RT-N15.dts4
-rw-r--r--target/linux/ramips/dts/RTN56U.dts35
-rw-r--r--target/linux/ramips/dts/SL-R7205.dts24
-rw-r--r--target/linux/ramips/dts/TEW-691GR.dts25
-rw-r--r--target/linux/ramips/dts/TEW-692GR.dts33
-rw-r--r--target/linux/ramips/dts/UR-326N4G.dts25
-rw-r--r--target/linux/ramips/dts/UR-336UN.dts25
-rw-r--r--target/linux/ramips/dts/V11STFE.dts4
-rw-r--r--target/linux/ramips/dts/V22RW-2X2.dts24
-rw-r--r--target/linux/ramips/dts/W150M.dts24
-rw-r--r--target/linux/ramips/dts/W306R_V20.dts24
-rw-r--r--target/linux/ramips/dts/W502U.dts24
-rw-r--r--target/linux/ramips/dts/WCR150GN.dts24
-rw-r--r--target/linux/ramips/dts/WHR-G300N.dts24
-rw-r--r--target/linux/ramips/dts/WL-351.dts26
-rw-r--r--target/linux/ramips/dts/WL341V3.dts26
-rw-r--r--target/linux/ramips/dts/WLI-TX4-AG300N.dts4
-rw-r--r--target/linux/ramips/dts/WL_330N.dts24
-rw-r--r--target/linux/ramips/dts/WL_330N3G.dts24
-rw-r--r--target/linux/ramips/dts/WNCE2001.dts28
-rw-r--r--target/linux/ramips/dts/WR512-3GN-4M.dts25
-rw-r--r--target/linux/ramips/dts/WR512-3GN-8M.dts25
-rw-r--r--target/linux/ramips/dts/WR6202.dts25
-rw-r--r--target/linux/ramips/dts/X5.dts22
-rw-r--r--target/linux/ramips/dts/X8.dts22
-rw-r--r--target/linux/ramips/dts/XDXRN502J.dts25
-rw-r--r--target/linux/ramips/dts/mt7620a.dtsi74
-rw-r--r--target/linux/ramips/dts/rt3050.dtsi41
-rw-r--r--target/linux/ramips/dts/rt3352.dtsi37
-rw-r--r--target/linux/ramips/dts/rt3883.dtsi35
-rw-r--r--target/linux/ramips/dts/rt5350.dtsi52
-rw-r--r--target/linux/ramips/mt7620a/config-3.107
-rw-r--r--target/linux/ramips/patches-3.10/0006-GPIO-MIPS-ralink-add-gpio-driver-for-ralink-SoC.patch46
-rw-r--r--target/linux/ramips/patches-3.10/0101-MIPS-ralink-add-pinmux-driver.patch144
-rw-r--r--target/linux/ramips/patches-3.10/0122-pinmux.patch1276
-rw-r--r--target/linux/ramips/rt305x/config-3.108
-rw-r--r--target/linux/ramips/rt3883/config-3.107
96 files changed, 2097 insertions, 1605 deletions
diff --git a/target/linux/ramips/dts/3G-6200N.dts b/target/linux/ramips/dts/3G-6200N.dts
index 9f600276e6..dc342439ce 100644
--- a/target/linux/ramips/dts/3G-6200N.dts
+++ b/target/linux/ramips/dts/3G-6200N.dts
@@ -6,17 +6,13 @@
compatible = "3G-6200N", "ralink,rt3050-soc";
model = "Edimax 3g-6200n";
- palmbus@10000000 {
- sysc@0 {
- ralink,pinmux = "i2c", "spi", "uartlite", "jtag", "mdio", "sdram", "rgmii";
- ralink,uartmux = "gpio";
- ralink,wdtmux = <1>;
+ pinctrl {
+ state_default: pinctrl0 {
+ gpio {
+ ralink,group = "spi", "i2c", "jtag", "rgmii", "mdio", "uartf";
+ ralink,function = "gpio";
+ };
};
-
- gpio0: gpio@600 {
- status = "okay";
- };
-
};
cfi@1f000000 {
@@ -58,12 +54,7 @@
};
};
- ethernet@10100000 {
- status = "okay";
- };
-
esw@10110000 {
- status = "okay";
ralink,portmap = <0x2f>;
};
@@ -100,10 +91,6 @@
};
};
- wmac@10180000 {
- status = "okay";
- };
-
otg@101c0000 {
status = "okay";
};
diff --git a/target/linux/ramips/dts/3G-6200NL.dts b/target/linux/ramips/dts/3G-6200NL.dts
index 0dca09874d..265806154a 100644
--- a/target/linux/ramips/dts/3G-6200NL.dts
+++ b/target/linux/ramips/dts/3G-6200NL.dts
@@ -6,17 +6,13 @@
compatible = "3G-6200N", "ralink,rt3050-soc";
model = "Edimax 3g-6200n";
- palmbus@10000000 {
- sysc@0 {
- ralink,pinmux = "i2c", "spi", "uartlite", "jtag", "mdio", "sdram", "rgmii";
- ralink,uartmux = "gpio";
- ralink,wdtmux = <1>;
+ pinctrl {
+ state_default: pinctrl0 {
+ gpio {
+ ralink,group = "spi", "i2c", "jtag", "rgmii", "mdio", "uartf";
+ ralink,function = "gpio";
+ };
};
-
- gpio0: gpio@600 {
- status = "okay";
- };
-
};
cfi@1f000000 {
@@ -58,12 +54,7 @@
};
};
- ethernet@10100000 {
- status = "okay";
- };
-
esw@10110000 {
- status = "okay";
ralink,portmap = <0x2f>;
};
@@ -87,10 +78,6 @@
};
};
- wmac@10180000 {
- status = "okay";
- };
-
otg@101c0000 {
status = "okay";
};
diff --git a/target/linux/ramips/dts/3G300M.dts b/target/linux/ramips/dts/3G300M.dts
index c4d6a5d7d0..62683cc16d 100644
--- a/target/linux/ramips/dts/3G300M.dts
+++ b/target/linux/ramips/dts/3G300M.dts
@@ -7,17 +7,6 @@
model = "Tenda 3G300M";
palmbus@10000000 {
- sysc@0 {
- ralink,pinmux = "i2c", "spi", "uartlite", "mdio", "sdram", "rgmii";
- ralink,gpiomux = "jtag";
- ralink,uartmux = "gpio";
- ralink,wdtmux = <1>;
- };
-
- gpio0: gpio@600 {
- status = "okay";
- };
-
spi@b00 {
status = "okay";
m25p80@0 {
@@ -54,6 +43,15 @@
};
};
+ pinctrl {
+ state_default: pinctrl0 {
+ gpio {
+ ralink,group = "i2c", "jtag", "rgmii", "mdio", "uartf";
+ ralink,function = "gpio";
+ };
+ };
+ };
+
gpio-leds {
compatible = "gpio-leds";
3grouter {
@@ -99,19 +97,10 @@
};
};
- ethernet@10100000 {
- status = "okay";
- };
-
esw@10110000 {
- status = "okay";
ralink,portmap = <0x2f>;
};
- wmac@10180000 {
- status = "okay";
- };
-
otg@101c0000 {
status = "okay";
};
diff --git a/target/linux/ramips/dts/AIR3GII.dts b/target/linux/ramips/dts/AIR3GII.dts
index f375a7450b..f9fcf075e3 100644
--- a/target/linux/ramips/dts/AIR3GII.dts
+++ b/target/linux/ramips/dts/AIR3GII.dts
@@ -7,12 +7,6 @@
model = "AirLive Air3GII";
palmbus@10000000 {
- sysc@0 {
- ralink,pinmux = "i2c", "spi", "uartlite", "jtag", "mdio", "sdram", "rgmii";
- ralink,uartmux = "gpio";
- ralink,wdtmux = <1>;
- };
-
gpio0: gpio@600 {
status = "okay";
};
@@ -53,12 +47,16 @@
};
};
- ethernet@10100000 {
- status = "okay";
+ pinctrl {
+ state_default: pinctrl0 {
+ gpio {
+ ralink,group = "i2c", "jtag", "uartf";
+ ralink,function = "gpio";
+ };
+ };
};
esw@10110000 {
- status = "okay";
ralink,portmap = <0x2f>;
};
@@ -85,8 +83,4 @@
linux,code = <0x211>;
};
};
-
- wmac@10180000 {
- status = "okay";
- };
};
diff --git a/target/linux/ramips/dts/ALL0239-3G.dts b/target/linux/ramips/dts/ALL0239-3G.dts
index 023ccd2fa1..335aea85b3 100644
--- a/target/linux/ramips/dts/ALL0239-3G.dts
+++ b/target/linux/ramips/dts/ALL0239-3G.dts
@@ -6,18 +6,13 @@
compatible = "ALL0239-3G", "ralink,rt3052-soc";
model = "Allnet ALL0239-3G";
- palmbus@10000000 {
- sysc@0 {
- ralink,pinmux = "i2c", "spi", "uartlite", "jtag", "sdram", "rgmii";
- ralink,gpiomux = "mdio";
- ralink,uartmux = "gpio";
- ralink,wdtmux = <1>;
+ pinctrl {
+ state_default: pinctrl0 {
+ gpio {
+ ralink,group = "i2c", "jtag", "rgmii", "mdio", "uartf";
+ ralink,function = "gpio";
+ };
};
-
- gpio0: gpio@600 {
- status = "okay";
- };
-
};
cfi@1f000000 {
@@ -53,10 +48,6 @@
};
};
- ethernet@10100000 {
- status = "okay";
- };
-
esw@10110000 {
status = "okay";
ralink,portmap = <0x3e>;
@@ -104,10 +95,6 @@
};
};
- wmac@10180000 {
- status = "okay";
- };
-
otg@101c0000 {
status = "okay";
};
diff --git a/target/linux/ramips/dts/ALL0256N-4M.dts b/target/linux/ramips/dts/ALL0256N-4M.dts
index 58248833cd..7351675b65 100644
--- a/target/linux/ramips/dts/ALL0256N-4M.dts
+++ b/target/linux/ramips/dts/ALL0256N-4M.dts
@@ -7,12 +7,6 @@
model = "Allnet ALL0256N";
palmbus@10000000 {
- sysc@0 {
- ralink,pinmux = "i2c", "spi", "uartlite", "jtag", "mdio", "sdram", "rgmii";
- ralink,uartmux = "gpio";
- ralink,wdtmux = <1>;
- };
-
gpio0: gpio@600 {
status = "okay";
};
@@ -53,12 +47,16 @@
};
};
- ethernet@10100000 {
- status = "okay";
+ pinctrl {
+ state_default: pinctrl0 {
+ gpio {
+ ralink,group = "i2c", "jtag", "rgmii", "mdio", "uartf";
+ ralink,function = "gpio";
+ };
+ };
};
esw@10110000 {
- status = "okay";
ralink,portmap = <0x3f>;
};
@@ -89,8 +87,4 @@
linux,code = <0x198>;
};
};
-
- wmac@10180000 {
- status = "okay";
- };
};
diff --git a/target/linux/ramips/dts/ALL0256N-8M.dts b/target/linux/ramips/dts/ALL0256N-8M.dts
index 974a4bd465..8c825a9154 100644
--- a/target/linux/ramips/dts/ALL0256N-8M.dts
+++ b/target/linux/ramips/dts/ALL0256N-8M.dts
@@ -7,12 +7,6 @@
model = "Allnet ALL0256N";
palmbus@10000000 {
- sysc@0 {
- ralink,pinmux = "i2c", "spi", "uartlite", "jtag", "mdio", "sdram", "rgmii";
- ralink,uartmux = "gpio";
- ralink,wdtmux = <1>;
- };
-
gpio0: gpio@600 {
status = "okay";
};
@@ -53,12 +47,16 @@
};
};
- ethernet@10100000 {
- status = "okay";
+ pinctrl {
+ state_default: pinctrl0 {
+ gpio {
+ ralink,group = "i2c", "jtag", "rgmii", "mdio", "uartf";
+ ralink,function = "gpio";
+ };
+ };
};
esw@10110000 {
- status = "okay";
ralink,portmap = <0x3f>;
};
@@ -89,8 +87,4 @@
linux,code = <0x198>;
};
};
-
- wmac@10180000 {
- status = "okay";
- };
};
diff --git a/target/linux/ramips/dts/ALL5002.dts b/target/linux/ramips/dts/ALL5002.dts
index 636b74c746..60c9c1fc44 100644
--- a/target/linux/ramips/dts/ALL5002.dts
+++ b/target/linux/ramips/dts/ALL5002.dts
@@ -7,13 +7,6 @@
model = "Allnet ALL5002";
palmbus@10000000 {
- sysc@0 {
- ralink,pinmux = "spi", "uartlite", "jtag", "mdio", "sdram", "rgmii";
- ralink,gpiomux = "i2c";
- ralink,uartmux = "gpio";
- ralink,wdtmux = <1>;
- };
-
gpio0: gpio@600 {
status = "okay";
};
@@ -54,19 +47,19 @@
};
};
- ethernet@10100000 {
- status = "okay";
+ pinctrl {
+ state_default: pinctrl0 {
+ gpio {
+ ralink,group = "i2c", "jtag", "rgmii", "mdio", "uartf";
+ ralink,function = "gpio";
+ };
+ };
};
esw@10110000 {
- status = "okay";
ralink,portmap = <0x3f>;
};
- wmac@10180000 {
- status = "okay";
- };
-
ehci@101c0000 {
status = "okay";
};
diff --git a/target/linux/ramips/dts/ALL5003.dts b/target/linux/ramips/dts/ALL5003.dts
index b1f28ce61b..d599e71efc 100644
--- a/target/linux/ramips/dts/ALL5003.dts
+++ b/target/linux/ramips/dts/ALL5003.dts
@@ -7,13 +7,6 @@
model = "Allnet ALL5003";
palmbus@10000000 {
- sysc@0 {
- ralink,pinmux = "spi", "uartlite", "jtag", "mdio", "sdram", "rgmii";
- ralink,gpiomux = "i2c";
- ralink,uartmux = "gpio";
- ralink,wdtmux = <1>;
- };
-
gpio0: gpio@600 {
status = "okay";
};
@@ -54,19 +47,19 @@
};
};
- ethernet@10100000 {
- status = "okay";
+ pinctrl {
+ state_default: pinctrl0 {
+ gpio {
+ ralink,group = "i2c", "jtag", "rgmii", "mdio", "uartf";
+ ralink,function = "gpio";
+ };
+ };
};
esw@10110000 {
- status = "okay";
ralink,portmap = <0x3f>;
};
- wmac@10180000 {
- status = "okay";
- };
-
ehci@101c0000 {
status = "okay";
};
diff --git a/target/linux/ramips/dts/ARGUS_ATP52B.dts b/target/linux/ramips/dts/ARGUS_ATP52B.dts
index b5c94a5f34..b8e246bb03 100644
--- a/target/linux/ramips/dts/ARGUS_ATP52B.dts
+++ b/target/linux/ramips/dts/ARGUS_ATP52B.dts
@@ -6,17 +6,13 @@
compatible = "ARGUS_ATP52B", "ralink,rt3052-soc";
model = "Argus ATP-52B";
- palmbus@10000000 {
- sysc@0 {
- ralink,pinmux = "i2c", "spi", "uartlite", "jtag", "mdio", "sdram", "rgmii";
- ralink,uartmux = "gpio";
- ralink,wdtmux = <1>;
+ pinctrl {
+ state_default: pinctrl0 {
+ gpio {
+ ralink,group = "i2c", "jtag", "rgmii", "mdio", "uartf";
+ ralink,function = "gpio";
+ };
};
-
- gpio0: gpio@600 {
- status = "okay";
- };
-
};
cfi@1f000000 {
@@ -79,19 +75,10 @@
};
};
- ethernet@10100000 {
- status = "okay";
- };
-
esw@10110000 {
- status = "okay";
ralink,portmap = <0x3e>;
};
- wmac@10180000 {
- status = "okay";
- };
-
otg@101c0000 {
status = "okay";
};
diff --git a/target/linux/ramips/dts/ASL26555-16M.dts b/target/linux/ramips/dts/ASL26555-16M.dts
index e9477b47d0..8bc98df160 100644
--- a/target/linux/ramips/dts/ASL26555-16M.dts
+++ b/target/linux/ramips/dts/ASL26555-16M.dts
@@ -7,13 +7,6 @@
model = "Alpha ASL26555";
palmbus@10000000 {
- sysc@0 {
- ralink,pinmux = "spi", "mdio", "uartlite", "sdram", "rgmii";
- ralink,gpiomux = "i2c", "jtag";
- ralink,uartmux = "gpio";
- ralink,wdtmux = <1>;
- };
-
gpio0: gpio@600 {
status = "okay";
};
@@ -66,19 +59,19 @@
};
};
- ethernet@10100000 {
- status = "okay";
+ pinctrl {
+ state_default: pinctrl0 {
+ gpio {
+ ralink,group = "i2c", "jtag", "rgmii", "mdio", "uartf";
+ ralink,function = "gpio";
+ };
+ };
};
esw@10110000 {
- status = "okay";
ralink,portmap = <0x1e>;
};
- wmac@10180000 {
- status = "okay";
- };
-
otg@101c0000 {
status = "okay";
};
diff --git a/target/linux/ramips/dts/ASL26555-8M.dts b/target/linux/ramips/dts/ASL26555-8M.dts
index 0a403c195c..f1501ebf11 100644
--- a/target/linux/ramips/dts/ASL26555-8M.dts
+++ b/target/linux/ramips/dts/ASL26555-8M.dts
@@ -7,13 +7,6 @@
model = "Alpha ASL26555";
palmbus@10000000 {
- sysc@0 {
- ralink,pinmux = "spi", "mdio", "uartlite", "sdram", "rgmii";
- ralink,gpiomux = "i2c", "jtag";
- ralink,uartmux = "gpio";
- ralink,wdtmux = <1>;
- };
-
gpio0: gpio@600 {
status = "okay";
};
@@ -61,19 +54,19 @@
};
};
- ethernet@10100000 {
- status = "okay";
+ pinctrl {
+ state_default: pinctrl0 {
+ gpio {
+ ralink,group = "i2c", "jtag", "rgmii", "mdio", "uartf";
+ ralink,function = "gpio";
+ };
+ };
};
esw@10110000 {
- status = "okay";
ralink,portmap = <0x1e>;
};
- wmac@10180000 {
- status = "okay";
- };
-
otg@101c0000 {
status = "okay";
};
diff --git a/target/linux/ramips/dts/AWM002-4M.dtsi b/target/linux/ramips/dts/AWM002-4M.dtsi
index 614b9984d8..2f6a01728f 100644
--- a/target/linux/ramips/dts/AWM002-4M.dtsi
+++ b/target/linux/ramips/dts/AWM002-4M.dtsi
@@ -5,7 +5,6 @@
model = "AsiaRF AWM002";
palmbus@10000000 {
-
spi@b00 {
m25p80@0 {
compatible = "mx25l3205d";
diff --git a/target/linux/ramips/dts/AWM002-8M.dtsi b/target/linux/ramips/dts/AWM002-8M.dtsi
index a72ca95d07..d8e4c28690 100644
--- a/target/linux/ramips/dts/AWM002-8M.dtsi
+++ b/target/linux/ramips/dts/AWM002-8M.dtsi
@@ -5,7 +5,6 @@
model = "AsiaRF AWM002";
palmbus@10000000 {
-
spi@b00 {
m25p80@0 {
compatible = "mx25l6405d";
diff --git a/target/linux/ramips/dts/AWM002.dtsi b/target/linux/ramips/dts/AWM002.dtsi
index 671dcff05a..e1579b540a 100644
--- a/target/linux/ramips/dts/AWM002.dtsi
+++ b/target/linux/ramips/dts/AWM002.dtsi
@@ -5,17 +5,6 @@
model = "AsiaRF AWM002";
palmbus@10000000 {
- sysc@0 {
- ralink,pinmux = "spi", "uartlite", "jtag", "mdio", "sdram", "rgmii";
- ralink,gpiomux = "i2c";
- ralink,uartmux = "gpio";
- ralink,wdtmux = <1>;
- };
-
- gpio0: gpio@600 {
- status = "okay";
- };
-
spi@b00 {
status = "okay";
m25p80@0 {
@@ -50,19 +39,19 @@
};
};
- ethernet@10100000 {
- status = "okay";
+ pinctrl {
+ state_default: pinctrl0 {
+ gpio {
+ ralink,group = "i2c", "jtag", "uartf";
+ ralink,function = "gpio";
+ };
+ };
};
esw@10110000 {
- status = "okay";
ralink,portmap = <0x3f>;
};
- wmac@10180000 {
- status = "okay";
- };
-
ehci@101c0000 {
status = "okay";
};
diff --git a/target/linux/ramips/dts/BC2.dts b/target/linux/ramips/dts/BC2.dts
index 8b97169ace..8877743d98 100644
--- a/target/linux/ramips/dts/BC2.dts
+++ b/target/linux/ramips/dts/BC2.dts
@@ -6,18 +6,13 @@
compatible = "BC2", "ralink,rt3052-soc";
model = "NexAira BC2";
- palmbus@10000000 {
- sysc@0 {
- ralink,pinmux = "i2c", "spi", "uartlite", "mdio", "sdram", "rgmii";
- ralink,gpiomux = "jtag";
- ralink,uartmux = "gpio";
- ralink,wdtmux = <1>;
+ pinctrl {
+ state_default: pinctrl0 {
+ gpio {
+ ralink,group = "spi", "i2c", "jtag", "rgmii", "mdio", "uartf";
+ ralink,function = "gpio";
+ };
};
-
- gpio0: gpio@600 {
- status = "okay";
- };
-
};
cfi@1f000000 {
@@ -73,19 +68,10 @@
};
};
- ethernet@10100000 {
- status = "okay";
- };
-
esw@10110000 {
- status = "okay";
ralink,portmap = <0x2f>;
};
- wmac@10180000 {
- status = "okay";
- };
-
otg@101c0000 {
status = "okay";
};
diff --git a/target/linux/ramips/dts/BR-6425.dts b/target/linux/ramips/dts/BR-6425.dts
index 7529b6b6e5..913df051af 100644
--- a/target/linux/ramips/dts/BR-6425.dts
+++ b/target/linux/ramips/dts/BR-6425.dts
@@ -6,17 +6,13 @@
compatible = "BR-6425", "ralink,rt3052-soc";
model = "Edimax BR-6425";
- palmbus@10000000 {
- sysc@0 {
- ralink,pinmux = "i2c", "spi", "uartlite", "jtag", "mdio", "sdram", "rgmii";
- ralink,uartmux = "gpio";
- ralink,wdtmux = <1>;
+ pinctrl {
+ state_default: pinctrl0 {
+ gpio {
+ ralink,group = "spi", "i2c", "jtag", "rgmii", "mdio", "uartf";
+ ralink,function = "gpio";
+ };
};
-
- gpio0: gpio@600 {
- status = "okay";
- };
-
};
cfi@1f000000 {
@@ -29,12 +25,7 @@
#size-cells = <1>;
};
- ethernet@10100000 {
- status = "okay";
- };
-
esw@10110000 {
- status = "okay";
ralink,portmap = <0x2f>;
};
@@ -66,8 +57,4 @@
linux,code = <0xf7>;
};
};
-
- wmac@10180000 {
- status = "okay";
- };
};
diff --git a/target/linux/ramips/dts/BROADWAY.dts b/target/linux/ramips/dts/BROADWAY.dts
index a24d829a70..3f00ad75be 100644
--- a/target/linux/ramips/dts/BROADWAY.dts
+++ b/target/linux/ramips/dts/BROADWAY.dts
@@ -6,17 +6,13 @@
compatible = "BROADWAY", "ralink,rt3052-soc";
model = "Hauppauge Broadway";
- palmbus@10000000 {
- sysc@0 {
- ralink,pinmux = "i2c", "spi", "uartlite", "jtag", "mdio", "sdram", "rgmii";
- ralink,uartmux = "gpio";
- ralink,wdtmux = <1>;
+ pinctrl {
+ state_default: pinctrl0 {
+ gpio {
+ ralink,group = "spi", "i2c", "jtag", "rgmii", "mdio", "uartf";
+ ralink,function = "gpio";
+ };
};
-
- gpio0: gpio@600 {
- status = "okay";
- };
-
};
cfi@1f000000 {
@@ -52,12 +48,7 @@
};
};
- ethernet@10100000 {
- status = "okay";
- };
-
esw@10110000 {
- status = "okay";
ralink,portmap = <0x3e>;
};
@@ -85,10 +76,6 @@
};
};
- wmac@10180000 {
- status = "okay";
- };
-
otg@101c0000 {
status = "okay";
};
diff --git a/target/linux/ramips/dts/CARAMBOLA.dts b/target/linux/ramips/dts/CARAMBOLA.dts
index 68048edcf2..5c63e0315a 100644
--- a/target/linux/ramips/dts/CARAMBOLA.dts
+++ b/target/linux/ramips/dts/CARAMBOLA.dts
@@ -10,18 +10,13 @@
bootargs = "console=ttyS0,115200";
};
- palmbus@10000000 {
- sysc@0 {
- ralink,pinmux = "uartlite", "sdram", "rgmii";
- ralink,gpiomux = "i2c", "spi", "jtag", "mdio";
- ralink,uartmux = "gpio";
- ralink,wdtmux = <1>;
+ pinctrl {
+ state_default: pinctrl0 {
+ gpio {
+ ralink,group = "spi", "i2c", "jtag", "rgmii", "mdio", "uartf";
+ ralink,function = "gpio";
+ };
};
-
- gpio0: gpio@600 {
- status = "okay";
- };
-
};
cfi@1f000000 {
@@ -57,19 +52,10 @@
};
};
- ethernet@10100000 {
- status = "okay";
- };
-
esw@10110000 {
- status = "okay";
ralink,portmap = <0x3f>;
};
- wmac@10180000 {
- status = "okay";
- };
-
otg@101c0000 {
status = "okay";
};
diff --git a/target/linux/ramips/dts/D105.dts b/target/linux/ramips/dts/D105.dts
index 9b1df68a1b..c4171c003d 100644
--- a/target/linux/ramips/dts/D105.dts
+++ b/target/linux/ramips/dts/D105.dts
@@ -6,18 +6,13 @@
compatible = "D105", "ralink,rt3050-soc";
model = "Huawei D105";
- palmbus@10000000 {
- sysc@0 {
- ralink,pinmux = "i2c", "spi", "uartlite", "mdio", "sdram", "rgmii";
- ralink,gpiomux = "jtag";
- ralink,uartmux = "gpio";
- ralink,wdtmux = <1>;
+ pinctrl {
+ state_default: pinctrl0 {
+ gpio {
+ ralink,group = "spi", "i2c", "jtag", "rgmii", "mdio", "uartf";
+ ralink,function = "gpio";
+ };
};
-
- gpio0: gpio@600 {
- status = "okay";
- };
-
};
cfi@1f000000 {
@@ -77,19 +72,10 @@
};
};
- ethernet@10100000 {
- status = "okay";
- };
-
esw@10110000 {
- status = "okay";
ralink,portmap = <0x2f>;
};
- wmac@10180000 {
- status = "okay";
- };
-
otg@101c0000 {
status = "okay";
};
diff --git a/target/linux/ramips/dts/DAP-1350.dts b/target/linux/ramips/dts/DAP-1350.dts
index 4eab53abe5..1fd9e9a7e5 100644
--- a/target/linux/ramips/dts/DAP-1350.dts
+++ b/target/linux/ramips/dts/DAP-1350.dts
@@ -10,17 +10,13 @@
bootargs = "console=ttyS0,115200";
};
- palmbus@10000000 {
- sysc@0 {
- ralink,pinmux = "i2c", "spi", "uartlite", "jtag", "mdio", "sdram", "rgmii";
- ralink,uartmux = "gpio";
- ralink,wdtmux = <1>;
+ pinctrl {
+ state_default: pinctrl0 {
+ gpio {
+ ralink,group = "spi", "i2c", "jtag", "rgmii", "mdio", "uartf";
+ ralink,function = "gpio";
+ };
};
-
- gpio0: gpio@600 {
- status = "okay";
- };
-
};
cfi@1f000000 {
@@ -62,12 +58,7 @@
};
};
- ethernet@10100000 {
- status = "okay";
- };
-
esw@10110000 {
- status = "okay";
ralink,portmap = <0x2f>;
};
@@ -114,10 +105,6 @@
};
};
- wmac@10180000 {
- status = "okay";
- };
-
otg@101c0000 {
status = "okay";
};
diff --git a/target/linux/ramips/dts/DIR-300-B1.dts b/target/linux/ramips/dts/DIR-300-B1.dts
index 0297b8cf92..8efef3c0d9 100644
--- a/target/linux/ramips/dts/DIR-300-B1.dts
+++ b/target/linux/ramips/dts/DIR-300-B1.dts
@@ -6,17 +6,13 @@
compatible = "DIR-300-B1", "ralink,rt3050-soc";
model = "D-Link DIR-300 B1";
- palmbus@10000000 {
- sysc@0 {
- ralink,pinmux = "i2c", "spi", "uartlite", "jtag", "mdio", "sdram", "rgmii";
- ralink,uartmux = "gpio";
- ralink,wdtmux = <1>;
+ pinctrl {
+ state_default: pinctrl0 {
+ gpio {
+ ralink,group = "i2c", "spi", "jtag", "mdio", "rgmii", "uartf";
+ ralink,function = "gpio";
+ };
};
-
- gpio0: gpio@600 {
- status = "okay";
- };
-
};
cfi@1f000000 {
@@ -52,12 +48,7 @@
};
};
- ethernet@10100000 {
- status = "okay";
- };
-
esw@10110000 {
- status = "okay";
ralink,portmap = <0x2f>;
};
@@ -78,10 +69,6 @@
};
};
- wmac@10180000 {
- status = "okay";
- };
-
gpio-leds {
compatible = "gpio-leds";
status {
diff --git a/target/linux/ramips/dts/DIR-600-B1.dts b/target/linux/ramips/dts/DIR-600-B1.dts
index 5d78538b05..2c75465440 100644
--- a/target/linux/ramips/dts/DIR-600-B1.dts
+++ b/target/linux/ramips/dts/DIR-600-B1.dts
@@ -6,15 +6,12 @@
compatible = "DIR-600-B1", "ralink,rt3050-soc";
model = "D-Link DIR-600 B1";
- palmbus@10000000 {
- sysc@0 {
- ralink,pinmux = "i2c", "spi", "uartlite", "jtag", "mdio", "sdram", "rgmii";
- ralink,uartmux = "gpio";
- ralink,wdtmux = <1>;
- };
-
- gpio0: gpio@600 {
- status = "okay";
+ pinctrl {
+ state_default: pinctrl0 {
+ gpio {
+ ralink,group = "i2c", "spi", "jtag", "mdio", "rgmii", "uartf";
+ ralink,function = "gpio";
+ };
};
};
@@ -51,12 +48,7 @@
};
};
- ethernet@10100000 {
- status = "okay";
- };
-
esw@10110000 {
- status = "okay";
ralink,portmap = <0x2f>;
};
@@ -77,10 +69,6 @@
};
};
- wmac@10180000 {
- status = "okay";
- };
-
gpio-leds {
compatible = "gpio-leds";
status {
diff --git a/target/linux/ramips/dts/DIR-600-B2.dts b/target/linux/ramips/dts/DIR-600-B2.dts
index ff15ac8439..f982ae0db7 100644
--- a/target/linux/ramips/dts/DIR-600-B2.dts
+++ b/target/linux/ramips/dts/DIR-600-B2.dts
@@ -6,15 +6,12 @@
compatible = "DIR-600-B2", "ralink,rt3050-soc";
model = "D-Link DIR-600 B2";
- palmbus@10000000 {
- sysc@0 {
- ralink,pinmux = "i2c", "spi", "uartlite", "jtag", "mdio", "sdram", "rgmii";
- ralink,uartmux = "gpio";
- ralink,wdtmux = <1>;
- };
-
- gpio0: gpio@600 {
- status = "okay";
+ pinctrl {
+ state_default: pinctrl0 {
+ gpio {
+ ralink,group = "i2c", "spi", "jtag", "mdio", "rgmii", "uartf";
+ ralink,function = "gpio";
+ };
};
};
@@ -51,12 +48,7 @@
};
};
- ethernet@10100000 {
- status = "okay";
- };
-
esw@10110000 {
- status = "okay";
ralink,portmap = <0x2f>;
};
@@ -77,10 +69,6 @@
};
};
- wmac@10180000 {
- status = "okay";
- };
-
gpio-leds {
compatible = "gpio-leds";
status {
diff --git a/target/linux/ramips/dts/DIR-610-A1.dts b/target/linux/ramips/dts/DIR-610-A1.dts
index ed5606af89..26caf5f67f 100644
--- a/target/linux/ramips/dts/DIR-610-A1.dts
+++ b/target/linux/ramips/dts/DIR-610-A1.dts
@@ -7,16 +7,6 @@
model = "D-Link DIR-610 A1";
palmbus@10000000 {
- sysc@0 {
- ralink,pinmux = "i2c", "spi", "jtag", "uartlite", "mdio", "sdram", "rgmii";
- ralink,uartmux = "gpio";
- ralink,wdtmux = <1>;
- };
-
- gpio0: gpio@600 {
- status = "okay";
- };
-
spi@b00 {
status = "okay";
m25p80@0 {
@@ -53,14 +43,21 @@
};
};
- ethernet@10100000 {
- status = "okay";
+ pinctrl {
+ state_default: pinctrl0 {
+ gpio {
+ ralink,group = "i2c", "jtag", "uartf";
+ ralink,function = "gpio";
+ };
+ };
};
esw@10110000 {
- status = "okay";
ralink,portmap = <0x1f>;
ralink,led-polarity = <0>;
+
+ pinctrl-names = "default";
+ pinctrl-0 = <&phy_led_pins>;
};
gpio-leds {
@@ -93,8 +90,4 @@
};
};
};
-
- wmac@10180000 {
- status = "okay";
- };
};
diff --git a/target/linux/ramips/dts/DIR-615-D.dts b/target/linux/ramips/dts/DIR-615-D.dts
index 21de0e8cc8..b27bca061b 100644
--- a/target/linux/ramips/dts/DIR-615-D.dts
+++ b/target/linux/ramips/dts/DIR-615-D.dts
@@ -6,17 +6,13 @@
compatible = "DIR-615-D", "ralink,rt3050-soc";
model = "D-Link DIR-615 D";
- palmbus@10000000 {
- sysc@0 {
- ralink,pinmux = "i2c", "spi", "uartlite", "jtag", "mdio", "sdram", "rgmii";
- ralink,uartmux = "gpio";
- ralink,wdtmux = <1>;
+ pinctrl {
+ state_default: pinctrl0 {
+ gpio {
+ ralink,group = "i2c", "spi", "jtag", "mdio", "rgmii", "uartf";
+ ralink,function = "gpio";
+ };
};
-
- gpio0: gpio@600 {
- status = "okay";
- };
-
};
cfi@1f000000 {
@@ -52,12 +48,7 @@
};
};
- ethernet@10100000 {
- status = "okay";
- };
-
esw@10110000 {
- status = "okay";
ralink,portmap = <0x2f>;
};
@@ -78,10 +69,6 @@
};
};
- wmac@10180000 {
- status = "okay";
- };
-
gpio-leds {
compatible = "gpio-leds";
status {
diff --git a/target/linux/ramips/dts/DIR-615-H1.dts b/target/linux/ramips/dts/DIR-615-H1.dts
index 15adcfe72f..5cb2beb3e8 100644
--- a/target/linux/ramips/dts/DIR-615-H1.dts
+++ b/target/linux/ramips/dts/DIR-615-H1.dts
@@ -7,16 +7,6 @@
model = "D-Link DIR-615 H1";
palmbus@10000000 {
- sysc@0 {
- ralink,pinmux = "i2c", "spi", "uartlite", "jtag", "mdio", "sdram", "rgmii";
- ralink,uartmux = "gpio";
- ralink,wdtmux = <1>;
- };
-
- gpio0: gpio@600 {
- status = "okay";
- };
-
spi@b00 {
status = "okay";
m25p80@0 {
@@ -53,12 +43,24 @@
};
};
- ethernet@10100000 {
- status = "okay";
+ pinctrl {
+ state_default: pinctrl0 {
+ gpio {
+ ralink,group = "i2c", "jtag", "uartf";
+ ralink,function = "gpio";
+ };
+ rgmii {
+ ralink,group = "rgmii";
+ ralink,function = "rgmii";
+ };
+ mdio {
+ ralink,group = "mdio";
+ ralink,function = "mdio";
+ };
+ };
};
esw@10110000 {
- status = "okay";
ralink,portmap = <0x2f>;
};
@@ -102,8 +104,4 @@
linux,code = <0x211>;
};
};
-
- wmac@10180000 {
- status = "okay";
- };
};
diff --git a/target/linux/ramips/dts/DIR-620-A1.dts b/target/linux/ramips/dts/DIR-620-A1.dts
index 87292246e7..649b3abcc1 100644
--- a/target/linux/ramips/dts/DIR-620-A1.dts
+++ b/target/linux/ramips/dts/DIR-620-A1.dts
@@ -6,17 +6,13 @@
compatible = "DIR-620-A1", "ralink,rt3050-soc";
model = "D-Link DIR-620 A1";
- palmbus@10000000 {
- sysc@0 {
- ralink,pinmux = "i2c", "spi", "uartlite", "jtag", "mdio", "sdram", "rgmii";
- ralink,uartmux = "gpio";
- ralink,wdtmux = <1>;
+ pinctrl {
+ state_default: pinctrl0 {
+ gpio {
+ ralink,group = "i2c", "jtag", "rgmii", "mdio", "uartf";
+ ralink,function = "gpio";
+ };
};
-
- gpio0: gpio@600 {
- status = "okay";
- };
-
};
cfi@1f000000 {
@@ -52,12 +48,7 @@
};
};
- ethernet@10100000 {
- status = "okay";
- };
-
esw@10110000 {
- status = "okay";
ralink,portmap = <0x2f>;
};
@@ -78,10 +69,6 @@
};
};
- wmac@10180000 {
- status = "okay";
- };
-
gpio-leds {
compatible = "gpio-leds";
status {
diff --git a/target/linux/ramips/dts/DIR-620-D1.dts b/target/linux/ramips/dts/DIR-620-D1.dts
index c1df99d549..71d3ec2bfd 100644
--- a/target/linux/ramips/dts/DIR-620-D1.dts
+++ b/target/linux/ramips/dts/DIR-620-D1.dts
@@ -7,17 +7,6 @@
model = "D-Link DIR-620 D1";
palmbus@10000000 {
- sysc@0 {
- ralink,pinmux = "i2c", "spi", "uartlite", "mdio", "sdram", "rgmii";
- ralink,gpiomux = "jtag";
- ralink,uartmux = "gpio";
- ralink,wdtmux = <1>;
- };
-
- gpio0: gpio@600 {
- status = "okay";
- };
-
spi@b00 {
status = "okay";
m25p80@0 {
@@ -54,12 +43,24 @@
};
};
- ethernet@10100000 {
- status = "okay";
+ pinctrl {
+ state_default: pinctrl0 {
+ gpio {
+ ralink,group = "i2c", "jtag", "uartf";
+ ralink,function = "gpio";
+ };
+ rgmii {
+ ralink,group = "rgmii";
+ ralink,function = "rgmii";
+ };
+ mdio {
+ ralink,group = "mdio";
+ ralink,function = "mdio";
+ };
+ };
};
esw@10110000 {
- status = "okay";
ralink,portmap = <0x2f>;
};
@@ -87,10 +88,6 @@
};
};
- wmac@10180000 {
- status = "okay";
- };
-
ehci@101c0000 {
status = "okay";
};
diff --git a/target/linux/ramips/dts/DIR-645.dts b/target/linux/ramips/dts/DIR-645.dts
index e5ccb40ec6..938055c8c9 100644
--- a/target/linux/ramips/dts/DIR-645.dts
+++ b/target/linux/ramips/dts/DIR-645.dts
@@ -7,21 +7,6 @@
model = "D-Link DIR-645";
palmbus@10000000 {
- sysc@0 {
- ralink,pinmux = "uartlite", "spi";
- ralink,gpiomux = "i2c", "jtag";
- ralink,uartmux = "gpio";
- ralink,wdtmux = <1>;
- };
-
- timer@100 {
- status = "okay";
- };
-
- gpio0: gpio@600 {
- status = "okay";
- };
-
gpio1: gpio@638 {
status = "okay";
};
@@ -68,18 +53,23 @@
};
};
- ethernet@10100000 {
- status = "okay";
+ pinctrl {
+ state_default: pinctrl0 {
+ gpio {
+ ralink,group = "i2c", "jtag", "uartf";
+ ralink,function = "gpio";
+ };
+ };
+ };
+ ethernet@10100000 {
mtd-mac-address = <&factory 0x28>;
port@0 {
ralink,fixed-link = <1000 1 1 0>;
};
-
};
wmac@10180000 {
- status = "okay";
ralink,5ghz = <0>;
};
diff --git a/target/linux/ramips/dts/DIR-810L.dts b/target/linux/ramips/dts/DIR-810L.dts
index 193771b5a6..6da0976c2b 100644
--- a/target/linux/ramips/dts/DIR-810L.dts
+++ b/target/linux/ramips/dts/DIR-810L.dts
@@ -7,17 +7,6 @@
model = "D-Link DIR-810L";
palmbus@10000000 {
- sysc@0 {
- ralink,pinmux = "spi", "uartlite", "ephy";
- ralink,gpiomux = "jtag", "mdio", "rgmii1", "rgmii1", "i2c", "wled";
- ralink,uartmux = "gpio";
- ralink,wdtmux = <1>;
- };
-
- gpio0: gpio@600 {
- status = "okay";
- };
-
spi@b00 {
status = "okay";
@@ -79,13 +68,20 @@
};
};
- ethernet@10100000 {
- status = "okay";
+ pinctrl {
+ state_default: pinctrl0 {
+ gpio {
+ ralink,group = "jtag", "mdio", "rgmii1", "rgmii1", "i2c", "wled", "uartf";
+ ralink,function = "gpio";
+ };
+ };
};
gsw@10110000 {
- status = "okay";
ralink,port4 = "ephy";
+
+ pinctrl-names = "default";
+ pinctrl-0 = <&ephy_pins>;
};
pcie@10140000 {
diff --git a/target/linux/ramips/dts/ESR-9753.dts b/target/linux/ramips/dts/ESR-9753.dts
index 5c5f0bbbe8..755196b55b 100644
--- a/target/linux/ramips/dts/ESR-9753.dts
+++ b/target/linux/ramips/dts/ESR-9753.dts
@@ -6,17 +6,13 @@
compatible = "ESR-9753", "ralink,rt3052-soc";
model = "Senao / EnGenius ESR-9753";
- palmbus@10000000 {
- sysc@0 {
- ralink,pinmux = "i2c", "spi", "uartlite", "jtag", "mdio", "sdram", "rgmii";
- ralink,uartmux = "gpio";
- ralink,wdtmux = <1>;
+ pinctrl {
+ state_default: pinctrl0 {
+ gpio {
+ ralink,group = "spi", "i2c", "jtag", "rgmii", "mdio", "uartf";
+ ralink,function = "gpio";
+ };
};
-
- gpio0: gpio@600 {
- status = "okay";
- };
-
};
cfi@1f000000 {
@@ -81,16 +77,7 @@
};
};
- ethernet@10100000 {
- status = "okay";
- };
-
esw@10110000 {
- status = "okay";
ralink,portmap = <0x3e>;
};
-
- wmac@10180000 {
- status = "okay";
- };
};
diff --git a/target/linux/ramips/dts/F5D8235_V1.dts b/target/linux/ramips/dts/F5D8235_V1.dts
index 52b789b76c..36026c2326 100644
--- a/target/linux/ramips/dts/F5D8235_V1.dts
+++ b/target/linux/ramips/dts/F5D8235_V1.dts
@@ -9,18 +9,20 @@
model = "Belkin F5D8235 v1";
palmbus@300000 {
- sysc@0 {
- ralink,pinmux = "uartlite";
- ralink,gpiomux = "i2c";
- ralink,uartmux = "gpio";
- ralink,wdtmux = <1>;
- };
-
gpio0: gpio@600 {
status = "okay";
};
};
+ pinctrl {
+ state_default: pinctrl0 {
+ gpio {
+ ralink,group = "spi", "i2c", "jtag", "rgmii", "mdio", "uartf";
+ ralink,function = "gpio";
+ };
+ };
+ };
+
cfi@1f000000 {
compatible = "cfi-flash";
reg = <0x1f000000 0x800000>;
diff --git a/target/linux/ramips/dts/F5D8235_V2.dts b/target/linux/ramips/dts/F5D8235_V2.dts
index 10b8037810..237709f5e4 100644
--- a/target/linux/ramips/dts/F5D8235_V2.dts
+++ b/target/linux/ramips/dts/F5D8235_V2.dts
@@ -6,18 +6,13 @@
compatible = "F5D8235_V2", "ralink,rt3052-soc";
model = "Belkin F5D8235 v2";
- palmbus@10000000 {
- sysc@0 {
- ralink,pinmux = "uartlite", "jtag", "sdram", "rgmii";
- ralink,gpiomux = "i2c", "spi", "mdio";
- ralink,uartmux = "gpio";
- ralink,wdtmux = <1>;
+ pinctrl {
+ state_default: pinctrl0 {
+ gpio {
+ ralink,group = "spi", "i2c", "jtag", "rgmii", "mdio", "uartf";
+ ralink,function = "gpio";
+ };
};
-
- gpio0: gpio@600 {
- status = "okay";
- };
-
};
cfi@1f000000 {
@@ -51,19 +46,10 @@
};
};
- ethernet@10100000 {
- status = "okay";
- };
-
esw@10110000 {
- status = "okay";
ralink,portmap = <0x3f>;
};
- wmac@10180000 {
- status = "okay";
- };
-
otg@101c0000 {
status = "okay";
};
diff --git a/target/linux/ramips/dts/F7C027.dts b/target/linux/ramips/dts/F7C027.dts
index 91d4383812..ea716257ef 100644
--- a/target/linux/ramips/dts/F7C027.dts
+++ b/target/linux/ramips/dts/F7C027.dts
@@ -7,16 +7,6 @@
model = "Belkin F7C027";
palmbus@10000000 {
- sysc@0 {
- ralink,pinmux = "spi", "uartlite", "jtag", "sdram";
- ralink,uartmux = "gpio";
- ralink,wdtmux = <1>;
- };
-
- gpio0: gpio@600 {
- status = "okay";
- };
-
spi@b00 {
status = "okay";
m25p80@0 {
@@ -78,9 +68,13 @@
};
};
-
- wmac@10180000 {
- status = "okay";
+ pinctrl {
+ state_default: pinctrl0 {
+ gpio {
+ ralink,group = "i2c", "jtag", "uartf";
+ ralink,function = "gpio";
+ };
+ };
};
gpio-leds {
diff --git a/target/linux/ramips/dts/FONERA20N.dts b/target/linux/ramips/dts/FONERA20N.dts
index 38007a7bc9..31e087b5fc 100644
--- a/target/linux/ramips/dts/FONERA20N.dts
+++ b/target/linux/ramips/dts/FONERA20N.dts
@@ -6,17 +6,13 @@
compatible = "FONERA20N", "ralink,rt3052-soc";
model = "La Fonera 2.0N";
- palmbus@10000000 {
- sysc@0 {
- ralink,pinmux = "i2c", "spi", "uartlite", "jtag", "mdio", "sdram", "rgmii";
- ralink,uartmux = "gpio";
- ralink,wdtmux = <1>;
+ pinctrl {
+ state_default: pinctrl0 {
+ gpio {
+ ralink,group = "i2c", "spi", "jtag", "mdio", "rgmii", "uartf";
+ ralink,function = "gpio";
+ };
};
-
- gpio0: gpio@600 {
- status = "okay";
- };
-
};
cfi@1f000000 {
@@ -85,12 +81,7 @@
};
};
- ethernet@10100000 {
- status = "okay";
- };
-
esw@10110000 {
- status = "okay";
ralink,portmap = <0x2f>;
port@0 {
@@ -120,10 +111,6 @@
};
};
- wmac@10180000 {
- status = "okay";
- };
-
otg@101c0000 {
status = "okay";
};
diff --git a/target/linux/ramips/dts/FREESTATION5.dts b/target/linux/ramips/dts/FREESTATION5.dts
index a3cc8fc97d..0ec390c4c8 100644
--- a/target/linux/ramips/dts/FREESTATION5.dts
+++ b/target/linux/ramips/dts/FREESTATION5.dts
@@ -10,15 +10,12 @@
bootargs = "console=ttyS0,115200";
};
- palmbus@10000000 {
- sysc@0 {
- ralink,pinmux = "i2c", "spi", "uartlite", "jtag", "mdio", "sdram", "rgmii";
- ralink,uartmux = "gpio";
- ralink,wdtmux = <1>;
- };
-
- gpio0: gpio@600 {
- status = "okay";
+ pinctrl {
+ state_default: pinctrl0 {
+ gpio {
+ ralink,group = "spi", "i2c", "jtag", "rgmii", "mdio", "uartf";
+ ralink,function = "gpio";
+ };
};
};
@@ -55,19 +52,10 @@
};
};
- ethernet@10100000 {
- status = "okay";
- };
-
esw@10110000 {
- status = "okay";
ralink,portmap = <0x01>;
};
- wmac@10180000 {
- status = "okay";
- };
-
otg@101c0000 {
status = "okay";
};
diff --git a/target/linux/ramips/dts/HG255D.dts b/target/linux/ramips/dts/HG255D.dts
index 7ecb4f36df..09d7a45105 100644
--- a/target/linux/ramips/dts/HG255D.dts
+++ b/target/linux/ramips/dts/HG255D.dts
@@ -6,15 +6,12 @@
compatible = "HG255D", "ralink,rt3052-soc";
model = "HuaWei HG255D";
- palmbus@10000000 {
- sysc@0 {
- ralink,pinmux = "i2c", "spi", "uartlite", "jtag", "mdio", "sdram", "rgmii";
- ralink,uartmux = "gpio";
- ralink,wdtmux = <1>;
- };
-
- gpio0: gpio@600 {
- status = "okay";
+ pinctrl {
+ state_default: pinctrl0 {
+ gpio {
+ ralink,group = "spi", "i2c", "jtag", "rgmii", "mdio", "uartf";
+ ralink,function = "gpio";
+ };
};
};
@@ -107,19 +104,10 @@
};
};
- ethernet@10100000 {
- status = "okay";
- };
-
esw@10110000 {
- status = "okay";
ralink,portmap = <0x2f>;
};
- wmac@10180000 {
- status = "okay";
- };
-
otg@101c0000 {
status = "okay";
};
diff --git a/target/linux/ramips/dts/HW550-3G.dts b/target/linux/ramips/dts/HW550-3G.dts
index 80adb0af39..d107b55396 100644
--- a/target/linux/ramips/dts/HW550-3G.dts
+++ b/target/linux/ramips/dts/HW550-3G.dts
@@ -6,18 +6,13 @@
compatible = "HW550-3G", "ralink,rt3052-soc";
model = "Aztech HW550-3G";
- palmbus@10000000 {
- sysc@0 {
- ralink,pinmux = "i2c", "spi", "uartlite", "jtag", "sdram", "rgmii";
- ralink,gpiomux = "mdio";
- ralink,uartmux = "gpio";
- ralink,wdtmux = <1>;
+ pinctrl {
+ state_default: pinctrl0 {
+ gpio {
+ ralink,group = "spi", "i2c", "jtag", "rgmii", "mdio", "uartf";
+ ralink,function = "gpio";
+ };
};
-
- gpio0: gpio@600 {
- status = "okay";
- };
-
};
cfi@1f000000 {
@@ -53,12 +48,7 @@
};
};
- ethernet@10100000 {
- status = "okay";
- };
-
esw@10110000 {
- status = "okay";
ralink,portmap = <0x3e>;
};
@@ -104,10 +94,6 @@
};
};
- wmac@10180000 {
- status = "okay";
- };
-
otg@101c0000 {
status = "okay";
};
diff --git a/target/linux/ramips/dts/IP2202.dts b/target/linux/ramips/dts/IP2202.dts
index ea9f1702e6..ea5dc780a3 100644
--- a/target/linux/ramips/dts/IP2202.dts
+++ b/target/linux/ramips/dts/IP2202.dts
@@ -6,18 +6,13 @@
compatible = "IP2202", "ralink,rt3052-soc";
model = "Poray IP2202";
- palmbus@10000000 {
- sysc@0 {
- ralink,pinmux = "i2c", "spi", "uartlite", "jtag", "sdram", "rgmii";
- ralink,gpiomux = "mdio";
- ralink,uartmux = "gpio";
- ralink,wdtmux = <1>;
+ pinctrl {
+ state_default: pinctrl0 {
+ gpio {
+ ralink,group = "spi", "i2c", "jtag", "rgmii", "mdio", "uartf";
+ ralink,function = "gpio";
+ };
};
-
- gpio0: gpio@600 {
- status = "okay";
- };
-
};
cfi@1f000000 {
@@ -53,12 +48,7 @@
};
};
- ethernet@10100000 {
- status = "okay";
- };
-
esw@10110000 {
- status = "okay";
ralink,portmap = <0x2f>;
};
@@ -86,11 +76,6 @@
};
};
- wmac@10180000 {
- status = "okay";
- ralink,led-polarity = <0>;
- };
-
otg@101c0000 {
status = "okay";
};
diff --git a/target/linux/ramips/dts/M3.dts b/target/linux/ramips/dts/M3.dts
index 3e391b3d62..bae84ce4bf 100644
--- a/target/linux/ramips/dts/M3.dts
+++ b/target/linux/ramips/dts/M3.dts
@@ -7,17 +7,6 @@
model = "Poray M3";
palmbus@10000000 {
- sysc@0 {
- ralink,pinmux = "i2c", "spi", "uartlite", "mdio", "sdram", "rgmii";
- ralink,gpiomux = "jtag";
- ralink,uartmux = "gpio";
- ralink,wdtmux = <1>;
- };
-
- gpio0: gpio@600 {
- status = "okay";
- };
-
spi@b00 {
status = "okay";
m25p80@0 {
@@ -54,12 +43,16 @@
};
};
- ethernet@10100000 {
- status = "okay";
+ pinctrl {
+ state_default: pinctrl0 {
+ gpio {
+ ralink,group = "i2c", "jtag", "uartf";
+ ralink,function = "gpio";
+ };
+ };
};
esw@10110000 {
- status = "okay";
ralink,portmap = <0x2f>;
ralink,led_polarity = <1>;
};
@@ -91,7 +84,6 @@
};
wmac@10180000 {
- status = "okay";
ralink,mtd-eeprom = <&factory 0>;
ralink,led-polarity = <1>;
};
diff --git a/target/linux/ramips/dts/M4-4M.dts b/target/linux/ramips/dts/M4-4M.dts
index 86bd8327c1..4522fb8019 100644
--- a/target/linux/ramips/dts/M4-4M.dts
+++ b/target/linux/ramips/dts/M4-4M.dts
@@ -7,16 +7,6 @@
model = "Poray M4";
palmbus@10000000 {
- sysc@0 {
- ralink,pinmux = "i2c", "spi", "uartlite", "jtag", "mdio", "sdram", "rgmii";
- ralink,uartmux = "gpio";
- ralink,wdtmux = <1>;
- };
-
- gpio0: gpio@600 {
- status = "okay";
- };
-
spi@b00 {
status = "okay";
m25p80@0 {
@@ -53,12 +43,16 @@
};
};
- ethernet@10100000 {
- status = "okay";
+ pinctrl {
+ state_default: pinctrl0 {
+ gpio {
+ ralink,group = "i2c", "jtag", "uartf";
+ ralink,function = "gpio";
+ };
+ };
};
esw@10110000 {
- status = "okay";
ralink,portmap = <0x2f>;
ralink,led_polarity = <1>;
};
@@ -83,12 +77,6 @@
};
};
- wmac@10180000 {
- status = "okay";
- ralink,mtd-eeprom = <&factory 0>;
- ralink,led-polarity = <1>;
- };
-
ehci@101c0000 {
status = "okay";
};
diff --git a/target/linux/ramips/dts/M4-8M.dts b/target/linux/ramips/dts/M4-8M.dts
index d07eb4978a..c8e7ff51ff 100644
--- a/target/linux/ramips/dts/M4-8M.dts
+++ b/target/linux/ramips/dts/M4-8M.dts
@@ -7,16 +7,6 @@
model = "Poray M4";
palmbus@10000000 {
- sysc@0 {
- ralink,pinmux = "i2c", "spi", "uartlite", "jtag", "mdio", "sdram", "rgmii";
- ralink,uartmux = "gpio";
- ralink,wdtmux = <1>;
- };
-
- gpio0: gpio@600 {
- status = "okay";
- };
-
spi@b00 {
status = "okay";
m25p80@0 {
@@ -53,12 +43,16 @@
};
};
- ethernet@10100000 {
- status = "okay";
+ pinctrl {
+ state_default: pinctrl0 {
+ gpio {
+ ralink,group = "i2c", "jtag", "uartf";
+ ralink,function = "gpio";
+ };
+ };
};
esw@10110000 {
- status = "okay";
ralink,portmap = <0x2f>;
ralink,led_polarity = <1>;
};
@@ -84,7 +78,6 @@
};
wmac@10180000 {
- status = "okay";
ralink,mtd-eeprom = <&factory 0>;
ralink,led-polarity = <1>;
};
diff --git a/target/linux/ramips/dts/MOFI3500-3GN.dts b/target/linux/ramips/dts/MOFI3500-3GN.dts
index 80cd727463..058b7a27a3 100644
--- a/target/linux/ramips/dts/MOFI3500-3GN.dts
+++ b/target/linux/ramips/dts/MOFI3500-3GN.dts
@@ -6,18 +6,13 @@
compatible = "MOFI3500-3GN", "ralink,rt3052-soc";
model = "MoFi Network MOFI3500-3GN";
- palmbus@10000000 {
- sysc@0 {
- ralink,pinmux = "i2c", "spi", "uartlite", "jtag", "sdram", "rgmii";
- ralink,gpiomux = "mdio";
- ralink,uartmux = "gpio";
- ralink,wdtmux = <1>;
+ pinctrl {
+ state_default: pinctrl0 {
+ gpio {
+ ralink,group = "spi", "i2c", "jtag", "rgmii", "mdio", "uartf";
+ ralink,function = "gpio";
+ };
};
-
- gpio0: gpio@600 {
- status = "okay";
- };
-
};
cfi@1f000000 {
@@ -53,12 +48,7 @@
};
};
- ethernet@10100000 {
- status = "okay";
- };
-
esw@10110000 {
- status = "okay";
ralink,portmap = <0x2f>;
};
diff --git a/target/linux/ramips/dts/MPRA1.dts b/target/linux/ramips/dts/MPRA1.dts
index 44363ef616..f363a573f5 100644
--- a/target/linux/ramips/dts/MPRA1.dts
+++ b/target/linux/ramips/dts/MPRA1.dts
@@ -7,17 +7,6 @@
model = "HAME MPR-A1";
palmbus@10000000 {
- sysc@0 {
- ralink,pinmux = "spi", "uartlite", "sdram";
- ralink,gpiomux = "jtag", "i2c", "mdio", "rgmii";
- ralink,uartmux = "gpio";
- ralink,wdtmux = <1>;
- };
-
- gpio0: gpio@600 {
- status = "okay";
- };
-
spi@b00 {
status = "okay";
m25p80@0 {
@@ -54,19 +43,19 @@
};
};
- ethernet@10100000 {
- status = "okay";
+ pinctrl {
+ state_default: pinctrl0 {
+ gpio {
+ ralink,group = "i2c", "jtag", "rgmii", "mdio", "uartf";
+ ralink,function = "gpio";
+ };
+ };
};
esw@10110000 {
- status = "okay";
ralink,portmap = <0x2f>;
};
- wmac@10180000 {
- status = "okay";
- };
-
ehci@101c0000 {
status = "okay";
};
diff --git a/target/linux/ramips/dts/MPRA2.dts b/target/linux/ramips/dts/MPRA2.dts
index b9bfdc8d4d..00c5d112e3 100644
--- a/target/linux/ramips/dts/MPRA2.dts
+++ b/target/linux/ramips/dts/MPRA2.dts
@@ -7,17 +7,6 @@
model = "HAME MPR-A2";
palmbus@10000000 {
- sysc@0 {
- ralink,pinmux = "i2c", "spi", "uartlite", "mdio", "sdram", "rgmii";
- ralink,gpiomux = "jtag";
- ralink,uartmux = "gpio";
- ralink,wdtmux = <1>;
- };
-
- gpio0: gpio@600 {
- status = "okay";
- };
-
spi@b00 {
status = "okay";
m25p80@0 {
@@ -54,19 +43,19 @@
};
};
- ethernet@10100000 {
- status = "okay";
+ pinctrl {
+ state_default: pinctrl0 {
+ gpio {
+ ralink,group = "i2c", "jtag", "rgmii", "mdio", "uartf";
+ ralink,function = "gpio";
+ };
+ };
};
esw@10110000 {
- status = "okay";
ralink,portmap = <0x2f>;
};
- wmac@10180000 {
- status = "okay";
- };
-
ehci@101c0000 {
status = "okay";
};
diff --git a/target/linux/ramips/dts/MT7620a.dts b/target/linux/ramips/dts/MT7620a.dts
index 417370080d..a14d682912 100644
--- a/target/linux/ramips/dts/MT7620a.dts
+++ b/target/linux/ramips/dts/MT7620a.dts
@@ -7,17 +7,6 @@
model = "Ralink MT7620a + MT7610e evaluation board";
palmbus@10000000 {
- sysc@0 {
- ralink,pinmux = "spi", "uartlite", "mdio", "wled", "ephy", "rgmii1", "rgmii2";
- ralink,gpiomux = "i2c", "jtag";
- ralink,uartmux = "gpio";
- ralink,wdtmux = <1>;
- };
-
- gpio0: gpio@600 {
- status = "okay";
- };
-
spi@b00 {
status = "okay";
@@ -55,6 +44,15 @@
};
};
+ pinctrl {
+ state_default: pinctrl0 {
+ gpio {
+ ralink,group = "jtag", "mdio", "rgmii1", "rgmii1", "i2c", "uartf";
+ ralink,function = "gpio";
+ };
+ };
+ };
+
ethernet@10100000 {
status = "okay";
@@ -88,8 +86,10 @@
};
gsw@10110000 {
- status = "okay";
ralink,port4 = "gmac";
+
+ pinctrl-names = "default";
+ pinctrl-0 = <&ephy_pins>;
};
sdhci@10130000 {
diff --git a/target/linux/ramips/dts/MT7620a_MT7610e.dts b/target/linux/ramips/dts/MT7620a_MT7610e.dts
index 03b8043dd1..4ff8747562 100644
--- a/target/linux/ramips/dts/MT7620a_MT7610e.dts
+++ b/target/linux/ramips/dts/MT7620a_MT7610e.dts
@@ -6,10 +6,8 @@
compatible = "ralink,mt7620a-eval-board", "ralink,mt7620a-soc";
model = "Ralink MT7620A evaluation board";
-
palmbus@10000000 {
sysc@0 {
- ralink,pinmux = "spi", "uartlite", "mdio", "wled", "ephy", "rgmii1", "rgmii2";
ralink,gpiomux = "i2c", "jtag";
ralink,uartmux = "gpio";
ralink,wdtmux = <1>;
@@ -28,7 +26,7 @@
compatible = "en25q64";
reg = <0 0>;
linux,modalias = "m25p80", "en25q64";
- spi-max-frequency = <10000000>;
+ spi-max-frequency = <1000000>;
partition@0 {
label = "u-boot";
@@ -58,6 +56,9 @@
ethernet@10100000 {
status = "okay";
+
+ pinctrl-names = "default";
+ pinctrl-0 = <&ephy_pins>;
};
gsw@10110000 {
diff --git a/target/linux/ramips/dts/MZK-W300NH2.dts b/target/linux/ramips/dts/MZK-W300NH2.dts
index 29032b450f..78c120a5bf 100644
--- a/target/linux/ramips/dts/MZK-W300NH2.dts
+++ b/target/linux/ramips/dts/MZK-W300NH2.dts
@@ -6,16 +6,12 @@
compatible = "MZK-W300NH2", "ralink,rt3052-soc";
model = "Planex MZK-W300NH2";
- palmbus@10000000 {
- sysc@0 {
- ralink,pinmux = "uartlite", "mdio", "sdram", "rgmii";
- ralink,gpiomux = "i2c", "spi", "jtag";
- ralink,uartmux = "gpio";
- ralink,wdtmux = <1>;
- };
-
- gpio0: gpio@600 {
- status = "okay";
+ pinctrl {
+ state_default: pinctrl0 {
+ gpio {
+ ralink,group = "spi", "i2c", "jtag", "rgmii", "mdio", "uartf";
+ ralink,function = "gpio";
+ };
};
};
@@ -58,12 +54,7 @@
};
};
- ethernet@10100000 {
- status = "okay";
- };
-
esw@10110000 {
- status = "okay";
ralink,portmap = <0x2f>;
};
@@ -104,8 +95,4 @@
linux,code = <0x100>;
};
};
-
- wmac@10180000 {
- status = "okay";
- };
};
diff --git a/target/linux/ramips/dts/NBG-419N.dts b/target/linux/ramips/dts/NBG-419N.dts
index 6948120058..c7d66c410e 100644
--- a/target/linux/ramips/dts/NBG-419N.dts
+++ b/target/linux/ramips/dts/NBG-419N.dts
@@ -6,15 +6,12 @@
compatible = "NBG-419N", "ralink,rt3052-soc";
model = "ZyXEL NBG-419N";
- palmbus@10000000 {
- sysc@0 {
- ralink,pinmux = "i2c", "spi", "uartlite", "jtag", "mdio", "sdram", "rgmii";
- ralink,uartmux = "gpio";
- ralink,wdtmux = <1>;
- };
-
- gpio0: gpio@600 {
- status = "okay";
+ pinctrl {
+ state_default: pinctrl0 {
+ gpio {
+ ralink,group = "spi", "i2c", "jtag", "rgmii", "mdio", "uartf";
+ ralink,function = "gpio";
+ };
};
};
@@ -51,12 +48,7 @@
};
};
- ethernet@10100000 {
- status = "okay";
- };
-
esw@10110000 {
- status = "okay";
ralink,portmap = <0x2f>;
};
@@ -88,8 +80,4 @@
linux,code = <0x211>;
};
};
-
- wmac@10180000 {
- status = "okay";
- };
};
diff --git a/target/linux/ramips/dts/NW718.dts b/target/linux/ramips/dts/NW718.dts
index 78ad1d63a8..d55f226785 100644
--- a/target/linux/ramips/dts/NW718.dts
+++ b/target/linux/ramips/dts/NW718.dts
@@ -7,17 +7,6 @@
model = "Netcore NW718";
palmbus@10000000 {
- sysc@0 {
- ralink,pinmux = "spi", "uartlite", "jtag", "mdio", "sdram", "rgmii";
- ralink,gpiomux = "i2c";
- ralink,uartmux = "gpio";
- ralink,wdtmux = <1>;
- };
-
- gpio0: gpio@600 {
- status = "okay";
- };
-
spi@b00 {
status = "okay";
m25p80@0 {
@@ -54,12 +43,16 @@
};
};
- ethernet@10100000 {
- status = "okay";
+ pinctrl {
+ state_default: pinctrl0 {
+ gpio {
+ ralink,group = "i2c", "jtag", "rgmii", "mdio", "uartf";
+ ralink,function = "gpio";
+ };
+ };
};
esw@10110000 {
- status = "okay";
ralink,portmap = <0x2f>;
};
@@ -96,10 +89,6 @@
};
};
- wmac@10180000 {
- status = "okay";
- };
-
otg@101c0000 {
status = "okay";
};
diff --git a/target/linux/ramips/dts/OMNI-EMB-HPM.dts b/target/linux/ramips/dts/OMNI-EMB-HPM.dts
index 8148294893..9bceb00128 100644
--- a/target/linux/ramips/dts/OMNI-EMB-HPM.dts
+++ b/target/linux/ramips/dts/OMNI-EMB-HPM.dts
@@ -11,21 +11,6 @@
};
palmbus@10000000 {
- sysc@0 {
- ralink,pinmux = "uartlite", "spi";
- ralink,gpiomux = "i2c", "jtag";
- ralink,uartmux = "gpio";
- ralink,wdtmux = <1>;
- };
-
- timer@100 {
- status = "okay";
- };
-
- gpio0: gpio@600 {
- status = "okay";
- };
-
spi@b00 {
status = "okay";
@@ -63,9 +48,16 @@
};
};
- ethernet@10100000 {
- status = "okay";
+ pinctrl {
+ state_default: pinctrl0 {
+ gpio {
+ ralink,group = "i2c", "jtag", "uartf";
+ ralink,function = "gpio";
+ };
+ };
+ };
+ ethernet@10100000 {
phy-handle = <&phy0>;
phy-mode = "rgmii";
@@ -78,10 +70,6 @@
};
};
- wmac@10180000 {
- status = "okay";
- };
-
ehci@101c0000 {
status = "okay";
};
diff --git a/target/linux/ramips/dts/OMNI-EMB.dts b/target/linux/ramips/dts/OMNI-EMB.dts
index 704a5a1665..146e79b245 100644
--- a/target/linux/ramips/dts/OMNI-EMB.dts
+++ b/target/linux/ramips/dts/OMNI-EMB.dts
@@ -6,15 +6,12 @@
compatible = "OMNI-EMB", "ralink,rt3052-soc";
model = "Omnima MiniEMBWiFi";
- palmbus@10000000 {
- sysc@0 {
- ralink,pinmux = "i2c", "spi", "uartlite", "jtag", "mdio", "sdram", "rgmii";
- ralink,uartmux = "gpio";
- ralink,wdtmux = <1>;
- };
-
- gpio0: gpio@600 {
- status = "okay";
+ pinctrl {
+ state_default: pinctrl0 {
+ gpio {
+ ralink,group = "spi", "i2c", "jtag", "rgmii", "mdio", "uartf";
+ ralink,function = "gpio";
+ };
};
};
@@ -75,19 +72,10 @@
};
};
- ethernet@10100000 {
- status = "okay";
- };
-
esw@10110000 {
- status = "okay";
ralink,portmap = <0x2f>;
};
- wmac@10180000 {
- status = "okay";
- };
-
otg@101c0000 {
status = "okay";
};
diff --git a/target/linux/ramips/dts/PSR-680W.dts b/target/linux/ramips/dts/PSR-680W.dts
index f91eb2fe7f..ec06feee0c 100644
--- a/target/linux/ramips/dts/PSR-680W.dts
+++ b/target/linux/ramips/dts/PSR-680W.dts
@@ -10,16 +10,12 @@
bootargs = "console=ttyS0,115200";
};
- palmbus@10000000 {
- sysc@0 {
- ralink,pinmux = "i2c", "uartlite", "sdram";
- ralink,gpiomux = "spi", "jtag", "mdio", "rgmii";
- ralink,uartmux = "i2s uartf";
- ralink,wdtmux = <1>;
- };
-
- gpio0: gpio@600 {
- status = "okay";
+ pinctrl {
+ state_default: pinctrl0 {
+ gpio {
+ ralink,group = "spi", "i2c", "jtag", "rgmii", "mdio", "uartf";
+ ralink,function = "gpio";
+ };
};
};
@@ -56,12 +52,7 @@
};
};
- ethernet@10100000 {
- status = "okay";
- };
-
esw@10110000 {
- status = "okay";
ralink,portmap = <0x3e>;
};
@@ -85,10 +76,6 @@
};
};
- wmac@10180000 {
- status = "okay";
- };
-
otg@101c0000 {
status = "okay";
};
diff --git a/target/linux/ramips/dts/PWH2004.dts b/target/linux/ramips/dts/PWH2004.dts
index d526e836db..bee5e0f266 100644
--- a/target/linux/ramips/dts/PWH2004.dts
+++ b/target/linux/ramips/dts/PWH2004.dts
@@ -6,17 +6,13 @@
compatible = "PWH2004", "ralink,rt3052-soc";
model = "Prolink PWH2004";
- palmbus@10000000 {
- sysc@0 {
- ralink,pinmux = "i2c", "spi", "uartlite", "jtag", "mdio", "sdram", "rgmii";
- ralink,uartmux = "gpio";
- ralink,wdtmux = <1>;
+ pinctrl {
+ state_default: pinctrl0 {
+ gpio {
+ ralink,group = "spi", "i2c", "jtag", "rgmii", "mdio", "uartf";
+ ralink,function = "gpio";
+ };
};
-
- gpio0: gpio@600 {
- status = "okay";
- };
-
};
cfi@1f000000 {
@@ -76,16 +72,7 @@
};
};
- ethernet@10100000 {
- status = "okay";
- };
-
esw@10110000 {
- status = "okay";
ralink,portmap = <0x2f>;
};
-
- wmac@10180000 {
- status = "okay";
- };
};
diff --git a/target/linux/ramips/dts/RP-N53.dts b/target/linux/ramips/dts/RP-N53.dts
index c1de105423..e13c3af194 100644
--- a/target/linux/ramips/dts/RP-N53.dts
+++ b/target/linux/ramips/dts/RP-N53.dts
@@ -7,17 +7,6 @@
model = "Asus RP-N53";
palmbus@10000000 {
- sysc@0 {
- ralink,pinmux = "spi", "uartlite", "wled", "ephy", "i2c";
- ralink,gpiomux = "jtag", "mdio", "rgmii1", "rgmii1";
- ralink,uartmux = "gpio";
- ralink,wdtmux = <1>;
- };
-
- gpio0: gpio@600 {
- status = "okay";
- };
-
gpio1: gpio@638 {
status = "okay";
};
@@ -63,17 +52,24 @@
};
};
- codec {
- compatible = "ralink,mt7620-audio";
+ pinctrl {
+ state_default: pinctrl0 {
+ gpio {
+ ralink,group = "jtag", "mdio", "rgmii1", "rgmii1", "i2c", "uartf";
+ ralink,function = "gpio";
+ };
+ };
};
- ethernet@10100000 {
- status = "okay";
+ codec {
+ compatible = "ralink,mt7620-audio";
};
gsw@10110000 {
- status = "okay";
ralink,port4 = "ephy";
+
+ pinctrl-names = "default";
+ pinctrl-0 = <&ephy_pins>;
};
pcie@10140000 {
diff --git a/target/linux/ramips/dts/RT-G32-B1.dts b/target/linux/ramips/dts/RT-G32-B1.dts
index c03a7ba5b7..86abc9ca66 100644
--- a/target/linux/ramips/dts/RT-G32-B1.dts
+++ b/target/linux/ramips/dts/RT-G32-B1.dts
@@ -7,16 +7,6 @@
model = "Asus RT-G32 B1";
palmbus@10000000 {
- sysc@0 {
- ralink,pinmux = "i2c", "spi", "uartlite", "jtag", "mdio", "sdram", "rgmii";
- ralink,uartmux = "gpio";
- ralink,wdtmux = <1>;
- };
-
- gpio0: gpio@600 {
- status = "okay";
- };
-
spi@b00 {
status = "okay";
m25p80@0 {
@@ -53,12 +43,16 @@
};
};
- ethernet@10100000 {
- status = "okay";
+ pinctrl {
+ state_default: pinctrl0 {
+ gpio {
+ ralink,group = "i2c", "jtag", "rgmii", "mdio", "uartf";
+ ralink,function = "gpio";
+ };
+ };
};
esw@10110000 {
- status = "okay";
ralink,portmap = <0x2f>;
};
@@ -78,8 +72,4 @@
linux,code = <0x211>;
};
};
-
- wmac@10180000 {
- status = "okay";
- };
};
diff --git a/target/linux/ramips/dts/RT-N10-PLUS.dts b/target/linux/ramips/dts/RT-N10-PLUS.dts
index 2f070b7419..0606ccb245 100644
--- a/target/linux/ramips/dts/RT-N10-PLUS.dts
+++ b/target/linux/ramips/dts/RT-N10-PLUS.dts
@@ -6,18 +6,6 @@
compatible = "RT-N10-PLUS", "ralink,rt3050-soc";
model = "Asus RT-N10+";
- palmbus@10000000 {
- sysc@0 {
- ralink,pinmux = "i2c", "spi", "uartlite", "jtag", "mdio", "sdram", "rgmii";
- ralink,uartmux = "gpio";
- ralink,wdtmux = <1>;
- };
-
- gpio0: gpio@600 {
- status = "okay";
- };
- };
-
cfi@1f000000 {
compatible = "cfi-flash";
reg = <0x1f000000 0x800000>;
@@ -51,12 +39,7 @@
};
};
- ethernet@10100000 {
- status = "okay";
- };
-
esw@10110000 {
- status = "okay";
ralink,portmap = <0x3e>;
};
@@ -84,8 +67,4 @@
linux,code = <0x211>;
};
};
-
- wmac@10180000 {
- status = "okay";
- };
};
diff --git a/target/linux/ramips/dts/RT-N13U.dts b/target/linux/ramips/dts/RT-N13U.dts
index 2e1a62cdc2..b6a649ccdb 100644
--- a/target/linux/ramips/dts/RT-N13U.dts
+++ b/target/linux/ramips/dts/RT-N13U.dts
@@ -6,15 +6,12 @@
compatible = "RT-N13U", "ralink,rt3052-soc";
model = "Asus RT-N13U";
- palmbus@10000000 {
- sysc@0 {
- ralink,pinmux = "i2c", "spi", "uartlite", "jtag", "mdio", "sdram", "rgmii";
- ralink,uartmux = "gpio";
- ralink,wdtmux = <1>;
- };
-
- gpio0: gpio@600 {
- status = "okay";
+ pinctrl {
+ state_default: pinctrl0 {
+ gpio {
+ ralink,group = "spi", "i2c", "jtag", "rgmii", "mdio", "uartf";
+ ralink,function = "gpio";
+ };
};
};
@@ -85,19 +82,10 @@
};
};
- ethernet@10100000 {
- status = "okay";
- };
-
esw@10110000 {
- status = "okay";
ralink,portmap = <0x2f>;
};
- wmac@10180000 {
- status = "okay";
- };
-
otg@101c0000 {
status = "okay";
};
diff --git a/target/linux/ramips/dts/RT-N15.dts b/target/linux/ramips/dts/RT-N15.dts
index 8351449ea1..0b9d0d9f54 100644
--- a/target/linux/ramips/dts/RT-N15.dts
+++ b/target/linux/ramips/dts/RT-N15.dts
@@ -59,10 +59,6 @@
};
};
- wmac@480000 {
- status = "okay";
- };
-
rtl8366s {
compatible = "realtek,rtl8366s";
gpio-sda = <&gpio0 1 0>;
diff --git a/target/linux/ramips/dts/RTN56U.dts b/target/linux/ramips/dts/RTN56U.dts
index 9c36af5721..6dfe3f480d 100644
--- a/target/linux/ramips/dts/RTN56U.dts
+++ b/target/linux/ramips/dts/RTN56U.dts
@@ -7,30 +7,21 @@
model = "Asus RT-N56U";
palmbus@10000000 {
- sysc@0 {
- ralink,pinmux = "uartlite";
- ralink,gpiomux = "i2c", "jtag";
- ralink,uartmux = "gpio";
- ralink,pcimux = "pci-fnc";
- ralink,wdtmux = <0>;
- };
-
- timer@100 {
- status = "okay";
- };
-
- gpio0: gpio@600 {
+ gpio1: gpio@638 {
status = "okay";
};
+ };
- gpio1: gpio@638 {
- status = "okay";
+ pinctrl {
+ state_default: pinctrl0 {
+ gpio {
+ ralink,group = "spi", "i2c", "jtag", "uartf";
+ ralink,function = "gpio";
+ };
};
};
ethernet@10100000 {
- status = "okay";
-
port@0 {
ralink,fixed-link = <1000 1 1 1>;
};
@@ -39,6 +30,15 @@
pci@10140000 {
status = "okay";
+ pinctrl-names = "default";
+ pinctrl-0 = <&pci_pins>;
+ pci_pins: pci {
+ pci {
+ ralink,group = "pci";
+ ralink,function = "pci-fnc";
+ };
+ };
+
host-bridge {
pci-bridge@1 {
status = "okay";
@@ -47,7 +47,6 @@
};
wmac@10180000 {
- status = "okay";
ralink,2ghz = <0>;
};
diff --git a/target/linux/ramips/dts/SL-R7205.dts b/target/linux/ramips/dts/SL-R7205.dts
index 8f1fe851f2..589fd10fa2 100644
--- a/target/linux/ramips/dts/SL-R7205.dts
+++ b/target/linux/ramips/dts/SL-R7205.dts
@@ -6,15 +6,12 @@
compatible = "SL-R7205", "ralink,rt3052-soc";
model = "Skyline SL-R7205 Wireless 3G Router";
- palmbus@10000000 {
- sysc@0 {
- ralink,pinmux = "i2c", "spi", "uartlite", "jtag", "mdio", "sdram", "rgmii";
- ralink,uartmux = "gpio";
- ralink,wdtmux = <1>;
- };
-
- gpio0: gpio@600 {
- status = "okay";
+ pinctrl {
+ state_default: pinctrl0 {
+ gpio {
+ ralink,group = "spi", "i2c", "jtag", "rgmii", "mdio", "uartf";
+ ralink,function = "gpio";
+ };
};
};
@@ -51,12 +48,7 @@
};
};
- ethernet@10100000 {
- status = "okay";
- };
-
esw@10110000 {
- status = "okay";
ralink,portmap = <0x3e>;
};
@@ -85,10 +77,6 @@
};
};
- wmac@10180000 {
- status = "okay";
- };
-
otg@101c0000 {
status = "okay";
};
diff --git a/target/linux/ramips/dts/TEW-691GR.dts b/target/linux/ramips/dts/TEW-691GR.dts
index 002719583b..98d45fc530 100644
--- a/target/linux/ramips/dts/TEW-691GR.dts
+++ b/target/linux/ramips/dts/TEW-691GR.dts
@@ -7,29 +7,21 @@
model = "TRENDnet TEW-691GR";
palmbus@10000000 {
- sysc@0 {
- ralink,pinmux = "uartlite";
- ralink,gpiomux = "i2c", "jtag";
- ralink,uartmux = "gpio";
- ralink,pcimux = "pci-fnc";
- ralink,wdtmux = <1>;
- };
-
- timer@100 {
- status = "okay";
- };
-
- gpio0: gpio@600 {
+ gpio1: gpio@638 {
status = "okay";
};
+ };
- gpio1: gpio@638 {
- status = "okay";
+ pinctrl {
+ state_default: pinctrl0 {
+ gpio {
+ ralink,group = "spi", "i2c", "jtag", "uartf";
+ ralink,function = "gpio";
+ };
};
};
ethernet@10100000 {
- status = "okay";
port@0 {
phy-handle = <&phy0>;
phy-mode = "rgmii";
@@ -44,7 +36,6 @@
};
wmac@10180000 {
- status = "okay";
ralink,5ghz = <0>;
};
diff --git a/target/linux/ramips/dts/TEW-692GR.dts b/target/linux/ramips/dts/TEW-692GR.dts
index eee4b2af2d..6c07c7760f 100644
--- a/target/linux/ramips/dts/TEW-692GR.dts
+++ b/target/linux/ramips/dts/TEW-692GR.dts
@@ -7,24 +7,17 @@
model = "TRENDnet TEW-692GR";
palmbus@10000000 {
- sysc@0 {
- ralink,pinmux = "uartlite";
- ralink,gpiomux = "i2c", "jtag", "spi";
- ralink,uartmux = "gpio";
- ralink,pcimux = "pci-fnc";
- ralink,wdtmux = <1>;
- };
-
- timer@100 {
- status = "okay";
- };
-
- gpio0: gpio@600 {
+ gpio1: gpio@638 {
status = "okay";
};
+ };
- gpio1: gpio@638 {
- status = "okay";
+ pinctrl {
+ state_default: pinctrl0 {
+ gpio {
+ ralink,group = "spi", "i2c", "jtag", "uartf";
+ ralink,function = "gpio";
+ };
};
};
@@ -46,6 +39,15 @@
pci@10140000 {
status = "okay";
+ pinctrl-names = "default";
+ pinctrl-0 = <&pci_pins>;
+ pci_pins: pci {
+ pci {
+ ralink,group = "pci";
+ ralink,function = "pci-fnc";
+ };
+ };
+
host-bridge {
pci-bridge@1 {
status = "okay";
@@ -54,7 +56,6 @@
};
wmac@10180000 {
- status = "okay";
ralink,5ghz = <0>;
};
diff --git a/target/linux/ramips/dts/UR-326N4G.dts b/target/linux/ramips/dts/UR-326N4G.dts
index 6bb360d9d7..d97ca05ef9 100644
--- a/target/linux/ramips/dts/UR-326N4G.dts
+++ b/target/linux/ramips/dts/UR-326N4G.dts
@@ -6,16 +6,12 @@
compatible = "UR-326N4G", "ralink,rt3052-soc";
model = "UR-326N4G Wireless N router";
- palmbus@10000000 {
- sysc@0 {
- ralink,pinmux = "i2c", "spi", "uartlite", "jtag", "sdram", "rgmii";
- ralink,gpiomux = "mdio";
- ralink,uartmux = "gpio";
- ralink,wdtmux = <1>;
- };
-
- gpio0: gpio@600 {
- status = "okay";
+ pinctrl {
+ state_default: pinctrl0 {
+ gpio {
+ ralink,group = "spi", "i2c", "jtag", "rgmii", "mdio", "uartf";
+ ralink,function = "gpio";
+ };
};
};
@@ -52,12 +48,7 @@
};
};
- ethernet@10100000 {
- status = "okay";
- };
-
esw@10110000 {
- status = "okay";
ralink,portmap = <0x2f>;
};
@@ -102,10 +93,6 @@
};
};
- wmac@10180000 {
- status = "okay";
- };
-
otg@101c0000 {
status = "okay";
};
diff --git a/target/linux/ramips/dts/UR-336UN.dts b/target/linux/ramips/dts/UR-336UN.dts
index a5c2841214..b1377036cc 100644
--- a/target/linux/ramips/dts/UR-336UN.dts
+++ b/target/linux/ramips/dts/UR-336UN.dts
@@ -6,16 +6,12 @@
compatible = "UR-336UN", "ralink,rt3052-soc";
model = "UR-336UN Wireless N router";
- palmbus@10000000 {
- sysc@0 {
- ralink,pinmux = "i2c", "spi", "uartlite", "jtag", "sdram", "rgmii";
- ralink,gpiomux = "mdio";
- ralink,uartmux = "gpio";
- ralink,wdtmux = <1>;
- };
-
- gpio0: gpio@600 {
- status = "okay";
+ pinctrl {
+ state_default: pinctrl0 {
+ gpio {
+ ralink,group = "spi", "i2c", "jtag", "rgmii", "mdio", "uartf";
+ ralink,function = "gpio";
+ };
};
};
@@ -29,12 +25,7 @@
#size-cells = <1>;
};
- ethernet@10100000 {
- status = "okay";
- };
-
esw@10110000 {
- status = "okay";
ralink,portmap = <0x2f>;
};
@@ -79,10 +70,6 @@
};
};
- wmac@10180000 {
- status = "okay";
- };
-
otg@101c0000 {
status = "okay";
};
diff --git a/target/linux/ramips/dts/V11STFE.dts b/target/linux/ramips/dts/V11STFE.dts
index 20cbaea49c..54ead081dd 100644
--- a/target/linux/ramips/dts/V11STFE.dts
+++ b/target/linux/ramips/dts/V11STFE.dts
@@ -24,10 +24,6 @@
status = "okay";
};
- wmac@480000 {
- status = "okay";
- };
-
pci@10140000 {
status = "okay";
diff --git a/target/linux/ramips/dts/V22RW-2X2.dts b/target/linux/ramips/dts/V22RW-2X2.dts
index a4f8c3c77f..99e748e78d 100644
--- a/target/linux/ramips/dts/V22RW-2X2.dts
+++ b/target/linux/ramips/dts/V22RW-2X2.dts
@@ -6,15 +6,12 @@
compatible = "V22RW-2X2", "ralink,rt3052-soc";
model = "Ralink AP-RT3052-V22RW-2X2";
- palmbus@10000000 {
- sysc@0 {
- ralink,pinmux = "i2c", "spi", "uartlite", "jtag", "mdio", "sdram", "rgmii";
- ralink,uartmux = "gpio";
- ralink,wdtmux = <1>;
- };
-
- gpio0: gpio@600 {
- status = "okay";
+ pinctrl {
+ state_default: pinctrl0 {
+ gpio {
+ ralink,group = "spi", "i2c", "jtag", "rgmii", "mdio", "uartf";
+ ralink,function = "gpio";
+ };
};
};
@@ -51,12 +48,7 @@
};
};
- ethernet@10100000 {
- status = "okay";
- };
-
esw@10110000 {
- status = "okay";
ralink,portmap = <0x2f>;
};
@@ -89,10 +81,6 @@
};
};
- wmac@10180000 {
- status = "okay";
- };
-
otg@101c0000 {
status = "okay";
};
diff --git a/target/linux/ramips/dts/W150M.dts b/target/linux/ramips/dts/W150M.dts
index 94f1960641..76ad658437 100644
--- a/target/linux/ramips/dts/W150M.dts
+++ b/target/linux/ramips/dts/W150M.dts
@@ -6,15 +6,12 @@
compatible = "3G300M", "ralink,rt3050-soc";
model = "Tenda 3G300M";
- palmbus@10000000 {
- sysc@0 {
- ralink,pinmux = "i2c", "spi", "uartlite", "mdio", "sdram", "rgmii", "jtag";
- ralink,uartmux = "gpio";
- ralink,wdtmux = <1>;
- };
-
- gpio0: gpio@600 {
- status = "okay";
+ pinctrl {
+ state_default: pinctrl0 {
+ gpio {
+ ralink,group = "spi", "i2c", "jtag", "rgmii", "mdio", "uartf";
+ ralink,function = "gpio";
+ };
};
};
@@ -96,16 +93,7 @@
};
};
- ethernet@10100000 {
- status = "okay";
- };
-
esw@10110000 {
- status = "okay";
ralink,portmap = <0x2f>;
};
-
- wmac@10180000 {
- status = "okay";
- };
};
diff --git a/target/linux/ramips/dts/W306R_V20.dts b/target/linux/ramips/dts/W306R_V20.dts
index f5b3414442..16d9ad4c3a 100644
--- a/target/linux/ramips/dts/W306R_V20.dts
+++ b/target/linux/ramips/dts/W306R_V20.dts
@@ -39,24 +39,16 @@
};
};
- palmbus@10000000 {
- sysc@0 {
- ralink,pinmux = "i2c", "spi", "uartlite", "jtag", "mdio", "sdram", "rgmii";
- ralink,uartmux = "gpio";
- ralink,wdtmux = <1>;
+ pinctrl {
+ state_default: pinctrl0 {
+ gpio {
+ ralink,group = "spi", "i2c", "jtag", "rgmii", "mdio", "uartf";
+ ralink,function = "gpio";
+ };
};
-
- gpio0: gpio@600 {
- status = "okay";
- };
- };
-
- ethernet@10100000 {
- status = "okay";
};
esw@10110000 {
- status = "okay";
ralink,portmap = <0x3e>;
};
@@ -83,8 +75,4 @@
linux,code = <0x198>;
};
};
-
- wmac@10180000 {
- status = "okay";
- };
};
diff --git a/target/linux/ramips/dts/W502U.dts b/target/linux/ramips/dts/W502U.dts
index 89ddc79407..54e8d58ed2 100644
--- a/target/linux/ramips/dts/W502U.dts
+++ b/target/linux/ramips/dts/W502U.dts
@@ -10,15 +10,12 @@
bootargs = "console=ttyS0,115200";
};
- palmbus@10000000 {
- sysc@0 {
- ralink,pinmux = "i2c", "spi", "uartlite", "jtag", "mdio", "sdram", "rgmii";
- ralink,uartmux = "gpio";
- ralink,wdtmux = <1>;
- };
-
- gpio0: gpio@600 {
- status = "okay";
+ pinctrl {
+ state_default: pinctrl0 {
+ gpio {
+ ralink,group = "spi", "i2c", "jtag", "rgmii", "mdio", "uartf";
+ ralink,function = "gpio";
+ };
};
};
@@ -55,12 +52,7 @@
};
};
- ethernet@10100000 {
- status = "okay";
- };
-
esw@10110000 {
- status = "okay";
ralink,portmap = <0x3e>;
};
@@ -93,10 +85,6 @@
};
};
- wmac@10180000 {
- status = "okay";
- };
-
otg@101c0000 {
status = "okay";
};
diff --git a/target/linux/ramips/dts/WCR150GN.dts b/target/linux/ramips/dts/WCR150GN.dts
index 380af7d558..601883d24d 100644
--- a/target/linux/ramips/dts/WCR150GN.dts
+++ b/target/linux/ramips/dts/WCR150GN.dts
@@ -6,15 +6,12 @@
compatible = "WCR150GN", "ralink,rt3052-soc";
model = "Sparklan WCR-150GN";
- palmbus@10000000 {
- sysc@0 {
- ralink,pinmux = "i2c", "spi", "uartlite", "jtag", "mdio", "sdram", "rgmii";
- ralink,uartmux = "gpio";
- ralink,wdtmux = <1>;
- };
-
- gpio0: gpio@600 {
- status = "okay";
+ pinctrl {
+ state_default: pinctrl0 {
+ gpio {
+ ralink,group = "spi", "i2c", "jtag", "rgmii", "mdio", "uartf";
+ ralink,function = "gpio";
+ };
};
};
@@ -80,19 +77,10 @@
};
};
- ethernet@10100000 {
- status = "okay";
- };
-
esw@10110000 {
- status = "okay";
ralink,portmap = <0x2f>;
};
- wmac@10180000 {
- status = "okay";
- };
-
otg@101c0000 {
status = "okay";
};
diff --git a/target/linux/ramips/dts/WHR-G300N.dts b/target/linux/ramips/dts/WHR-G300N.dts
index bd18f4cdfb..8cec31e033 100644
--- a/target/linux/ramips/dts/WHR-G300N.dts
+++ b/target/linux/ramips/dts/WHR-G300N.dts
@@ -6,15 +6,12 @@
compatible = "WHR-G300N", "ralink,rt3052-soc";
model = "Buffalo WHR-G300N";
- palmbus@10000000 {
- sysc@0 {
- ralink,pinmux = "i2c", "spi", "uartlite", "jtag", "mdio", "sdram", "rgmii";
- ralink,uartmux = "gpio";
- ralink,wdtmux = <1>;
- };
-
- gpio0: gpio@600 {
- status = "okay";
+ pinctrl {
+ state_default: pinctrl0 {
+ gpio {
+ ralink,group = "spi", "i2c", "jtag", "rgmii", "mdio", "uartf";
+ ralink,function = "gpio";
+ };
};
};
@@ -28,12 +25,7 @@
#size-cells = <1>;
};
- ethernet@10100000 {
- status = "okay";
- };
-
esw@10110000 {
- status = "okay";
ralink,portmap = <0x2f>;
};
@@ -79,8 +71,4 @@
linux,code = <0x103>;
};
};
-
- wmac@10180000 {
- status = "okay";
- };
};
diff --git a/target/linux/ramips/dts/WL-351.dts b/target/linux/ramips/dts/WL-351.dts
index f9e0595f11..bc122943d4 100644
--- a/target/linux/ramips/dts/WL-351.dts
+++ b/target/linux/ramips/dts/WL-351.dts
@@ -6,18 +6,13 @@
compatible = "WL-351", "ralink,rt3052-soc";
model = "Sitecom WL-351 v1 002";
- palmbus@10000000 {
- sysc@0 {
- ralink,pinmux = "uartlite", "jtag", "sdram", "rgmii";
- ralink,gpiomux = "i2c", "spi", "mdio";
- ralink,uartmux = "gpio";
- ralink,wdtmux = <1>;
+ pinctrl {
+ state_default: pinctrl0 {
+ gpio {
+ ralink,group = "spi", "i2c", "jtag", "rgmii", "mdio", "uartf";
+ ralink,function = "gpio";
+ };
};
-
- gpio0: gpio@600 {
- status = "okay";
- };
-
};
cfi@1f000000 {
@@ -53,12 +48,7 @@
};
};
- ethernet@10100000 {
- status = "okay";
- };
-
esw@10110000 {
- status = "okay";
ralink,portmap = <0x3f>;
ralink,fct2 = <0x0002500c>;
/*
@@ -70,10 +60,6 @@
ralink,fpa2 = <0x1f003fff>;
};
- wmac@10180000 {
- status = "okay";
- };
-
otg@101c0000 {
status = "okay";
};
diff --git a/target/linux/ramips/dts/WL341V3.dts b/target/linux/ramips/dts/WL341V3.dts
index 09ef844957..70317c7eee 100644
--- a/target/linux/ramips/dts/WL341V3.dts
+++ b/target/linux/ramips/dts/WL341V3.dts
@@ -6,18 +6,6 @@
compatible = "WL341V3", "ralink,rt3052-soc";
model = "Sitecom WL-341 v3";
- palmbus@10000000 {
- sysc@0 {
- ralink,pinmux = "i2c", "spi", "uartlite", "jtag", "mdio", "sdram", "rgmii";
- ralink,uartmux = "gpio";
- ralink,wdtmux = <1>;
- };
-
- gpio0: gpio@600 {
- status = "okay";
- };
- };
-
cfi@1f000000 {
compatible = "cfi-flash";
reg = <0x1f000000 0x800000>;
@@ -51,12 +39,16 @@
};
};
- ethernet@10100000 {
- status = "okay";
+ pinctrl {
+ state_default: pinctrl0 {
+ gpio {
+ ralink,group = "i2c", "jtag", "rgmii", "mdio", "uartf";
+ ralink,function = "gpio";
+ };
+ };
};
esw@10110000 {
- status = "okay";
ralink,portmap = <0x3e>;
};
@@ -109,10 +101,6 @@
};
};
- wmac@10180000 {
- status = "okay";
- };
-
otg@101c0000 {
status = "okay";
};
diff --git a/target/linux/ramips/dts/WLI-TX4-AG300N.dts b/target/linux/ramips/dts/WLI-TX4-AG300N.dts
index 2296c3fc07..62c2a799a6 100644
--- a/target/linux/ramips/dts/WLI-TX4-AG300N.dts
+++ b/target/linux/ramips/dts/WLI-TX4-AG300N.dts
@@ -58,10 +58,6 @@
};
};
- wmac@480000 {
- status = "okay";
- };
-
gpio-keys-polled {
compatible = "gpio-keys-polled";
#address-cells = <1>;
diff --git a/target/linux/ramips/dts/WL_330N.dts b/target/linux/ramips/dts/WL_330N.dts
index 1063c1eaf8..4fc4368c3f 100644
--- a/target/linux/ramips/dts/WL_330N.dts
+++ b/target/linux/ramips/dts/WL_330N.dts
@@ -7,16 +7,6 @@
model = "Asus WL-330N";
palmbus@10000000 {
- sysc@0 {
- ralink,pinmux = "i2c", "spi", "uartlite", "jtag", "mdio", "sdram", "rgmii";
- ralink,uartmux = "gpio";
- ralink,wdtmux = <1>;
- };
-
- gpio0: gpio@600 {
- status = "okay";
- };
-
spi@b00 {
status = "okay";
m25p80@0 {
@@ -53,12 +43,16 @@
};
};
- ethernet@10100000 {
- status = "okay";
+ pinctrl {
+ state_default: pinctrl0 {
+ gpio {
+ ralink,group = "i2c", "jtag", "rgmii", "mdio", "uartf";
+ ralink,function = "gpio";
+ };
+ };
};
esw@10110000 {
- status = "okay";
ralink,portmap = <0x3e>;
};
@@ -90,8 +84,4 @@
linux,code = <0x198>;
};
};
-
- wmac@10180000 {
- status = "okay";
- };
};
diff --git a/target/linux/ramips/dts/WL_330N3G.dts b/target/linux/ramips/dts/WL_330N3G.dts
index 83e83fa214..1c88ed31aa 100644
--- a/target/linux/ramips/dts/WL_330N3G.dts
+++ b/target/linux/ramips/dts/WL_330N3G.dts
@@ -7,16 +7,6 @@
model = "Asus WL-330N3G";
palmbus@10000000 {
- sysc@0 {
- ralink,pinmux = "i2c", "spi", "uartlite", "jtag", "mdio", "sdram", "rgmii";
- ralink,uartmux = "gpio";
- ralink,wdtmux = <1>;
- };
-
- gpio0: gpio@600 {
- status = "okay";
- };
-
spi@b00 {
status = "okay";
m25p80@0 {
@@ -53,12 +43,16 @@
};
};
- ethernet@10100000 {
- status = "okay";
+ pinctrl {
+ state_default: pinctrl0 {
+ gpio {
+ ralink,group = "i2c", "jtag", "rgmii", "mdio", "uartf";
+ ralink,function = "gpio";
+ };
+ };
};
esw@10110000 {
- status = "okay";
ralink,portmap = <0x3e>;
};
@@ -95,10 +89,6 @@
};
};
- wmac@10180000 {
- status = "okay";
- };
-
otg@101c0000 {
status = "okay";
};
diff --git a/target/linux/ramips/dts/WNCE2001.dts b/target/linux/ramips/dts/WNCE2001.dts
index 3e467a7b04..bbf6625bf6 100644
--- a/target/linux/ramips/dts/WNCE2001.dts
+++ b/target/linux/ramips/dts/WNCE2001.dts
@@ -11,17 +11,6 @@
};
palmbus@10000000 {
- sysc@0 {
- ralink,pinmux = "spi", "uartlite", "jtag", "sdram";
- ralink,gpiomux = "i2c", "mdio", "rgmii";
- ralink,uartmux = "gpio";
- ralink,wdtmux = <1>;
- };
-
- gpio0: gpio@600 {
- status = "okay";
- };
-
spi@b00 {
status = "okay";
m25p80@0 {
@@ -75,16 +64,13 @@
};
};
- ethernet@10100000 {
- status = "okay";
- };
-
- esw@10110000 {
- status = "okay";
- };
-
- wmac@10180000 {
- status = "okay";
+ pinctrl {
+ state_default: pinctrl0 {
+ gpio {
+ ralink,group = "i2c", "jtag", "rgmii", "mdio", "uartf";
+ ralink,function = "gpio";
+ };
+ };
};
gpio-leds {
diff --git a/target/linux/ramips/dts/WR512-3GN-4M.dts b/target/linux/ramips/dts/WR512-3GN-4M.dts
index cef7464d45..fccd04aed9 100644
--- a/target/linux/ramips/dts/WR512-3GN-4M.dts
+++ b/target/linux/ramips/dts/WR512-3GN-4M.dts
@@ -6,16 +6,12 @@
compatible = "WR512-3GN", "ralink,rt3052-soc";
model = "WR512-3GN-like router";
- palmbus@10000000 {
- sysc@0 {
- ralink,pinmux = "i2c", "spi", "uartlite", "jtag", "sdram", "rgmii";
- ralink,gpiomux = "mdio";
- ralink,uartmux = "gpio";
- ralink,wdtmux = <1>;
- };
-
- gpio0: gpio@600 {
- status = "okay";
+ pinctrl {
+ state_default: pinctrl0 {
+ gpio {
+ ralink,group = "spi", "i2c", "jtag", "rgmii", "mdio", "uartf";
+ ralink,function = "gpio";
+ };
};
};
@@ -52,12 +48,7 @@
};
};
- ethernet@10100000 {
- status = "okay";
- };
-
esw@10110000 {
- status = "okay";
ralink,portmap = <0x2f>;
};
@@ -102,10 +93,6 @@
};
};
- wmac@10180000 {
- status = "okay";
- };
-
otg@101c0000 {
status = "okay";
};
diff --git a/target/linux/ramips/dts/WR512-3GN-8M.dts b/target/linux/ramips/dts/WR512-3GN-8M.dts
index 9325dbb877..01da52340e 100644
--- a/target/linux/ramips/dts/WR512-3GN-8M.dts
+++ b/target/linux/ramips/dts/WR512-3GN-8M.dts
@@ -6,16 +6,12 @@
compatible = "WR512-3GN", "ralink,rt3052-soc";
model = "WR512-3GN-like router";
- palmbus@10000000 {
- sysc@0 {
- ralink,pinmux = "i2c", "spi", "uartlite", "jtag", "sdram", "rgmii";
- ralink,gpiomux = "mdio";
- ralink,uartmux = "gpio";
- ralink,wdtmux = <1>;
- };
-
- gpio0: gpio@600 {
- status = "okay";
+ pinctrl {
+ state_default: pinctrl0 {
+ gpio {
+ ralink,group = "spi", "i2c", "jtag", "rgmii", "mdio", "uartf";
+ ralink,function = "gpio";
+ };
};
};
@@ -52,12 +48,7 @@
};
};
- ethernet@10100000 {
- status = "okay";
- };
-
esw@10110000 {
- status = "okay";
ralink,portmap = <0x2f>;
};
@@ -102,10 +93,6 @@
};
};
- wmac@10180000 {
- status = "okay";
- };
-
otg@101c0000 {
status = "okay";
};
diff --git a/target/linux/ramips/dts/WR6202.dts b/target/linux/ramips/dts/WR6202.dts
index a970849e31..ed3e70851d 100644
--- a/target/linux/ramips/dts/WR6202.dts
+++ b/target/linux/ramips/dts/WR6202.dts
@@ -10,17 +10,13 @@
bootargs = "console=ttyS0,115200";
};
- palmbus@10000000 {
- sysc@0 {
- ralink,pinmux = "i2c", "spi", "uartlite", "jtag", "mdio", "sdram", "rgmii";
- ralink,uartmux = "gpio";
- ralink,wdtmux = <1>;
+ pinctrl {
+ state_default: pinctrl0 {
+ gpio {
+ ralink,group = "spi", "i2c", "jtag", "rgmii", "mdio", "uartf";
+ ralink,function = "gpio";
+ };
};
-
- gpio0: gpio@600 {
- status = "okay";
- };
-
};
gpio-leds {
@@ -85,19 +81,10 @@
};
};
- ethernet@10100000 {
- status = "okay";
- };
-
esw@10110000 {
- status = "okay";
ralink,portmap = <0x3e>;
};
- wmac@10180000 {
- status = "okay";
- };
-
otg@101c0000 {
status = "okay";
};
diff --git a/target/linux/ramips/dts/X5.dts b/target/linux/ramips/dts/X5.dts
index d9e963239f..0a4f1b3684 100644
--- a/target/linux/ramips/dts/X5.dts
+++ b/target/linux/ramips/dts/X5.dts
@@ -7,17 +7,6 @@
model = "Poray X5";
palmbus@10000000 {
- sysc@0 {
- ralink,pinmux = "i2c", "spi", "uartlite", "mdio", "sdram", "rgmii";
- ralink,gpiomux = "jtag";
- ralink,uartmux = "gpio";
- ralink,wdtmux = <1>;
- };
-
- gpio0: gpio@600 {
- status = "okay";
- };
-
spi@b00 {
status = "okay";
m25p80@0 {
@@ -54,12 +43,16 @@
};
};
- ethernet@10100000 {
- status = "okay";
+ pinctrl {
+ state_default: pinctrl0 {
+ gpio {
+ ralink,group = "i2c", "jtag", "uartf";
+ ralink,function = "gpio";
+ };
+ };
};
esw@10110000 {
- status = "okay";
ralink,portmap = <0x2f>;
ralink,led_polarity = <1>;
};
@@ -118,7 +111,6 @@
};
wmac@10180000 {
- status = "okay";
ralink,mtd-eeprom = <&factory 0>;
ralink,led-polarity = <1>;
};
diff --git a/target/linux/ramips/dts/X8.dts b/target/linux/ramips/dts/X8.dts
index e7b13ca63d..b7591dec20 100644
--- a/target/linux/ramips/dts/X8.dts
+++ b/target/linux/ramips/dts/X8.dts
@@ -7,17 +7,6 @@
model = "Poray X8";
palmbus@10000000 {
- sysc@0 {
- ralink,pinmux = "i2c", "spi", "uartlite", "mdio", "sdram", "rgmii";
- ralink,gpiomux = "jtag";
- ralink,uartmux = "gpio";
- ralink,wdtmux = <1>;
- };
-
- gpio0: gpio@600 {
- status = "okay";
- };
-
spi@b00 {
status = "okay";
m25p80@0 {
@@ -54,12 +43,16 @@
};
};
- ethernet@10100000 {
- status = "okay";
+ pinctrl {
+ state_default: pinctrl0 {
+ gpio {
+ ralink,group = "i2c", "jtag", "uartf";
+ ralink,function = "gpio";
+ };
+ };
};
esw@10110000 {
- status = "okay";
ralink,portmap = <0x2f>;
ralink,led_polarity = <1>;
};
@@ -85,7 +78,6 @@
};
wmac@10180000 {
- status = "okay";
ralink,mtd-eeprom = <&factory 0>;
ralink,led-polarity = <1>;
};
diff --git a/target/linux/ramips/dts/XDXRN502J.dts b/target/linux/ramips/dts/XDXRN502J.dts
index 3df097cde7..28670055fd 100644
--- a/target/linux/ramips/dts/XDXRN502J.dts
+++ b/target/linux/ramips/dts/XDXRN502J.dts
@@ -6,16 +6,12 @@
compatible = "XDXRN502J", "ralink,rt3052-soc";
model = "XDX RN502J";
- palmbus@10000000 {
- sysc@0 {
- ralink,pinmux = "i2c", "spi", "uartlite", "jtag", "sdram", "rgmii";
- ralink,gpiomux = "mdio";
- ralink,uartmux = "gpio";
- ralink,wdtmux = <1>;
- };
-
- gpio0: gpio@600 {
- status = "okay";
+ pinctrl {
+ state_default: pinctrl0 {
+ gpio {
+ ralink,group = "spi", "i2c", "jtag", "rgmii", "mdio", "uartf";
+ ralink,function = "gpio";
+ };
};
};
@@ -52,12 +48,7 @@
};
};
- ethernet@10100000 {
- status = "okay";
- };
-
esw@10110000 {
- status = "okay";
ralink,portmap = <0x3e>;
};
@@ -85,10 +76,6 @@
};
};
- wmac@10180000 {
- status = "okay";
- };
-
otg@101c0000 {
status = "okay";
};
diff --git a/target/linux/ramips/dts/mt7620a.dtsi b/target/linux/ramips/dts/mt7620a.dtsi
index 506155bd6f..418258254b 100644
--- a/target/linux/ramips/dts/mt7620a.dtsi
+++ b/target/linux/ramips/dts/mt7620a.dtsi
@@ -110,8 +110,6 @@
ralink,register-map = [ 00 04 08 0c
20 24 28 2c
30 34 ];
-
- status = "disabled";
};
gpio1: gpio@638 {
@@ -163,6 +161,9 @@
#size-cells = <0>;
status = "disabled";
+
+ pinctrl-names = "default";
+ pinctrl-0 = <&i2c_pins>;
};
i2s@a00 {
@@ -189,6 +190,9 @@
#size-cells = <1>;
status = "disabled";
+
+ pinctrl-names = "default";
+ pinctrl-0 = <&spi_pins>;
};
uartlite@c00 {
@@ -202,6 +206,9 @@
interrupts = <12>;
reg-shift = <2>;
+
+ pinctrl-names = "default";
+ pinctrl-0 = <&uartlite_pins>;
};
systick@d00 {
@@ -242,6 +249,62 @@
};
};
+ pinctrl {
+ compatible = "ralink,rt2880-pinmux";
+ pinctrl-names = "default";
+ pinctrl-0 = <&state_default>;
+ state_default: pinctrl0 {
+ };
+ spi_pins: spi {
+ spi {
+ ralink,group = "spi";
+ ralink,function = "spi";
+ };
+ };
+ i2c_pins: i2c {
+ i2c {
+ lantiq,group = "i2c";
+ lantiq,function = "i2c";
+ };
+ };
+ uartlite_pins: uartlite {
+ uart {
+ ralink,group = "uartlite";
+ ralink,function = "uartlite";
+ };
+ };
+ mdio_pins: mdio {
+ mdio {
+ ralink,group = "mdio";
+ ralink,function = "mdio";
+ };
+ };
+ ephy_pins: ephy {
+ ephy {
+ ralink,group = "ephy";
+ ralink,function = "ephy";
+ };
+ };
+ wled_pins: wled {
+ wled {
+ ralink,group = "wled";
+ ralink,function = "wled";
+ };
+ };
+ rgmii1_pins: rgmii1 {
+ mdio {
+ ralink,group = "rgmii1";
+ ralink,function = "rgmii1";
+ };
+ };
+ rgmii2_pins: rgmii2 {
+ mdio {
+ ralink,group = "rgmii2";
+ ralink,function = "rgmii2";
+ };
+ };
+ };
+
rstctrl: rstctrl {
compatible = "ralink,mt7620a-reset", "ralink,rt2880-reset";
#reset-cells = <1>;
@@ -264,13 +327,14 @@
interrupt-parent = <&cpuintc>;
interrupts = <5>;
- status = "disabled";
-
mdio-bus {
#address-cells = <1>;
#size-cells = <0>;
status = "disabled";
+
+ pinctrl-names = "default";
+ pinctrl-0 = <&mdio_pins>;
};
};
@@ -280,8 +344,6 @@
interrupt-parent = <&intc>;
interrupts = <17>;
-
- status = "disabled";
};
sdhci@10130000 {
diff --git a/target/linux/ramips/dts/rt3050.dtsi b/target/linux/ramips/dts/rt3050.dtsi
index 1130005e78..86a4d15476 100644
--- a/target/linux/ramips/dts/rt3050.dtsi
+++ b/target/linux/ramips/dts/rt3050.dtsi
@@ -110,8 +110,6 @@
interrupt-parent = <&intc>;
interrupts = <6>;
-
- status = "disabled";
};
gpio1: gpio@638 {
@@ -156,6 +154,9 @@
#address-cells = <1>;
#size-cells = <0>;
+ pinctrl-names = "default";
+ pinctrl-0 = <&spi_pins>;
+
status = "disabled";
};
@@ -170,8 +171,38 @@
interrupts = <12>;
reg-shift = <2>;
+
+ pinctrl-names = "default";
+ pinctrl-0 = <&uartlite_pins>;
+ };
+
+ };
+
+ pinctrl {
+ compatible = "ralink,rt2880-pinmux";
+
+ pinctrl-names = "default";
+ pinctrl-0 = <&state_default>;
+
+ state_default: pinctrl0 {
+ sdram {
+ ralink,group = "sdram";
+ ralink,function = "sdram";
+ };
};
+ spi_pins: spi {
+ spi {
+ ralink,group = "spi";
+ ralink,function = "spi";
+ };
+ };
+ uartlite_pins: uartlite {
+ uart {
+ ralink,group = "uartlite";
+ ralink,function = "uartlite";
+ };
+ };
};
rstctrl: rstctrl {
@@ -185,8 +216,6 @@
interrupt-parent = <&cpuintc>;
interrupts = <5>;
-
- status = "disabled";
};
esw@10110000 {
@@ -195,8 +224,6 @@
interrupt-parent = <&intc>;
interrupts = <17>;
-
- status = "disabled";
};
wmac@10180000 {
@@ -207,8 +234,6 @@
interrupts = <6>;
ralink,eeprom = "soc_wmac.eeprom";
-
- status = "disabled";
};
otg@101c0000 {
diff --git a/target/linux/ramips/dts/rt3352.dtsi b/target/linux/ramips/dts/rt3352.dtsi
index e4d35d87c2..db38b00e63 100644
--- a/target/linux/ramips/dts/rt3352.dtsi
+++ b/target/linux/ramips/dts/rt3352.dtsi
@@ -106,8 +106,6 @@
interrupt-parent = <&intc>;
interrupts = <6>;
-
- status = "disabled";
};
gpio1: gpio@638 {
@@ -151,6 +149,9 @@
resets = <&rstctrl 18>;
reset-names = "spi";
+ pinctrl-names = "default";
+ pinctrl-0 = <&spi_pins>;
+
status = "disabled";
};
@@ -165,6 +166,32 @@
interrupts = <12>;
reg-shift = <2>;
+
+ pinctrl-names = "default";
+ pinctrl-0 = <&uartlite_pins>;
+ };
+ };
+
+ pinctrl {
+ compatible = "ralink,rt2880-pinmux";
+
+ pinctrl-names = "default";
+ pinctrl-0 = <&state_default>;
+
+ state_default: pinctrl0 {
+ };
+
+ spi_pins: spi {
+ spi {
+ ralink,group = "spi";
+ ralink,function = "spi";
+ };
+ };
+ uartlite_pins: uartlite {
+ uart {
+ ralink,group = "uartlite";
+ ralink,function = "uartlite";
+ };
};
};
@@ -179,8 +206,6 @@
interrupt-parent = <&cpuintc>;
interrupts = <5>;
-
- status = "disabled";
};
esw@10110000 {
@@ -189,8 +214,6 @@
interrupt-parent = <&intc>;
interrupts = <17>;
-
- status = "disabled";
};
wmac@10180000 {
@@ -201,8 +224,6 @@
interrupts = <6>;
ralink,eeprom = "soc_wmac.eeprom";
-
- status = "disabled";
};
ehci@101c0000 {
diff --git a/target/linux/ramips/dts/rt3883.dtsi b/target/linux/ramips/dts/rt3883.dtsi
index d4387a92d0..15c35612d5 100644
--- a/target/linux/ramips/dts/rt3883.dtsi
+++ b/target/linux/ramips/dts/rt3883.dtsi
@@ -114,8 +114,6 @@
ralink,register-map = [ 00 04 08 0c
20 24 28 2c
30 34 ];
-
- status = "disabled";
};
gpio1: gpio@638 {
@@ -175,6 +173,9 @@
resets = <&rstctrl 18>;
reset-names = "spi";
+ pinctrl-names = "default";
+ pinctrl-0 = <&spi_pins>;
+
status = "disabled";
};
@@ -189,6 +190,32 @@
interrupts = <12>;
reg-shift = <2>;
+
+ pinctrl-names = "default";
+ pinctrl-0 = <&uartlite_pins>;
+ };
+ };
+
+ pinctrl {
+ compatible = "ralink,rt2880-pinmux";
+
+ pinctrl-names = "default";
+ pinctrl-0 = <&state_default>;
+ state_default: pinctrl0 {
+ };
+
+ spi_pins: spi {
+ spi {
+ ralink,group = "spi";
+ ralink,function = "spi";
+ };
+ };
+
+ uartlite_pins: uartlite {
+ uart {
+ ralink,group = "uartlite";
+ ralink,function = "uartlite";
+ };
};
};
@@ -199,8 +226,6 @@
interrupt-parent = <&cpuintc>;
interrupts = <5>;
- status = "disabled";
-
port@0 {
compatible = "ralink,rt3883-port", "ralink,eth-port";
reg = <0>;
@@ -320,8 +345,6 @@
interrupts = <6>;
ralink,eeprom = "soc_wmac.eeprom";
-
- status = "disabled";
};
ehci@101c0000 {
diff --git a/target/linux/ramips/dts/rt5350.dtsi b/target/linux/ramips/dts/rt5350.dtsi
index e132699da3..cb9077f7b4 100644
--- a/target/linux/ramips/dts/rt5350.dtsi
+++ b/target/linux/ramips/dts/rt5350.dtsi
@@ -110,8 +110,6 @@
ralink,register-map = [ 00 04 08 0c
20 24 28 2c
30 34 ];
-
- status = "disabled";
};
gpio1: gpio@638 {
@@ -162,6 +160,9 @@
#address-cells = <1>;
#size-cells = <0>;
+ pinctrl-names = "default";
+ pinctrl-0 = <&i2c_pins>;
+
status = "disabled";
};
@@ -175,6 +176,9 @@
#address-cells = <1>;
#size-cells = <1>;
+ pinctrl-names = "default";
+ pinctrl-0 = <&spi_pins>;
+
status = "disabled";
};
@@ -188,6 +192,9 @@
interrupt-parent = <&intc>;
interrupts = <12>;
+ pinctrl-names = "default";
+ pinctrl-0 = <&uartlite_pins>;
+
reg-shift = <2>;
};
@@ -200,6 +207,41 @@
};
};
+ pinctrl {
+ compatible = "ralink,rt2880-pinmux";
+
+ pinctrl-names = "default";
+ pinctrl-0 = <&state_default>;
+
+ state_default: pinctrl0 {
+ };
+
+ spi_pins: spi {
+ spi {
+ ralink,group = "spi";
+ ralink,function = "spi";
+ };
+ };
+ i2c_pins: i2c {
+ i2c {
+ ralink,group = "i2c";
+ ralink,function = "i2c";
+ };
+ };
+ phy_led_pins: phy_led {
+ phy_led {
+ ralink,group = "led";
+ ralink,function = "led";
+ };
+ };
+ uartlite_pins: uartlite {
+ uart {
+ ralink,group = "uartlite";
+ ralink,function = "uartlite";
+ };
+ };
+ };
+
rstctrl: rstctrl {
compatible = "ralink,rt5350-reset", "ralink,rt2880-reset";
#reset-cells = <1>;
@@ -218,8 +260,6 @@
interrupt-parent = <&cpuintc>;
interrupts = <5>;
-
- status = "disabled";
};
esw@10110000 {
@@ -228,8 +268,6 @@
interrupt-parent = <&intc>;
interrupts = <17>;
-
- status = "disabled";
};
wmac@10180000 {
@@ -240,8 +278,6 @@
interrupts = <6>;
ralink,eeprom = "soc_wmac.eeprom";
-
- status = "disabled";
};
ehci@101c0000 {
diff --git a/target/linux/ramips/mt7620a/config-3.10 b/target/linux/ramips/mt7620a/config-3.10
index 618c27a901..47ed648fd2 100644
--- a/target/linux/ramips/mt7620a/config-3.10
+++ b/target/linux/ramips/mt7620a/config-3.10
@@ -1,7 +1,6 @@
CONFIG_ARCH_BINFMT_ELF_RANDOMIZE_PIE=y
CONFIG_ARCH_DISCARD_MEMBLOCK=y
CONFIG_ARCH_HAS_ATOMIC64_DEC_IF_POSITIVE=y
-CONFIG_ARCH_HAS_RESET_CONTROLLER=y
CONFIG_ARCH_HAVE_CUSTOM_GPIO_H=y
CONFIG_ARCH_HIBERNATION_POSSIBLE=y
CONFIG_ARCH_REQUIRE_GPIOLIB=y
@@ -30,6 +29,7 @@ CONFIG_CPU_R4K_FPU=y
CONFIG_CPU_SUPPORTS_32BIT_KERNEL=y
CONFIG_CPU_SUPPORTS_HIGHMEM=y
CONFIG_CSRC_R4K=y
+CONFIG_DEBUG_PINCTRL=y
CONFIG_DMA_NONCOHERENT=y
# CONFIG_DTB_MT7620A_EVAL is not set
CONFIG_DTB_RT_NONE=y
@@ -135,6 +135,11 @@ CONFIG_PCI=y
CONFIG_PCI_DOMAINS=y
CONFIG_PERF_USE_VMALLOC=y
CONFIG_PHYLIB=y
+# CONFIG_PINCONF is not set
+CONFIG_PINCTRL=y
+CONFIG_PINCTRL_RT2880=y
+# CONFIG_PINCTRL_SINGLE is not set
+CONFIG_PINMUX=y
# CONFIG_PREEMPT_RCU is not set
CONFIG_RALINK=y
CONFIG_RALINK_USBPHY=y
diff --git a/target/linux/ramips/patches-3.10/0006-GPIO-MIPS-ralink-add-gpio-driver-for-ralink-SoC.patch b/target/linux/ramips/patches-3.10/0006-GPIO-MIPS-ralink-add-gpio-driver-for-ralink-SoC.patch
index cd4f38f925..19d592bde2 100644
--- a/target/linux/ramips/patches-3.10/0006-GPIO-MIPS-ralink-add-gpio-driver-for-ralink-SoC.patch
+++ b/target/linux/ramips/patches-3.10/0006-GPIO-MIPS-ralink-add-gpio-driver-for-ralink-SoC.patch
@@ -19,9 +19,11 @@ Cc: linux-gpio@vger.kernel.org
create mode 100644 arch/mips/include/asm/mach-ralink/gpio.h
create mode 100644 drivers/gpio/gpio-ralink.c
---- a/arch/mips/Kconfig
-+++ b/arch/mips/Kconfig
-@@ -444,6 +444,7 @@ config RALINK
+Index: linux-3.10.9/arch/mips/Kconfig
+===================================================================
+--- linux-3.10.9.orig/arch/mips/Kconfig 2013-08-26 17:48:27.481164281 +0200
++++ linux-3.10.9/arch/mips/Kconfig 2013-08-27 23:15:40.751965869 +0200
+@@ -444,6 +444,7 @@
select SYS_HAS_EARLY_PRINTK
select HAVE_MACH_CLKDEV
select CLKDEV_LOOKUP
@@ -29,8 +31,10 @@ Cc: linux-gpio@vger.kernel.org
config SGI_IP22
bool "SGI IP22 (Indy/Indigo2)"
---- /dev/null
-+++ b/arch/mips/include/asm/mach-ralink/gpio.h
+Index: linux-3.10.9/arch/mips/include/asm/mach-ralink/gpio.h
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-3.10.9/arch/mips/include/asm/mach-ralink/gpio.h 2013-08-26 17:48:30.941164428 +0200
@@ -0,0 +1,24 @@
+/*
+ * Ralink SoC GPIO API support
@@ -56,9 +60,11 @@ Cc: linux-gpio@vger.kernel.org
+#define gpio_to_irq __gpio_to_irq
+
+#endif /* __ASM_MACH_RALINK_GPIO_H */
---- a/drivers/gpio/Kconfig
-+++ b/drivers/gpio/Kconfig
-@@ -209,6 +209,12 @@ config GPIO_RCAR
+Index: linux-3.10.9/drivers/gpio/Kconfig
+===================================================================
+--- linux-3.10.9.orig/drivers/gpio/Kconfig 2013-08-21 00:40:47.000000000 +0200
++++ linux-3.10.9/drivers/gpio/Kconfig 2013-08-26 17:48:30.941164428 +0200
+@@ -209,6 +209,12 @@
help
Say yes here to support GPIO on Renesas R-Car SoCs.
@@ -71,9 +77,11 @@ Cc: linux-gpio@vger.kernel.org
config GPIO_SPEAR_SPICS
bool "ST SPEAr13xx SPI Chip Select as GPIO support"
depends on PLAT_SPEAR
---- a/drivers/gpio/Makefile
-+++ b/drivers/gpio/Makefile
-@@ -56,6 +56,7 @@ obj-$(CONFIG_GPIO_PCF857X) += gpio-pcf85
+Index: linux-3.10.9/drivers/gpio/Makefile
+===================================================================
+--- linux-3.10.9.orig/drivers/gpio/Makefile 2013-08-21 00:40:47.000000000 +0200
++++ linux-3.10.9/drivers/gpio/Makefile 2013-08-26 17:48:30.941164428 +0200
+@@ -56,6 +56,7 @@
obj-$(CONFIG_GPIO_PCH) += gpio-pch.o
obj-$(CONFIG_GPIO_PL061) += gpio-pl061.o
obj-$(CONFIG_GPIO_PXA) += gpio-pxa.o
@@ -81,9 +89,11 @@ Cc: linux-gpio@vger.kernel.org
obj-$(CONFIG_GPIO_RC5T583) += gpio-rc5t583.o
obj-$(CONFIG_GPIO_RDC321X) += gpio-rdc321x.o
obj-$(CONFIG_GPIO_RCAR) += gpio-rcar.o
---- /dev/null
-+++ b/drivers/gpio/gpio-ralink.c
-@@ -0,0 +1,337 @@
+Index: linux-3.10.9/drivers/gpio/gpio-ralink.c
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-3.10.9/drivers/gpio/gpio-ralink.c 2013-08-27 22:37:34.999868257 +0200
+@@ -0,0 +1,345 @@
+/*
+ * 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 published
@@ -337,6 +347,13 @@ Cc: linux-gpio@vger.kernel.org
+ dev_info(rg->chip.dev, "registering %d irq handlers\n", rg->chip.ngpio);
+}
+
++static int ralink_gpio_request(struct gpio_chip *chip, unsigned offset)
++{
++ int gpio = chip->base + offset;
++
++ return pinctrl_request_gpio(gpio);
++}
++
+static int ralink_gpio_probe(struct platform_device *pdev)
+{
+ struct device_node *np = pdev->dev.of_node;
@@ -388,6 +405,7 @@ Cc: linux-gpio@vger.kernel.org
+ rg->chip.direction_output = ralink_gpio_direction_output;
+ rg->chip.get = ralink_gpio_get;
+ rg->chip.set = ralink_gpio_set;
++ rg->chip.request = ralink_gpio_request;
+ rg->chip.to_irq = ralink_gpio_to_irq;
+
+ /* set polarity to low for all lines */
diff --git a/target/linux/ramips/patches-3.10/0101-MIPS-ralink-add-pinmux-driver.patch b/target/linux/ramips/patches-3.10/0101-MIPS-ralink-add-pinmux-driver.patch
deleted file mode 100644
index 3fd0ddf739..0000000000
--- a/target/linux/ramips/patches-3.10/0101-MIPS-ralink-add-pinmux-driver.patch
+++ /dev/null
@@ -1,144 +0,0 @@
-From 9a3055dad80db43aeb22b247512e18e8f06bf54c Mon Sep 17 00:00:00 2001
-From: John Crispin <blogic@openwrt.org>
-Date: Mon, 22 Apr 2013 23:11:42 +0200
-Subject: [PATCH 02/33] MIPS: ralink: add pinmux driver
-
-Add code to setup the pinmux on ralonk SoC. The SoC has a single 32 bit register
-for this functionality with simple on/off bits. Building a full featured pinctrl
-driver would be overkill.
-
-Signed-off-by: John Crispin <blogic@openwrt.org>
----
- arch/mips/ralink/Makefile | 2 +-
- arch/mips/ralink/common.h | 2 ++
- arch/mips/ralink/of.c | 2 ++
- arch/mips/ralink/pinmux.c | 77 +++++++++++++++++++++++++++++++++++++++++++++
- 4 files changed, 82 insertions(+), 1 deletion(-)
- create mode 100644 arch/mips/ralink/pinmux.c
-
---- a/arch/mips/ralink/Makefile
-+++ b/arch/mips/ralink/Makefile
-@@ -6,7 +6,7 @@
- # Copyright (C) 2009-2011 Gabor Juhos <juhosg@openwrt.org>
- # Copyright (C) 2013 John Crispin <blogic@openwrt.org>
-
--obj-y := prom.o of.o reset.o clk.o irq.o timer.o
-+obj-y := prom.o of.o reset.o clk.o irq.o timer.o pinmux.o
-
- obj-$(CONFIG_CLKEVT_RT3352) += cevt-rt3352.o
-
---- a/arch/mips/ralink/common.h
-+++ b/arch/mips/ralink/common.h
-@@ -52,4 +52,6 @@ extern void prom_soc_init(struct ralink_
-
- __iomem void *plat_of_remap_node(const char *node);
-
-+void ralink_pinmux(void);
-+
- #endif /* _RALINK_COMMON_H__ */
---- a/arch/mips/ralink/of.c
-+++ b/arch/mips/ralink/of.c
-@@ -113,6 +113,8 @@ static int __init plat_of_setup(void)
- /* make sure ithat the reset controller is setup early */
- ralink_rst_init();
-
-+ ralink_pinmux();
-+
- return 0;
- }
-
---- /dev/null
-+++ b/arch/mips/ralink/pinmux.c
-@@ -0,0 +1,92 @@
-+/*
-+ * 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 published
-+ * by the Free Software Foundation.
-+ *
-+ * Copyright (C) 2013 John Crispin <blogic@openwrt.org>
-+ */
-+
-+#include <linux/kernel.h>
-+#include <linux/of.h>
-+
-+#include <asm/mach-ralink/ralink_regs.h>
-+
-+#include "common.h"
-+
-+#define SYSC_REG_GPIO_MODE 0x60
-+
-+static int ralink_mux_mask(const char *name, struct ralink_pinmux_grp *grps, u32* mask)
-+{
-+ for (; grps && grps->name; grps++)
-+ if (!strcmp(grps->name, name)) {
-+ *mask = grps->mask;
-+ return 0;
-+ }
-+
-+ return -1;
-+}
-+
-+void ralink_pinmux(void)
-+{
-+ const __be32 *wdt;
-+ struct device_node *np;
-+ struct property *prop;
-+ const char *uart, *pci, *pin;
-+ u32 mode = 0;
-+ int m;
-+
-+ np = of_find_compatible_node(NULL, NULL, "ralink,rt3050-sysc");
-+ if (!np)
-+ return;
-+
-+ of_property_for_each_string(np, "ralink,gpiomux", prop, pin) {
-+ if (!ralink_mux_mask(pin, rt_gpio_pinmux.mode, &m)) {
-+ mode |= m;
-+ pr_debug("pinmux: registered gpiomux \"%s\"\n", pin);
-+ } else {
-+ pr_err("pinmux: failed to load \"%s\"\n", pin);
-+ }
-+ }
-+
-+ of_property_for_each_string(np, "ralink,pinmux", prop, pin) {
-+ if (!ralink_mux_mask(pin, rt_gpio_pinmux.mode, &m)) {
-+ mode &= ~m;
-+ pr_debug("pinmux: registered pinmux \"%s\"\n", pin);
-+ } else {
-+ pr_err("pinmux: failed to load group \"%s\"\n", pin);
-+ }
-+ }
-+
-+ of_property_read_string(np, "ralink,uartmux", &uart);
-+ if (uart) {
-+ mode &= ~(rt_gpio_pinmux.uart_mask << rt_gpio_pinmux.uart_shift);
-+ if (ralink_mux_mask(uart, rt_gpio_pinmux.uart, &m)) {
-+ pr_err("pinmux: failed to load uartmux \"%s\"\n", uart);
-+ mode |= rt_gpio_pinmux.uart_mask << rt_gpio_pinmux.uart_shift;
-+ } else {
-+ mode |= m << rt_gpio_pinmux.uart_shift;
-+ pr_debug("pinmux: registered uartmux \"%s\"\n", uart);
-+ }
-+ }
-+
-+ wdt = of_get_property(np, "ralink,wdtmux", NULL);
-+ if (wdt && *wdt && rt_gpio_pinmux.wdt_reset)
-+ rt_gpio_pinmux.wdt_reset();
-+
-+ pci = NULL;
-+ if (rt_gpio_pinmux.pci)
-+ of_property_read_string(np, "ralink,pcimux", &pci);
-+
-+ if (pci) {
-+ mode &= ~(rt_gpio_pinmux.pci_mask << rt_gpio_pinmux.pci_shift);
-+ if (ralink_mux_mask(pci, rt_gpio_pinmux.pci, &m)) {
-+ mode |= rt_gpio_pinmux.pci_mask << rt_gpio_pinmux.pci_shift;
-+ pr_debug("pinmux: failed to load pcimux \"%s\"\n", pci);
-+ } else {
-+ mode |= m << rt_gpio_pinmux.pci_shift;
-+ pr_debug("pinmux: registered pcimux \"%s\"\n", pci);
-+ }
-+ }
-+
-+ rt_sysc_w32(mode, SYSC_REG_GPIO_MODE);
-+}
diff --git a/target/linux/ramips/patches-3.10/0122-pinmux.patch b/target/linux/ramips/patches-3.10/0122-pinmux.patch
new file mode 100644
index 0000000000..fa0dd05226
--- /dev/null
+++ b/target/linux/ramips/patches-3.10/0122-pinmux.patch
@@ -0,0 +1,1276 @@
+From d59fe652e3674e98caa688b4ddc9308007267adc Mon Sep 17 00:00:00 2001
+From: John Crispin <blogic@openwrt.org>
+Date: Mon, 19 Aug 2013 13:49:52 +0200
+Subject: [PATCH] pinctrl: ralink; add pinctrl driver
+
+Signed-off-by: John Crispin <blogic@openwrt.org>
+---
+ arch/mips/Kconfig | 2 +
+ arch/mips/ralink/common.h | 21 +--
+ arch/mips/ralink/dts/mt7620a.dtsi | 7 +
+ drivers/pinctrl/Kconfig | 5 +
+ drivers/pinctrl/Makefile | 1 +
+ drivers/pinctrl/pinctrl-rt2880.c | 368 +++++++++++++++++++++++++++++++++++++
+ 6 files changed, 385 insertions(+), 19 deletions(-)
+ create mode 100644 drivers/pinctrl/pinctrl-rt2880.c
+
+Index: linux-3.10.9/arch/mips/Kconfig
+===================================================================
+--- linux-3.10.9.orig/arch/mips/Kconfig 2013-08-28 16:34:42.449951676 +0200
++++ linux-3.10.9/arch/mips/Kconfig 2013-08-28 16:34:43.361951711 +0200
+@@ -446,6 +446,8 @@
+ select HAVE_MACH_CLKDEV
+ select CLKDEV_LOOKUP
+ select ARCH_REQUIRE_GPIOLIB
++ select PINCTRL
++ select PINCTRL_RT2880
+
+ config SGI_IP22
+ bool "SGI IP22 (Indy/Indigo2)"
+Index: linux-3.10.9/drivers/pinctrl/Kconfig
+===================================================================
+--- linux-3.10.9.orig/drivers/pinctrl/Kconfig 2013-08-21 00:40:47.000000000 +0200
++++ linux-3.10.9/drivers/pinctrl/Kconfig 2013-08-28 16:34:43.361951711 +0200
+@@ -114,6 +114,11 @@
+ select PINMUX
+ select PINCONF
+
++config PINCTRL_RT2880
++ bool
++ depends on RALINK
++ select PINMUX
++
+ config PINCTRL_FALCON
+ bool
+ depends on SOC_FALCON
+Index: linux-3.10.9/drivers/pinctrl/Makefile
+===================================================================
+--- linux-3.10.9.orig/drivers/pinctrl/Makefile 2013-08-21 00:40:47.000000000 +0200
++++ linux-3.10.9/drivers/pinctrl/Makefile 2013-08-28 16:34:43.361951711 +0200
+@@ -45,6 +45,7 @@
+ obj-$(CONFIG_PINCTRL_S3C64XX) += pinctrl-s3c64xx.o
+ obj-$(CONFIG_PINCTRL_XWAY) += pinctrl-xway.o
+ obj-$(CONFIG_PINCTRL_LANTIQ) += pinctrl-lantiq.o
++obj-$(CONFIG_PINCTRL_RT2880) += pinctrl-rt2880.o
+
+ obj-$(CONFIG_PLAT_ORION) += mvebu/
+ obj-$(CONFIG_ARCH_SHMOBILE) += sh-pfc/
+Index: linux-3.10.9/drivers/pinctrl/pinctrl-rt2880.c
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-3.10.9/drivers/pinctrl/pinctrl-rt2880.c 2013-08-28 16:34:43.361951711 +0200
+@@ -0,0 +1,456 @@
++/*
++ * linux/drivers/pinctrl/pinctrl-rt2880.c
++ *
++ * 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.
++ *
++ * Copyright (C) 2013 John Crispin <blogic@openwrt.org>
++ */
++
++#include <linux/module.h>
++#include <linux/device.h>
++#include <linux/io.h>
++#include <linux/platform_device.h>
++#include <linux/slab.h>
++#include <linux/of.h>
++#include <linux/pinctrl/pinctrl.h>
++#include <linux/pinctrl/pinconf.h>
++#include <linux/pinctrl/pinmux.h>
++#include <linux/pinctrl/consumer.h>
++#include <linux/pinctrl/machine.h>
++
++#include <asm/mach-ralink/ralink_regs.h>
++#include <asm/mach-ralink/pinmux.h>
++#include <asm/mach-ralink/mt7620.h>
++
++#include "core.h"
++
++#define SYSC_REG_GPIO_MODE 0x60
++
++struct rt2880_priv {
++ struct device *dev;
++
++ struct pinctrl_pin_desc *pads;
++ struct pinctrl_desc *desc;
++
++ struct rt2880_pmx_func **func;
++ int func_count;
++
++ struct rt2880_pmx_group *groups;
++ const char **group_names;
++ int group_count;
++
++ uint8_t *gpio;
++ int max_pins;
++};
++
++struct rt2880_pmx_group *rt2880_pinmux_data = NULL;
++
++static int rt2880_get_group_count(struct pinctrl_dev *pctrldev)
++{
++ struct rt2880_priv *p = pinctrl_dev_get_drvdata(pctrldev);
++
++ return p->group_count;
++}
++
++static const char *rt2880_get_group_name(struct pinctrl_dev *pctrldev,
++ unsigned group)
++{
++ struct rt2880_priv *p = pinctrl_dev_get_drvdata(pctrldev);
++
++ if (group >= p->group_count)
++ return NULL;
++
++ return p->group_names[group];
++}
++
++static int rt2880_get_group_pins(struct pinctrl_dev *pctrldev,
++ unsigned group,
++ const unsigned **pins,
++ unsigned *num_pins)
++{
++ struct rt2880_priv *p = pinctrl_dev_get_drvdata(pctrldev);
++
++ if (group >= p->group_count)
++ return -EINVAL;
++
++ *pins = p->groups[group].func[0].pins;
++ *num_pins = p->groups[group].func[0].pin_count;
++
++ return 0;
++}
++
++static void rt2880_pinctrl_dt_free_map(struct pinctrl_dev *pctrldev,
++ struct pinctrl_map *map, unsigned num_maps)
++{
++ int i;
++
++ for (i = 0; i < num_maps; i++)
++ if (map[i].type == PIN_MAP_TYPE_CONFIGS_PIN ||
++ map[i].type == PIN_MAP_TYPE_CONFIGS_GROUP)
++ kfree(map[i].data.configs.configs);
++ kfree(map);
++}
++
++static void rt2880_pinctrl_pin_dbg_show(struct pinctrl_dev *pctrldev,
++ struct seq_file *s,
++ unsigned offset)
++{
++ seq_printf(s, "ralink pio");
++}
++
++static void rt2880_pinctrl_dt_subnode_to_map(struct pinctrl_dev *pctrldev,
++ struct device_node *np,
++ struct pinctrl_map **map)
++{
++ const char *function;
++ int func = of_property_read_string(np, "ralink,function", &function);
++ int grps = of_property_count_strings(np, "ralink,group");
++ int i;
++
++ if (func || !grps)
++ return;
++
++ for (i = 0; i < grps; i++) {
++ const char *group;
++
++ of_property_read_string_index(np, "ralink,group", i, &group);
++
++ (*map)->type = PIN_MAP_TYPE_MUX_GROUP;
++ (*map)->name = function;
++ (*map)->data.mux.group = group;
++ (*map)->data.mux.function = function;
++ (*map)++;
++ }
++}
++
++static int rt2880_pinctrl_dt_node_to_map(struct pinctrl_dev *pctrldev,
++ struct device_node *np_config,
++ struct pinctrl_map **map,
++ unsigned *num_maps)
++{
++ int max_maps = 0;
++ struct pinctrl_map *tmp;
++ struct device_node *np;
++
++ for_each_child_of_node(np_config, np) {
++ int ret = of_property_count_strings(np, "ralink,group");
++
++ if (ret >= 0)
++ max_maps += ret;
++ }
++
++ if (!max_maps)
++ return max_maps;
++
++ *map = kzalloc(max_maps * sizeof(struct pinctrl_map), GFP_KERNEL);
++ if (!*map)
++ return -ENOMEM;
++
++ tmp = *map;
++
++ for_each_child_of_node(np_config, np)
++ rt2880_pinctrl_dt_subnode_to_map(pctrldev, np, &tmp);
++ *num_maps = max_maps;
++
++ return 0;
++}
++
++static const struct pinctrl_ops rt2880_pctrl_ops = {
++ .get_groups_count = rt2880_get_group_count,
++ .get_group_name = rt2880_get_group_name,
++ .get_group_pins = rt2880_get_group_pins,
++ .pin_dbg_show = rt2880_pinctrl_pin_dbg_show,
++ .dt_node_to_map = rt2880_pinctrl_dt_node_to_map,
++ .dt_free_map = rt2880_pinctrl_dt_free_map,
++};
++
++static int rt2880_pmx_func_count(struct pinctrl_dev *pctrldev)
++{
++ struct rt2880_priv *p = pinctrl_dev_get_drvdata(pctrldev);
++
++ return p->func_count;
++}
++
++static const char *rt2880_pmx_func_name(struct pinctrl_dev *pctrldev,
++ unsigned func)
++{
++ struct rt2880_priv *p = pinctrl_dev_get_drvdata(pctrldev);
++
++ return p->func[func]->name;
++}
++
++static int rt2880_pmx_group_get_groups(struct pinctrl_dev *pctrldev,
++ unsigned func,
++ const char * const **groups,
++ unsigned * const num_groups)
++{
++ struct rt2880_priv *p = pinctrl_dev_get_drvdata(pctrldev);
++
++ if (p->func[func]->group_count == 1)
++ *groups = &p->group_names[p->func[func]->groups[0]];
++ else
++ *groups = p->group_names;
++
++ *num_groups = p->func[func]->group_count;
++
++ return 0;
++}
++
++static int rt2880_pmx_group_enable(struct pinctrl_dev *pctrldev,
++ unsigned func,
++ unsigned group)
++{
++ struct rt2880_priv *p = pinctrl_dev_get_drvdata(pctrldev);
++ u32 mode = 0;
++
++ /* dont allow double use */
++ if (p->groups[group].enabled) {
++ dev_err(p->dev, "%s is already enabled\n", p->groups[group].name);
++ return -EBUSY;
++ }
++
++ p->groups[group].enabled = 1;
++ p->func[func]->enabled = 1;
++
++ mode = rt_sysc_r32(SYSC_REG_GPIO_MODE);
++ mode &= ~(p->groups[group].mask << p->groups[group].shift);
++
++ /* function 0 is gpio and needs special handling */
++ if (func == 0) {
++ int i;
++
++ mode |= p->groups[group].mask << p->groups[group].shift;
++ /* mark the pins as gpio */
++ for (i = 0; i < p->groups[group].func[0].pin_count; i++)
++ p->gpio[p->groups[group].func[0].pins[i]] = 1;
++ } else {
++ mode |= p->func[func]->value << p->groups[group].shift;
++ }
++ rt_sysc_w32(mode, SYSC_REG_GPIO_MODE);
++
++ return 0;
++}
++
++static int rt2880_pmx_group_gpio_request_enable(struct pinctrl_dev *pctrldev,
++ struct pinctrl_gpio_range *range,
++ unsigned pin)
++{
++ struct rt2880_priv *p = pinctrl_dev_get_drvdata(pctrldev);
++
++ if (!p->gpio[pin]) {
++ dev_err(p->dev, "pin %d is not set to gpio mux\n", pin);
++ return -EINVAL;
++ }
++
++ return 0;
++}
++
++static const struct pinmux_ops rt2880_pmx_group_ops = {
++ .get_functions_count = rt2880_pmx_func_count,
++ .get_function_name = rt2880_pmx_func_name,
++ .get_function_groups = rt2880_pmx_group_get_groups,
++ .enable = rt2880_pmx_group_enable,
++ .gpio_request_enable = rt2880_pmx_group_gpio_request_enable,
++};
++
++static struct pinctrl_desc rt2880_pctrl_desc = {
++ .owner = THIS_MODULE,
++ .name = "rt2880-pinmux",
++ .pctlops = &rt2880_pctrl_ops,
++ .pmxops = &rt2880_pmx_group_ops,
++};
++
++static struct rt2880_pmx_func gpio_func = {
++ .name = "gpio",
++};
++
++static int rt2880_pinmux_index(struct rt2880_priv *p)
++{
++ struct rt2880_pmx_func **f;
++ struct rt2880_pmx_group *mux = p->groups;
++ int i, j, c = 0;
++
++ /* count the mux functions */
++ while (mux->name) {
++ p->group_count++;
++ mux++;
++ }
++
++ /* allocate the group names array needed by the gpio function */
++ p->group_names = devm_kzalloc(p->dev, sizeof(char *) * p->group_count, GFP_KERNEL);
++ if (!p->group_names)
++ return -1;
++
++ for (i = 0; i < p->group_count; i++) {
++ p->group_names[i] = p->groups[i].name;
++ p->func_count += p->groups[i].func_count;
++ }
++
++ /* we have a dummy function[0] for gpio */
++ p->func_count++;
++
++ /* allocate our function and group mapping index buffers */
++ f = p->func = devm_kzalloc(p->dev, sizeof(struct rt2880_pmx_func) * p->func_count, GFP_KERNEL);
++ gpio_func.groups = devm_kzalloc(p->dev, sizeof(int) * p->group_count, GFP_KERNEL);
++ if (!f || !gpio_func.groups)
++ return -1;
++
++ /* add a backpointer to the function so it knows its group */
++ gpio_func.group_count = p->group_count;
++ for (i = 0; i < gpio_func.group_count; i++)
++ gpio_func.groups[i] = i;
++
++ f[c] = &gpio_func;
++ c++;
++
++ /* add remaining functions */
++ for (i = 0; i < p->group_count; i++) {
++ for (j = 0; j < p->groups[i].func_count; j++) {
++ int k;
++
++ f[c] = &p->groups[i].func[j];
++ f[c]->groups = devm_kzalloc(p->dev, sizeof(int), GFP_KERNEL);
++ f[c]->groups[0] = i;
++ f[c]->group_count = 1;
++ c++;
++ }
++ }
++ return 0;
++}
++
++static int rt2880_pinmux_pins(struct rt2880_priv *p)
++{
++ int i, j;
++
++ /* loop over the functions and initialize the pins array. also work out the highest pin used */
++ for (i = 0; i < p->func_count; i++) {
++ int pin;
++
++ if (!p->func[i]->pin_count)
++ continue;
++
++ p->func[i]->pins = devm_kzalloc(p->dev, sizeof(int) * p->func[i]->pin_count, GFP_KERNEL);
++ for (j = 0; j < p->func[i]->pin_count; j++)
++ p->func[i]->pins[j] = p->func[i]->pin_first + j;
++
++ pin = p->func[i]->pin_first + p->func[i]->pin_count;
++ if (pin > p->max_pins)
++ p->max_pins = pin;
++ }
++
++ /* the buffer that tells us which pins are gpio */
++ p->gpio = devm_kzalloc(p->dev,sizeof(uint8_t) * p->max_pins,
++ GFP_KERNEL);
++ /* the pads needed to tell pinctrl about our pins */
++ p->pads = devm_kzalloc(p->dev,
++ sizeof(struct pinctrl_pin_desc) * p->max_pins,
++ GFP_KERNEL);
++ if (!p->pads || !p->gpio ) {
++ dev_err(p->dev, "Failed to allocate gpio data\n");
++ return -ENOMEM;
++ }
++
++ /* pin 0 is always a gpio */
++ p->gpio[0] = 1;
++
++ /* set the pads */
++ for (i = 0; i < p->max_pins; i++) {
++ /* strlen("ioXY") + 1 = 5 */
++ char *name = devm_kzalloc(p->dev, 5, GFP_KERNEL);
++
++ if (!name) {
++ dev_err(p->dev, "Failed to allocate pad name\n");
++ return -ENOMEM;
++ }
++ snprintf(name, 5, "io%d", i);
++ p->pads[i].number = i;
++ p->pads[i].name = name;
++ }
++ p->desc->pins = p->pads;
++ p->desc->npins = p->max_pins;
++
++ return 0;
++}
++
++static int rt2880_pinmux_probe(struct platform_device *pdev)
++{
++ struct rt2880_priv *p;
++ struct pinctrl_dev *dev;
++ struct device_node *np;
++
++ if (!rt2880_pinmux_data)
++ return -ENOSYS;
++
++ /* setup the private data */
++ p = devm_kzalloc(&pdev->dev, sizeof(struct rt2880_priv), GFP_KERNEL);
++ if (!p)
++ return -ENOMEM;
++
++ p->dev = &pdev->dev;
++ p->desc = &rt2880_pctrl_desc;
++ p->groups = rt2880_pinmux_data;
++ platform_set_drvdata(pdev, p);
++
++ /* init the device */
++ if (rt2880_pinmux_index(p)) {
++ dev_err(&pdev->dev, "failed to load index\n");
++ return -EINVAL;
++ }
++ if (rt2880_pinmux_pins(p)) {
++ dev_err(&pdev->dev, "failed to load pins\n");
++ return -EINVAL;
++ }
++ dev = pinctrl_register(p->desc, &pdev->dev, p);
++ if (IS_ERR(dev))
++ return PTR_ERR(dev);
++
++ /* finalize by adding gpio ranges for enables gpio controllers */
++ for_each_compatible_node(np, NULL, "ralink,rt2880-gpio") {
++ const __be32 *ngpio, *gpiobase;
++ struct pinctrl_gpio_range *range;
++ char *name;
++
++ if (!of_device_is_available(np))
++ continue;
++
++ ngpio = of_get_property(np, "ralink,num-gpios", NULL);
++ gpiobase = of_get_property(np, "ralink,gpio-base", NULL);
++ if (!ngpio || !gpiobase) {
++ dev_err(&pdev->dev, "failed to load chip info\n");
++ return -EINVAL;
++ }
++
++ range = devm_kzalloc(p->dev, sizeof(struct pinctrl_gpio_range) + 4, GFP_KERNEL);
++ range->name = name = (char *) &range[1];
++ sprintf(name, "pio");
++ range->npins = __be32_to_cpu(*ngpio);
++ range->base = __be32_to_cpu(*gpiobase);
++ pinctrl_add_gpio_range(dev, range);
++ }
++
++ return 0;
++}
++
++static const struct of_device_id rt2880_pinmux_match[] = {
++ { .compatible = "ralink,rt2880-pinmux" },
++ {},
++};
++MODULE_DEVICE_TABLE(of, rt2880_pinmux_match);
++
++static struct platform_driver rt2880_pinmux_driver = {
++ .probe = rt2880_pinmux_probe,
++ .driver = {
++ .name = "rt2880-pinmux",
++ .owner = THIS_MODULE,
++ .of_match_table = rt2880_pinmux_match,
++ },
++};
++
++int __init rt2880_pinmux_init(void)
++{
++ return platform_driver_register(&rt2880_pinmux_driver);
++}
++
++core_initcall_sync(rt2880_pinmux_init);
+Index: linux-3.10.9/arch/mips/include/asm/mach-ralink/pinmux.h
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-3.10.9/arch/mips/include/asm/mach-ralink/pinmux.h 2013-08-28 16:34:43.361951711 +0200
+@@ -0,0 +1,47 @@
++/*
++ * 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.
++ *
++ * Copyright (C) 2012 John Crispin <blogic@openwrt.org>
++ */
++
++#ifndef _RT288X_PINMUX_H__
++#define _RT288X_PINMUX_H__
++
++#define FUNC(name, value, pin_first, pin_count) { name, value, pin_first, pin_count }
++#define GRP(_name, _func, _mask, _shift) \
++ { .name = _name, .mask = _mask, .shift = _shift, \
++ .func = _func, \
++ .func_count = ARRAY_SIZE(_func) }
++
++struct rt2880_pmx_group;
++
++struct rt2880_pmx_func {
++ const char *name;
++ const char value;
++
++ int pin_first;
++ int pin_count;
++ int *pins;
++
++ int *groups;
++ int group_count;
++
++ int enabled;
++};
++
++struct rt2880_pmx_group {
++ const char *name;
++ int enabled;
++
++ const u32 shift;
++ const char mask;
++
++ struct rt2880_pmx_func *func;
++ int func_count;
++};
++
++extern struct rt2880_pmx_group *rt2880_pinmux_data;
++
++#endif
+Index: linux-3.10.9/arch/mips/ralink/mt7620.c
+===================================================================
+--- linux-3.10.9.orig/arch/mips/ralink/mt7620.c 2013-08-28 16:34:42.829951688 +0200
++++ linux-3.10.9/arch/mips/ralink/mt7620.c 2013-08-28 16:34:43.361951711 +0200
+@@ -17,6 +17,7 @@
+ #include <asm/mipsregs.h>
+ #include <asm/mach-ralink/ralink_regs.h>
+ #include <asm/mach-ralink/mt7620.h>
++#include <asm/mach-ralink/pinmux.h>
+
+ #include "common.h"
+
+@@ -48,118 +49,40 @@
+ /* the pll dividers */
+ static u32 mt7620_clk_divider[] = { 2, 3, 4, 8 };
+
+-static struct ralink_pinmux_grp mode_mux[] = {
+- {
+- .name = "i2c",
+- .mask = MT7620_GPIO_MODE_I2C,
+- .gpio_first = 1,
+- .gpio_last = 2,
+- }, {
+- .name = "spi",
+- .mask = MT7620_GPIO_MODE_SPI,
+- .gpio_first = 3,
+- .gpio_last = 6,
+- }, {
+- .name = "uartlite",
+- .mask = MT7620_GPIO_MODE_UART1,
+- .gpio_first = 15,
+- .gpio_last = 16,
+- }, {
+- .name = "wdt",
+- .mask = MT7620_GPIO_MODE_WDT,
+- .gpio_first = 17,
+- .gpio_last = 17,
+- }, {
+- .name = "mdio",
+- .mask = MT7620_GPIO_MODE_MDIO,
+- .gpio_first = 22,
+- .gpio_last = 23,
+- }, {
+- .name = "rgmii1",
+- .mask = MT7620_GPIO_MODE_RGMII1,
+- .gpio_first = 24,
+- .gpio_last = 35,
+- }, {
+- .name = "spi refclk",
+- .mask = MT7620_GPIO_MODE_SPI_REF_CLK,
+- .gpio_first = 37,
+- .gpio_last = 39,
+- }, {
+- .name = "jtag",
+- .mask = MT7620_GPIO_MODE_JTAG,
+- .gpio_first = 40,
+- .gpio_last = 44,
+- }, {
+- /* shared lines with jtag */
+- .name = "ephy",
+- .mask = MT7620_GPIO_MODE_EPHY,
+- .gpio_first = 40,
+- .gpio_last = 44,
+- }, {
+- .name = "nand",
+- .mask = MT7620_GPIO_MODE_JTAG,
+- .gpio_first = 45,
+- .gpio_last = 59,
+- }, {
+- .name = "rgmii2",
+- .mask = MT7620_GPIO_MODE_RGMII2,
+- .gpio_first = 60,
+- .gpio_last = 71,
+- }, {
+- .name = "wled",
+- .mask = MT7620_GPIO_MODE_WLED,
+- .gpio_first = 72,
+- .gpio_last = 72,
+- }, {0}
++static struct rt2880_pmx_func i2c_grp[] = { FUNC("i2c", 1, 1, 2) };
++static struct rt2880_pmx_func spi_grp[] = { FUNC("spi", 1, 3, 4) };
++static struct rt2880_pmx_func uartf_grp[] = {
++ FUNC("uartf", MT7620_GPIO_MODE_UARTF, 7, 8),
++ FUNC("pcm uartf", MT7620_GPIO_MODE_PCM_UARTF, 7, 8),
++ FUNC("pcm i2s", MT7620_GPIO_MODE_PCM_I2S, 7, 8),
++ FUNC("i2s uartf", MT7620_GPIO_MODE_I2S_UARTF, 7, 8),
++ FUNC("pcm gpio", MT7620_GPIO_MODE_PCM_GPIO, 11, 4),
++ FUNC("gpio uartf", MT7620_GPIO_MODE_GPIO_UARTF, 7, 4),
++ FUNC("gpio i2s", MT7620_GPIO_MODE_GPIO_I2S, 7, 4),
+ };
+-
+-static struct ralink_pinmux_grp uart_mux[] = {
+- {
+- .name = "uartf",
+- .mask = MT7620_GPIO_MODE_UARTF,
+- .gpio_first = 7,
+- .gpio_last = 14,
+- }, {
+- .name = "pcm uartf",
+- .mask = MT7620_GPIO_MODE_PCM_UARTF,
+- .gpio_first = 7,
+- .gpio_last = 14,
+- }, {
+- .name = "pcm i2s",
+- .mask = MT7620_GPIO_MODE_PCM_I2S,
+- .gpio_first = 7,
+- .gpio_last = 14,
+- }, {
+- .name = "i2s uartf",
+- .mask = MT7620_GPIO_MODE_I2S_UARTF,
+- .gpio_first = 7,
+- .gpio_last = 14,
+- }, {
+- .name = "pcm gpio",
+- .mask = MT7620_GPIO_MODE_PCM_GPIO,
+- .gpio_first = 11,
+- .gpio_last = 14,
+- }, {
+- .name = "gpio uartf",
+- .mask = MT7620_GPIO_MODE_GPIO_UARTF,
+- .gpio_first = 7,
+- .gpio_last = 10,
+- }, {
+- .name = "gpio i2s",
+- .mask = MT7620_GPIO_MODE_GPIO_I2S,
+- .gpio_first = 7,
+- .gpio_last = 10,
+- }, {
+- .name = "gpio",
+- .mask = MT7620_GPIO_MODE_GPIO,
+- }, {0}
+-};
+-
+-struct ralink_pinmux rt_gpio_pinmux = {
+- .mode = mode_mux,
+- .uart = uart_mux,
+- .uart_shift = MT7620_GPIO_MODE_UART0_SHIFT,
+- .uart_mask = MT7620_GPIO_MODE_UART0_MASK,
++static struct rt2880_pmx_func uartlite_grp[] = { FUNC("uartlite", 1, 15, 2) };
++static struct rt2880_pmx_func wdt_grp[] = { FUNC("wdt", 1, 17, 1) };
++static struct rt2880_pmx_func mdio_grp[] = { FUNC("mdio", 1, 22, 2) };
++static struct rt2880_pmx_func rgmii1_grp[] = { FUNC("rgmii1", 1, 24, 12) };
++static struct rt2880_pmx_func refclk_grp[] = { FUNC("spi refclk", 1, 37, 3) };
++static struct rt2880_pmx_func ephy_grp[] = { FUNC("ephy", 1, 40, 5) };
++static struct rt2880_pmx_func rgmii2_grp[] = { FUNC("rgmii2", 1, 60, 12) };
++static struct rt2880_pmx_func wled_grp[] = { FUNC("wled", 1, 72, 1) };
++
++static struct rt2880_pmx_group mt7620a_pinmux_data[] = {
++ GRP("i2c", i2c_grp, 1, MT7620_GPIO_MODE_I2C),
++ GRP("spi", spi_grp, 1, MT7620_GPIO_MODE_SPI),
++ GRP("uartlite", uartlite_grp, 1, MT7620_GPIO_MODE_UART1),
++ GRP("wdt", wdt_grp, 1, MT7620_GPIO_MODE_WDT),
++ GRP("mdio", mdio_grp, 1, MT7620_GPIO_MODE_MDIO),
++ GRP("rgmii1", rgmii1_grp, 1, MT7620_GPIO_MODE_RGMII1),
++ GRP("spi refclk", refclk_grp, 1, MT7620_GPIO_MODE_SPI_REF_CLK),
++ GRP("rgmii2", rgmii2_grp, 1, MT7620_GPIO_MODE_RGMII2),
++ GRP("ephy", ephy_grp, 1, MT7620_GPIO_MODE_EPHY),
++ GRP("wled", wled_grp, 1, MT7620_GPIO_MODE_WLED),
++ GRP("uartf", uartf_grp, MT7620_GPIO_MODE_UART0_MASK,
++ MT7620_GPIO_MODE_UART0_SHIFT),
++ { 0 }
+ };
+
+ void __init ralink_clk_init(void)
+@@ -281,4 +204,6 @@
+ (pmu0 & PMU_SW_SET) ? ("sw") : ("hw"));
+ pr_info("Digital PMU set to %s control\n",
+ (pmu1 & DIG_SW_SEL) ? ("sw") : ("hw"));
++
++ rt2880_pinmux_data = mt7620a_pinmux_data;
+ }
+Index: linux-3.10.9/arch/mips/ralink/rt305x.c
+===================================================================
+--- linux-3.10.9.orig/arch/mips/ralink/rt305x.c 2013-08-28 16:34:43.061951698 +0200
++++ linux-3.10.9/arch/mips/ralink/rt305x.c 2013-08-28 16:34:43.365951713 +0200
+@@ -17,90 +17,71 @@
+ #include <asm/mipsregs.h>
+ #include <asm/mach-ralink/ralink_regs.h>
+ #include <asm/mach-ralink/rt305x.h>
++#include <asm/mach-ralink/pinmux.h>
+
+ #include "common.h"
+
+ enum rt305x_soc_type rt305x_soc;
+
+-static struct ralink_pinmux_grp mode_mux[] = {
+- {
+- .name = "i2c",
+- .mask = RT305X_GPIO_MODE_I2C,
+- .gpio_first = RT305X_GPIO_I2C_SD,
+- .gpio_last = RT305X_GPIO_I2C_SCLK,
+- }, {
+- .name = "spi",
+- .mask = RT305X_GPIO_MODE_SPI,
+- .gpio_first = RT305X_GPIO_SPI_EN,
+- .gpio_last = RT305X_GPIO_SPI_CLK,
+- }, {
+- .name = "uartlite",
+- .mask = RT305X_GPIO_MODE_UART1,
+- .gpio_first = RT305X_GPIO_UART1_TXD,
+- .gpio_last = RT305X_GPIO_UART1_RXD,
+- }, {
+- .name = "jtag",
+- .mask = RT305X_GPIO_MODE_JTAG,
+- .gpio_first = RT305X_GPIO_JTAG_TDO,
+- .gpio_last = RT305X_GPIO_JTAG_TDI,
+- }, {
+- .name = "mdio",
+- .mask = RT305X_GPIO_MODE_MDIO,
+- .gpio_first = RT305X_GPIO_MDIO_MDC,
+- .gpio_last = RT305X_GPIO_MDIO_MDIO,
+- }, {
+- .name = "sdram",
+- .mask = RT305X_GPIO_MODE_SDRAM,
+- .gpio_first = RT305X_GPIO_SDRAM_MD16,
+- .gpio_last = RT305X_GPIO_SDRAM_MD31,
+- }, {
+- .name = "rgmii",
+- .mask = RT305X_GPIO_MODE_RGMII,
+- .gpio_first = RT305X_GPIO_GE0_TXD0,
+- .gpio_last = RT305X_GPIO_GE0_RXCLK,
+- }, {0}
++static struct rt2880_pmx_func i2c_func[] = { FUNC("i2c", 0, 1, 2) };
++static struct rt2880_pmx_func spi_func[] = { FUNC("spi", 0, 3, 4) };
++static struct rt2880_pmx_func uartf_func[] = {
++ FUNC("uartf", RT305X_GPIO_MODE_UARTF, 7, 8),
++ FUNC("pcm uartf", RT305X_GPIO_MODE_PCM_UARTF, 7, 8),
++ FUNC("pcm i2s", RT305X_GPIO_MODE_PCM_I2S, 7, 8),
++ FUNC("i2s uartf", RT305X_GPIO_MODE_I2S_UARTF, 7, 8),
++ FUNC("pcm gpio", RT305X_GPIO_MODE_PCM_GPIO, 11, 4),
++ FUNC("gpio uartf", RT305X_GPIO_MODE_GPIO_UARTF, 7, 4),
++ FUNC("gpio i2s", RT305X_GPIO_MODE_GPIO_I2S, 7, 4),
++};
++static struct rt2880_pmx_func uartlite_func[] = { FUNC("uartlite", 0, 15, 2) };
++static struct rt2880_pmx_func jtag_func[] = { FUNC("jtag", 0, 17, 25) };
++static struct rt2880_pmx_func mdio_func[] = { FUNC("mdio", 0, 22, 2) };
++static struct rt2880_pmx_func rt5350_led_func[] = { FUNC("led", 0, 22, 5) };
++static struct rt2880_pmx_func sdram_func[] = { FUNC("sdram", 0, 24, 16) };
++static struct rt2880_pmx_func rt3352_rgmii_func[] = { FUNC("rgmii", 0, 24, 12) };
++static struct rt2880_pmx_func rgmii_func[] = { FUNC("rgmii", 0, 40, 12) };
++static struct rt2880_pmx_func rt3352_lna_func[] = { FUNC("lna", 0, 36, 2) };
++static struct rt2880_pmx_func rt3352_pa_func[] = { FUNC("pa", 0, 38, 2) };
++static struct rt2880_pmx_func rt3352_led_func[] = { FUNC("led", 0, 40, 5) };
++
++static struct rt2880_pmx_group rt3050_pinmux_data[] = {
++ GRP("i2c", i2c_func, 1, RT305X_GPIO_MODE_I2C),
++ GRP("spi", spi_func, 1, RT305X_GPIO_MODE_SPI),
++ GRP("uartf", uartf_func, RT305X_GPIO_MODE_UART0_MASK,
++ RT305X_GPIO_MODE_UART0_SHIFT),
++ GRP("uartlite", uartlite_func, 1, RT305X_GPIO_MODE_UART1),
++ GRP("jtag", jtag_func, 1, RT305X_GPIO_MODE_JTAG),
++ GRP("mdio", mdio_func, 1, RT305X_GPIO_MODE_MDIO),
++ GRP("rgmii", rgmii_func, 1, RT305X_GPIO_MODE_RGMII),
++ GRP("sdram", sdram_func, 1, RT305X_GPIO_MODE_SDRAM),
++ { 0 }
++};
++
++static struct rt2880_pmx_group rt3352_pinmux_data[] = {
++ GRP("i2c", i2c_func, 1, RT305X_GPIO_MODE_I2C),
++ GRP("spi", spi_func, 1, RT305X_GPIO_MODE_SPI),
++ GRP("uartf", uartf_func, RT305X_GPIO_MODE_UART0_MASK,
++ RT305X_GPIO_MODE_UART0_SHIFT),
++ GRP("uartlite", uartlite_func, 1, RT305X_GPIO_MODE_UART1),
++ GRP("jtag", jtag_func, 1, RT305X_GPIO_MODE_JTAG),
++ GRP("mdio", mdio_func, 1, RT305X_GPIO_MODE_MDIO),
++ GRP("rgmii", rt3352_rgmii_func, 1, RT305X_GPIO_MODE_RGMII),
++ GRP("lna", rt3352_lna_func, 1, RT3352_GPIO_MODE_LNA),
++ GRP("pa", rt3352_pa_func, 1, RT3352_GPIO_MODE_PA),
++ GRP("led", rt3352_led_func, 1, RT5350_GPIO_MODE_PHY_LED),
++ { 0 }
+ };
+
+-static struct ralink_pinmux_grp uart_mux[] = {
+- {
+- .name = "uartf",
+- .mask = RT305X_GPIO_MODE_UARTF,
+- .gpio_first = RT305X_GPIO_7,
+- .gpio_last = RT305X_GPIO_14,
+- }, {
+- .name = "pcm uartf",
+- .mask = RT305X_GPIO_MODE_PCM_UARTF,
+- .gpio_first = RT305X_GPIO_7,
+- .gpio_last = RT305X_GPIO_14,
+- }, {
+- .name = "pcm i2s",
+- .mask = RT305X_GPIO_MODE_PCM_I2S,
+- .gpio_first = RT305X_GPIO_7,
+- .gpio_last = RT305X_GPIO_14,
+- }, {
+- .name = "i2s uartf",
+- .mask = RT305X_GPIO_MODE_I2S_UARTF,
+- .gpio_first = RT305X_GPIO_7,
+- .gpio_last = RT305X_GPIO_14,
+- }, {
+- .name = "pcm gpio",
+- .mask = RT305X_GPIO_MODE_PCM_GPIO,
+- .gpio_first = RT305X_GPIO_10,
+- .gpio_last = RT305X_GPIO_14,
+- }, {
+- .name = "gpio uartf",
+- .mask = RT305X_GPIO_MODE_GPIO_UARTF,
+- .gpio_first = RT305X_GPIO_7,
+- .gpio_last = RT305X_GPIO_10,
+- }, {
+- .name = "gpio i2s",
+- .mask = RT305X_GPIO_MODE_GPIO_I2S,
+- .gpio_first = RT305X_GPIO_7,
+- .gpio_last = RT305X_GPIO_10,
+- }, {
+- .name = "gpio",
+- .mask = RT305X_GPIO_MODE_GPIO,
+- }, {0}
++static struct rt2880_pmx_group rt5350_pinmux_data[] = {
++ GRP("i2c", i2c_func, 1, RT305X_GPIO_MODE_I2C),
++ GRP("spi", spi_func, 1, RT305X_GPIO_MODE_SPI),
++ GRP("uartf", uartf_func, RT305X_GPIO_MODE_UART0_MASK,
++ RT305X_GPIO_MODE_UART0_SHIFT),
++ GRP("uartlite", uartlite_func, 1, RT305X_GPIO_MODE_UART1),
++ GRP("jtag", jtag_func, 1, RT305X_GPIO_MODE_JTAG),
++ GRP("led", rt5350_led_func, 1, RT5350_GPIO_MODE_PHY_LED),
++ { 0 }
+ };
+
+ static void rt305x_wdt_reset(void)
+@@ -114,14 +95,6 @@
+ rt_sysc_w32(t, SYSC_REG_SYSTEM_CONFIG);
+ }
+
+-struct ralink_pinmux rt_gpio_pinmux = {
+- .mode = mode_mux,
+- .uart = uart_mux,
+- .uart_shift = RT305X_GPIO_MODE_UART0_SHIFT,
+- .uart_mask = RT305X_GPIO_MODE_UART0_MASK,
+- .wdt_reset = rt305x_wdt_reset,
+-};
+-
+ static unsigned long rt5350_get_mem_size(void)
+ {
+ void __iomem *sysc = (void __iomem *) KSEG1ADDR(RT305X_SYSC_BASE);
+@@ -291,11 +264,14 @@
+ soc_info->mem_base = RT305X_SDRAM_BASE;
+ if (soc_is_rt5350()) {
+ soc_info->mem_size = rt5350_get_mem_size();
++ rt2880_pinmux_data = rt5350_pinmux_data;
+ } else if (soc_is_rt305x() || soc_is_rt3350()) {
+ soc_info->mem_size_min = RT305X_MEM_SIZE_MIN;
+ soc_info->mem_size_max = RT305X_MEM_SIZE_MAX;
++ rt2880_pinmux_data = rt3050_pinmux_data;
+ } else if (soc_is_rt3352()) {
+ soc_info->mem_size_min = RT3352_MEM_SIZE_MIN;
+ soc_info->mem_size_max = RT3352_MEM_SIZE_MAX;
++ rt2880_pinmux_data = rt3352_pinmux_data;
+ }
+ }
+Index: linux-3.10.9/arch/mips/include/asm/mach-ralink/rt305x.h
+===================================================================
+--- linux-3.10.9.orig/arch/mips/include/asm/mach-ralink/rt305x.h 2013-08-21 00:40:47.000000000 +0200
++++ linux-3.10.9/arch/mips/include/asm/mach-ralink/rt305x.h 2013-08-28 16:34:43.365951713 +0200
+@@ -125,24 +125,28 @@
+ #define RT305X_GPIO_GE0_TXD0 40
+ #define RT305X_GPIO_GE0_RXCLK 51
+
+-#define RT305X_GPIO_MODE_I2C BIT(0)
+-#define RT305X_GPIO_MODE_SPI BIT(1)
+ #define RT305X_GPIO_MODE_UART0_SHIFT 2
+ #define RT305X_GPIO_MODE_UART0_MASK 0x7
+ #define RT305X_GPIO_MODE_UART0(x) ((x) << RT305X_GPIO_MODE_UART0_SHIFT)
+-#define RT305X_GPIO_MODE_UARTF 0x0
+-#define RT305X_GPIO_MODE_PCM_UARTF 0x1
+-#define RT305X_GPIO_MODE_PCM_I2S 0x2
+-#define RT305X_GPIO_MODE_I2S_UARTF 0x3
+-#define RT305X_GPIO_MODE_PCM_GPIO 0x4
+-#define RT305X_GPIO_MODE_GPIO_UARTF 0x5
+-#define RT305X_GPIO_MODE_GPIO_I2S 0x6
+-#define RT305X_GPIO_MODE_GPIO 0x7
+-#define RT305X_GPIO_MODE_UART1 BIT(5)
+-#define RT305X_GPIO_MODE_JTAG BIT(6)
+-#define RT305X_GPIO_MODE_MDIO BIT(7)
+-#define RT305X_GPIO_MODE_SDRAM BIT(8)
+-#define RT305X_GPIO_MODE_RGMII BIT(9)
++#define RT305X_GPIO_MODE_UARTF 0
++#define RT305X_GPIO_MODE_PCM_UARTF 1
++#define RT305X_GPIO_MODE_PCM_I2S 2
++#define RT305X_GPIO_MODE_I2S_UARTF 3
++#define RT305X_GPIO_MODE_PCM_GPIO 4
++#define RT305X_GPIO_MODE_GPIO_UARTF 5
++#define RT305X_GPIO_MODE_GPIO_I2S 6
++#define RT305X_GPIO_MODE_GPIO 7
++
++#define RT305X_GPIO_MODE_I2C 0
++#define RT305X_GPIO_MODE_SPI 1
++#define RT305X_GPIO_MODE_UART1 5
++#define RT305X_GPIO_MODE_JTAG 6
++#define RT305X_GPIO_MODE_MDIO 7
++#define RT305X_GPIO_MODE_SDRAM 8
++#define RT305X_GPIO_MODE_RGMII 9
++#define RT5350_GPIO_MODE_PHY_LED 14
++#define RT3352_GPIO_MODE_LNA 18
++#define RT3352_GPIO_MODE_PA 20
+
+ #define RT3352_SYSC_REG_SYSCFG0 0x010
+ #define RT3352_SYSC_REG_SYSCFG1 0x014
+Index: linux-3.10.9/arch/mips/include/asm/mach-ralink/mt7620.h
+===================================================================
+--- linux-3.10.9.orig/arch/mips/include/asm/mach-ralink/mt7620.h 2013-08-28 16:34:42.625951682 +0200
++++ linux-3.10.9/arch/mips/include/asm/mach-ralink/mt7620.h 2013-08-28 18:32:38.370254386 +0200
+@@ -59,7 +59,6 @@
+ #define MT7620_DDR2_SIZE_MIN 32
+ #define MT7620_DDR2_SIZE_MAX 256
+
+-#define MT7620_GPIO_MODE_I2C BIT(0)
+ #define MT7620_GPIO_MODE_UART0_SHIFT 2
+ #define MT7620_GPIO_MODE_UART0_MASK 0x7
+ #define MT7620_GPIO_MODE_UART0(x) ((x) << MT7620_GPIO_MODE_UART0_SHIFT)
+@@ -71,15 +70,17 @@
+ #define MT7620_GPIO_MODE_GPIO_UARTF 0x5
+ #define MT7620_GPIO_MODE_GPIO_I2S 0x6
+ #define MT7620_GPIO_MODE_GPIO 0x7
+-#define MT7620_GPIO_MODE_UART1 BIT(5)
+-#define MT7620_GPIO_MODE_MDIO BIT(8)
+-#define MT7620_GPIO_MODE_RGMII1 BIT(9)
+-#define MT7620_GPIO_MODE_RGMII2 BIT(10)
+-#define MT7620_GPIO_MODE_SPI BIT(11)
+-#define MT7620_GPIO_MODE_SPI_REF_CLK BIT(12)
+-#define MT7620_GPIO_MODE_WLED BIT(13)
+-#define MT7620_GPIO_MODE_JTAG BIT(15)
+-#define MT7620_GPIO_MODE_EPHY BIT(15)
+-#define MT7620_GPIO_MODE_WDT BIT(22)
++
++#define MT7620_GPIO_MODE_I2C 0
++#define MT7620_GPIO_MODE_UART1 5
++#define MT7620_GPIO_MODE_MDIO 8
++#define MT7620_GPIO_MODE_RGMII1 9
++#define MT7620_GPIO_MODE_RGMII2 10
++#define MT7620_GPIO_MODE_SPI 11
++#define MT7620_GPIO_MODE_SPI_REF_CLK 12
++#define MT7620_GPIO_MODE_WLED 13
++#define MT7620_GPIO_MODE_JTAG 15
++#define MT7620_GPIO_MODE_EPHY 15
++#define MT7620_GPIO_MODE_WDT 22
+
+ #endif
+Index: linux-3.10.9/arch/mips/include/asm/mach-ralink/rt3883.h
+===================================================================
+--- linux-3.10.9.orig/arch/mips/include/asm/mach-ralink/rt3883.h 2013-08-21 00:40:47.000000000 +0200
++++ linux-3.10.9/arch/mips/include/asm/mach-ralink/rt3883.h 2013-08-28 18:33:57.554258201 +0200
+@@ -112,8 +112,6 @@
+ #define RT3883_CLKCFG1_PCI_CLK_EN BIT(19)
+ #define RT3883_CLKCFG1_UPHY0_CLK_EN BIT(18)
+
+-#define RT3883_GPIO_MODE_I2C BIT(0)
+-#define RT3883_GPIO_MODE_SPI BIT(1)
+ #define RT3883_GPIO_MODE_UART0_SHIFT 2
+ #define RT3883_GPIO_MODE_UART0_MASK 0x7
+ #define RT3883_GPIO_MODE_UART0(x) ((x) << RT3883_GPIO_MODE_UART0_SHIFT)
+@@ -125,11 +123,15 @@
+ #define RT3883_GPIO_MODE_GPIO_UARTF 0x5
+ #define RT3883_GPIO_MODE_GPIO_I2S 0x6
+ #define RT3883_GPIO_MODE_GPIO 0x7
+-#define RT3883_GPIO_MODE_UART1 BIT(5)
+-#define RT3883_GPIO_MODE_JTAG BIT(6)
+-#define RT3883_GPIO_MODE_MDIO BIT(7)
+-#define RT3883_GPIO_MODE_GE1 BIT(9)
+-#define RT3883_GPIO_MODE_GE2 BIT(10)
++
++#define RT3883_GPIO_MODE_I2C 0
++#define RT3883_GPIO_MODE_SPI 1
++#define RT3883_GPIO_MODE_UART1 5
++#define RT3883_GPIO_MODE_JTAG 6
++#define RT3883_GPIO_MODE_MDIO 7
++#define RT3883_GPIO_MODE_GE1 9
++#define RT3883_GPIO_MODE_GE2 10
++
+ #define RT3883_GPIO_MODE_PCI_SHIFT 11
+ #define RT3883_GPIO_MODE_PCI_MASK 0x7
+ #define RT3883_GPIO_MODE_PCI (RT3883_GPIO_MODE_PCI_MASK << RT3883_GPIO_MODE_PCI_SHIFT)
+Index: linux-3.10.9/arch/mips/ralink/common.h
+===================================================================
+--- linux-3.10.9.orig/arch/mips/ralink/common.h 2013-08-28 16:34:42.453951675 +0200
++++ linux-3.10.9/arch/mips/ralink/common.h 2013-08-28 18:10:55.014197854 +0200
+@@ -11,25 +11,6 @@
+
+ #define RAMIPS_SYS_TYPE_LEN 32
+
+-struct ralink_pinmux_grp {
+- const char *name;
+- u32 mask;
+- int gpio_first;
+- int gpio_last;
+-};
+-
+-struct ralink_pinmux {
+- struct ralink_pinmux_grp *mode;
+- struct ralink_pinmux_grp *uart;
+- int uart_shift;
+- u32 uart_mask;
+- void (*wdt_reset)(void);
+- struct ralink_pinmux_grp *pci;
+- int pci_shift;
+- u32 pci_mask;
+-};
+-extern struct ralink_pinmux rt_gpio_pinmux;
+-
+ struct ralink_soc_info {
+ unsigned char sys_type[RAMIPS_SYS_TYPE_LEN];
+ unsigned char *compatible;
+Index: linux-3.10.9/arch/mips/ralink/rt3883.c
+===================================================================
+--- linux-3.10.9.orig/arch/mips/ralink/rt3883.c 2013-08-21 00:40:47.000000000 +0200
++++ linux-3.10.9/arch/mips/ralink/rt3883.c 2013-08-28 18:47:07.442290690 +0200
+@@ -17,132 +17,50 @@
+ #include <asm/mipsregs.h>
+ #include <asm/mach-ralink/ralink_regs.h>
+ #include <asm/mach-ralink/rt3883.h>
++#include <asm/mach-ralink/pinmux.h>
+
+ #include "common.h"
+
+-static struct ralink_pinmux_grp mode_mux[] = {
+- {
+- .name = "i2c",
+- .mask = RT3883_GPIO_MODE_I2C,
+- .gpio_first = RT3883_GPIO_I2C_SD,
+- .gpio_last = RT3883_GPIO_I2C_SCLK,
+- }, {
+- .name = "spi",
+- .mask = RT3883_GPIO_MODE_SPI,
+- .gpio_first = RT3883_GPIO_SPI_CS0,
+- .gpio_last = RT3883_GPIO_SPI_MISO,
+- }, {
+- .name = "uartlite",
+- .mask = RT3883_GPIO_MODE_UART1,
+- .gpio_first = RT3883_GPIO_UART1_TXD,
+- .gpio_last = RT3883_GPIO_UART1_RXD,
+- }, {
+- .name = "jtag",
+- .mask = RT3883_GPIO_MODE_JTAG,
+- .gpio_first = RT3883_GPIO_JTAG_TDO,
+- .gpio_last = RT3883_GPIO_JTAG_TCLK,
+- }, {
+- .name = "mdio",
+- .mask = RT3883_GPIO_MODE_MDIO,
+- .gpio_first = RT3883_GPIO_MDIO_MDC,
+- .gpio_last = RT3883_GPIO_MDIO_MDIO,
+- }, {
+- .name = "ge1",
+- .mask = RT3883_GPIO_MODE_GE1,
+- .gpio_first = RT3883_GPIO_GE1_TXD0,
+- .gpio_last = RT3883_GPIO_GE1_RXCLK,
+- }, {
+- .name = "ge2",
+- .mask = RT3883_GPIO_MODE_GE2,
+- .gpio_first = RT3883_GPIO_GE2_TXD0,
+- .gpio_last = RT3883_GPIO_GE2_RXCLK,
+- }, {
+- .name = "pci",
+- .mask = RT3883_GPIO_MODE_PCI,
+- .gpio_first = RT3883_GPIO_PCI_AD0,
+- .gpio_last = RT3883_GPIO_PCI_AD31,
+- }, {
+- .name = "lna a",
+- .mask = RT3883_GPIO_MODE_LNA_A,
+- .gpio_first = RT3883_GPIO_LNA_PE_A0,
+- .gpio_last = RT3883_GPIO_LNA_PE_A2,
+- }, {
+- .name = "lna g",
+- .mask = RT3883_GPIO_MODE_LNA_G,
+- .gpio_first = RT3883_GPIO_LNA_PE_G0,
+- .gpio_last = RT3883_GPIO_LNA_PE_G2,
+- }, {0}
++static struct rt2880_pmx_func i2c_func[] = { FUNC("i2c", 0, 1, 2) };
++static struct rt2880_pmx_func spi_func[] = { FUNC("spi", 0, 3, 4) };
++static struct rt2880_pmx_func uartf_func[] = {
++ FUNC("uartf", RT3883_GPIO_MODE_UARTF, 7, 8),
++ FUNC("pcm uartf", RT3883_GPIO_MODE_PCM_UARTF, 7, 8),
++ FUNC("pcm i2s", RT3883_GPIO_MODE_PCM_I2S, 7, 8),
++ FUNC("i2s uartf", RT3883_GPIO_MODE_I2S_UARTF, 7, 8),
++ FUNC("pcm gpio", RT3883_GPIO_MODE_PCM_GPIO, 11, 4),
++ FUNC("gpio uartf", RT3883_GPIO_MODE_GPIO_UARTF, 7, 4),
++ FUNC("gpio i2s", RT3883_GPIO_MODE_GPIO_I2S, 7, 4),
+ };
+-
+-static struct ralink_pinmux_grp uart_mux[] = {
+- {
+- .name = "uartf",
+- .mask = RT3883_GPIO_MODE_UARTF,
+- .gpio_first = RT3883_GPIO_7,
+- .gpio_last = RT3883_GPIO_14,
+- }, {
+- .name = "pcm uartf",
+- .mask = RT3883_GPIO_MODE_PCM_UARTF,
+- .gpio_first = RT3883_GPIO_7,
+- .gpio_last = RT3883_GPIO_14,
+- }, {
+- .name = "pcm i2s",
+- .mask = RT3883_GPIO_MODE_PCM_I2S,
+- .gpio_first = RT3883_GPIO_7,
+- .gpio_last = RT3883_GPIO_14,
+- }, {
+- .name = "i2s uartf",
+- .mask = RT3883_GPIO_MODE_I2S_UARTF,
+- .gpio_first = RT3883_GPIO_7,
+- .gpio_last = RT3883_GPIO_14,
+- }, {
+- .name = "pcm gpio",
+- .mask = RT3883_GPIO_MODE_PCM_GPIO,
+- .gpio_first = RT3883_GPIO_11,
+- .gpio_last = RT3883_GPIO_14,
+- }, {
+- .name = "gpio uartf",
+- .mask = RT3883_GPIO_MODE_GPIO_UARTF,
+- .gpio_first = RT3883_GPIO_7,
+- .gpio_last = RT3883_GPIO_10,
+- }, {
+- .name = "gpio i2s",
+- .mask = RT3883_GPIO_MODE_GPIO_I2S,
+- .gpio_first = RT3883_GPIO_7,
+- .gpio_last = RT3883_GPIO_10,
+- }, {
+- .name = "gpio",
+- .mask = RT3883_GPIO_MODE_GPIO,
+- }, {0}
++static struct rt2880_pmx_func uartlite_func[] = { FUNC("uartlite", 0, 15, 2) };
++static struct rt2880_pmx_func jtag_func[] = { FUNC("jtag", 0, 17, 25) };
++static struct rt2880_pmx_func mdio_func[] = { FUNC("mdio", 0, 22, 2) };
++static struct rt2880_pmx_func lna_a_func[] = { FUNC("lna a", 0, 32, 3) };
++static struct rt2880_pmx_func lna_g_func[] = { FUNC("lna a", 0, 35, 3) };
++static struct rt2880_pmx_func pci_func[] = {
++ FUNC("pci-dev", 0, 40, 32),
++ FUNC("pci-host2", 1, 40, 32),
++ FUNC("pci-host1", 2, 40, 32),
++ FUNC("pci-fnc", 3, 40, 32)
+ };
++static struct rt2880_pmx_func ge1_func[] = { FUNC("ge1", 0, 72, 12) };
++static struct rt2880_pmx_func ge2_func[] = { FUNC("ge1", 0, 84, 12) };
+
+-static struct ralink_pinmux_grp pci_mux[] = {
+- {
+- .name = "pci-dev",
+- .mask = 0,
+- .gpio_first = RT3883_GPIO_PCI_AD0,
+- .gpio_last = RT3883_GPIO_PCI_AD31,
+- }, {
+- .name = "pci-host2",
+- .mask = 1,
+- .gpio_first = RT3883_GPIO_PCI_AD0,
+- .gpio_last = RT3883_GPIO_PCI_AD31,
+- }, {
+- .name = "pci-host1",
+- .mask = 2,
+- .gpio_first = RT3883_GPIO_PCI_AD0,
+- .gpio_last = RT3883_GPIO_PCI_AD31,
+- }, {
+- .name = "pci-fnc",
+- .mask = 3,
+- .gpio_first = RT3883_GPIO_PCI_AD0,
+- .gpio_last = RT3883_GPIO_PCI_AD31,
+- }, {
+- .name = "pci-gpio",
+- .mask = 7,
+- .gpio_first = RT3883_GPIO_PCI_AD0,
+- .gpio_last = RT3883_GPIO_PCI_AD31,
+- }, {0}
++static struct rt2880_pmx_group rt3883_pinmux_data[] = {
++ GRP("i2c", i2c_func, 1, RT3883_GPIO_MODE_I2C),
++ GRP("spi", spi_func, 1, RT3883_GPIO_MODE_SPI),
++ GRP("uartf", uartf_func, RT3883_GPIO_MODE_UART0_MASK,
++ RT3883_GPIO_MODE_UART0_SHIFT),
++ GRP("uartlite", uartlite_func, 1, RT3883_GPIO_MODE_UART1),
++ GRP("jtag", jtag_func, 1, RT3883_GPIO_MODE_JTAG),
++ GRP("mdio", mdio_func, 1, RT3883_GPIO_MODE_MDIO),
++ GRP("lna a", lna_a_func, 1, RT3883_GPIO_MODE_LNA_A),
++ GRP("lna g", lna_g_func, 1, RT3883_GPIO_MODE_LNA_G),
++ GRP("pci", pci_func, RT3883_GPIO_MODE_PCI_MASK,
++ RT3883_GPIO_MODE_PCI_SHIFT),
++ GRP("ge1", ge1_func, 1, RT3883_GPIO_MODE_GE1),
++ GRP("ge2", ge2_func, 1, RT3883_GPIO_MODE_GE2),
++ { 0 }
+ };
+
+ static void rt3883_wdt_reset(void)
+@@ -155,17 +73,6 @@
+ rt_sysc_w32(t, RT3883_SYSC_REG_SYSCFG1);
+ }
+
+-struct ralink_pinmux rt_gpio_pinmux = {
+- .mode = mode_mux,
+- .uart = uart_mux,
+- .uart_shift = RT3883_GPIO_MODE_UART0_SHIFT,
+- .uart_mask = RT3883_GPIO_MODE_UART0_MASK,
+- .wdt_reset = rt3883_wdt_reset,
+- .pci = pci_mux,
+- .pci_shift = RT3883_GPIO_MODE_PCI_SHIFT,
+- .pci_mask = RT3883_GPIO_MODE_PCI_MASK,
+-};
+-
+ void __init ralink_clk_init(void)
+ {
+ unsigned long cpu_rate, sys_rate;
+@@ -243,4 +150,6 @@
+ soc_info->mem_base = RT3883_SDRAM_BASE;
+ soc_info->mem_size_min = RT3883_MEM_SIZE_MIN;
+ soc_info->mem_size_max = RT3883_MEM_SIZE_MAX;
++
++ rt2880_pinmux_data = rt3883_pinmux_data;
+ }
diff --git a/target/linux/ramips/rt305x/config-3.10 b/target/linux/ramips/rt305x/config-3.10
index 47d6d18060..93222447c8 100644
--- a/target/linux/ramips/rt305x/config-3.10
+++ b/target/linux/ramips/rt305x/config-3.10
@@ -1,7 +1,6 @@
CONFIG_ARCH_BINFMT_ELF_RANDOMIZE_PIE=y
CONFIG_ARCH_DISCARD_MEMBLOCK=y
CONFIG_ARCH_HAS_ATOMIC64_DEC_IF_POSITIVE=y
-CONFIG_ARCH_HAS_RESET_CONTROLLER=y
CONFIG_ARCH_HAVE_CUSTOM_GPIO_H=y
CONFIG_ARCH_HIBERNATION_POSSIBLE=y
CONFIG_ARCH_REQUIRE_GPIOLIB=y
@@ -30,11 +29,11 @@ CONFIG_CPU_R4K_FPU=y
CONFIG_CPU_SUPPORTS_32BIT_KERNEL=y
CONFIG_CPU_SUPPORTS_HIGHMEM=y
CONFIG_CSRC_R4K=y
+CONFIG_DEBUG_PINCTRL=y
CONFIG_DMA_NONCOHERENT=y
# CONFIG_DTB_RT305X_EVAL is not set
CONFIG_DTB_RT_NONE=y
CONFIG_DTC=y
-# CONFIG_DWC_OTG is not set
CONFIG_EARLY_PRINTK=y
CONFIG_GENERIC_ATOMIC64=y
CONFIG_GENERIC_CLOCKEVENTS=y
@@ -120,6 +119,11 @@ CONFIG_OF_NET=y
CONFIG_PAGEFLAGS_EXTENDED=y
CONFIG_PERF_USE_VMALLOC=y
CONFIG_PHYLIB=y
+# CONFIG_PINCONF is not set
+CONFIG_PINCTRL=y
+CONFIG_PINCTRL_RALINK=y
+# CONFIG_PINCTRL_SINGLE is not set
+CONFIG_PINMUX=y
# CONFIG_PREEMPT_RCU is not set
CONFIG_RALINK=y
CONFIG_RALINK_USBPHY=y
diff --git a/target/linux/ramips/rt3883/config-3.10 b/target/linux/ramips/rt3883/config-3.10
index 509af454fb..c01a1e793b 100644
--- a/target/linux/ramips/rt3883/config-3.10
+++ b/target/linux/ramips/rt3883/config-3.10
@@ -2,7 +2,6 @@ CONFIG_AR8216_PHY=y
CONFIG_ARCH_BINFMT_ELF_RANDOMIZE_PIE=y
CONFIG_ARCH_DISCARD_MEMBLOCK=y
CONFIG_ARCH_HAS_ATOMIC64_DEC_IF_POSITIVE=y
-CONFIG_ARCH_HAS_RESET_CONTROLLER=y
CONFIG_ARCH_HAVE_CUSTOM_GPIO_H=y
CONFIG_ARCH_HIBERNATION_POSSIBLE=y
CONFIG_ARCH_REQUIRE_GPIOLIB=y
@@ -28,6 +27,7 @@ CONFIG_CPU_R4K_FPU=y
CONFIG_CPU_SUPPORTS_32BIT_KERNEL=y
CONFIG_CPU_SUPPORTS_HIGHMEM=y
CONFIG_CSRC_R4K=y
+CONFIG_DEBUG_PINCTRL=y
CONFIG_DMA_NONCOHERENT=y
# CONFIG_DTB_RT3883_EVAL is not set
CONFIG_DTB_RT_NONE=y
@@ -126,6 +126,11 @@ CONFIG_PCI=y
CONFIG_PCI_DOMAINS=y
CONFIG_PERF_USE_VMALLOC=y
CONFIG_PHYLIB=y
+# CONFIG_PINCONF is not set
+CONFIG_PINCTRL=y
+CONFIG_PINCTRL_RALINK=y
+# CONFIG_PINCTRL_SINGLE is not set
+CONFIG_PINMUX=y
# CONFIG_PREEMPT_RCU is not set
CONFIG_RALINK=y
CONFIG_RALINK_USBPHY=y