Merge tag 'driver-core-3.5-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git...
[pandora-kernel.git] / drivers / parport / parport_pc.c
index 937981a..5abffe5 100644 (file)
@@ -197,54 +197,6 @@ static int change_mode(struct parport *p, int m)
        ECR_WRITE(p, oecr);
        return 0;
 }
-
-#ifdef CONFIG_PARPORT_1284
-/* Find FIFO lossage; FIFO is reset */
-#if 0
-static int get_fifo_residue(struct parport *p)
-{
-       int residue;
-       int cnfga;
-       const struct parport_pc_private *priv = p->physport->private_data;
-
-       /* Adjust for the contents of the FIFO. */
-       for (residue = priv->fifo_depth; ; residue--) {
-               if (inb(ECONTROL(p)) & 0x2)
-                               /* Full up. */
-                       break;
-
-               outb(0, FIFO(p));
-       }
-
-       printk(KERN_DEBUG "%s: %d PWords were left in FIFO\n", p->name,
-               residue);
-
-       /* Reset the FIFO. */
-       frob_set_mode(p, ECR_PS2);
-
-       /* Now change to config mode and clean up. FIXME */
-       frob_set_mode(p, ECR_CNF);
-       cnfga = inb(CONFIGA(p));
-       printk(KERN_DEBUG "%s: cnfgA contains 0x%02x\n", p->name, cnfga);
-
-       if (!(cnfga & (1<<2))) {
-               printk(KERN_DEBUG "%s: Accounting for extra byte\n", p->name);
-               residue++;
-       }
-
-       /* Don't care about partial PWords until support is added for
-        * PWord != 1 byte. */
-
-       /* Back to PS2 mode. */
-       frob_set_mode(p, ECR_PS2);
-
-       DPRINTK(KERN_DEBUG
-            "*** get_fifo_residue: done residue collecting (ecr = 0x%2.2x)\n",
-                                                       inb(ECONTROL(p)));
-       return residue;
-}
-#endif  /*  0 */
-#endif /* IEEE 1284 support */
 #endif /* FIFO support */
 
 /*
@@ -940,234 +892,6 @@ static size_t parport_pc_ecp_write_block_pio(struct parport *port,
 
        return written;
 }
-
-#if 0
-static size_t parport_pc_ecp_read_block_pio(struct parport *port,
-                                            void *buf, size_t length,
-                                            int flags)
-{
-       size_t left = length;
-       size_t fifofull;
-       int r;
-       const int fifo = FIFO(port);
-       const struct parport_pc_private *priv = port->physport->private_data;
-       const int fifo_depth = priv->fifo_depth;
-       char *bufp = buf;
-
-       port = port->physport;
-       DPRINTK(KERN_DEBUG "parport_pc: parport_pc_ecp_read_block_pio\n");
-       dump_parport_state("enter fcn", port);
-
-       /* Special case: a timeout of zero means we cannot call schedule().
-        * Also if O_NONBLOCK is set then use the default implementation. */
-       if (port->cad->timeout <= PARPORT_INACTIVITY_O_NONBLOCK)
-               return parport_ieee1284_ecp_read_data(port, buf,
-                                                      length, flags);
-
-       if (port->ieee1284.mode == IEEE1284_MODE_ECPRLE) {
-               /* If the peripheral is allowed to send RLE compressed
-                * data, it is possible for a byte to expand to 128
-                * bytes in the FIFO. */
-               fifofull = 128;
-       } else {
-               fifofull = fifo_depth;
-       }
-
-       /* If the caller wants less than a full FIFO's worth of data,
-        * go through software emulation.  Otherwise we may have to throw
-        * away data. */
-       if (length < fifofull)
-               return parport_ieee1284_ecp_read_data(port, buf,
-                                                      length, flags);
-
-       if (port->ieee1284.phase != IEEE1284_PH_REV_IDLE) {
-               /* change to reverse-idle phase (must be in forward-idle) */
-
-               /* Event 38: Set nAutoFd low (also make sure nStrobe is high) */
-               parport_frob_control(port,
-                                     PARPORT_CONTROL_AUTOFD
-                                     | PARPORT_CONTROL_STROBE,
-                                     PARPORT_CONTROL_AUTOFD);
-               parport_pc_data_reverse(port); /* Must be in PS2 mode */
-               udelay(5);
-               /* Event 39: Set nInit low to initiate bus reversal */
-               parport_frob_control(port,
-                                     PARPORT_CONTROL_INIT,
-                                     0);
-               /* Event 40: Wait for  nAckReverse (PError) to go low */
-               r = parport_wait_peripheral(port, PARPORT_STATUS_PAPEROUT, 0);
-               if (r) {
-                       printk(KERN_DEBUG "%s: PE timeout Event 40 (%d) "
-                               "in ecp_read_block_pio\n", port->name, r);
-                       return 0;
-               }
-       }
-
-       /* Set up ECP FIFO mode.*/
-/*     parport_pc_frob_control(port,
-                                PARPORT_CONTROL_STROBE |
-                                PARPORT_CONTROL_AUTOFD,
-                                PARPORT_CONTROL_AUTOFD); */
-       r = change_mode(port, ECR_ECP); /* ECP FIFO */
-       if (r)
-               printk(KERN_DEBUG "%s: Warning change_mode ECR_ECP failed\n",
-                                                               port->name);
-
-       port->ieee1284.phase = IEEE1284_PH_REV_DATA;
-
-       /* the first byte must be collected manually */
-       dump_parport_state("pre 43", port);
-       /* Event 43: Wait for nAck to go low */
-       r = parport_wait_peripheral(port, PARPORT_STATUS_ACK, 0);
-       if (r) {
-               /* timed out while reading -- no data */
-               printk(KERN_DEBUG "PIO read timed out (initial byte)\n");
-               goto out_no_data;
-       }
-       /* read byte */
-       *bufp++ = inb(DATA(port));
-       left--;
-       dump_parport_state("43-44", port);
-       /* Event 44: nAutoFd (HostAck) goes high to acknowledge */
-       parport_pc_frob_control(port,
-                                PARPORT_CONTROL_AUTOFD,
-                                0);
-       dump_parport_state("pre 45", port);
-       /* Event 45: Wait for nAck to go high */
-       /* r = parport_wait_peripheral(port, PARPORT_STATUS_ACK,
-                                               PARPORT_STATUS_ACK); */
-       dump_parport_state("post 45", port);
-       r = 0;
-       if (r) {
-               /* timed out while waiting for peripheral to respond to ack */
-               printk(KERN_DEBUG "ECP PIO read timed out (waiting for nAck)\n");
-
-               /* keep hold of the byte we've got already */
-               goto out_no_data;
-       }
-       /* Event 46: nAutoFd (HostAck) goes low to accept more data */
-       parport_pc_frob_control(port,
-                                PARPORT_CONTROL_AUTOFD,
-                                PARPORT_CONTROL_AUTOFD);
-
-
-       dump_parport_state("rev idle", port);
-       /* Do the transfer. */
-       while (left > fifofull) {
-               int ret;
-               unsigned long expire = jiffies + port->cad->timeout;
-               unsigned char ecrval = inb(ECONTROL(port));
-
-               if (need_resched() && time_before(jiffies, expire))
-                       /* Can't yield the port. */
-                       schedule();
-
-               /* At this point, the FIFO may already be full. In
-                * that case ECP is already holding back the
-                * peripheral (assuming proper design) with a delayed
-                * handshake.  Work fast to avoid a peripheral
-                * timeout.  */
-
-               if (ecrval & 0x01) {
-                       /* FIFO is empty. Wait for interrupt. */
-                       dump_parport_state("FIFO empty", port);
-
-                       /* Anyone else waiting for the port? */
-                       if (port->waithead) {
-                               printk(KERN_DEBUG "Somebody wants the port\n");
-                               break;
-                       }
-
-                       /* Clear serviceIntr */
-                       ECR_WRITE(port, ecrval & ~(1<<2));
-false_alarm:
-                       dump_parport_state("waiting", port);
-                       ret = parport_wait_event(port, HZ);
-                       DPRINTK(KERN_DEBUG "parport_wait_event returned %d\n",
-                                                                       ret);
-                       if (ret < 0)
-                               break;
-                       ret = 0;
-                       if (!time_before(jiffies, expire)) {
-                               /* Timed out. */
-                               dump_parport_state("timeout", port);
-                               printk(KERN_DEBUG "PIO read timed out\n");
-                               break;
-                       }
-                       ecrval = inb(ECONTROL(port));
-                       if (!(ecrval & (1<<2))) {
-                               if (need_resched() &&
-                                   time_before(jiffies, expire)) {
-                                       schedule();
-                               }
-                               goto false_alarm;
-                       }
-
-                       /* Depending on how the FIFO threshold was
-                        * set, how long interrupt service took, and
-                        * how fast the peripheral is, we might be
-                        * lucky and have a just filled FIFO. */
-                       continue;
-               }
-
-               if (ecrval & 0x02) {
-                       /* FIFO is full. */
-                       dump_parport_state("FIFO full", port);
-                       insb(fifo, bufp, fifo_depth);
-                       bufp += fifo_depth;
-                       left -= fifo_depth;
-                       continue;
-               }
-
-               DPRINTK(KERN_DEBUG
-                 "*** ecp_read_block_pio: reading one byte from the FIFO\n");
-
-               /* FIFO not filled.  We will cycle this loop for a while
-                * and either the peripheral will fill it faster,
-                * tripping a fast empty with insb, or we empty it. */
-               *bufp++ = inb(fifo);
-               left--;
-       }
-
-       /* scoop up anything left in the FIFO */
-       while (left && !(inb(ECONTROL(port) & 0x01))) {
-               *bufp++ = inb(fifo);
-               left--;
-       }
-
-       port->ieee1284.phase = IEEE1284_PH_REV_IDLE;
-       dump_parport_state("rev idle2", port);
-
-out_no_data:
-
-       /* Go to forward idle mode to shut the peripheral up (event 47). */
-       parport_frob_control(port, PARPORT_CONTROL_INIT, PARPORT_CONTROL_INIT);
-
-       /* event 49: PError goes high */
-       r = parport_wait_peripheral(port,
-                                    PARPORT_STATUS_PAPEROUT,
-                                    PARPORT_STATUS_PAPEROUT);
-       if (r) {
-               printk(KERN_DEBUG
-                       "%s: PE timeout FWDIDLE (%d) in ecp_read_block_pio\n",
-                       port->name, r);
-       }
-
-       port->ieee1284.phase = IEEE1284_PH_FWD_IDLE;
-
-       /* Finish up. */
-       {
-               int lost = get_fifo_residue(port);
-               if (lost)
-                       /* Shouldn't happen with compliant peripherals. */
-                       printk(KERN_DEBUG "%s: DATA LOSS (%d bytes)!\n",
-                               port->name, lost);
-       }
-
-       dump_parport_state("fwd idle", port);
-       return length - left;
-}
-#endif  /*  0  */
 #endif /* IEEE 1284 support */
 #endif /* Allowed to use FIFO/DMA */