bcm53xx: update PCIe driver
[openwrt/staging/mkresin.git] / target / linux / bcm53xx / patches-4.1 / 035-PCI-iproc-Delete-unnecessary-checks-before-phy-calls.patch
diff --git a/target/linux/bcm53xx/patches-4.1/035-PCI-iproc-Delete-unnecessary-checks-before-phy-calls.patch b/target/linux/bcm53xx/patches-4.1/035-PCI-iproc-Delete-unnecessary-checks-before-phy-calls.patch
new file mode 100644 (file)
index 0000000..fc83337
--- /dev/null
@@ -0,0 +1,79 @@
+From 93972d18bbaba6f34e21742400b6e7461edc4837 Mon Sep 17 00:00:00 2001
+From: Markus Elfring <elfring@users.sourceforge.net>
+Date: Sun, 28 Jun 2015 16:42:04 +0200
+Subject: [PATCH] PCI: iproc: Delete unnecessary checks before phy calls
+
+The functions phy_exit() and phy_power_off() test whether their argument is
+NULL and then return immediately.  Thus the test around the calls is not
+needed.
+
+This issue was detected by using the Coccinelle software.
+
+[bhelgaas: also phy_init() and phy_power_on(), as Ray Jui suggested]
+[bhelgaas: also remove tests in iproc_pcie_remove()]
+Signed-off-by: Markus Elfring <elfring@users.sourceforge.net>
+Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
+Reviewed-by: Ray Jui <rjui@broadcom.com>
+---
+ drivers/pci/host/pcie-iproc.c | 34 +++++++++++++---------------------
+ 1 file changed, 13 insertions(+), 21 deletions(-)
+
+--- a/drivers/pci/host/pcie-iproc.c
++++ b/drivers/pci/host/pcie-iproc.c
+@@ -191,19 +191,16 @@ int iproc_pcie_setup(struct iproc_pcie *
+       if (!pcie || !pcie->dev || !pcie->base)
+               return -EINVAL;
+-      if (pcie->phy) {
+-              ret = phy_init(pcie->phy);
+-              if (ret) {
+-                      dev_err(pcie->dev, "unable to initialize PCIe PHY\n");
+-                      return ret;
+-              }
+-
+-              ret = phy_power_on(pcie->phy);
+-              if (ret) {
+-                      dev_err(pcie->dev, "unable to power on PCIe PHY\n");
+-                      goto err_exit_phy;
+-              }
++      ret = phy_init(pcie->phy);
++      if (ret) {
++              dev_err(pcie->dev, "unable to initialize PCIe PHY\n");
++              return ret;
++      }
++      ret = phy_power_on(pcie->phy);
++      if (ret) {
++              dev_err(pcie->dev, "unable to power on PCIe PHY\n");
++              goto err_exit_phy;
+       }
+       iproc_pcie_reset(pcie);
+@@ -239,12 +236,9 @@ err_rm_root_bus:
+       pci_remove_root_bus(bus);
+ err_power_off_phy:
+-      if (pcie->phy)
+-              phy_power_off(pcie->phy);
++      phy_power_off(pcie->phy);
+ err_exit_phy:
+-      if (pcie->phy)
+-              phy_exit(pcie->phy);
+-
++      phy_exit(pcie->phy);
+       return ret;
+ }
+ EXPORT_SYMBOL(iproc_pcie_setup);
+@@ -254,10 +248,8 @@ int iproc_pcie_remove(struct iproc_pcie
+       pci_stop_root_bus(pcie->root_bus);
+       pci_remove_root_bus(pcie->root_bus);
+-      if (pcie->phy) {
+-              phy_power_off(pcie->phy);
+-              phy_exit(pcie->phy);
+-      }
++      phy_power_off(pcie->phy);
++      phy_exit(pcie->phy);
+       return 0;
+ }