nsphy.c (213384) | nsphy.c (213893) |
---|---|
1/* $NetBSD: nsphy.c,v 1.18 1999/07/14 23:57:36 thorpej Exp $ */ 2 3/*- 4 * Copyright (c) 1998, 1999 The NetBSD Foundation, Inc. 5 * All rights reserved. 6 * 7 * This code is derived from software contributed to The NetBSD Foundation 8 * by Jason R. Thorpe of the Numerical Aerospace Simulation Facility, --- 41 unchanged lines hidden (view full) --- 50 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 51 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 52 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 53 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 54 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 55 */ 56 57#include <sys/cdefs.h> | 1/* $NetBSD: nsphy.c,v 1.18 1999/07/14 23:57:36 thorpej Exp $ */ 2 3/*- 4 * Copyright (c) 1998, 1999 The NetBSD Foundation, Inc. 5 * All rights reserved. 6 * 7 * This code is derived from software contributed to The NetBSD Foundation 8 * by Jason R. Thorpe of the Numerical Aerospace Simulation Facility, --- 41 unchanged lines hidden (view full) --- 50 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 51 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 52 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 53 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 54 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 55 */ 56 57#include <sys/cdefs.h> |
58__FBSDID("$FreeBSD: head/sys/dev/mii/nsphy.c 213384 2010-10-03 17:00:57Z marius $"); | 58__FBSDID("$FreeBSD: head/sys/dev/mii/nsphy.c 213893 2010-10-15 14:52:11Z marius $"); |
59 60/* 61 * driver for National Semiconductor's DP83840A ethernet 10/100 PHY 62 * Data Sheet available from www.national.com 63 */ 64 65#include <sys/param.h> 66#include <sys/systm.h> --- 61 unchanged lines hidden (view full) --- 128 const char *nic; 129 130 sc = device_get_softc(dev); 131 ma = device_get_ivars(dev); 132 sc->mii_dev = device_get_parent(dev); 133 mii = ma->mii_data; 134 LIST_INSERT_HEAD(&mii->mii_phys, sc, mii_list); 135 | 59 60/* 61 * driver for National Semiconductor's DP83840A ethernet 10/100 PHY 62 * Data Sheet available from www.national.com 63 */ 64 65#include <sys/param.h> 66#include <sys/systm.h> --- 61 unchanged lines hidden (view full) --- 128 const char *nic; 129 130 sc = device_get_softc(dev); 131 ma = device_get_ivars(dev); 132 sc->mii_dev = device_get_parent(dev); 133 mii = ma->mii_data; 134 LIST_INSERT_HEAD(&mii->mii_phys, sc, mii_list); 135 |
136 sc->mii_flags = miibus_get_flags(dev); |
|
136 sc->mii_inst = mii->mii_instance++; 137 sc->mii_phy = ma->mii_phyno; 138 sc->mii_service = nsphy_service; 139 sc->mii_pdata = mii; 140 141 nic = device_get_name(device_get_parent(sc->mii_dev)); 142 /* | 137 sc->mii_inst = mii->mii_instance++; 138 sc->mii_phy = ma->mii_phyno; 139 sc->mii_service = nsphy_service; 140 sc->mii_pdata = mii; 141 142 nic = device_get_name(device_get_parent(sc->mii_dev)); 143 /* |
143 * Am79C971 and i82557 wedge when isolating all of their 144 * (external) PHYs. | 144 * Am79C971 wedge when isolating all of their external PHYs. |
145 */ | 145 */ |
146 if (strcmp(nic, "fxp") == 0 || strcmp(nic, "pcn") == 0) | 146 if (strcmp(nic, "pcn") == 0) |
147 sc->mii_flags |= MIIF_NOISOLATE; 148 | 147 sc->mii_flags |= MIIF_NOISOLATE; 148 |
149 /* 150 * DP83840A used with HME chips don't advertise their media 151 * capabilities themselves properly so force writing the ANAR 152 * according to the BMSR in mii_phy_setmedia(). 153 */ 154 if (strcmp(nic, "hme") == 0) 155 sc->mii_flags |= MIIF_FORCEANEG; | 149#if 1 |
156 157#define ADD(m, c) ifmedia_add(&mii->mii_media, (m), (c), NULL) 158 159 /* | 150 151#define ADD(m, c) ifmedia_add(&mii->mii_media, (m), (c), NULL) 152 153 /* |
160 * In order for MII loopback to work Am79C971 and greater PCnet 161 * chips additionally need to be placed into external loopback 162 * mode which pcn(4) doesn't do so far. | 154 * XXX IFM_LOOP should be handled by mii_phy_add_media() based 155 * on MIIF_NOLOOP. |
163 */ | 156 */ |
164 if (strcmp(nic, "pcn") != 0) 165#if 1 | 157 if ((sc->mii_flags & MIIF_NOLOOP) == 0) |
166 ADD(IFM_MAKEWORD(IFM_ETHER, IFM_100_TX, IFM_LOOP, 167 sc->mii_inst), MII_MEDIA_100_TX); | 158 ADD(IFM_MAKEWORD(IFM_ETHER, IFM_100_TX, IFM_LOOP, 159 sc->mii_inst), MII_MEDIA_100_TX); |
168#else 169 if (strcmp(nic, "pcn") == 0) 170 sc->mii_flags |= MIIF_NOLOOP; | 160 |
171#endif 172 173 nsphy_reset(sc); 174 175 sc->mii_capabilities = PHY_READ(sc, MII_BMSR) & ma->mii_capmask; 176 device_printf(dev, " "); 177 mii_phy_add_media(sc); 178 printf("\n"); | 161#endif 162 163 nsphy_reset(sc); 164 165 sc->mii_capabilities = PHY_READ(sc, MII_BMSR) & ma->mii_capmask; 166 device_printf(dev, " "); 167 mii_phy_add_media(sc); 168 printf("\n"); |
179#undef ADD | |
180 181 MIIBUS_MEDIAINIT(sc->mii_dev); 182 return (0); 183} 184 185static int 186nsphy_service(struct mii_softc *sc, struct mii_data *mii, int cmd) 187{ --- 182 unchanged lines hidden --- | 169 170 MIIBUS_MEDIAINIT(sc->mii_dev); 171 return (0); 172} 173 174static int 175nsphy_service(struct mii_softc *sc, struct mii_data *mii, int cmd) 176{ --- 182 unchanged lines hidden --- |