diff options
author | imp <imp@FreeBSD.org> | 2003-10-26 06:34:22 +0000 |
---|---|---|
committer | imp <imp@FreeBSD.org> | 2003-10-26 06:34:22 +0000 |
commit | 9684781ddad0a9c535c72a5b64e29785d1faf109 (patch) | |
tree | 102f2e5f3b39c4d07a185d40d6ef19da74420717 /sys/dev/ex | |
parent | 27777fa56f229537a2408d6efb73c8d8b1663833 (diff) | |
download | FreeBSD-src-9684781ddad0a9c535c72a5b64e29785d1faf109.zip FreeBSD-src-9684781ddad0a9c535c72a5b64e29785d1faf109.tar.gz |
add newcard support to ex
Diffstat (limited to 'sys/dev/ex')
-rw-r--r-- | sys/dev/ex/if_ex_pccard.c | 30 |
1 files changed, 28 insertions, 2 deletions
diff --git a/sys/dev/ex/if_ex_pccard.c b/sys/dev/ex/if_ex_pccard.c index 50bd68c..62f034e 100644 --- a/sys/dev/ex/if_ex_pccard.c +++ b/sys/dev/ex/if_ex_pccard.c @@ -49,17 +49,29 @@ __FBSDID("$FreeBSD$"); #include <dev/ex/if_exvar.h> #include <dev/pccard/pccardvar.h> +#include <dev/pccard/pccarddevs.h> + +static const struct pccard_product ex_pccard_products[] = { + PCMCIA_CARD(OLICOM, OC2220, 0), + { NULL } +}; /* Bus Front End Functions */ +static int ex_pccard_match (device_t); static int ex_pccard_probe (device_t); static int ex_pccard_attach (device_t); static device_method_t ex_pccard_methods[] = { /* Device interface */ - DEVMETHOD(device_probe, ex_pccard_probe), - DEVMETHOD(device_attach, ex_pccard_attach), + DEVMETHOD(device_probe, pccard_compat_probe), + DEVMETHOD(device_attach, pccard_compat_attach), DEVMETHOD(device_detach, ex_detach), + /* Card interface */ + DEVMETHOD(card_compat_match, ex_pccard_match), + DEVMETHOD(card_compat_probe, ex_pccard_probe), + DEVMETHOD(card_compat_attach, ex_pccard_attach), + { 0, 0 } }; @@ -72,6 +84,20 @@ static driver_t ex_pccard_driver = { DRIVER_MODULE(ex, pccard, ex_pccard_driver, ex_devclass, 0, 0); static int +ex_pccard_match(device_t dev) +{ + const struct pccard_product *pp; + + if ((pp = pccard_product_lookup(dev, ex_pccard_products, + sizeof(ex_pccard_products[0]), NULL)) != NULL) { + if (pp->pp_name != NULL) + device_set_desc(dev, pp->pp_name); + return 0; + } + return EIO; +} + +static int ex_pccard_probe(device_t dev) { u_int iobase; |