if_ed_rtl80x9.c (257176) | if_ed_rtl80x9.c (260050) |
---|---|
1/*- 2 * Copyright (c) 2003, David Madole 3 * All rights reserved. 4 * Copyright (c) 2005, M. Warner Losh. 5 * All rights reserved. 6 * 7 * Redistribution and use in source and binary forms, with or without 8 * modification, are permitted provided that the following conditions --- 17 unchanged lines hidden (view full) --- 26 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 27 * SUCH DAMAGE. 28 * 29 * Based on patches subitted by: David Madole, edited by M. Warner Losh. 30 */ 31 32 33#include <sys/cdefs.h> | 1/*- 2 * Copyright (c) 2003, David Madole 3 * All rights reserved. 4 * Copyright (c) 2005, M. Warner Losh. 5 * All rights reserved. 6 * 7 * Redistribution and use in source and binary forms, with or without 8 * modification, are permitted provided that the following conditions --- 17 unchanged lines hidden (view full) --- 26 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 27 * SUCH DAMAGE. 28 * 29 * Based on patches subitted by: David Madole, edited by M. Warner Losh. 30 */ 31 32 33#include <sys/cdefs.h> |
34__FBSDID("$FreeBSD: head/sys/dev/ed/if_ed_rtl80x9.c 257176 2013-10-26 17:58:36Z glebius $"); | 34__FBSDID("$FreeBSD: head/sys/dev/ed/if_ed_rtl80x9.c 260050 2013-12-29 19:21:59Z marius $"); |
35 36#include "opt_ed.h" 37 38#include <sys/param.h> 39#include <sys/systm.h> 40#include <sys/sockio.h> 41#include <sys/mbuf.h> 42#include <sys/kernel.h> --- 69 unchanged lines hidden (view full) --- 112 ifmedia_init(&sc->ifmedia, 0, ed_rtl_set_media, ed_rtl_get_media); 113 114 ifmedia_add(&sc->ifmedia, IFM_ETHER | IFM_10_T | IFM_FDX, 0, 0); 115 ifmedia_add(&sc->ifmedia, IFM_ETHER | IFM_10_T, 0, 0); 116 ifmedia_add(&sc->ifmedia, IFM_ETHER | IFM_10_2, 0, 0); 117 ifmedia_add(&sc->ifmedia, IFM_ETHER | IFM_10_5, 0, 0); 118 ifmedia_add(&sc->ifmedia, IFM_ETHER | IFM_AUTO, 0, 0); 119 | 35 36#include "opt_ed.h" 37 38#include <sys/param.h> 39#include <sys/systm.h> 40#include <sys/sockio.h> 41#include <sys/mbuf.h> 42#include <sys/kernel.h> --- 69 unchanged lines hidden (view full) --- 112 ifmedia_init(&sc->ifmedia, 0, ed_rtl_set_media, ed_rtl_get_media); 113 114 ifmedia_add(&sc->ifmedia, IFM_ETHER | IFM_10_T | IFM_FDX, 0, 0); 115 ifmedia_add(&sc->ifmedia, IFM_ETHER | IFM_10_T, 0, 0); 116 ifmedia_add(&sc->ifmedia, IFM_ETHER | IFM_10_2, 0, 0); 117 ifmedia_add(&sc->ifmedia, IFM_ETHER | IFM_10_5, 0, 0); 118 ifmedia_add(&sc->ifmedia, IFM_ETHER | IFM_AUTO, 0, 0); 119 |
120 ed_nic_barrier(sc, ED_P0_CR, 1, 121 BUS_SPACE_BARRIER_READ | BUS_SPACE_BARRIER_WRITE); |
|
120 ed_nic_outb(sc, ED_P0_CR, ED_CR_RD2 | ED_CR_PAGE_3 | ED_CR_STP); | 122 ed_nic_outb(sc, ED_P0_CR, ED_CR_RD2 | ED_CR_PAGE_3 | ED_CR_STP); |
123 ed_nic_barrier(sc, ED_P0_CR, 1, 124 BUS_SPACE_BARRIER_READ | BUS_SPACE_BARRIER_WRITE); |
|
121 122 switch (ed_nic_inb(sc, ED_RTL80X9_CONFIG2) & ED_RTL80X9_CF2_MEDIA) { 123 case ED_RTL80X9_CF2_AUTO: 124 ifmedia_set(&sc->ifmedia, IFM_ETHER | IFM_AUTO); 125 break; 126 case ED_RTL80X9_CF2_10_5: 127 ifmedia_set(&sc->ifmedia, IFM_ETHER | IFM_10_5); 128 break; --- 11 unchanged lines hidden (view full) --- 140 141static int 142ed_rtl_set_media(struct ifnet *ifp) 143{ 144 struct ed_softc *sc; 145 146 sc = ifp->if_softc; 147 ED_LOCK(sc); | 125 126 switch (ed_nic_inb(sc, ED_RTL80X9_CONFIG2) & ED_RTL80X9_CF2_MEDIA) { 127 case ED_RTL80X9_CF2_AUTO: 128 ifmedia_set(&sc->ifmedia, IFM_ETHER | IFM_AUTO); 129 break; 130 case ED_RTL80X9_CF2_10_5: 131 ifmedia_set(&sc->ifmedia, IFM_ETHER | IFM_10_5); 132 break; --- 11 unchanged lines hidden (view full) --- 144 145static int 146ed_rtl_set_media(struct ifnet *ifp) 147{ 148 struct ed_softc *sc; 149 150 sc = ifp->if_softc; 151 ED_LOCK(sc); |
152 ed_nic_barrier(sc, ED_P0_CR, 1, 153 BUS_SPACE_BARRIER_READ | BUS_SPACE_BARRIER_WRITE); |
|
148 ed_nic_outb(sc, ED_P0_CR, sc->cr_proto | ED_CR_PAGE_3 149 | (ed_nic_inb(sc, ED_P0_CR) & (ED_CR_STA | ED_CR_STP))); | 154 ed_nic_outb(sc, ED_P0_CR, sc->cr_proto | ED_CR_PAGE_3 155 | (ed_nic_inb(sc, ED_P0_CR) & (ED_CR_STA | ED_CR_STP))); |
156 ed_nic_barrier(sc, ED_P0_CR, 1, 157 BUS_SPACE_BARRIER_READ | BUS_SPACE_BARRIER_WRITE); |
|
150 151 switch(IFM_SUBTYPE(sc->ifmedia.ifm_cur->ifm_media)) { 152 case IFM_10_T: 153 ed_nic_outb(sc, ED_RTL80X9_CONFIG2, ED_RTL80X9_CF2_10_T 154 | (ed_nic_inb(sc, ED_RTL80X9_CONFIG2) 155 & ~ED_RTL80X9_CF2_MEDIA)); 156 break; 157 case IFM_10_2: --- 27 unchanged lines hidden (view full) --- 185 struct ed_softc *sc; 186 187 sc = ifp->if_softc; 188 imr->ifm_active = sc->ifmedia.ifm_cur->ifm_media; 189 190 191 if (IFM_SUBTYPE(imr->ifm_active) == IFM_AUTO) { 192 ED_LOCK(sc); | 158 159 switch(IFM_SUBTYPE(sc->ifmedia.ifm_cur->ifm_media)) { 160 case IFM_10_T: 161 ed_nic_outb(sc, ED_RTL80X9_CONFIG2, ED_RTL80X9_CF2_10_T 162 | (ed_nic_inb(sc, ED_RTL80X9_CONFIG2) 163 & ~ED_RTL80X9_CF2_MEDIA)); 164 break; 165 case IFM_10_2: --- 27 unchanged lines hidden (view full) --- 193 struct ed_softc *sc; 194 195 sc = ifp->if_softc; 196 imr->ifm_active = sc->ifmedia.ifm_cur->ifm_media; 197 198 199 if (IFM_SUBTYPE(imr->ifm_active) == IFM_AUTO) { 200 ED_LOCK(sc); |
201 ed_nic_barrier(sc, ED_P0_CR, 1, 202 BUS_SPACE_BARRIER_READ | BUS_SPACE_BARRIER_WRITE); |
|
193 ed_nic_outb(sc, ED_P0_CR, sc->cr_proto | ED_CR_PAGE_3 | 194 (ed_nic_inb(sc, ED_P0_CR) & (ED_CR_STA | ED_CR_STP))); | 203 ed_nic_outb(sc, ED_P0_CR, sc->cr_proto | ED_CR_PAGE_3 | 204 (ed_nic_inb(sc, ED_P0_CR) & (ED_CR_STA | ED_CR_STP))); |
205 ed_nic_barrier(sc, ED_P0_CR, 1, 206 BUS_SPACE_BARRIER_READ | BUS_SPACE_BARRIER_WRITE); |
|
195 196 switch (ed_nic_inb(sc, ED_RTL80X9_CONFIG0) 197 & (sc->chip_type == ED_CHIP_TYPE_RTL8029 ? ED_RTL80X9_CF0_BNC 198 : (ED_RTL80X9_CF0_AUI | ED_RTL80X9_CF0_BNC))) { 199 case ED_RTL80X9_CF0_BNC: 200 imr->ifm_active |= IFM_10_2; 201 break; 202 case ED_RTL80X9_CF0_AUI: 203 imr->ifm_active |= IFM_10_5; 204 break; 205 default: 206 imr->ifm_active |= IFM_10_T; 207 break; 208 } 209 ED_UNLOCK(sc); 210 } 211 imr->ifm_status = 0; 212} 213 | 207 208 switch (ed_nic_inb(sc, ED_RTL80X9_CONFIG0) 209 & (sc->chip_type == ED_CHIP_TYPE_RTL8029 ? ED_RTL80X9_CF0_BNC 210 : (ED_RTL80X9_CF0_AUI | ED_RTL80X9_CF0_BNC))) { 211 case ED_RTL80X9_CF0_BNC: 212 imr->ifm_active |= IFM_10_2; 213 break; 214 case ED_RTL80X9_CF0_AUI: 215 imr->ifm_active |= IFM_10_5; 216 break; 217 default: 218 imr->ifm_active |= IFM_10_T; 219 break; 220 } 221 ED_UNLOCK(sc); 222 } 223 imr->ifm_status = 0; 224} 225 |