diff options
Diffstat (limited to 'sys/dev/ar/if_ar.c')
-rw-r--r-- | sys/dev/ar/if_ar.c | 160 |
1 files changed, 0 insertions, 160 deletions
diff --git a/sys/dev/ar/if_ar.c b/sys/dev/ar/if_ar.c index 85c8a2f..3f7a922 100644 --- a/sys/dev/ar/if_ar.c +++ b/sys/dev/ar/if_ar.c @@ -62,9 +62,6 @@ #include <machine/bus_memio.h> #include <sys/rman.h> -#include <isa/isavar.h> -#include "isa_if.h" - #include <net/if.h> #ifdef NETGRAPH #include <netgraph/ng_message.h> @@ -181,29 +178,6 @@ static int irqtable[16] = { 7 /* 15 */ }; -static int ar_isa_probe (device_t); -static int ar_isa_attach (device_t); - -static struct isa_pnp_id ar_ids[] = { - {0, NULL} -}; - -static device_method_t ar_methods[] = { - DEVMETHOD(device_probe, ar_isa_probe), - DEVMETHOD(device_attach, ar_isa_attach), - DEVMETHOD(device_detach, ar_detach), - { 0, 0 } -}; - -static driver_t ar_isa_driver = { - "ar", - ar_methods, - sizeof (struct ar_hardc) -}; - -devclass_t ar_devclass; - -DRIVER_MODULE(if_ar, isa, ar_isa_driver, ar_devclass, 0, 0); #ifndef NETGRAPH MODULE_DEPEND(if_ar, sppp, 1, 1, 1); #else @@ -268,140 +242,6 @@ static struct ng_type typestruct = { static int ngar_done_init = 0; #endif /* NETGRAPH */ -/* - * Probe to see if it is there. - * Get its information and fill it in. - */ -static int -ar_isa_probe(device_t device) -{ - int error; - u_long membase, memsize, port_start, port_count; - - error = ISA_PNP_PROBE(device_get_parent(device), device, ar_ids); - if(error == ENXIO || error == 0) - return (error); - - if((error = ar_allocate_ioport(device, 0, ARC_IO_SIZ))) { - return (ENXIO); - } - - /* - * Now see if the card is realy there. - * - * XXX For now I just check the undocumented ports - * for "570". We will probably have to do more checking. - */ - error = bus_get_resource(device, SYS_RES_IOPORT, 0, &port_start, - &port_count); - - if((inb(port_start + AR_ID_5) != '5') || - (inb(port_start + AR_ID_7) != '7') || - (inb(port_start + AR_ID_0) != '0')) { - ar_deallocate_resources(device); - return (ENXIO); - } - membase = bus_get_resource_start(device, SYS_RES_MEMORY, 0); - memsize = inb(port_start + AR_REV); - memsize = 1 << ((memsize & AR_WSIZ_MSK) >> AR_WSIZ_SHFT); - memsize *= ARC_WIN_SIZ; - error = bus_set_resource(device, SYS_RES_MEMORY, 0, membase, memsize); - ar_deallocate_resources(device); - - return (error); -} - -/* - * Malloc memory for the softc structures. - * Reset the card to put it in a known state. - * Register the ports on the adapter. - * Fill in the info for each port. - * Attach each port to sppp and bpf. - */ -static int -ar_isa_attach(device_t device) -{ - u_int tmp; - u_long irq, junk; - struct ar_hardc *hc; - - hc = (struct ar_hardc *)device_get_softc(device); - if(ar_allocate_ioport(device, 0, ARC_IO_SIZ)) - return (ENXIO); - hc->bt = rman_get_bustag(hc->res_ioport); - hc->bh = rman_get_bushandle(hc->res_ioport); - - hc->iobase = rman_get_start(hc->res_ioport); - - tmp = inb(hc->iobase + AR_BMI); - hc->bustype = tmp & AR_BUS_MSK; - hc->memsize = (tmp & AR_MEM_MSK) >> AR_MEM_SHFT; - hc->memsize = 1 << hc->memsize; - hc->memsize <<= 16; - hc->interface[0] = (tmp & AR_IFACE_MSK); - hc->interface[1] = hc->interface[0]; - hc->interface[2] = hc->interface[0]; - hc->interface[3] = hc->interface[0]; - tmp = inb(hc->iobase + AR_REV); - hc->revision = tmp & AR_REV_MSK; - hc->winsize = 1 << ((tmp & AR_WSIZ_MSK) >> AR_WSIZ_SHFT); - hc->winsize *= ARC_WIN_SIZ; - hc->winmsk = hc->winsize - 1; - hc->numports = inb(hc->iobase + AR_PNUM); - hc->handshake = inb(hc->iobase + AR_HNDSH); - - if(ar_allocate_memory(device, 0, hc->winsize)) - return (ENXIO); - - hc->mem_start = rman_get_virtual(hc->res_memory); - hc->mem_end = hc->mem_start + hc->winsize; - hc->cunit = device_get_unit(device); - - switch(hc->interface[0]) { - case AR_IFACE_EIA_232: - printf("ar%d: The EIA 232 interface is not supported.\n", - hc->cunit); - ar_deallocate_resources(device); - return (ENXIO); - case AR_IFACE_V_35: - break; - case AR_IFACE_EIA_530: - printf("ar%d: WARNING: The EIA 530 interface is untested.\n", - hc->cunit); - break; - case AR_IFACE_X_21: - break; - case AR_IFACE_COMBO: - printf("ar%d: WARNING: The COMBO interface is untested.\n", - hc->cunit); - break; - } - - /* - * Do a little sanity check. - */ - if((hc->numports > NPORT) || (hc->memsize > (512*1024))) { - ar_deallocate_resources(device); - return (ENXIO); - } - - if(ar_allocate_irq(device, 0, 1)) - return (ENXIO); - - if(bus_get_resource(device, SYS_RES_IRQ, 0, &irq, &junk)) { - ar_deallocate_resources(device); - return (ENXIO); - } - hc->isa_irq = irq; - - if(ar_attach(device)) { - ar_deallocate_resources(device); - return (ENXIO); - } - - return (0); -} - int ar_attach(device_t device) { |