Explorar o código

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 <[email protected]>

SVN-Revision: 40305
John Crispin %!s(int64=12) %!d(string=hai) anos
pai
achega
deba38f2a7
Modificáronse 1 ficheiros con 4 adicións e 0 borrados
  1. 4 0
      target/linux/generic/files/drivers/net/phy/rtl8306.c

+ 4 - 0
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_CLR,
 	RTL_REG_EN_TAG_IN,
 	RTL_REG_EN_TAG_IN,
 	RTL_REG_TRAP_CPU,
 	RTL_REG_TRAP_CPU,
+	RTL_REG_CPU_LINKUP,
 	RTL_REG_TRUNK_PORTSEL,
 	RTL_REG_TRUNK_PORTSEL,
 	RTL_REG_EN_TRUNK,
 	RTL_REG_EN_TRUNK,
 	RTL_REG_RESET,
 	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_RESET]          = { 0, 0, 16,  1, 12, 0 },
 
 
 	[RTL_REG_TRAP_CPU]       = { 3, 2, 22,  1,  6, 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_TAG_ONLY]  = { 0, 0, 16,  1,  8, 1 },
 	[RTL_REG_VLAN_FILTER]    = { 0, 0, 16,  1,  9, 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_set(dev, RTL_REG_TRUNK_PORTSEL, trunk_psel);
 	rtl_phy_restore(dev, 5, &port5);
 	rtl_phy_restore(dev, 5, &port5);
 
 
+	rtl_set(dev, RTL_REG_CPU_LINKUP, 1);
+
 	return 0;
 	return 0;
 }
 }