kernel: rtl8306: fix vlan support on lantiq ar9 p2601hnfx
authorJohn Crispin <john@openwrt.org>
Sun, 30 Mar 2014 09:15:16 +0000 (09:15 +0000)
committerJohn Crispin <john@openwrt.org>
Sun, 30 Mar 2014 09:15:16 +0000 (09:15 +0000)
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>
SVN-Revision: 40305

target/linux/generic/files/drivers/net/phy/rtl8306.c

index 33dbf969c11ce1b4cdcaef9588b162cf789354b8..a5886b60ee72387241a28c9bf00636080c00667f 100644 (file)
@@ -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;
 }