lkml.org 
[lkml]   [2005]   [Aug]   [7]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
Patch in this message
/
Date
From
Subject[-mm patch] fix PHYCONTROL=n compilation
On Sun, Aug 07, 2005 at 11:51:23AM -0700, Avuton Olrich wrote:
> On 8/7/05, Andrew Morton <akpm@osdl.org> wrote:
> > ftp://ftp.kernel.org/pub/linux/kernel/people/akpm/patches/2.6/2.6.13-rc5/2.6.13-rc5-mm1/
>
> I probably don't need/want phy stuff anyhow, but when I tried it:
>
> Problem:
> drivers/built-in.o: In function `phy_start_machine':
> : undefined reference to `phy_timer'
> drivers/built-in.o: In function `phy_stop_machine':
> : undefined reference to `phy_stop_interrupts'
> make: *** [.tmp_vmlinux1] Error 1
>...

Thanks for this report, it seems noone aactually tried whether
CONFIG_PHYCONTROL=n compiles...

A possible patch is below.


<-- snip -->


Signed-off-by: Adrian Bunk <bunk@stusta.de>

---

drivers/net/phy/phy.c | 141 +++++++++++++++++++++---------------------
1 files changed, 71 insertions(+), 70 deletions(-)

--- linux-2.6.13-rc5-mm1/drivers/net/phy/phy.c.old 2005-08-07 21:18:29.000000000 +0200
+++ linux-2.6.13-rc5-mm1/drivers/net/phy/phy.c 2005-08-07 21:29:33.000000000 +0200
@@ -39,7 +39,6 @@
#include <asm/irq.h>
#include <asm/uaccess.h>

-static void phy_change(void *data);
static void phy_timer(unsigned long data);

/* Convenience function to print out the current phy status
@@ -273,31 +272,6 @@
}
EXPORT_SYMBOL(phy_sanitize_settings);

-/* phy_force_reduction
- *
- * description: Reduces the speed/duplex settings by
- * one notch. The order is so:
- * 1000/FULL, 1000/HALF, 100/FULL, 100/HALF,
- * 10/FULL, 10/HALF. The function bottoms out at 10/HALF.
- */
-static void phy_force_reduction(struct phy_device *phydev)
-{
- int idx;
-
- idx = phy_find_setting(phydev->speed, phydev->duplex);
-
- idx++;
-
- idx = phy_find_valid(idx, phydev->supported);
-
- phydev->speed = settings[idx].speed;
- phydev->duplex = settings[idx].duplex;
-
- pr_info("Trying %d/%s\n", phydev->speed,
- DUPLEX_FULL == phydev->duplex ?
- "FULL" : "HALF");
-}
-
/* phy_ethtool_sset:
* A generic ethtool sset function. Handles all the details
*
@@ -464,7 +438,6 @@
phydev->adjust_state = NULL;
}

-#ifdef CONFIG_PHYCONTROL
/* phy_error:
*
* Moves the PHY to the HALTED state in response to a read
@@ -479,6 +452,75 @@
spin_unlock(&phydev->lock);
}

+/* Disable the PHY interrupts from the PHY side */
+int phy_disable_interrupts(struct phy_device *phydev)
+{
+ int err;
+
+ /* Disable PHY interrupts */
+ err = phy_config_interrupt(phydev, PHY_INTERRUPT_DISABLED);
+
+ if (err)
+ goto phy_err;
+
+ /* Clear the interrupt */
+ err = phy_clear_interrupt(phydev);
+
+ if (err)
+ goto phy_err;
+
+ return 0;
+
+phy_err:
+ phy_error(phydev);
+
+ return err;
+}
+EXPORT_SYMBOL(phy_disable_interrupts);
+
+int phy_stop_interrupts(struct phy_device *phydev)
+{
+ int err;
+
+ err = phy_disable_interrupts(phydev);
+
+ if (err)
+ phy_error(phydev);
+
+ free_irq(phydev->irq, phydev);
+
+ return err;
+}
+EXPORT_SYMBOL(phy_stop_interrupts);
+
+/* phy_force_reduction
+ *
+ * description: Reduces the speed/duplex settings by
+ * one notch. The order is so:
+ * 1000/FULL, 1000/HALF, 100/FULL, 100/HALF,
+ * 10/FULL, 10/HALF. The function bottoms out at 10/HALF.
+ */
+static void phy_force_reduction(struct phy_device *phydev)
+{
+ int idx;
+
+ idx = phy_find_setting(phydev->speed, phydev->duplex);
+
+ idx++;
+
+ idx = phy_find_valid(idx, phydev->supported);
+
+ phydev->speed = settings[idx].speed;
+ phydev->duplex = settings[idx].duplex;
+
+ pr_info("Trying %d/%s\n", phydev->speed,
+ DUPLEX_FULL == phydev->duplex ?
+ "FULL" : "HALF");
+}
+
+#ifdef CONFIG_PHYCONTROL
+
+static void phy_change(void *data);
/* phy_interrupt
*
* description: When a PHY interrupt occurs, the handler disables
@@ -515,32 +557,6 @@
}
EXPORT_SYMBOL(phy_enable_interrupts);

-/* Disable the PHY interrupts from the PHY side */
-int phy_disable_interrupts(struct phy_device *phydev)
-{
- int err;
-
- /* Disable PHY interrupts */
- err = phy_config_interrupt(phydev, PHY_INTERRUPT_DISABLED);
-
- if (err)
- goto phy_err;
-
- /* Clear the interrupt */
- err = phy_clear_interrupt(phydev);
-
- if (err)
- goto phy_err;
-
- return 0;
-
-phy_err:
- phy_error(phydev);
-
- return err;
-}
-EXPORT_SYMBOL(phy_disable_interrupts);
-
/* phy_start_interrupts
*
* description: Request the interrupt for the given PHY. If
@@ -572,21 +588,6 @@
}
EXPORT_SYMBOL(phy_start_interrupts);

-int phy_stop_interrupts(struct phy_device *phydev)
-{
- int err;
-
- err = phy_disable_interrupts(phydev);
-
- if (err)
- phy_error(phydev);
-
- free_irq(phydev->irq, phydev);
-
- return err;
-}
-EXPORT_SYMBOL(phy_stop_interrupts);
-

/* Scheduled by the phy_interrupt/timer to handle PHY changes */
static void phy_change(void *data)
@@ -672,6 +673,8 @@
EXPORT_SYMBOL(phy_stop);
EXPORT_SYMBOL(phy_start);

+#endif /* CONFIG_PHYCONTROL */
+
/* PHY timer which handles the state machine */
static void phy_timer(unsigned long data)
{
@@ -858,5 +861,3 @@

mod_timer(&phydev->phy_timer, jiffies + PHY_STATE_TIME * HZ);
}
-
-#endif /* CONFIG_PHYCONTROL */
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/

\
 
 \ /
  Last update: 2005-08-07 21:46    [W:0.115 / U:0.076 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site