net: Fix sungem_phy sharing.
authorDavid S. Miller <davem@davemloft.net>
Tue, 16 Aug 2011 06:10:39 +0000 (23:10 -0700)
committerDavid S. Miller <davem@davemloft.net>
Tue, 16 Aug 2011 07:16:49 +0000 (00:16 -0700)
Since sungem_phy is used by multiple, unrelated, drivers make it
build as a real module under drivers/net.

depmod will pick up the symbol dependency and make sure sungem_phy.ko
gets loaded any time sungem.ko or spider_net.ko is loaded.

Tested-by: Stephen Rothwell <sfr@canb.auug.org.au>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/Kconfig
drivers/net/Makefile
drivers/net/ethernet/sun/Makefile
drivers/net/ethernet/sun/sungem.c
drivers/net/ethernet/toshiba/Makefile
drivers/net/ethernet/toshiba/spider_net.c
drivers/net/sungem_phy.c [moved from drivers/net/ethernet/sun/sungem_phy.c with 99% similarity]
include/linux/sungem_phy.h

index 31d8792..ef6b6be 100644 (file)
@@ -186,6 +186,9 @@ config MII
 
 source "drivers/net/phy/Kconfig"
 
+config SUNGEM_PHY
+       tristate
+
 #
 #      Ethernet
 #
index 9cb47bb..c33009b 100644 (file)
@@ -75,3 +75,5 @@ obj-$(CONFIG_VIRTIO_NET) += virtio_net.o
 
 obj-$(CONFIG_WIMAX) += wimax/
 obj-$(CONFIG_CAIF) += caif/
+
+obj-$(CONFIG_SUNGEM_PHY) += sungem_phy.o
index 6e25dad..1e620ff 100644 (file)
@@ -6,7 +6,6 @@ obj-$(CONFIG_HAPPYMEAL) += sunhme.o
 obj-$(CONFIG_SUNQE) += sunqe.o
 obj-$(CONFIG_SUNBMAC) += sunbmac.o
 obj-$(CONFIG_SUNGEM) += sungem.o
-obj-$(CONFIG_SUNGEM_PHY) += sungem_phy.o
 obj-$(CONFIG_CASSINI) += cassini.o
 obj-$(CONFIG_SUNVNET) += sunvnet.o
 obj-$(CONFIG_NIU) += niu.o
index 0f13c5d..fb9885d 100644 (file)
@@ -1721,7 +1721,7 @@ static void gem_init_phy(struct gem *gp)
        if (gp->phy_type == phy_mii_mdio0 ||
            gp->phy_type == phy_mii_mdio1) {
                /* Reset and detect MII PHY */
-               mii_phy_probe(&gp->phy_mii, gp->mii_phy_addr);
+               sungem_phy_probe(&gp->phy_mii, gp->mii_phy_addr);
 
                /* Init PHY */
                if (gp->phy_mii.def && gp->phy_mii.def->ops->init)
index 71d861f..a506900 100644 (file)
@@ -6,5 +6,5 @@ obj-$(CONFIG_GELIC_NET) += ps3_gelic.o
 gelic_wireless-$(CONFIG_GELIC_WIRELESS) += ps3_gelic_wireless.o
 ps3_gelic-objs += ps3_gelic_net.o $(gelic_wireless-y)
 spidernet-y += spider_net.o spider_net_ethtool.o
-obj-$(CONFIG_SPIDER_NET) += spidernet.o ethernet/sun/sungem_phy.o
+obj-$(CONFIG_SPIDER_NET) += spidernet.o
 obj-$(CONFIG_TC35815) += tc35815.o
index 1ff3491..af345db 100644 (file)
@@ -196,7 +196,7 @@ spider_net_setup_aneg(struct spider_net_card *card)
        if ((bmsr & BMSR_ESTATEN) && (estat & ESTATUS_1000_THALF))
                advertise |= SUPPORTED_1000baseT_Half;
 
-       mii_phy_probe(phy, phy->mii_id);
+       sungem_phy_probe(phy, phy->mii_id);
        phy->def->ops->setup_aneg(phy, advertise);
 
 }
@@ -2120,7 +2120,7 @@ spider_net_setup_phy(struct spider_net_card *card)
                unsigned short id;
                id = spider_net_read_phy(card->netdev, phy->mii_id, MII_BMSR);
                if (id != 0x0000 && id != 0xffff) {
-                       if (!mii_phy_probe(phy, phy->mii_id)) {
+                       if (!sungem_phy_probe(phy, phy->mii_id)) {
                                pr_info("Found %s.\n", phy->def->name);
                                break;
                        }
similarity index 99%
rename from drivers/net/ethernet/sun/sungem_phy.c
rename to drivers/net/sungem_phy.c
index db99c22..58f13ad 100644 (file)
@@ -1156,7 +1156,7 @@ static struct mii_phy_def* mii_phy_table[] = {
        NULL
 };
 
-int mii_phy_probe(struct mii_phy *phy, int mii_id)
+int sungem_phy_probe(struct mii_phy *phy, int mii_id)
 {
        int rc;
        u32 id;
@@ -1195,6 +1195,5 @@ fail:
        return -ENODEV;
 }
 
-EXPORT_SYMBOL(mii_phy_probe);
+EXPORT_SYMBOL(sungem_phy_probe);
 MODULE_LICENSE("GPL");
-
index af02f94..bd9be9f 100644 (file)
@@ -61,7 +61,7 @@ struct mii_phy
 /* Pass in a struct mii_phy with dev, mdio_read and mdio_write
  * filled, the remaining fields will be filled on return
  */
-extern int mii_phy_probe(struct mii_phy *phy, int mii_id);
+extern int sungem_phy_probe(struct mii_phy *phy, int mii_id);
 
 
 /* MII definitions missing from mii.h */