staging: et131x: Introduce et1310_in_phy_coma() call
authorMark Einon <mark.einon@gmail.com>
Sat, 1 Oct 2011 10:14:11 +0000 (11:14 +0100)
committerGreg Kroah-Hartman <gregkh@suse.de>
Tue, 4 Oct 2011 17:43:12 +0000 (10:43 -0700)
In several places in the code, the pm_csr register is read and the PHY_SW_COMA bit checked.

Move this check into its own small function to make the code more readable.

Signed-off-by: Mark Einon <mark.einon@gmail.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
drivers/staging/et131x/et1310_mac.c
drivers/staging/et131x/et1310_pm.c
drivers/staging/et131x/et131x.h
drivers/staging/et131x/et131x_initpci.c
drivers/staging/et131x/et131x_isr.c

index 08d7691..157462f 100644 (file)
@@ -612,7 +612,7 @@ void et1310_setup_device_for_multicast(struct et131x_adapter *adapter)
 
        /* Write out the new hash to the device */
        pm_csr = readl(&adapter->regs->global.pm_csr);
-       if ((pm_csr & ET_PM_PHY_SW_COMA) == 0) {
+       if (!et1310_in_phy_coma(adapter)) {
                writel(hash1, &rxmac->multi_hash1);
                writel(hash2, &rxmac->multi_hash2);
                writel(hash3, &rxmac->multi_hash3);
@@ -653,7 +653,7 @@ void et1310_setup_device_for_unicast(struct et131x_adapter *adapter)
                   adapter->addr[5];
 
        pm_csr = readl(&adapter->regs->global.pm_csr);
-       if ((pm_csr & ET_PM_PHY_SW_COMA) == 0) {
+       if (!et1310_in_phy_coma(adapter)) {
                writel(uni_pf1, &rxmac->uni_pf_addr1);
                writel(uni_pf2, &rxmac->uni_pf_addr2);
                writel(uni_pf3, &rxmac->uni_pf_addr3);
index b20d5d6..55f2d36 100644 (file)
 #include "et131x_adapter.h"
 #include "et131x.h"
 
+/**
+ * et1310_in_phy_coma - check if the device is in phy coma
+ * @adapter: pointer to our adapter structure
+ *
+ * Returns 0 if the device is not in phy coma, 1 if it is in phy coma
+ */
+int et1310_in_phy_coma(struct et131x_adapter *adapter)
+{
+       u32 pmcsr;
+
+       pmcsr = readl(&adapter->regs->global.pm_csr);
+
+       return ET_PM_PHY_SW_COMA & pmcsr ? 1 : 0;
+}
+
 /**
  * et1310_enable_phy_coma - called when network cable is unplugged
  * @adapter: pointer to our adapter structure
index c047e6e..d967c5a 100644 (file)
@@ -87,6 +87,7 @@ void et131x_enable_txrx(struct net_device *netdev);
 void et131x_disable_txrx(struct net_device *netdev);
 
 /* et1310_pm.c */
+int et1310_in_phy_coma(struct et131x_adapter *adapter);
 void et1310_enable_phy_coma(struct et131x_adapter *adapter);
 void et1310_disable_phy_coma(struct et131x_adapter *adapter);
 
index e9daa73..667ab80 100644 (file)
@@ -239,15 +239,11 @@ static int et131x_pci_init(struct et131x_adapter *adapter,
 void et131x_error_timer_handler(unsigned long data)
 {
        struct et131x_adapter *adapter = (struct et131x_adapter *) data;
-       u32 pm_csr;
 
-       pm_csr = readl(&adapter->regs->global.pm_csr);
-
-       if ((pm_csr & ET_PM_PHY_SW_COMA) == 0)
+       if (!et1310_in_phy_coma(adapter))
                et1310_update_macstat_host_counters(adapter);
        else
-               dev_err(&adapter->pdev->dev,
-                   "No interrupts, in PHY coma, pm_csr = 0x%x\n", pm_csr);
+               dev_err(&adapter->pdev->dev, "No interrupts, in PHY coma\n");
 
        if (!(adapter->bmsr & BMSR_LSTATUS) &&
            adapter->boot_coma < 11) {
@@ -256,7 +252,7 @@ void et131x_error_timer_handler(unsigned long data)
 
        if (adapter->boot_coma == 10) {
                if (!(adapter->bmsr & BMSR_LSTATUS)) {
-                       if ((pm_csr & ET_PM_PHY_SW_COMA) == 0) {
+                       if (!et1310_in_phy_coma(adapter)) {
                                /* NOTE - This was originally a 'sync with
                                 *  interrupt'. How to do that under Linux?
                                 */
@@ -443,9 +439,6 @@ static void et131x_adjust_link(struct net_device *netdev)
 {
        struct et131x_adapter *adapter = netdev_priv(netdev);
        struct  phy_device *phydev = adapter->phydev;
-       struct address_map __iomem *iomem = adapter->regs;
-
-       u32 pm_csr;
 
        if (netif_carrier_ok(netdev)) {
                adapter->boot_coma = 20;
@@ -488,16 +481,13 @@ static void et131x_adjust_link(struct net_device *netdev)
        }
 
        if (phydev->link != adapter->link) {
-               /* If we are in coma mode, we need to disable it. */
-               pm_csr = readl(&iomem->global.pm_csr);
-               if (pm_csr & ET_PM_PHY_SW_COMA) {
-                       /*
-                        * Check to see if we are in coma mode and if
-                        * so, disable it because we will not be able
-                        * to read PHY values until we are out.
-                        */
+               /*
+                * Check to see if we are in coma mode and if
+                * so, disable it because we will not be able
+                * to read PHY values until we are out.
+                */
+               if (et1310_in_phy_coma(adapter))
                        et1310_disable_phy_coma(adapter);
-               }
 
                if (phydev->link) {
                        adapter->boot_coma = 20;
index 0747935..fb108d2 100644 (file)
@@ -304,7 +304,7 @@ void et131x_isr_handler(struct work_struct *work)
                                 * bp xon/xoff)
                                 */
                                pm_csr = readl(&iomem->global.pm_csr);
-                               if ((pm_csr & ET_PM_PHY_SW_COMA) == 0)
+                               if (!et1310_in_phy_coma(adapter))
                                        writel(3, &iomem->txmac.bp_ctrl);
                        }
                }