brcm47xx: fix bcm4705 rebooting when initializing the switch.
authorHauke Mehrtens <hauke@hauke-m.de>
Sun, 6 Jul 2014 13:45:43 +0000 (13:45 +0000)
committerHauke Mehrtens <hauke@hauke-m.de>
Sun, 6 Jul 2014 13:45:43 +0000 (13:45 +0000)
When the Ethernet controller is powered down and someone wants to
access the mdio bus like the witch driver (b53) the system crashed if
PCI_D3hot was set before. This patch deactivates this power sawing mode
when a switch driver is in use.

Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
SVN-Revision: 41527

target/linux/brcm47xx/patches-3.10/791-tg3-no-pci-sleep.patch [new file with mode: 0644]
target/linux/brcm47xx/patches-3.14/791-tg3-no-pci-sleep.patch [new file with mode: 0644]

diff --git a/target/linux/brcm47xx/patches-3.10/791-tg3-no-pci-sleep.patch b/target/linux/brcm47xx/patches-3.10/791-tg3-no-pci-sleep.patch
new file mode 100644 (file)
index 0000000..f8b2c7c
--- /dev/null
@@ -0,0 +1,17 @@
+When the Ethernet controller is powered down and someone wants to 
+access the mdio bus like the witch driver (b53) the system crashed if 
+PCI_D3hot was set before. This patch deactivates this power sawing mode 
+when a switch driver is in use.
+
+--- a/drivers/net/ethernet/broadcom/tg3.c
++++ b/drivers/net/ethernet/broadcom/tg3.c
+@@ -4221,7 +4221,8 @@ static void tg3_power_down(struct tg3 *t
+       tg3_power_down_prepare(tp);
+       pci_wake_from_d3(tp->pdev, tg3_flag(tp, WOL_ENABLE));
+-      pci_set_power_state(tp->pdev, PCI_D3hot);
++      if (!tg3_flag(tp, ROBOSWITCH))
++              pci_set_power_state(tp->pdev, PCI_D3hot);
+ }
+ static void tg3_aux_stat_to_speed_duplex(struct tg3 *tp, u32 val, u16 *speed, u8 *duplex)
diff --git a/target/linux/brcm47xx/patches-3.14/791-tg3-no-pci-sleep.patch b/target/linux/brcm47xx/patches-3.14/791-tg3-no-pci-sleep.patch
new file mode 100644 (file)
index 0000000..cb46f46
--- /dev/null
@@ -0,0 +1,17 @@
+When the Ethernet controller is powered down and someone wants to 
+access the mdio bus like the witch driver (b53) the system crashed if 
+PCI_D3hot was set before. This patch deactivates this power sawing mode 
+when a switch driver is in use.
+
+--- a/drivers/net/ethernet/broadcom/tg3.c
++++ b/drivers/net/ethernet/broadcom/tg3.c
+@@ -4269,7 +4269,8 @@ static int tg3_power_down_prepare(struct
+ static void tg3_power_down(struct tg3 *tp)
+ {
+       pci_wake_from_d3(tp->pdev, tg3_flag(tp, WOL_ENABLE));
+-      pci_set_power_state(tp->pdev, PCI_D3hot);
++      if (!tg3_flag(tp, ROBOSWITCH))
++              pci_set_power_state(tp->pdev, PCI_D3hot);
+ }
+ static void tg3_aux_stat_to_speed_duplex(struct tg3 *tp, u32 val, u16 *speed, u8 *duplex)