Lines Matching refs:port
42 static void parport_ieee1284_wakeup (struct parport *port) in parport_ieee1284_wakeup() argument
44 up (&port->physport->ieee1284.irq); in parport_ieee1284_wakeup()
49 struct parport *port = from_timer(port, t, timer); in timeout_waiting_on_port() local
51 parport_ieee1284_wakeup (port); in timeout_waiting_on_port()
70 int parport_wait_event (struct parport *port, signed long timeout) in parport_wait_event() argument
74 if (!port->physport->cad->timeout) in parport_wait_event()
79 timer_setup(&port->timer, timeout_waiting_on_port, 0); in parport_wait_event()
80 mod_timer(&port->timer, jiffies + timeout); in parport_wait_event()
81 ret = down_interruptible (&port->physport->ieee1284.irq); in parport_wait_event()
82 if (!del_timer_sync(&port->timer) && !ret) in parport_wait_event()
113 int parport_poll_peripheral(struct parport *port, in parport_poll_peripheral() argument
123 status = parport_read_status (port); in parport_poll_peripheral()
162 int parport_wait_peripheral(struct parport *port, in parport_wait_peripheral() argument
171 usec = port->physport->spintime; /* usecs of fast polling */ in parport_wait_peripheral()
172 if (!port->physport->cad->timeout) in parport_wait_peripheral()
183 ret = parport_poll_peripheral (port, mask, result, usec); in parport_wait_peripheral()
187 if (!port->physport->cad->timeout) in parport_wait_peripheral()
200 if ((ret = parport_wait_event (port, msecs_to_jiffies(10))) < 0) in parport_wait_peripheral()
203 status = parport_read_status (port); in parport_wait_peripheral()
220 static void parport_ieee1284_terminate (struct parport *port) in parport_ieee1284_terminate() argument
223 port = port->physport; in parport_ieee1284_terminate()
226 switch (port->ieee1284.mode) { in parport_ieee1284_terminate()
233 parport_frob_control (port, PARPORT_CONTROL_INIT, 0); in parport_ieee1284_terminate()
237 parport_frob_control (port, in parport_ieee1284_terminate()
248 if (port->ieee1284.phase != IEEE1284_PH_FWD_IDLE) { in parport_ieee1284_terminate()
250 parport_frob_control (port, in parport_ieee1284_terminate()
257 r = parport_wait_peripheral (port, in parport_ieee1284_terminate()
262 port->name); in parport_ieee1284_terminate()
264 parport_data_forward (port); in parport_ieee1284_terminate()
266 port->name); in parport_ieee1284_terminate()
267 port->ieee1284.phase = IEEE1284_PH_FWD_IDLE; in parport_ieee1284_terminate()
276 parport_frob_control (port, in parport_ieee1284_terminate()
282 r = parport_wait_peripheral (port, PARPORT_STATUS_ACK, 0); in parport_ieee1284_terminate()
285 port->name); in parport_ieee1284_terminate()
288 parport_frob_control (port, in parport_ieee1284_terminate()
293 r = parport_wait_peripheral (port, in parport_ieee1284_terminate()
298 port->name); in parport_ieee1284_terminate()
301 parport_frob_control (port, PARPORT_CONTROL_AUTOFD, 0); in parport_ieee1284_terminate()
304 port->ieee1284.mode = IEEE1284_MODE_COMPAT; in parport_ieee1284_terminate()
305 port->ieee1284.phase = IEEE1284_PH_FWD_IDLE; in parport_ieee1284_terminate()
308 port->name); in parport_ieee1284_terminate()
327 int parport_negotiate (struct parport *port, int mode) in parport_negotiate() argument
339 port = port->physport; in parport_negotiate()
342 if (port->ieee1284.mode == mode) in parport_negotiate()
346 if ((port->ieee1284.mode & ~IEEE1284_ADDR) == (mode & ~IEEE1284_ADDR)){ in parport_negotiate()
347 port->ieee1284.mode = mode; in parport_negotiate()
352 if (port->ieee1284.mode != IEEE1284_MODE_COMPAT) in parport_negotiate()
353 parport_ieee1284_terminate (port); in parport_negotiate()
374 port->ieee1284.phase = IEEE1284_PH_NEGOTIATION; in parport_negotiate()
377 parport_frob_control (port, in parport_negotiate()
385 parport_data_forward (port); in parport_negotiate()
386 parport_write_data (port, m); in parport_negotiate()
390 parport_frob_control (port, in parport_negotiate()
396 if (parport_wait_peripheral (port, in parport_negotiate()
405 parport_frob_control (port, in parport_negotiate()
411 port->name, parport_read_status (port)); in parport_negotiate()
412 port->ieee1284.phase = IEEE1284_PH_FWD_IDLE; in parport_negotiate()
417 parport_frob_control (port, in parport_negotiate()
423 parport_frob_control (port, in parport_negotiate()
429 if (parport_wait_peripheral (port, in parport_negotiate()
435 port->name, mode, port->ops->read_status (port)); in parport_negotiate()
436 parport_ieee1284_terminate (port); in parport_negotiate()
440 xflag = parport_read_status (port) & PARPORT_STATUS_SELECT; in parport_negotiate()
446 port->name, mode); in parport_negotiate()
447 parport_ieee1284_terminate (port); in parport_negotiate()
455 parport_write_data (port, m); in parport_negotiate()
459 parport_frob_control (port, in parport_negotiate()
464 if (parport_wait_peripheral (port, PARPORT_STATUS_ACK, 0)) { in parport_negotiate()
468 port->name); in parport_negotiate()
469 parport_ieee1284_terminate (port); in parport_negotiate()
474 parport_frob_control (port, in parport_negotiate()
479 if (parport_wait_peripheral (port, in parport_negotiate()
486 port->name, mode, in parport_negotiate()
487 port->ops->read_status (port)); in parport_negotiate()
488 parport_ieee1284_terminate (port); in parport_negotiate()
493 xflag = parport_read_status (port) & PARPORT_STATUS_SELECT; in parport_negotiate()
499 "supported\n", port->name, mode); in parport_negotiate()
500 parport_ieee1284_terminate (port); in parport_negotiate()
508 DPRINTK (KERN_DEBUG "%s: In mode 0x%02x\n", port->name, mode); in parport_negotiate()
509 port->ieee1284.mode = mode; in parport_negotiate()
513 port->ieee1284.phase = IEEE1284_PH_ECP_SETUP; in parport_negotiate()
516 parport_frob_control (port, in parport_negotiate()
521 r = parport_wait_peripheral (port, in parport_negotiate()
526 port->name); in parport_negotiate()
529 port->ieee1284.phase = IEEE1284_PH_FWD_IDLE; in parport_negotiate()
531 port->name); in parport_negotiate()
535 port->ieee1284.phase = IEEE1284_PH_REV_IDLE; in parport_negotiate()
538 port->ieee1284.phase = IEEE1284_PH_FWD_IDLE; in parport_negotiate()
553 static int parport_ieee1284_ack_data_avail (struct parport *port) in parport_ieee1284_ack_data_avail() argument
555 if (parport_read_status (port) & PARPORT_STATUS_ERROR) in parport_ieee1284_ack_data_avail()
560 port->ops->frob_control (port, PARPORT_CONTROL_AUTOFD, 0); in parport_ieee1284_ack_data_avail()
561 port->ieee1284.phase = IEEE1284_PH_HBUSY_DAVAIL; in parport_ieee1284_ack_data_avail()
569 struct parport *port = handle; in parport_ieee1284_interrupt() local
570 parport_ieee1284_wakeup (port); in parport_ieee1284_interrupt()
573 if (port->ieee1284.phase == IEEE1284_PH_REV_IDLE) { in parport_ieee1284_interrupt()
576 DPRINTK (KERN_DEBUG "%s: Data available\n", port->name); in parport_ieee1284_interrupt()
577 parport_ieee1284_ack_data_avail (port); in parport_ieee1284_interrupt()
600 ssize_t parport_write (struct parport *port, const void *buffer, size_t len) in parport_write() argument
603 return port->ops->compat_write_data (port, buffer, len, 0); in parport_write()
606 int mode = port->ieee1284.mode; in parport_write()
617 parport_negotiate (port, IEEE1284_MODE_COMPAT); in parport_write()
621 port->name); in parport_write()
622 fn = port->ops->compat_write_data; in parport_write()
626 DPRINTK (KERN_DEBUG "%s: Using EPP mode\n", port->name); in parport_write()
628 fn = port->ops->epp_write_addr; in parport_write()
630 fn = port->ops->epp_write_data; in parport_write()
635 port->name); in parport_write()
644 DPRINTK (KERN_DEBUG "%s: Using ECP mode\n", port->name); in parport_write()
646 fn = port->ops->ecp_write_addr; in parport_write()
648 fn = port->ops->ecp_write_data; in parport_write()
654 port->name); in parport_write()
665 DPRINTK (KERN_DEBUG "%s: Unknown mode 0x%02x\n", port->name, in parport_write()
666 port->ieee1284.mode); in parport_write()
670 retval = (*fn) (port, buffer, len, 0); in parport_write()
671 DPRINTK (KERN_DEBUG "%s: wrote %d/%d bytes\n", port->name, retval, len); in parport_write()
694 ssize_t parport_read (struct parport *port, void *buffer, size_t len) in parport_read() argument
700 int mode = port->physport->ieee1284.mode; in parport_read()
715 if ((port->physport->modes & PARPORT_MODE_TRISTATE) && in parport_read()
716 !parport_negotiate (port, IEEE1284_MODE_BYTE)) { in parport_read()
718 DPRINTK (KERN_DEBUG "%s: Using byte mode\n", port->name); in parport_read()
719 fn = port->ops->byte_read_data; in parport_read()
722 if (parport_negotiate (port, IEEE1284_MODE_NIBBLE)) { in parport_read()
727 DPRINTK (KERN_DEBUG "%s: Using nibble mode\n", port->name); in parport_read()
728 fn = port->ops->nibble_read_data; in parport_read()
732 DPRINTK (KERN_DEBUG "%s: Using byte mode\n", port->name); in parport_read()
733 fn = port->ops->byte_read_data; in parport_read()
737 DPRINTK (KERN_DEBUG "%s: Using EPP mode\n", port->name); in parport_read()
739 fn = port->ops->epp_read_addr; in parport_read()
741 fn = port->ops->epp_read_data; in parport_read()
746 port->name); in parport_read()
755 DPRINTK (KERN_DEBUG "%s: Using ECP mode\n", port->name); in parport_read()
756 fn = port->ops->ecp_read_data; in parport_read()
761 port->name); in parport_read()
766 DPRINTK (KERN_DEBUG "%s: Unknown mode 0x%02x\n", port->name, in parport_read()
767 port->physport->ieee1284.mode); in parport_read()
771 return (*fn) (port, buffer, len, 0); in parport_read()
797 if (dev->port->physport->cad == dev) in parport_set_timeout()
798 parport_ieee1284_wakeup (dev->port); in parport_set_timeout()