diff options
author | Mark Einon <mark.einon@gmail.com> | 2011-10-01 11:14:11 +0100 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@suse.de> | 2011-10-04 10:43:12 -0700 |
commit | a3bf5fa772963ef0310d982077784ef6839f2fa7 (patch) | |
tree | 7b770e78b73a458c23ff3679b2c4903e0377d067 /drivers | |
parent | 53c3ee0db36db31d095f4e902bc42a4dea18fd8c (diff) |
staging: et131x: Introduce et1310_in_phy_coma() call
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>
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/staging/et131x/et1310_mac.c | 4 | ||||
-rw-r--r-- | drivers/staging/et131x/et1310_pm.c | 15 | ||||
-rw-r--r-- | drivers/staging/et131x/et131x.h | 1 | ||||
-rw-r--r-- | drivers/staging/et131x/et131x_initpci.c | 28 | ||||
-rw-r--r-- | drivers/staging/et131x/et131x_isr.c | 2 |
5 files changed, 28 insertions, 22 deletions
diff --git a/drivers/staging/et131x/et1310_mac.c b/drivers/staging/et131x/et1310_mac.c index 08d7691ce19d..157462feeb6f 100644 --- a/drivers/staging/et131x/et1310_mac.c +++ b/drivers/staging/et131x/et1310_mac.c @@ -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); diff --git a/drivers/staging/et131x/et1310_pm.c b/drivers/staging/et131x/et1310_pm.c index b20d5d627ef4..55f2d3672b18 100644 --- a/drivers/staging/et131x/et1310_pm.c +++ b/drivers/staging/et131x/et1310_pm.c @@ -87,6 +87,21 @@ #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 * diff --git a/drivers/staging/et131x/et131x.h b/drivers/staging/et131x/et131x.h index c047e6e2850b..d967c5a1fe72 100644 --- a/drivers/staging/et131x/et131x.h +++ b/drivers/staging/et131x/et131x.h @@ -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); diff --git a/drivers/staging/et131x/et131x_initpci.c b/drivers/staging/et131x/et131x_initpci.c index e9daa733bea2..667ab80fe6f0 100644 --- a/drivers/staging/et131x/et131x_initpci.c +++ b/drivers/staging/et131x/et131x_initpci.c @@ -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; diff --git a/drivers/staging/et131x/et131x_isr.c b/drivers/staging/et131x/et131x_isr.c index 0747935fb3c1..fb108d202d3b 100644 --- a/drivers/staging/et131x/et131x_isr.c +++ b/drivers/staging/et131x/et131x_isr.c @@ -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); } } |