summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMark Einon <mark.einon@gmail.com>2011-10-01 11:14:11 +0100
committerGreg Kroah-Hartman <gregkh@suse.de>2011-10-04 10:43:12 -0700
commita3bf5fa772963ef0310d982077784ef6839f2fa7 (patch)
tree7b770e78b73a458c23ff3679b2c4903e0377d067
parent53c3ee0db36db31d095f4e902bc42a4dea18fd8c (diff)
downloadblackbird-obmc-linux-a3bf5fa772963ef0310d982077784ef6839f2fa7.tar.gz
blackbird-obmc-linux-a3bf5fa772963ef0310d982077784ef6839f2fa7.zip
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>
-rw-r--r--drivers/staging/et131x/et1310_mac.c4
-rw-r--r--drivers/staging/et131x/et1310_pm.c15
-rw-r--r--drivers/staging/et131x/et131x.h1
-rw-r--r--drivers/staging/et131x/et131x_initpci.c28
-rw-r--r--drivers/staging/et131x/et131x_isr.c2
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);
}
}
OpenPOWER on IntegriCloud