Commit 19e2f6fe authored by David S. Miller's avatar David S. Miller

net: Fix sungem_phy sharing.

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: default avatarStephen Rothwell <sfr@canb.auug.org.au>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent ef37d38a
...@@ -186,6 +186,9 @@ config MII ...@@ -186,6 +186,9 @@ config MII
source "drivers/net/phy/Kconfig" source "drivers/net/phy/Kconfig"
config SUNGEM_PHY
tristate
# #
# Ethernet # Ethernet
# #
......
...@@ -75,3 +75,5 @@ obj-$(CONFIG_VIRTIO_NET) += virtio_net.o ...@@ -75,3 +75,5 @@ obj-$(CONFIG_VIRTIO_NET) += virtio_net.o
obj-$(CONFIG_WIMAX) += wimax/ obj-$(CONFIG_WIMAX) += wimax/
obj-$(CONFIG_CAIF) += caif/ obj-$(CONFIG_CAIF) += caif/
obj-$(CONFIG_SUNGEM_PHY) += sungem_phy.o
...@@ -6,7 +6,6 @@ obj-$(CONFIG_HAPPYMEAL) += sunhme.o ...@@ -6,7 +6,6 @@ obj-$(CONFIG_HAPPYMEAL) += sunhme.o
obj-$(CONFIG_SUNQE) += sunqe.o obj-$(CONFIG_SUNQE) += sunqe.o
obj-$(CONFIG_SUNBMAC) += sunbmac.o obj-$(CONFIG_SUNBMAC) += sunbmac.o
obj-$(CONFIG_SUNGEM) += sungem.o obj-$(CONFIG_SUNGEM) += sungem.o
obj-$(CONFIG_SUNGEM_PHY) += sungem_phy.o
obj-$(CONFIG_CASSINI) += cassini.o obj-$(CONFIG_CASSINI) += cassini.o
obj-$(CONFIG_SUNVNET) += sunvnet.o obj-$(CONFIG_SUNVNET) += sunvnet.o
obj-$(CONFIG_NIU) += niu.o obj-$(CONFIG_NIU) += niu.o
...@@ -1721,7 +1721,7 @@ static void gem_init_phy(struct gem *gp) ...@@ -1721,7 +1721,7 @@ static void gem_init_phy(struct gem *gp)
if (gp->phy_type == phy_mii_mdio0 || if (gp->phy_type == phy_mii_mdio0 ||
gp->phy_type == phy_mii_mdio1) { gp->phy_type == phy_mii_mdio1) {
/* Reset and detect MII PHY */ /* 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 */ /* Init PHY */
if (gp->phy_mii.def && gp->phy_mii.def->ops->init) if (gp->phy_mii.def && gp->phy_mii.def->ops->init)
......
...@@ -6,5 +6,5 @@ obj-$(CONFIG_GELIC_NET) += ps3_gelic.o ...@@ -6,5 +6,5 @@ obj-$(CONFIG_GELIC_NET) += ps3_gelic.o
gelic_wireless-$(CONFIG_GELIC_WIRELESS) += ps3_gelic_wireless.o gelic_wireless-$(CONFIG_GELIC_WIRELESS) += ps3_gelic_wireless.o
ps3_gelic-objs += ps3_gelic_net.o $(gelic_wireless-y) ps3_gelic-objs += ps3_gelic_net.o $(gelic_wireless-y)
spidernet-y += spider_net.o spider_net_ethtool.o 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 obj-$(CONFIG_TC35815) += tc35815.o
...@@ -196,7 +196,7 @@ spider_net_setup_aneg(struct spider_net_card *card) ...@@ -196,7 +196,7 @@ spider_net_setup_aneg(struct spider_net_card *card)
if ((bmsr & BMSR_ESTATEN) && (estat & ESTATUS_1000_THALF)) if ((bmsr & BMSR_ESTATEN) && (estat & ESTATUS_1000_THALF))
advertise |= SUPPORTED_1000baseT_Half; 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); phy->def->ops->setup_aneg(phy, advertise);
} }
...@@ -2120,7 +2120,7 @@ spider_net_setup_phy(struct spider_net_card *card) ...@@ -2120,7 +2120,7 @@ spider_net_setup_phy(struct spider_net_card *card)
unsigned short id; unsigned short id;
id = spider_net_read_phy(card->netdev, phy->mii_id, MII_BMSR); id = spider_net_read_phy(card->netdev, phy->mii_id, MII_BMSR);
if (id != 0x0000 && id != 0xffff) { 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); pr_info("Found %s.\n", phy->def->name);
break; break;
} }
......
...@@ -1156,7 +1156,7 @@ static struct mii_phy_def* mii_phy_table[] = { ...@@ -1156,7 +1156,7 @@ static struct mii_phy_def* mii_phy_table[] = {
NULL 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; int rc;
u32 id; u32 id;
...@@ -1195,6 +1195,5 @@ int mii_phy_probe(struct mii_phy *phy, int mii_id) ...@@ -1195,6 +1195,5 @@ int mii_phy_probe(struct mii_phy *phy, int mii_id)
return -ENODEV; return -ENODEV;
} }
EXPORT_SYMBOL(mii_phy_probe); EXPORT_SYMBOL(sungem_phy_probe);
MODULE_LICENSE("GPL"); MODULE_LICENSE("GPL");
...@@ -61,7 +61,7 @@ struct mii_phy ...@@ -61,7 +61,7 @@ struct mii_phy
/* Pass in a struct mii_phy with dev, mdio_read and mdio_write /* Pass in a struct mii_phy with dev, mdio_read and mdio_write
* filled, the remaining fields will be filled on return * 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 */ /* MII definitions missing from mii.h */
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment