qsphy.c (213229) | qsphy.c (213364) |
---|---|
1/* OpenBSD: qsphy.c,v 1.6 2000/08/26 20:04:18 nate Exp */ 2/* NetBSD: qsphy.c,v 1.19 2000/02/02 23:34:57 thorpej Exp */ 3 4/*- 5 * Copyright (c) 1998, 1999 The NetBSD Foundation, Inc. 6 * All rights reserved. 7 * 8 * This code is derived from software contributed to The NetBSD Foundation --- 42 unchanged lines hidden (view full) --- 51 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 52 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 53 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 54 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 55 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 56 */ 57 58#include <sys/cdefs.h> | 1/* OpenBSD: qsphy.c,v 1.6 2000/08/26 20:04:18 nate Exp */ 2/* NetBSD: qsphy.c,v 1.19 2000/02/02 23:34:57 thorpej Exp */ 3 4/*- 5 * Copyright (c) 1998, 1999 The NetBSD Foundation, Inc. 6 * All rights reserved. 7 * 8 * This code is derived from software contributed to The NetBSD Foundation --- 42 unchanged lines hidden (view full) --- 51 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 52 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 53 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 54 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 55 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 56 */ 57 58#include <sys/cdefs.h> |
59__FBSDID("$FreeBSD: head/sys/dev/mii/qsphy.c 213229 2010-09-27 20:31:03Z marius $"); | 59__FBSDID("$FreeBSD: head/sys/dev/mii/qsphy.c 213364 2010-10-02 18:53:12Z marius $"); |
60 61/* 62 * driver for Quality Semiconductor's QS6612 ethernet 10/100 PHY 63 * datasheet from www.qualitysemi.com 64 */ 65 66#include <sys/param.h> 67#include <sys/systm.h> --- 60 unchanged lines hidden (view full) --- 128 struct mii_data *mii; 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 | 60 61/* 62 * driver for Quality Semiconductor's QS6612 ethernet 10/100 PHY 63 * datasheet from www.qualitysemi.com 64 */ 65 66#include <sys/param.h> 67#include <sys/systm.h> --- 60 unchanged lines hidden (view full) --- 128 struct mii_data *mii; 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_inst = mii->mii_instance; | 136 sc->mii_inst = mii->mii_instance++; |
137 sc->mii_phy = ma->mii_phyno; 138 sc->mii_service = qsphy_service; 139 sc->mii_pdata = mii; 140 | 137 sc->mii_phy = ma->mii_phyno; 138 sc->mii_service = qsphy_service; 139 sc->mii_pdata = mii; 140 |
141 mii->mii_instance++; 142 | |
143 qsphy_reset(sc); 144 | 141 qsphy_reset(sc); 142 |
145 sc->mii_capabilities = 146 PHY_READ(sc, MII_BMSR) & ma->mii_capmask; | 143 sc->mii_capabilities = PHY_READ(sc, MII_BMSR) & ma->mii_capmask; |
147 device_printf(dev, " "); 148 mii_phy_add_media(sc); 149 printf("\n"); 150 151 MIIBUS_MEDIAINIT(sc->mii_dev); 152 return (0); 153} 154 155static int 156qsphy_service(struct mii_softc *sc, struct mii_data *mii, int cmd) 157{ | 144 device_printf(dev, " "); 145 mii_phy_add_media(sc); 146 printf("\n"); 147 148 MIIBUS_MEDIAINIT(sc->mii_dev); 149 return (0); 150} 151 152static int 153qsphy_service(struct mii_softc *sc, struct mii_data *mii, int cmd) 154{ |
158 struct ifmedia_entry *ife = mii->mii_media.ifm_cur; 159 int reg; | |
160 | 155 |
161 /* 162 * If we're not selected, then do nothing, just isolate, if 163 * changing media. 164 */ 165 if (IFM_INST(ife->ifm_media) != sc->mii_inst) { 166 if (cmd == MII_MEDIACHG) { 167 reg = PHY_READ(sc, MII_BMCR); 168 PHY_WRITE(sc, MII_BMCR, reg | BMCR_ISO); 169 } 170 171 return (0); 172 } 173 | |
174 switch (cmd) { 175 case MII_POLLSTAT: 176 break; 177 178 case MII_MEDIACHG: 179 /* 180 * If the interface is not up, don't do anything. 181 */ --- 85 unchanged lines hidden --- | 156 switch (cmd) { 157 case MII_POLLSTAT: 158 break; 159 160 case MII_MEDIACHG: 161 /* 162 * If the interface is not up, don't do anything. 163 */ --- 85 unchanged lines hidden --- |