aboutsummaryrefslogtreecommitdiffstats
path: root/target/linux
diff options
context:
space:
mode:
authorJohn Crispin <blogic@openwrt.org>2014-03-30 09:15:16 +0000
committerJohn Crispin <blogic@openwrt.org>2014-03-30 09:15:16 +0000
commit20ff405f6e822aa1eb7cd294547c57462636600a (patch)
tree75a3d6a2e1e1f446228be94d4508c5ef377076d0 /target/linux
parent13ca88f729a8cdeff71377c0859136bc43fdfecc (diff)
downloadupstream-20ff405f6e822aa1eb7cd294547c57462636600a.tar.gz
upstream-20ff405f6e822aa1eb7cd294547c57462636600a.tar.bz2
upstream-20ff405f6e822aa1eb7cd294547c57462636600a.zip
kernel: rtl8306: fix vlan support on lantiq ar9 p2601hnfx
If the CPU port is not forced up, the link, at least on this board, is lost after changes are applied. This makes sure that the link is restored. Regression tests should confirm it doesn't break other boards. Signed-off-by: Antonios Vamporakis <ant@area128.com> git-svn-id: svn://svn.openwrt.org/openwrt/trunk@40305 3c298f89-4303-0410-b956-a3cf2f4a3e73
Diffstat (limited to 'target/linux')
-rw-r--r--target/linux/generic/files/drivers/net/phy/rtl8306.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/target/linux/generic/files/drivers/net/phy/rtl8306.c b/target/linux/generic/files/drivers/net/phy/rtl8306.c
index 33dbf969c1..a5886b60ee 100644
--- a/target/linux/generic/files/drivers/net/phy/rtl8306.c
+++ b/target/linux/generic/files/drivers/net/phy/rtl8306.c
@@ -126,6 +126,7 @@ enum rtl_regidx {
RTL_REG_EN_TAG_CLR,
RTL_REG_EN_TAG_IN,
RTL_REG_TRAP_CPU,
+ RTL_REG_CPU_LINKUP,
RTL_REG_TRUNK_PORTSEL,
RTL_REG_EN_TRUNK,
RTL_REG_RESET,
@@ -194,6 +195,7 @@ static const struct rtl_reg rtl_regs[] = {
[RTL_REG_RESET] = { 0, 0, 16, 1, 12, 0 },
[RTL_REG_TRAP_CPU] = { 3, 2, 22, 1, 6, 0 },
+ [RTL_REG_CPU_LINKUP] = { 0, 6, 22, 1, 15, 0 },
[RTL_REG_VLAN_TAG_ONLY] = { 0, 0, 16, 1, 8, 1 },
[RTL_REG_VLAN_FILTER] = { 0, 0, 16, 1, 9, 1 },
@@ -458,6 +460,8 @@ rtl_hw_apply(struct switch_dev *dev)
rtl_set(dev, RTL_REG_TRUNK_PORTSEL, trunk_psel);
rtl_phy_restore(dev, 5, &port5);
+ rtl_set(dev, RTL_REG_CPU_LINKUP, 1);
+
return 0;
}