Lines Matching refs:port

69 /* Per-port buffer size */
75 /* I/O port range */
100 * Data specific to each I/O port
103 struct cdev *port;
108 char buff[PBIO_BUFSIZ]; /* Per-port data buffer */
115 struct portdata pd[PBIO_NPORTS];/* Per port data */
116 int iomode; /* Virtualized I/O mode port value */
117 /* The real port is write-only */
241 sc->pd[i].port = make_dev(&pbio_cdevsw, (unit << 2) + i, 0, 0,
251 int port, unit;
254 port = PORT(dev);
260 scp->pd[port].diff = *(int *)data;
263 scp->pd[port].ipace = *(int *)data;
266 scp->pd[port].opace = *(int *)data;
269 *(int *)data = scp->pd[port].diff;
272 *(int *)data = scp->pd[port].ipace;
275 *(int *)data = scp->pd[port].opace;
287 int ocfg, port, unit;
291 port = PORT(dev);
296 switch (port) {
332 * Return the value of a given port on a given I/O base address
333 * Handles the split C port nibbles and blocking
336 portval(int port, struct pbio_softc *scp, char *val)
341 switch (port) {
358 if (scp->pd[port].diff) {
359 if (*val != scp->pd[port].oldval) {
360 scp->pd[port].oldval = *val;
363 err = tsleep((caddr_t)&(scp->pd[port].diff), PBIOPRI,
364 "pbiopl", max(1, scp->pd[port].ipace));
376 int err, i, port, ret, toread, unit;
380 port = PORT(dev);
387 if ((ret = uiomove(scp->pd[port].buff, toread, uio)) != 0)
390 if ((err = portval(port, scp, &val)) != 0)
392 scp->pd[port].buff[i] = val;
393 if (!scp->pd[port].diff && scp->pd[port].ipace)
394 tsleep((caddr_t)&(scp->pd[port].ipace), PBIOPRI,
395 "pbioip", scp->pd[port].ipace);
405 int i, port, ret, towrite, unit;
409 port = PORT(dev);
416 if ((ret = uiomove(scp->pd[port].buff, towrite, uio)) != 0)
419 val = scp->pd[port].buff[i];
420 switch (port) {
440 if (scp->pd[port].opace)
441 tsleep((caddr_t)&(scp->pd[port].opace),
443 scp->pd[port].opace);