[source] ramips: fix up switch settings for Sitecom WL-351 v1 002

LEDE Commits lede-commits at lists.infradead.org
Mon Jul 4 00:37:11 PDT 2016


blogic pushed a commit to source.git, branch master:
https://git.lede-project.org/?p=source.git;a=commitdiff;h=d09f0045ea2f7fb142e23d8f5cdd45e48a3dcc26

commit d09f0045ea2f7fb142e23d8f5cdd45e48a3dcc26
Author: John Crispin <john at phrozen.org>
AuthorDate: Wed Jun 29 15:09:09 2016 +0200

    ramips: fix up switch settings for Sitecom WL-351 v1 002
    
    Pinmux for rgmii needs to be set to rgmii, not gpio.
    Hide the ESW switch on boot (using new rgmii esw devicetree attribute).
    Also add a Sitecom-specific profile, since the image needs to include
    the rtl8366 kernel driver.
    
    Signed-off-by: Tobias Diedrich <ranma+openwrt at tdiedrich.de>
---
 target/linux/ramips/dts/WL-351.dts                 |  7 ++-
 target/linux/ramips/image/rt305x.mk                |  1 -
 .../linux/ramips/patches-4.4/0520-esw-gmac.patch   | 69 ++++++++++++++++++++++
 target/linux/ramips/rt305x/profiles/sitecom.mk     | 18 ++++++
 4 files changed, 93 insertions(+), 2 deletions(-)

diff --git a/target/linux/ramips/dts/WL-351.dts b/target/linux/ramips/dts/WL-351.dts
index ecda696..541f8ce 100644
--- a/target/linux/ramips/dts/WL-351.dts
+++ b/target/linux/ramips/dts/WL-351.dts
@@ -86,9 +86,13 @@
 &pinctrl {
 	state_default: pinctrl0 {
 		gpio {
-			ralink,group = "spi", "i2c", "jtag", "rgmii", "mdio", "uartf";
+			ralink,group = "spi", "i2c", "jtag", "mdio", "uartf";
 			ralink,function = "gpio";
 		};
+		rgmii {
+			ralink,group = "rgmii";
+			ralink,function = "rgmii";
+		};
 	};
 };
 
