version 1.26, 2003/02/15 02:28:22 |
version 1.26.2.1, 2004/08/03 10:37:21 |
|
|
* With NetBSD 1.1, port-mac68k started using a port of the port-sparc |
* With NetBSD 1.1, port-mac68k started using a port of the port-sparc |
* (port-sun3?) zs.c driver (which was in turn based on code in the |
* (port-sun3?) zs.c driver (which was in turn based on code in the |
* Berkeley 4.4 Lite release). Bill Studenmund did the port, with |
* Berkeley 4.4 Lite release). Bill Studenmund did the port, with |
* help from Allen Briggs and Gordon Ross <gwr@netbsd.org>. Noud de |
* help from Allen Briggs and Gordon Ross <gwr@NetBSD.org>. Noud de |
* Brouwer field-tested the driver at a local ISP. |
* Brouwer field-tested the driver at a local ISP. |
* |
* |
* Bill Studenmund and Gordon Ross then ported the machine-independant |
* Bill Studenmund and Gordon Ross then ported the machine-independant |
|
|
* the m.i. drivers), with NetBSD 1.3 containing a full version. |
* the m.i. drivers), with NetBSD 1.3 containing a full version. |
*/ |
*/ |
|
|
|
#include <sys/cdefs.h> |
|
__KERNEL_RCSID(0, "$NetBSD$"); |
|
|
#include "opt_ddb.h" |
#include "opt_ddb.h" |
#include "opt_kgdb.h" |
#include "opt_kgdb.h" |
|
|
Line 392 zsc_attach(parent, self, aux) |
|
Line 395 zsc_attach(parent, self, aux) |
|
intr_establish(intr[1][1], IST_LEVEL, IPL_TTY, zs_txdma_int, (void *)1); |
intr_establish(intr[1][1], IST_LEVEL, IPL_TTY, zs_txdma_int, (void *)1); |
#endif |
#endif |
|
|
|
#ifdef __HAVE_GENERIC_SOFT_INTERRUPTS |
|
zsc->zsc_si = softintr_establish(IPL_SOFTSERIAL, |
|
(void (*)(void *)) zsc_intr_soft, zsc); |
|
#endif |
|
|
/* |
/* |
* Set the master interrupt enable and interrupt vector. |
* Set the master interrupt enable and interrupt vector. |
* (common to both channels, do it on A) |
* (common to both channels, do it on A) |
Line 452 zsmd_setclock(cs) |
|
Line 460 zsmd_setclock(cs) |
|
#endif |
#endif |
} |
} |
|
|
|
#ifndef __HAVE_GENERIC_SOFT_INTERRUPTS |
static int zssoftpending; |
static int zssoftpending; |
|
#endif |
|
|
/* |
/* |
* Our ZS chips all share a common, autovectored interrupt, |
* Our ZS chips all share a common, autovectored interrupt, |
|
|
if ((zsc->zsc_cs[0]->cs_softreq) || |
if ((zsc->zsc_cs[0]->cs_softreq) || |
(zsc->zsc_cs[1]->cs_softreq)) |
(zsc->zsc_cs[1]->cs_softreq)) |
{ |
{ |
|
#ifdef __HAVE_GENERIC_SOFT_INTERRUPTS |
|
softintr_schedule(zsc->zsc_si); |
|
#else |
/* zsc_req_softint(zsc); */ |
/* zsc_req_softint(zsc); */ |
/* We are at splzs here, so no need to lock. */ |
/* We are at splzs here, so no need to lock. */ |
if (zssoftpending == 0) { |
if (zssoftpending == 0) { |
zssoftpending = 1; |
zssoftpending = 1; |
setsoftserial(); |
setsoftserial(); |
} |
} |
|
#endif |
} |
} |
} |
} |
return (rval); |
return (rval); |
} |
} |
|
|
|
#ifndef __HAVE_GENERIC_SOFT_INTERRUPTS |
/* |
/* |
* Similar scheme as for zshard (look at all of them) |
* Similar scheme as for zshard (look at all of them) |
*/ |
*/ |
|
|
} |
} |
return (1); |
return (1); |
} |
} |
|
#endif |
|
|
#ifdef ZS_TXDMA |
#ifdef ZS_TXDMA |
int |
int |
Line 532 zs_txdma_int(arg) |
|
Line 548 zs_txdma_int(arg) |
|
zstty_txdma_int(cs); |
zstty_txdma_int(cs); |
|
|
if (cs->cs_softreq) { |
if (cs->cs_softreq) { |
|
#ifdef __HAVE_GENERIC_SOFT_INTERRUPTS |
|
softintr_schedule(zsc->zsc_si); |
|
#else |
if (zssoftpending == 0) { |
if (zssoftpending == 0) { |
zssoftpending = 1; |
zssoftpending = 1; |
setsoftserial(); |
setsoftserial(); |
} |
} |
|
#endif |
} |
} |
return 1; |
return 1; |
} |
} |