From 9e096ad0c8281c587af06dfd32d53af43455547d Mon Sep 17 00:00:00 2001 From: Dale Farnsworth Date: Tue, 23 Aug 2005 10:30:29 -0700 Subject: [PATCH] --- yaml --- r: 10216 b: refs/heads/master c: 43ec6e95e4d8a73afc2405a44b955c380aeeb65a h: refs/heads/master v: v3 --- [refs] | 2 +- trunk/drivers/net/mii.c | 15 +++++++++++++++ trunk/include/linux/mii.h | 1 + 3 files changed, 17 insertions(+), 1 deletion(-) diff --git a/[refs] b/[refs] index eb42cba7f98f..175d9504fcf1 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 7a700fafbed55eee2cc766fbe47cf68e229da281 +refs/heads/master: 43ec6e95e4d8a73afc2405a44b955c380aeeb65a diff --git a/trunk/drivers/net/mii.c b/trunk/drivers/net/mii.c index c33cb3dc942b..e42aa797f08b 100644 --- a/trunk/drivers/net/mii.c +++ b/trunk/drivers/net/mii.c @@ -207,6 +207,20 @@ int mii_ethtool_sset(struct mii_if_info *mii, struct ethtool_cmd *ecmd) return 0; } +int mii_check_gmii_support(struct mii_if_info *mii) +{ + int reg; + + reg = mii->mdio_read(mii->dev, mii->phy_id, MII_BMSR); + if (reg & BMSR_ESTATEN) { + reg = mii->mdio_read(mii->dev, mii->phy_id, MII_ESTATUS); + if (reg & (ESTATUS_1000_TFULL | ESTATUS_1000_THALF)) + return 1; + } + + return 0; +} + int mii_link_ok (struct mii_if_info *mii) { /* first, a dummy read, needed to latch some MII phys */ @@ -394,5 +408,6 @@ EXPORT_SYMBOL(mii_ethtool_gset); EXPORT_SYMBOL(mii_ethtool_sset); EXPORT_SYMBOL(mii_check_link); EXPORT_SYMBOL(mii_check_media); +EXPORT_SYMBOL(mii_check_gmii_support); EXPORT_SYMBOL(generic_mii_ioctl); diff --git a/trunk/include/linux/mii.h b/trunk/include/linux/mii.h index 9b8d0476988a..68f5a0f392dd 100644 --- a/trunk/include/linux/mii.h +++ b/trunk/include/linux/mii.h @@ -158,6 +158,7 @@ extern int mii_link_ok (struct mii_if_info *mii); extern int mii_nway_restart (struct mii_if_info *mii); extern int mii_ethtool_gset(struct mii_if_info *mii, struct ethtool_cmd *ecmd); extern int mii_ethtool_sset(struct mii_if_info *mii, struct ethtool_cmd *ecmd); +extern int mii_check_gmii_support(struct mii_if_info *mii); extern void mii_check_link (struct mii_if_info *mii); extern unsigned int mii_check_media (struct mii_if_info *mii, unsigned int ok_to_print,