if_ed_pccard.c (149696) | if_ed_pccard.c (149832) |
---|---|
1/*- 2 * Copyright (c) 1995, David Greenman 3 * All rights reserved. 4 * 5 * Redistribution and use in source and binary forms, with or without 6 * modification, are permitted provided that the following conditions 7 * are met: 8 * 1. Redistributions of source code must retain the above copyright --- 10 unchanged lines hidden (view full) --- 19 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 20 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 21 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 22 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 23 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 24 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 25 * SUCH DAMAGE. 26 * | 1/*- 2 * Copyright (c) 1995, David Greenman 3 * All rights reserved. 4 * 5 * Redistribution and use in source and binary forms, with or without 6 * modification, are permitted provided that the following conditions 7 * are met: 8 * 1. Redistributions of source code must retain the above copyright --- 10 unchanged lines hidden (view full) --- 19 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 20 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 21 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 22 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 23 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 24 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 25 * SUCH DAMAGE. 26 * |
27 * $FreeBSD: head/sys/dev/ed/if_ed_pccard.c 149696 2005-09-01 20:08:24Z imp $ | 27 * $FreeBSD: head/sys/dev/ed/if_ed_pccard.c 149832 2005-09-06 22:44:26Z imp $ |
28 */ 29 30#include "opt_ed.h" 31 32#include <sys/param.h> 33#include <sys/systm.h> 34#include <sys/socket.h> 35#include <sys/kernel.h> --- 66 unchanged lines hidden (view full) --- 102 struct pccard_product prod; 103 int flags; 104#define NE2000DVF_DL100XX 0x0001 /* chip is D-Link DL10019/22 */ 105#define NE2000DVF_AX88X90 0x0002 /* chip is ASIX AX88[17]90 */ 106#define NE2000DVF_ENADDR 0x0004 /* Get MAC from attr mem */ 107#define NE2000DVF_ANYFUNC 0x0008 /* Allow any function type */ 108#define NE2000DVF_MODEM 0x0010 /* Has a modem/serial */ 109 int enoff; | 28 */ 29 30#include "opt_ed.h" 31 32#include <sys/param.h> 33#include <sys/systm.h> 34#include <sys/socket.h> 35#include <sys/kernel.h> --- 66 unchanged lines hidden (view full) --- 102 struct pccard_product prod; 103 int flags; 104#define NE2000DVF_DL100XX 0x0001 /* chip is D-Link DL10019/22 */ 105#define NE2000DVF_AX88X90 0x0002 /* chip is ASIX AX88[17]90 */ 106#define NE2000DVF_ENADDR 0x0004 /* Get MAC from attr mem */ 107#define NE2000DVF_ANYFUNC 0x0008 /* Allow any function type */ 108#define NE2000DVF_MODEM 0x0010 /* Has a modem/serial */ 109 int enoff; |
110 int edrid; 111 int siorid; | |
112} ed_pccard_products[] = { 113 { PCMCIA_CARD(ACCTON, EN2212), 0}, 114 { PCMCIA_CARD(ACCTON, EN2216), 0}, 115 { PCMCIA_CARD(ALLIEDTELESIS, LA_PCM), 0}, 116 { PCMCIA_CARD(AMBICOM, AMB8002T), 0}, 117 { PCMCIA_CARD(BILLIONTON, LNT10TN), 0}, 118 { PCMCIA_CARD(BILLIONTON, CFLT10N), 0}, 119 { PCMCIA_CARD(BROMAX, IPORT), 0}, --- 21 unchanged lines hidden (view full) --- 141 { PCMCIA_CARD(DLINK, DE660PLUS), 0}, 142 { PCMCIA_CARD(DLINK, DFE670TXD), NE2000DVF_DL100XX }, 143 { PCMCIA_CARD(DYNALINK, L10C), 0}, 144 { PCMCIA_CARD(EDIMAX, EP4000A), 0}, 145 { PCMCIA_CARD(EPSON, EEN10B), 0}, 146 { PCMCIA_CARD(EXP, THINLANCOMBO), 0}, 147 { PCMCIA_CARD(GREY_CELL, TDK3000), 0}, 148 { PCMCIA_CARD(GREY_CELL, DMF650TX), | 110} ed_pccard_products[] = { 111 { PCMCIA_CARD(ACCTON, EN2212), 0}, 112 { PCMCIA_CARD(ACCTON, EN2216), 0}, 113 { PCMCIA_CARD(ALLIEDTELESIS, LA_PCM), 0}, 114 { PCMCIA_CARD(AMBICOM, AMB8002T), 0}, 115 { PCMCIA_CARD(BILLIONTON, LNT10TN), 0}, 116 { PCMCIA_CARD(BILLIONTON, CFLT10N), 0}, 117 { PCMCIA_CARD(BROMAX, IPORT), 0}, --- 21 unchanged lines hidden (view full) --- 139 { PCMCIA_CARD(DLINK, DE660PLUS), 0}, 140 { PCMCIA_CARD(DLINK, DFE670TXD), NE2000DVF_DL100XX }, 141 { PCMCIA_CARD(DYNALINK, L10C), 0}, 142 { PCMCIA_CARD(EDIMAX, EP4000A), 0}, 143 { PCMCIA_CARD(EPSON, EEN10B), 0}, 144 { PCMCIA_CARD(EXP, THINLANCOMBO), 0}, 145 { PCMCIA_CARD(GREY_CELL, TDK3000), 0}, 146 { PCMCIA_CARD(GREY_CELL, DMF650TX), |
149 NE2000DVF_ANYFUNC | NE2000DVF_DL100XX | NE2000DVF_MODEM, -1, 1, 0}, | 147 NE2000DVF_ANYFUNC | NE2000DVF_DL100XX | NE2000DVF_MODEM}, |
150 { PCMCIA_CARD(IBM, HOME_AND_AWAY), 0}, 151 { PCMCIA_CARD(IBM, INFOMOVER), NE2000DVF_ENADDR, 0xff0}, 152 { PCMCIA_CARD(IODATA3, PCLAT), 0}, 153 { PCMCIA_CARD(KINGSTON, CIO10T), 0}, 154 { PCMCIA_CARD(KINGSTON, KNE2), 0}, 155 { PCMCIA_CARD(LANTECH, FASTNETTX),NE2000DVF_AX88X90 }, 156 { PCMCIA_CARD(LINKSYS, COMBO_ECARD), 157 NE2000DVF_DL100XX | NE2000DVF_AX88X90 }, --- 88 unchanged lines hidden (view full) --- 246 if (romdata[12] != 0 || romdata[14] != 0) 247 return 0; 248 for (i = 0; i < ETHER_ADDR_LEN; i++) 249 enaddr[i] = romdata[i * 2]; 250 return 1; 251} 252 253static int | 148 { PCMCIA_CARD(IBM, HOME_AND_AWAY), 0}, 149 { PCMCIA_CARD(IBM, INFOMOVER), NE2000DVF_ENADDR, 0xff0}, 150 { PCMCIA_CARD(IODATA3, PCLAT), 0}, 151 { PCMCIA_CARD(KINGSTON, CIO10T), 0}, 152 { PCMCIA_CARD(KINGSTON, KNE2), 0}, 153 { PCMCIA_CARD(LANTECH, FASTNETTX),NE2000DVF_AX88X90 }, 154 { PCMCIA_CARD(LINKSYS, COMBO_ECARD), 155 NE2000DVF_DL100XX | NE2000DVF_AX88X90 }, --- 88 unchanged lines hidden (view full) --- 244 if (romdata[12] != 0 || romdata[14] != 0) 245 return 0; 246 for (i = 0; i < ETHER_ADDR_LEN; i++) 247 enaddr[i] = romdata[i * 2]; 248 return 1; 249} 250 251static int |
254ed_pccard_add_modem(device_t dev, int rid) | 252ed_pccard_add_modem(device_t dev) |
255{ | 253{ |
256 device_printf(dev, "Need to write this code: modem rid is %d\n", rid); | 254 struct ed_softc *sc = device_get_softc(dev); 255 256 device_printf(dev, "Need to write this code: modem rid is %d\n", 257 sc->modem_rid); |
257 return 0; 258} 259 260static int 261ed_pccard_attach(device_t dev) 262{ 263 u_char sum; 264 u_char enaddr[ETHER_ADDR_LEN]; 265 const struct ed_product *pp; 266 int error, i; 267 struct ed_softc *sc = device_get_softc(dev); | 258 return 0; 259} 260 261static int 262ed_pccard_attach(device_t dev) 263{ 264 u_char sum; 265 u_char enaddr[ETHER_ADDR_LEN]; 266 const struct ed_product *pp; 267 int error, i; 268 struct ed_softc *sc = device_get_softc(dev); |
269 u_long size; |
|
268 269 if ((pp = (const struct ed_product *) pccard_product_lookup(dev, 270 (const struct pccard_product *) ed_pccard_products, 271 sizeof(ed_pccard_products[0]), NULL)) == NULL) 272 return (ENXIO); | 270 271 if ((pp = (const struct ed_product *) pccard_product_lookup(dev, 272 (const struct pccard_product *) ed_pccard_products, 273 sizeof(ed_pccard_products[0]), NULL)) == NULL) 274 return (ENXIO); |
273 sc->port_rid = pp->edrid; | 275 sc->modem_rid = -1; 276 if (pp->flags & NE2000DVF_MODEM) { 277 sc->port_rid = -1; 278 for (i = 0; i < 4; i++) { 279 size = bus_get_resource_count(dev, SYS_RES_IOPORT, i); 280 if (size == ED_NOVELL_IO_PORTS) 281 sc->port_rid = i; 282 else if (size == 8) 283 sc->modem_rid = i; 284 } 285 if (sc->port_rid == -1) { 286 device_printf(dev, "Cannot locate my ports!\n"); 287 return (ENXIO); 288 } 289 } else { 290 sc->port_rid = 0; 291 } |
274 if (pp->flags & NE2000DVF_DL100XX) { 275 error = ed_probe_Novell(dev, sc->port_rid, 0); 276 if (error == 0) 277 error = ed_pccard_Linksys(dev); 278 ed_release_resources(dev); 279 if (error == 0) 280 goto end2; 281 } --- 83 unchanged lines hidden (view full) --- 365 /* Probe for an MII bus, but ignore errors. */ 366 ed_pccard_dlink_mii_reset(sc); 367 sc->mii_readbits = ed_pccard_dlink_mii_readbits; 368 sc->mii_writebits = ed_pccard_dlink_mii_writebits; 369 mii_phy_probe(dev, &sc->miibus, ed_ifmedia_upd, 370 ed_ifmedia_sts); 371 } 372#endif | 292 if (pp->flags & NE2000DVF_DL100XX) { 293 error = ed_probe_Novell(dev, sc->port_rid, 0); 294 if (error == 0) 295 error = ed_pccard_Linksys(dev); 296 ed_release_resources(dev); 297 if (error == 0) 298 goto end2; 299 } --- 83 unchanged lines hidden (view full) --- 383 /* Probe for an MII bus, but ignore errors. */ 384 ed_pccard_dlink_mii_reset(sc); 385 sc->mii_readbits = ed_pccard_dlink_mii_readbits; 386 sc->mii_writebits = ed_pccard_dlink_mii_writebits; 387 mii_phy_probe(dev, &sc->miibus, ed_ifmedia_upd, 388 ed_ifmedia_sts); 389 } 390#endif |
373 if (pp->flags & NE2000DVF_MODEM) 374 ed_pccard_add_modem(dev, pp->siorid); | 391 if (sc->modem_rid != -1) 392 ed_pccard_add_modem(dev); |
375 return (0); 376} 377 378static void 379ax88x90_geteprom(struct ed_softc *sc) 380{ 381 int prom[16],i; 382 u_char tmp; --- 275 unchanged lines hidden --- | 393 return (0); 394} 395 396static void 397ax88x90_geteprom(struct ed_softc *sc) 398{ 399 int prom[16],i; 400 u_char tmp; --- 275 unchanged lines hidden --- |