@@ -97,6 +101,7 @@
 };
 
 &esw {
+	ralink,rgmii = <1>;
 	mediatek,portmap = <0x3f>;
 	ralink,fct2 = <0x0002500c>;
 	/*
diff --git a/target/linux/ramips/image/rt305x.mk b/target/linux/ramips/image/rt305x.mk
index da7fc46..9617574 100644
--- a/target/linux/ramips/image/rt305x.mk
+++ b/target/linux/ramips/image/rt305x.mk
@@ -379,7 +379,6 @@ define Image/Build/Profile/Default
 	$(call Image/Build/Profile/WL-330N,$(1))
 	$(call Image/Build/Profile/WL-330N3G,$(1))
 	$(call Image/Build/Profile/WL-341V3,$(1))
-	$(call Image/Build/Profile/WL-351,$(1))
 	$(call Image/Build/Profile/WNCE2001,$(1))
 	$(call Image/Build/Profile/WR512-3GN,$(1))
 	$(call Image/Build/Profile/WR6202,$(1))
diff --git a/target/linux/ramips/patches-4.4/0520-esw-gmac.patch b/target/linux/ramips/patches-4.4/0520-esw-gmac.patch
new file mode 100644
index 0000000..9d4cd3f
--- /dev/null
+++ b/target/linux/ramips/patches-4.4/0520-esw-gmac.patch
@@ -0,0 +1,69 @@
+--- a/drivers/net/ethernet/mediatek/esw_rt3050.c
++++ b/drivers/net/ethernet/mediatek/esw_rt3050.c
+@@ -221,6 +221,8 @@
+ 
+ 	unsigned char		port_map;
+ 	unsigned char		port_disable;
++	unsigned int		reg_initval_fct2;
++	unsigned int		reg_initval_fpa2;
+ 	unsigned int		reg_led_polarity;
+ 
+ 	struct switch_dev	swdev;
+@@ -452,7 +454,10 @@
+ 		      (RT305X_ESW_PORTS_NOCPU << RT305X_ESW_POC2_UNTAG_EN_S)),
+ 		RT305X_ESW_REG_POC2);
+ 
+-	esw_w32(esw, 0x0002500c, RT305X_ESW_REG_FCT2);
++	if (esw->reg_initval_fct2)
++		esw_w32(esw, esw->reg_initval_fct2, RT305X_ESW_REG_FCT2);
++	else
++		esw_w32(esw, 0x0002500c, RT305X_ESW_REG_FCT2);
+ 
+ 	/* 300s aging timer, max packet len 1536, broadcast storm prevention
+ 	 * disabled, disable collision abort, mac xor48 hash, 10 packet back
+@@ -475,7 +480,10 @@
+ 	 * port5: disabled
+ 	 * port6: enabled, gige, full-duplex, rx/tx-flow-control
+ 	 */
+-	esw_w32(esw, 0x3f502b28, RT305X_ESW_REG_FPA2);
++	if (esw->reg_initval_fpa2)
++		esw_w32(esw, esw->reg_initval_fpa2, RT305X_ESW_REG_FPA2);
++	else
++		esw_w32(esw, 0x3f502b28, RT305X_ESW_REG_FPA2);
+ 	esw_w32(esw, 0x00000000, RT305X_ESW_REG_FPA);
+ 
+ 	/* Force Link/Activity on ports */
+@@ -1361,6 +1369,14 @@
+ 	if (port_disable)
+ 		esw->port_disable = be32_to_cpu(*port_disable);
+ 
++	reg_init = of_get_property(np, "ralink,fct2", NULL);
++	if (reg_init)
++		esw->reg_initval_fct2 = be32_to_cpu(*reg_init);
++
++	reg_init = of_get_property(np, "ralink,fpa2", NULL);
++	if (reg_init)
++		esw->reg_initval_fpa2 = be32_to_cpu(*reg_init);
++
+ 	reg_init = of_get_property(np, "mediatek,led_polarity", NULL);
+ 	if (reg_init)
+ 		esw->reg_led_polarity = be32_to_cpu(*reg_init);
+@@ -1386,6 +1402,18 @@
+ 
+ 	esw_hw_init(esw);
+ 
++	reg_init = of_get_property(np, "ralink,rgmii", NULL);
++	if (reg_init && be32_to_cpu(*reg_init) == 1) {
++		/* 
++		 * External switch connected to RGMII interface. 
++		 * Unregister the switch device after initialization. 
++		 */
++		dev_err(&pdev->dev, "RGMII mode, not exporting switch device.\n");
++		unregister_switch(&esw->swdev);
++		platform_set_drvdata(pdev, NULL);
++		return -ENODEV;
++	}
++
+ 	ret = devm_request_irq(&pdev->dev, esw->irq, esw_interrupt, 0, "esw",
+ 			       esw);
+ 
diff --git a/target/linux/ramips/rt305x/profiles/sitecom.mk b/target/linux/ramips/rt305x/profiles/sitecom.mk
new file mode 100644
index 0000000..16d9fef
--- /dev/null
+++ b/target/linux/ramips/rt305x/profiles/sitecom.mk
@@ -0,0 +1,18 @@
+#
+# Copyright (C) 2012 OpenWrt.org
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+
+define Profile/WL-351
+	NAME:=Sitecom WL-351 v1
+	PACKAGES:=\
+		kmod-switch-rtl8366rb kmod-swconfig swconfig
+endef
+
+define Profile/WL-351/Description
+	Package set for Sitecom WL-351 v1
+endef
+
+$(eval $(call Profile,WL-351))



More information about the lede-commits mailing list