Deleted Added
full compact
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