Deleted Added
sdiff udiff text old ( 71324 ) new ( 73374 )
full compact
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 71324 2001-01-21 08:20:23Z imp $
28 */
29
30#include <sys/param.h>
31#include <sys/systm.h>
32#include <sys/socket.h>
33#include <sys/kernel.h>
34#include <sys/conf.h>
35#include <sys/uio.h>
36
37#include <sys/module.h>
38#include <sys/bus.h>
39#include <machine/bus.h>
40#include <sys/rman.h>
41#include <machine/resource.h>
42
43#include <net/ethernet.h>
44#include <net/if.h>
45#include <net/if_arp.h>
46#include <net/if_mib.h>
47
48#include <dev/ed/if_edreg.h>
49#include <dev/ed/if_edvar.h>
50#include <dev/pccard/pccardvar.h>
51#include <dev/pccard/pccarddevs.h>
52
53#include "card_if.h"
54
55/*
56 * PC-Card (PCMCIA) specific code.
57 */
58static int ed_pccard_match(device_t);
59static int ed_pccard_probe(device_t);
60static int ed_pccard_attach(device_t);
61static int ed_pccard_detach(device_t);
62
63static int ed_pccard_Linksys(device_t dev);
64static int ed_pccard_ax88190(device_t dev);
65
66static void ax88190_geteprom(struct ed_softc *);
67static int ed_pccard_memwrite(device_t dev, off_t offset, u_char byte);
68static int linksys;
69
70/*
71 * ed_pccard_detach - unload the driver and clear the table.
72 * XXX TODO:
73 * This is usually called when the card is ejected, but
74 * can be caused by a modunload of a controller driver.
75 * The idea is to reset the driver's view of the device

--- 578 unchanged lines hidden (view full) ---

654 for (i = 0; i < ETHER_ADDR_LEN; i++) {
655 sc->arpcom.ac_enaddr[i] = ed_asic_inb(sc, 0x04 + i);
656 }
657
658 ed_nic_outb(sc, ED_P0_DCR, ED_DCR_WTS | ED_DCR_FT1 | ED_DCR_LS);
659 sc->isa16bit = 1;
660 sc->type = ED_TYPE_NE2000;
661 sc->type_str = "Linksys";
662 return (1);
663}
664
665/*
666 * Special setup for AX88190
667 */
668static int
669ed_pccard_ax88190(device_t dev)

--- 19 unchanged lines hidden (view full) ---

689 ed_pccard_memwrite(dev, ED_AX88190_IOBASE0, iobase & 0xff);
690 ed_pccard_memwrite(dev, ED_AX88190_IOBASE1, (iobase >> 8) & 0xff);
691 ax88190_geteprom(sc);
692 ed_release_resources(dev);
693 error = ed_probe_Novell(dev, 0, flags);
694 return (error);
695}
696
697static device_method_t ed_pccard_methods[] = {
698 /* Device interface */
699 DEVMETHOD(device_probe, pccard_compat_probe),
700 DEVMETHOD(device_attach, pccard_compat_attach),
701 DEVMETHOD(device_detach, ed_pccard_detach),
702
703 /* Card interface */
704 DEVMETHOD(card_compat_match, ed_pccard_match),
705 DEVMETHOD(card_compat_probe, ed_pccard_probe),
706 DEVMETHOD(card_compat_attach, ed_pccard_attach),
707 { 0, 0 }
708};
709
710static driver_t ed_pccard_driver = {
711 "ed",
712 ed_pccard_methods,
713 sizeof(struct ed_softc)
714};
715
716DRIVER_MODULE(if_ed, pccard, ed_pccard_driver, ed_devclass, 0, 0);