Rename nlpt to lpt.
Remove from ppi.c the old depreciated module stuff. Print info when if_plip can't use interrupts.
This commit is contained in:
parent
5cb54dc62f
commit
a4409dd879
@ -11,7 +11,7 @@
|
||||
# device lines is present in the ./LINT configuration file. If you are
|
||||
# in doubt as to the purpose or necessity of a line, check first in LINT.
|
||||
#
|
||||
# $Id: GENERIC,v 1.147 1999/02/10 02:18:31 des Exp $
|
||||
# $Id: GENERIC,v 1.148 1999/02/11 06:07:27 jkoshy Exp $
|
||||
|
||||
machine "i386"
|
||||
cpu "I386_CPU"
|
||||
@ -146,7 +146,7 @@ device sio2 at isa? disable port "IO_COM3" tty irq 5
|
||||
device sio3 at isa? disable port "IO_COM4" tty irq 9
|
||||
|
||||
# Parallel port
|
||||
device ppc0 at isa? port? net irq 7
|
||||
device ppc0 at isa? port? tty irq 7
|
||||
controller ppbus0
|
||||
device nlpt0 at ppbus?
|
||||
device plip0 at ppbus?
|
||||
|
@ -2,7 +2,7 @@
|
||||
# LINT -- config file for checking all the sources, tries to pull in
|
||||
# as much of the source tree as it can.
|
||||
#
|
||||
# $Id: LINT,v 1.553 1999/02/12 12:15:02 brian Exp $
|
||||
# $Id: LINT,v 1.554 1999/02/13 17:54:32 nsouch Exp $
|
||||
#
|
||||
# NB: You probably don't want to try running a kernel built from this
|
||||
# file. Instead, you should start from GENERIC, and add options from
|
||||
@ -1831,9 +1831,9 @@ pseudo-device "i4bisppp" 4
|
||||
# vpo Iomega Zip Drive
|
||||
# Requires SCSI disk support ('scbus' and 'da'), best
|
||||
# performance is achieved with ports in EPP 1.9 mode.
|
||||
# nlpt Parallel Printer
|
||||
# lpt Parallel Printer
|
||||
# plip Parallel network interface
|
||||
# ppi General-purpose I/O ("Geek Port")
|
||||
# ppi General-purpose I/O ("Geek Port") + IEEE1284 I/O
|
||||
# pps Pulse per second Timing Interface
|
||||
# lpbb Philips official parallel port I2C bit-banging interface
|
||||
#
|
||||
@ -1846,19 +1846,19 @@ options "PERIPH_1284" # Makes your computer act as a IEEE1284
|
||||
# compliant peripheral
|
||||
options "DONTPROBE_1284"# Avoid boot detection of PnP parallel devices
|
||||
options "VP0_DEBUG" # ZIP/ZIP+ debug
|
||||
options "NLPT_DEBUG" # Printer driver debug
|
||||
options "LPT_DEBUG" # Printer driver debug
|
||||
options "PPC_DEBUG" # Parallel chipset level debug
|
||||
options "PLIP_DEBUG" # Parallel network IP interface debug
|
||||
|
||||
controller ppbus0
|
||||
controller vpo0 at ppbus?
|
||||
device nlpt0 at ppbus?
|
||||
device lpt0 at ppbus?
|
||||
device plip0 at ppbus?
|
||||
device ppi0 at ppbus?
|
||||
device pps0 at ppbus?
|
||||
device lpbb0 at ppbus?
|
||||
|
||||
controller ppc0 at isa? disable port ? tty irq 7
|
||||
controller ppc0 at isa? port? tty irq 7
|
||||
|
||||
# Kernel BOOTP support
|
||||
|
||||
|
@ -124,7 +124,10 @@ dev/pdq/pdq.c optional fea device-driver
|
||||
dev/pdq/pdq_ifsubr.c optional fea device-driver
|
||||
dev/pdq/pdq.c optional fpa device-driver
|
||||
dev/pdq/pdq_ifsubr.c optional fpa device-driver
|
||||
dev/ppbus/nlpt.c optional nlpt
|
||||
dev/ppbus/immio.c optional vpo
|
||||
dev/ppbus/if_plip.c optional plip
|
||||
dev/ppbus/lpbb.c optional lpbb
|
||||
dev/ppbus/lpt.c optional lpt
|
||||
dev/ppbus/ppb_base.c optional ppbus
|
||||
dev/ppbus/ppb_1284.c optional ppbus
|
||||
dev/ppbus/ppb_msq.c optional ppbus
|
||||
@ -133,9 +136,6 @@ dev/ppbus/ppi.c optional ppi
|
||||
dev/ppbus/pps.c optional pps
|
||||
dev/ppbus/vpo.c optional vpo
|
||||
dev/ppbus/vpoio.c optional vpo
|
||||
dev/ppbus/immio.c optional vpo
|
||||
dev/ppbus/if_plip.c optional plip
|
||||
dev/ppbus/lpbb.c optional lpbb
|
||||
smbus_if.o optional smbus \
|
||||
dependency "smbus_if.c smbus_if.h" \
|
||||
compile-with "${NORMAL_C}" \
|
||||
|
@ -1,4 +1,4 @@
|
||||
# $Id: options,v 1.125 1999/01/25 19:34:27 nsouch Exp $
|
||||
# $Id: options,v 1.126 1999/02/09 01:02:37 mjacob Exp $
|
||||
#
|
||||
# On the handling of kernel options
|
||||
#
|
||||
@ -243,11 +243,11 @@ DPT_RESET_HBA opt_dpt.h
|
||||
|
||||
# Misc debug flags. Most of these should probably be replaced with
|
||||
# 'DEBUG', and then let people recompile just the interesting modules
|
||||
# with 'make CC="cc -DDEBUG'.
|
||||
# with 'make CC="cc -DDEBUG"'.
|
||||
CLUSTERDEBUG opt_debug_cluster.h
|
||||
DEBUG_1284 opt_ppb_1284.h
|
||||
VP0_DEBUG opt_vpo.h
|
||||
NLPT_DEBUG opt_nlpt.h
|
||||
LPT_DEBUG opt_lpt.h
|
||||
PLIP_DEBUG opt_plip.h
|
||||
LOCKF_DEBUG opt_debug_lockf.h
|
||||
LOUTB opt_debug_outb.h
|
||||
|
@ -24,7 +24,7 @@
|
||||
* SUCH DAMAGE.
|
||||
*
|
||||
* From Id: lpt.c,v 1.55.2.1 1996/11/12 09:08:38 phk Exp
|
||||
* $Id: if_plip.c,v 1.9 1999/01/30 15:35:39 nsouch Exp $
|
||||
* $Id: if_plip.c,v 1.10 1999/02/08 14:12:38 des Exp $
|
||||
*/
|
||||
|
||||
/*
|
||||
@ -99,7 +99,7 @@
|
||||
#endif
|
||||
|
||||
#include <dev/ppbus/ppbconf.h>
|
||||
#include <dev/ppbus/nlpt.h>
|
||||
#include <dev/ppbus/lpt.h>
|
||||
|
||||
#include "opt_plip.h"
|
||||
|
||||
@ -194,8 +194,10 @@ lpprobe(struct ppb_data *ppb)
|
||||
struct lpt_softc *lp;
|
||||
|
||||
/* if we haven't interrupts, the probe fails */
|
||||
if (!ppb->ppb_link->id_irq)
|
||||
if (!ppb->ppb_link->id_irq) {
|
||||
printf("plip: not an interrupt driven port, failed.\n");
|
||||
return (0);
|
||||
}
|
||||
|
||||
lp = (struct lpt_softc *) malloc(sizeof(struct lpt_softc),
|
||||
M_TEMP, M_NOWAIT);
|
||||
|
@ -47,7 +47,8 @@
|
||||
*
|
||||
* from: unknown origin, 386BSD 0.1
|
||||
* From Id: lpt.c,v 1.55.2.1 1996/11/12 09:08:38 phk Exp
|
||||
* $Id: nlpt.c,v 1.13 1999/01/27 20:09:19 dillon Exp $
|
||||
* From Id: nlpt.c,v 1.14 1999/02/08 13:55:43 des Exp
|
||||
* $Id$
|
||||
*/
|
||||
|
||||
/*
|
||||
@ -82,19 +83,19 @@
|
||||
|
||||
#include <dev/ppbus/ppbconf.h>
|
||||
#include <dev/ppbus/ppb_1284.h>
|
||||
#include <dev/ppbus/nlpt.h>
|
||||
#include <dev/ppbus/lpt.h>
|
||||
|
||||
#include "opt_nlpt.h"
|
||||
#include "opt_lpt.h"
|
||||
|
||||
#ifndef NLPT_DEBUG
|
||||
#define nlprintf(args)
|
||||
#ifndef LPT_DEBUG
|
||||
#define lprintf(args)
|
||||
#else
|
||||
#define nlprintf(args) \
|
||||
#define lprintf(args) \
|
||||
do { \
|
||||
if (nlptflag) \
|
||||
if (lptflag) \
|
||||
printf args; \
|
||||
} while (0)
|
||||
static int volatile nlptflag = 1;
|
||||
static int volatile lptflag = 1;
|
||||
#endif
|
||||
|
||||
#define LPINITRDY 4 /* wait up to 4 seconds for a ready */
|
||||
@ -111,29 +112,29 @@ static int nlpt = 0;
|
||||
#define MAXLPT 8 /* XXX not much better! */
|
||||
static struct lpt_data *lptdata[MAXLPT];
|
||||
|
||||
#define LPT_NAME "nlpt" /* our official name */
|
||||
#define LPT_NAME "lpt" /* our official name */
|
||||
|
||||
static timeout_t nlptout;
|
||||
static int nlpt_port_test(struct lpt_data *sc, u_char data, u_char mask);
|
||||
static int nlpt_detect(struct lpt_data *sc);
|
||||
static timeout_t lptout;
|
||||
static int lpt_port_test(struct lpt_data *sc, u_char data, u_char mask);
|
||||
static int lpt_detect(struct lpt_data *sc);
|
||||
|
||||
/*
|
||||
* Make ourselves visible as a ppbus driver
|
||||
*/
|
||||
|
||||
static struct ppb_device *nlptprobe(struct ppb_data *ppb);
|
||||
static int nlptattach(struct ppb_device *dev);
|
||||
static void nlptintr(int unit);
|
||||
static void nlpt_drvinit(void *unused);
|
||||
static struct ppb_device *lptprobe(struct ppb_data *ppb);
|
||||
static int lptattach(struct ppb_device *dev);
|
||||
static void lptintr(int unit);
|
||||
static void lpt_drvinit(void *unused);
|
||||
|
||||
static void nlpt_intr(int unit); /* without spls */
|
||||
static void lpt_intr(int unit); /* without spls */
|
||||
|
||||
#ifdef KERNEL
|
||||
|
||||
static struct ppb_driver nlptdriver = {
|
||||
nlptprobe, nlptattach, LPT_NAME
|
||||
static struct ppb_driver lptdriver = {
|
||||
lptprobe, lptattach, LPT_NAME
|
||||
};
|
||||
DATA_SET(ppbdriver_set, nlptdriver);
|
||||
DATA_SET(ppbdriver_set, lptdriver);
|
||||
|
||||
#endif /* KERNEL */
|
||||
|
||||
@ -164,16 +165,16 @@ DATA_SET(ppbdriver_set, nlptdriver);
|
||||
#define MAX_SPIN 20 /* Max delay for device ready in usecs */
|
||||
|
||||
|
||||
static d_open_t nlptopen;
|
||||
static d_close_t nlptclose;
|
||||
static d_write_t nlptwrite;
|
||||
static d_read_t nlptread;
|
||||
static d_ioctl_t nlptioctl;
|
||||
static d_open_t lptopen;
|
||||
static d_close_t lptclose;
|
||||
static d_write_t lptwrite;
|
||||
static d_read_t lptread;
|
||||
static d_ioctl_t lptioctl;
|
||||
|
||||
#define CDEV_MAJOR 16
|
||||
static struct cdevsw nlpt_cdevsw =
|
||||
{ nlptopen, nlptclose, nlptread, nlptwrite, /*16*/
|
||||
nlptioctl, nullstop, nullreset, nodevtotty, /* lpt */
|
||||
static struct cdevsw lpt_cdevsw =
|
||||
{ lptopen, lptclose, lptread, lptwrite, /*16*/
|
||||
lptioctl, nullstop, nullreset, nodevtotty, /* lpt */
|
||||
seltrue, nommap, nostrat, LPT_NAME, NULL, -1 };
|
||||
|
||||
static int
|
||||
@ -201,10 +202,10 @@ lpt_release_ppbus(struct lpt_data *sc)
|
||||
}
|
||||
|
||||
/*
|
||||
* Internal routine to nlptprobe to do port tests of one byte value
|
||||
* Internal routine to lptprobe to do port tests of one byte value
|
||||
*/
|
||||
static int
|
||||
nlpt_port_test(struct lpt_data *sc, u_char data, u_char mask)
|
||||
lpt_port_test(struct lpt_data *sc, u_char data, u_char mask)
|
||||
{
|
||||
int temp, timeout;
|
||||
|
||||
@ -216,7 +217,7 @@ nlpt_port_test(struct lpt_data *sc, u_char data, u_char mask)
|
||||
temp = ppb_rdtr(&sc->lpt_dev) & mask;
|
||||
}
|
||||
while (temp != data && --timeout);
|
||||
nlprintf(("out=%x\tin=%x\ttout=%d\n", data, temp, timeout));
|
||||
lprintf(("out=%x\tin=%x\ttout=%d\n", data, temp, timeout));
|
||||
return (temp == data);
|
||||
}
|
||||
|
||||
@ -268,7 +269,7 @@ nlpt_port_test(struct lpt_data *sc, u_char data, u_char mask)
|
||||
* Quick exit on fail added.
|
||||
*/
|
||||
static int
|
||||
nlpt_detect(struct lpt_data *sc)
|
||||
lpt_detect(struct lpt_data *sc)
|
||||
{
|
||||
static u_char testbyte[18] = {
|
||||
0x55, /* alternating zeros */
|
||||
@ -289,7 +290,7 @@ nlpt_detect(struct lpt_data *sc)
|
||||
}
|
||||
|
||||
for (i = 0; i < 18 && status; i++)
|
||||
if (!nlpt_port_test(sc, testbyte[i], 0xff)) {
|
||||
if (!lpt_port_test(sc, testbyte[i], 0xff)) {
|
||||
status = 0;
|
||||
goto end_probe;
|
||||
}
|
||||
@ -305,10 +306,10 @@ nlpt_detect(struct lpt_data *sc)
|
||||
}
|
||||
|
||||
/*
|
||||
* nlptprobe()
|
||||
* lptprobe()
|
||||
*/
|
||||
static struct ppb_device *
|
||||
nlptprobe(struct ppb_data *ppb)
|
||||
lptprobe(struct ppb_data *ppb)
|
||||
{
|
||||
struct lpt_data *sc;
|
||||
|
||||
@ -331,14 +332,14 @@ nlptprobe(struct ppb_data *ppb)
|
||||
* ppbus dependent initialisation.
|
||||
*/
|
||||
sc->lpt_dev.id_unit = sc->lpt_unit;
|
||||
sc->lpt_dev.name = nlptdriver.name;
|
||||
sc->lpt_dev.name = lptdriver.name;
|
||||
sc->lpt_dev.ppb = ppb;
|
||||
sc->lpt_dev.intr = nlptintr;
|
||||
sc->lpt_dev.intr = lptintr;
|
||||
|
||||
/*
|
||||
* Now, try to detect the printer.
|
||||
*/
|
||||
if (!nlpt_detect(sc)) {
|
||||
if (!lpt_detect(sc)) {
|
||||
free(sc, M_TEMP);
|
||||
return (0);
|
||||
}
|
||||
@ -350,7 +351,7 @@ nlptprobe(struct ppb_data *ppb)
|
||||
}
|
||||
|
||||
static int
|
||||
nlptattach(struct ppb_device *dev)
|
||||
lptattach(struct ppb_device *dev)
|
||||
{
|
||||
struct lpt_data *sc = lptdata[dev->id_unit];
|
||||
int error;
|
||||
@ -371,23 +372,23 @@ nlptattach(struct ppb_device *dev)
|
||||
ppb_wctr(&sc->lpt_dev, LPC_NINIT);
|
||||
|
||||
/* check if we can use interrupt, should be done by ppc stuff */
|
||||
nlprintf(("oldirq %x\n", sc->sc_irq));
|
||||
lprintf(("oldirq %x\n", sc->sc_irq));
|
||||
if (ppb_get_irq(&sc->lpt_dev)) {
|
||||
sc->sc_irq = LP_HAS_IRQ | LP_USE_IRQ | LP_ENABLE_IRQ;
|
||||
printf(LPT_NAME "%d: Interrupt-driven port\n", dev->id_unit);
|
||||
} else {
|
||||
sc->sc_irq = 0;
|
||||
nlprintf((LPT_NAME "%d: Polled port\n", dev->id_unit));
|
||||
lprintf((LPT_NAME "%d: Polled port\n", dev->id_unit));
|
||||
}
|
||||
nlprintf(("irq %x\n", sc->sc_irq));
|
||||
lprintf(("irq %x\n", sc->sc_irq));
|
||||
|
||||
lpt_release_ppbus(sc);
|
||||
|
||||
#ifdef DEVFS
|
||||
sc->devfs_token = devfs_add_devswf(&nlpt_cdevsw,
|
||||
sc->devfs_token = devfs_add_devswf(&lpt_cdevsw,
|
||||
dev->id_unit, DV_CHR,
|
||||
UID_ROOT, GID_WHEEL, 0600, LPT_NAME "%d", dev->id_unit);
|
||||
sc->devfs_token_ctl = devfs_add_devswf(&nlpt_cdevsw,
|
||||
sc->devfs_token_ctl = devfs_add_devswf(&lpt_cdevsw,
|
||||
dev->id_unit | LP_BYPASS, DV_CHR,
|
||||
UID_ROOT, GID_WHEEL, 0600, LPT_NAME "%d.ctl", dev->id_unit);
|
||||
#endif
|
||||
@ -396,17 +397,17 @@ nlptattach(struct ppb_device *dev)
|
||||
}
|
||||
|
||||
static void
|
||||
nlptout(void *arg)
|
||||
lptout(void *arg)
|
||||
{
|
||||
struct lpt_data *sc = arg;
|
||||
int pl;
|
||||
|
||||
nlprintf(("T %x ", ppb_rstr(&sc->lpt_dev)));
|
||||
lprintf(("T %x ", ppb_rstr(&sc->lpt_dev)));
|
||||
if (sc->sc_state & OPEN) {
|
||||
sc->sc_backoff++;
|
||||
if (sc->sc_backoff > hz/LPTOUTMAX)
|
||||
sc->sc_backoff = sc->sc_backoff > hz/LPTOUTMAX;
|
||||
timeout(nlptout, (caddr_t)sc, sc->sc_backoff);
|
||||
timeout(lptout, (caddr_t)sc, sc->sc_backoff);
|
||||
} else
|
||||
sc->sc_state &= ~TOUT;
|
||||
|
||||
@ -418,7 +419,7 @@ nlptout(void *arg)
|
||||
*/
|
||||
if (sc->sc_xfercnt) {
|
||||
pl = spltty();
|
||||
nlpt_intr(sc->lpt_unit);
|
||||
lpt_intr(sc->lpt_unit);
|
||||
splx(pl);
|
||||
} else {
|
||||
sc->sc_state &= ~OBUSY;
|
||||
@ -427,13 +428,13 @@ nlptout(void *arg)
|
||||
}
|
||||
|
||||
/*
|
||||
* nlptopen -- reset the printer, then wait until it's selected and not busy.
|
||||
* lptopen -- reset the printer, then wait until it's selected and not busy.
|
||||
* If LP_BYPASS flag is selected, then we do not try to select the
|
||||
* printer -- this is just used for passing ioctls.
|
||||
*/
|
||||
|
||||
static int
|
||||
nlptopen(dev_t dev, int flags, int fmt, struct proc *p)
|
||||
lptopen(dev_t dev, int flags, int fmt, struct proc *p)
|
||||
{
|
||||
struct lpt_data *sc;
|
||||
|
||||
@ -447,7 +448,7 @@ nlptopen(dev_t dev, int flags, int fmt, struct proc *p)
|
||||
sc = lptdata[unit];
|
||||
|
||||
if (sc->sc_state) {
|
||||
nlprintf((LPT_NAME ": still open %x\n", sc->sc_state));
|
||||
lprintf((LPT_NAME ": still open %x\n", sc->sc_state));
|
||||
return(EBUSY);
|
||||
} else
|
||||
sc->sc_state |= LPTINIT;
|
||||
@ -465,7 +466,7 @@ nlptopen(dev_t dev, int flags, int fmt, struct proc *p)
|
||||
return (err);
|
||||
|
||||
s = spltty();
|
||||
nlprintf((LPT_NAME " flags 0x%x\n", sc->sc_flags));
|
||||
lprintf((LPT_NAME " flags 0x%x\n", sc->sc_flags));
|
||||
|
||||
/* set IRQ status according to ENABLE_IRQ flag */
|
||||
if (sc->sc_irq & LP_ENABLE_IRQ)
|
||||
@ -491,7 +492,7 @@ nlptopen(dev_t dev, int flags, int fmt, struct proc *p)
|
||||
if (trys++ >= LPINITRDY*4) {
|
||||
splx(s);
|
||||
sc->sc_state = 0;
|
||||
nlprintf(("status %x\n", ppb_rstr(&sc->lpt_dev)));
|
||||
lprintf(("status %x\n", ppb_rstr(&sc->lpt_dev)));
|
||||
|
||||
lpt_release_ppbus(sc);
|
||||
return (EBUSY);
|
||||
@ -532,25 +533,25 @@ nlptopen(dev_t dev, int flags, int fmt, struct proc *p)
|
||||
lpt_release_ppbus(sc);
|
||||
|
||||
/* only use timeout if using interrupt */
|
||||
nlprintf(("irq %x\n", sc->sc_irq));
|
||||
lprintf(("irq %x\n", sc->sc_irq));
|
||||
if (sc->sc_irq & LP_USE_IRQ) {
|
||||
sc->sc_state |= TOUT;
|
||||
timeout(nlptout, (caddr_t)sc,
|
||||
timeout(lptout, (caddr_t)sc,
|
||||
(sc->sc_backoff = hz/LPTOUTINITIAL));
|
||||
}
|
||||
|
||||
nlprintf(("opened.\n"));
|
||||
lprintf(("opened.\n"));
|
||||
return(0);
|
||||
}
|
||||
|
||||
/*
|
||||
* nlptclose -- close the device, free the local line buffer.
|
||||
* lptclose -- close the device, free the local line buffer.
|
||||
*
|
||||
* Check for interrupted write call added.
|
||||
*/
|
||||
|
||||
static int
|
||||
nlptclose(dev_t dev, int flags, int fmt, struct proc *p)
|
||||
lptclose(dev_t dev, int flags, int fmt, struct proc *p)
|
||||
{
|
||||
struct lpt_data *sc = lptdata[LPTUNIT(minor(dev))];
|
||||
int err;
|
||||
@ -583,12 +584,12 @@ nlptclose(dev_t dev, int flags, int fmt, struct proc *p)
|
||||
|
||||
sc->sc_state = 0;
|
||||
sc->sc_xfercnt = 0;
|
||||
nlprintf(("closed.\n"));
|
||||
lprintf(("closed.\n"));
|
||||
return(0);
|
||||
}
|
||||
|
||||
/*
|
||||
* nlpt_pushbytes()
|
||||
* lpt_pushbytes()
|
||||
* Workhorse for actually spinning and writing bytes to printer
|
||||
* Derived from lpa.c
|
||||
* Originally by ?
|
||||
@ -596,12 +597,12 @@ nlptclose(dev_t dev, int flags, int fmt, struct proc *p)
|
||||
* This code is only used when we are polling the port
|
||||
*/
|
||||
static int
|
||||
nlpt_pushbytes(struct lpt_data *sc)
|
||||
lpt_pushbytes(struct lpt_data *sc)
|
||||
{
|
||||
int spin, err, tic;
|
||||
char ch;
|
||||
|
||||
nlprintf(("p"));
|
||||
lprintf(("p"));
|
||||
/* loop for every character .. */
|
||||
while (sc->sc_xfercnt > 0) {
|
||||
/* printer data */
|
||||
@ -648,11 +649,11 @@ nlpt_pushbytes(struct lpt_data *sc)
|
||||
}
|
||||
|
||||
/*
|
||||
* nlptread --retrieve printer status in IEEE1284 NIBBLE mode
|
||||
* lptread --retrieve printer status in IEEE1284 NIBBLE mode
|
||||
*/
|
||||
|
||||
static int
|
||||
nlptread(dev_t dev, struct uio *uio, int ioflag)
|
||||
lptread(dev_t dev, struct uio *uio, int ioflag)
|
||||
{
|
||||
struct lpt_data *sc = lptdata[LPTUNIT(minor(dev))];
|
||||
int error = 0, len;
|
||||
@ -682,14 +683,14 @@ nlptread(dev_t dev, struct uio *uio, int ioflag)
|
||||
}
|
||||
|
||||
/*
|
||||
* nlptwrite --copy a line from user space to a local buffer, then call
|
||||
* lptwrite --copy a line from user space to a local buffer, then call
|
||||
* putc to get the chars moved to the output queue.
|
||||
*
|
||||
* Flagging of interrupted write added.
|
||||
*/
|
||||
|
||||
static int
|
||||
nlptwrite(dev_t dev, struct uio *uio, int ioflag)
|
||||
lptwrite(dev_t dev, struct uio *uio, int ioflag)
|
||||
{
|
||||
register unsigned n;
|
||||
int pl, err;
|
||||
@ -732,16 +733,16 @@ nlptwrite(dev_t dev, struct uio *uio, int ioflag)
|
||||
return(err);
|
||||
}
|
||||
} else while ((sc->sc_xfercnt > 0)&&(sc->sc_irq & LP_USE_IRQ)) {
|
||||
nlprintf(("i"));
|
||||
lprintf(("i"));
|
||||
/* if the printer is ready for a char, */
|
||||
/* give it one */
|
||||
if ((sc->sc_state & OBUSY) == 0){
|
||||
nlprintf(("\nC %d. ", sc->sc_xfercnt));
|
||||
lprintf(("\nC %d. ", sc->sc_xfercnt));
|
||||
pl = spltty();
|
||||
nlpt_intr(sc->lpt_unit);
|
||||
lpt_intr(sc->lpt_unit);
|
||||
(void) splx(pl);
|
||||
}
|
||||
nlprintf(("W "));
|
||||
lprintf(("W "));
|
||||
if (sc->sc_state & OBUSY)
|
||||
if ((err = tsleep((caddr_t)sc,
|
||||
LPPRI|PCATCH, LPT_NAME "write", 0))) {
|
||||
@ -752,9 +753,9 @@ nlptwrite(dev_t dev, struct uio *uio, int ioflag)
|
||||
|
||||
/* check to see if we must do a polled write */
|
||||
if(!(sc->sc_irq & LP_USE_IRQ) && (sc->sc_xfercnt)) {
|
||||
nlprintf(("p"));
|
||||
lprintf(("p"));
|
||||
|
||||
err = nlpt_pushbytes(sc);
|
||||
err = lpt_pushbytes(sc);
|
||||
|
||||
if (err)
|
||||
return(err);
|
||||
@ -768,14 +769,14 @@ nlptwrite(dev_t dev, struct uio *uio, int ioflag)
|
||||
}
|
||||
|
||||
/*
|
||||
* nlpt_intr -- handle printer interrupts which occur when the printer is
|
||||
* lpt_intr -- handle printer interrupts which occur when the printer is
|
||||
* ready to accept another char.
|
||||
*
|
||||
* do checking for interrupted write call.
|
||||
*/
|
||||
|
||||
static void
|
||||
nlpt_intr(int unit)
|
||||
lpt_intr(int unit)
|
||||
{
|
||||
struct lpt_data *sc = lptdata[unit];
|
||||
int sts;
|
||||
@ -788,7 +789,7 @@ nlpt_intr(int unit)
|
||||
/*
|
||||
* Is printer online and ready for output?
|
||||
*
|
||||
* Avoid falling back to nlptout() too quickly. First spin-loop
|
||||
* Avoid falling back to lptout() too quickly. First spin-loop
|
||||
* to see if the printer will become ready ``really soon now''.
|
||||
*/
|
||||
for (i = 0; i < 100 &&
|
||||
@ -800,7 +801,7 @@ nlpt_intr(int unit)
|
||||
|
||||
if (sc->sc_xfercnt) {
|
||||
/* send char */
|
||||
/*nlprintf(("%x ", *sc->sc_cp)); */
|
||||
/*lprintf(("%x ", *sc->sc_cp)); */
|
||||
ppb_wdtr(&sc->lpt_dev, *sc->sc_cp++) ;
|
||||
ppb_wctr(&sc->lpt_dev, sc->sc_control|LPC_STB);
|
||||
/* DELAY(X) */
|
||||
@ -818,31 +819,31 @@ nlpt_intr(int unit)
|
||||
|
||||
if(!(sc->sc_state & INTERRUPTED))
|
||||
wakeup((caddr_t)sc);
|
||||
nlprintf(("w "));
|
||||
lprintf(("w "));
|
||||
return;
|
||||
} else { /* check for error */
|
||||
if(((sts & (LPS_NERR | LPS_OUT) ) != LPS_NERR) &&
|
||||
(sc->sc_state & OPEN))
|
||||
sc->sc_state |= EERROR;
|
||||
/* nlptout() will jump in and try to restart. */
|
||||
/* lptout() will jump in and try to restart. */
|
||||
}
|
||||
nlprintf(("sts %x ", sts));
|
||||
lprintf(("sts %x ", sts));
|
||||
}
|
||||
|
||||
static void
|
||||
nlptintr(int unit)
|
||||
lptintr(int unit)
|
||||
{
|
||||
/* call the interrupt at required spl level */
|
||||
int s = spltty();
|
||||
|
||||
nlpt_intr(unit);
|
||||
lpt_intr(unit);
|
||||
|
||||
splx(s);
|
||||
return;
|
||||
}
|
||||
|
||||
static int
|
||||
nlptioctl(dev_t dev, u_long cmd, caddr_t data, int flags, struct proc *p)
|
||||
lptioctl(dev_t dev, u_long cmd, caddr_t data, int flags, struct proc *p)
|
||||
{
|
||||
int error = 0;
|
||||
struct lpt_data *sc;
|
||||
@ -903,18 +904,18 @@ nlptioctl(dev_t dev, u_long cmd, caddr_t data, int flags, struct proc *p)
|
||||
return(error);
|
||||
}
|
||||
|
||||
static nlpt_devsw_installed = 0;
|
||||
static lpt_devsw_installed = 0;
|
||||
|
||||
static void
|
||||
nlpt_drvinit(void *unused)
|
||||
lpt_drvinit(void *unused)
|
||||
{
|
||||
dev_t dev;
|
||||
|
||||
if( ! nlpt_devsw_installed ) {
|
||||
if( ! lpt_devsw_installed ) {
|
||||
dev = makedev(CDEV_MAJOR, 0);
|
||||
cdevsw_add(&dev,&nlpt_cdevsw, NULL);
|
||||
nlpt_devsw_installed = 1;
|
||||
cdevsw_add(&dev,&lpt_cdevsw, NULL);
|
||||
lpt_devsw_installed = 1;
|
||||
}
|
||||
}
|
||||
|
||||
SYSINIT(nlptdev,SI_SUB_DRIVERS,SI_ORDER_MIDDLE+CDEV_MAJOR,nlpt_drvinit,NULL)
|
||||
SYSINIT(lptdev,SI_SUB_DRIVERS,SI_ORDER_MIDDLE+CDEV_MAJOR,lpt_drvinit,NULL)
|
@ -26,8 +26,9 @@
|
||||
* Distantly from :
|
||||
* @(#)lptreg.h 1.1 (Berkeley) 12/19/90
|
||||
* Id: lptreg.h,v 1.6 1997/02/22 09:36:52 peter Exp
|
||||
* From Id: nlpt.h,v 1.3 1999/01/10 12:04:54 nsouch Exp
|
||||
*
|
||||
* $Id: nlpt.h,v 1.2 1997/08/16 14:05:32 msmith Exp $
|
||||
* $Id$
|
||||
*/
|
||||
#ifndef __NLPT_H
|
||||
#define __NLPT_H
|
@ -23,7 +23,7 @@
|
||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
* SUCH DAMAGE.
|
||||
*
|
||||
* $Id: ppi.c,v 1.10 1999/01/27 21:49:53 dillon Exp $
|
||||
* $Id: ppi.c,v 1.11 1999/01/30 15:35:39 nsouch Exp $
|
||||
*
|
||||
*/
|
||||
#include "ppi.h"
|
||||
@ -530,49 +530,6 @@ ppiioctl(dev_t dev, u_long cmd, caddr_t data, int flags, struct proc *p)
|
||||
return (error);
|
||||
}
|
||||
|
||||
#ifdef PPI_MODULE
|
||||
|
||||
MOD_DEV(ppi, LM_DT_CHAR, CDEV_MAJOR, &ppi_cdevsw);
|
||||
|
||||
static int
|
||||
ppi_load(struct lkm_table *lkmtp, int cmd)
|
||||
{
|
||||
struct ppb_data *ppb;
|
||||
struct ppb_device *dev;
|
||||
int i;
|
||||
|
||||
for (ppb = ppb_next_bus(NULL); ppb; ppb = ppb_next_bus(ppb)) {
|
||||
|
||||
dev = ppiprobe(ppb);
|
||||
ppiattach(dev);
|
||||
|
||||
ppb_attach_device(dev);
|
||||
}
|
||||
|
||||
return (0);
|
||||
}
|
||||
|
||||
static int
|
||||
ppi_unload(struct lkm_table *lkmtp, int cmd)
|
||||
{
|
||||
int i;
|
||||
|
||||
for (i = nppi-1; i > 0; i--) {
|
||||
ppb_remove_device(&ppidata[i]->ppi_dev);
|
||||
free(ppidata[i], M_TEMP);
|
||||
}
|
||||
|
||||
return (0);
|
||||
}
|
||||
|
||||
int
|
||||
ppi_mod(struct lkm_table *lkmtp, int cmd, int ver)
|
||||
{
|
||||
DISPATCH(lkmtp, cmd, ver, ppi_load, ppi_unload, lkm_nullcmd);
|
||||
}
|
||||
|
||||
#endif /* PPI_MODULE */
|
||||
|
||||
static ppi_devsw_installed = 0;
|
||||
|
||||
static void ppi_drvinit(void *unused)
|
||||
|
@ -11,7 +11,7 @@
|
||||
# device lines is present in the ./LINT configuration file. If you are
|
||||
# in doubt as to the purpose or necessity of a line, check first in LINT.
|
||||
#
|
||||
# $Id: GENERIC,v 1.147 1999/02/10 02:18:31 des Exp $
|
||||
# $Id: GENERIC,v 1.148 1999/02/11 06:07:27 jkoshy Exp $
|
||||
|
||||
machine "i386"
|
||||
cpu "I386_CPU"
|
||||
@ -146,7 +146,7 @@ device sio2 at isa? disable port "IO_COM3" tty irq 5
|
||||
device sio3 at isa? disable port "IO_COM4" tty irq 9
|
||||
|
||||
# Parallel port
|
||||
device ppc0 at isa? port? net irq 7
|
||||
device ppc0 at isa? port? tty irq 7
|
||||
controller ppbus0
|
||||
device nlpt0 at ppbus?
|
||||
device plip0 at ppbus?
|
||||
|
@ -2,7 +2,7 @@
|
||||
# LINT -- config file for checking all the sources, tries to pull in
|
||||
# as much of the source tree as it can.
|
||||
#
|
||||
# $Id: LINT,v 1.553 1999/02/12 12:15:02 brian Exp $
|
||||
# $Id: LINT,v 1.554 1999/02/13 17:54:32 nsouch Exp $
|
||||
#
|
||||
# NB: You probably don't want to try running a kernel built from this
|
||||
# file. Instead, you should start from GENERIC, and add options from
|
||||
@ -1831,9 +1831,9 @@ pseudo-device "i4bisppp" 4
|
||||
# vpo Iomega Zip Drive
|
||||
# Requires SCSI disk support ('scbus' and 'da'), best
|
||||
# performance is achieved with ports in EPP 1.9 mode.
|
||||
# nlpt Parallel Printer
|
||||
# lpt Parallel Printer
|
||||
# plip Parallel network interface
|
||||
# ppi General-purpose I/O ("Geek Port")
|
||||
# ppi General-purpose I/O ("Geek Port") + IEEE1284 I/O
|
||||
# pps Pulse per second Timing Interface
|
||||
# lpbb Philips official parallel port I2C bit-banging interface
|
||||
#
|
||||
@ -1846,19 +1846,19 @@ options "PERIPH_1284" # Makes your computer act as a IEEE1284
|
||||
# compliant peripheral
|
||||
options "DONTPROBE_1284"# Avoid boot detection of PnP parallel devices
|
||||
options "VP0_DEBUG" # ZIP/ZIP+ debug
|
||||
options "NLPT_DEBUG" # Printer driver debug
|
||||
options "LPT_DEBUG" # Printer driver debug
|
||||
options "PPC_DEBUG" # Parallel chipset level debug
|
||||
options "PLIP_DEBUG" # Parallel network IP interface debug
|
||||
|
||||
controller ppbus0
|
||||
controller vpo0 at ppbus?
|
||||
device nlpt0 at ppbus?
|
||||
device lpt0 at ppbus?
|
||||
device plip0 at ppbus?
|
||||
device ppi0 at ppbus?
|
||||
device pps0 at ppbus?
|
||||
device lpbb0 at ppbus?
|
||||
|
||||
controller ppc0 at isa? disable port ? tty irq 7
|
||||
controller ppc0 at isa? port? tty irq 7
|
||||
|
||||
# Kernel BOOTP support
|
||||
|
||||
|
@ -2,7 +2,7 @@
|
||||
# LINT -- config file for checking all the sources, tries to pull in
|
||||
# as much of the source tree as it can.
|
||||
#
|
||||
# $Id: LINT,v 1.553 1999/02/12 12:15:02 brian Exp $
|
||||
# $Id: LINT,v 1.554 1999/02/13 17:54:32 nsouch Exp $
|
||||
#
|
||||
# NB: You probably don't want to try running a kernel built from this
|
||||
# file. Instead, you should start from GENERIC, and add options from
|
||||
@ -1831,9 +1831,9 @@ pseudo-device "i4bisppp" 4
|
||||
# vpo Iomega Zip Drive
|
||||
# Requires SCSI disk support ('scbus' and 'da'), best
|
||||
# performance is achieved with ports in EPP 1.9 mode.
|
||||
# nlpt Parallel Printer
|
||||
# lpt Parallel Printer
|
||||
# plip Parallel network interface
|
||||
# ppi General-purpose I/O ("Geek Port")
|
||||
# ppi General-purpose I/O ("Geek Port") + IEEE1284 I/O
|
||||
# pps Pulse per second Timing Interface
|
||||
# lpbb Philips official parallel port I2C bit-banging interface
|
||||
#
|
||||
@ -1846,19 +1846,19 @@ options "PERIPH_1284" # Makes your computer act as a IEEE1284
|
||||
# compliant peripheral
|
||||
options "DONTPROBE_1284"# Avoid boot detection of PnP parallel devices
|
||||
options "VP0_DEBUG" # ZIP/ZIP+ debug
|
||||
options "NLPT_DEBUG" # Printer driver debug
|
||||
options "LPT_DEBUG" # Printer driver debug
|
||||
options "PPC_DEBUG" # Parallel chipset level debug
|
||||
options "PLIP_DEBUG" # Parallel network IP interface debug
|
||||
|
||||
controller ppbus0
|
||||
controller vpo0 at ppbus?
|
||||
device nlpt0 at ppbus?
|
||||
device lpt0 at ppbus?
|
||||
device plip0 at ppbus?
|
||||
device ppi0 at ppbus?
|
||||
device pps0 at ppbus?
|
||||
device lpbb0 at ppbus?
|
||||
|
||||
controller ppc0 at isa? disable port ? tty irq 7
|
||||
controller ppc0 at isa? port? tty irq 7
|
||||
|
||||
# Kernel BOOTP support
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user