Messages in this thread Patch in this message | | | Date | Sun, 12 Sep 1999 19:24:58 +0200 (MET DST) | From | Mikael Pettersson <> | Subject | Re: Linux 2.3.18ac1 |
| |
Here are two small fixes for Linux kernel 2.3.18:
* The patch 2.3.10->2.3.11 added a return statement to the F0 0F bug workaround code which disabled the workaround. (I assume this was intended as a temporary fix while ironing out other changes.) The patch below re-enables the F0 0F workaround.
* parport_pc has one "virtual" bug and one real one: * After placing the ECP port in configuration mode, the config status should be read from I/O port CONFIGA(pb), not FIFO(pb). [They denote the same I/O address, but that address changes meaning depending on the mode of the parallel port.] * The ISA-Level/Pulses bit (0x80) should be read from CONFIGA(pb), not CONFIGB(pb). (0x80 in CONFIGB is the "compress" flag.)
While I'm at it: the check for IRQ conflict further down fails on my Dell Latitude notebook: On the Latitude, CONFIGB always reads as zero, which makes parport_pc believe there's an IRQ conflict (there isn't). parport_pc then turns off IRQ capability, which leaves the parport in a next to useless state (printing is excruciatingly slow, if it works at all). I know some documents recommend this check; I'm just not sure whether they're wrong or whether the Dell Latitude has a crap parallel port controller. Printing works in polling mode and IRQ-mode without FIFO/DMA.
/Mikael
--- linux-2.3.18/arch/i386/kernel/traps.c.~1~ Sun Sep 12 02:51:52 1999 +++ linux-2.3.18/arch/i386/kernel/traps.c Sun Sep 12 13:42:43 1999 @@ -489,7 +489,6 @@ pmd_t * pmd; pte_t * pte; -return; /* * Allocate a new page in virtual address space, * move the IDT into it and write protect this page. --- linux-2.3.18/drivers/parport/parport_pc.c.orig Thu Aug 19 18:41:54 1999 +++ linux-2.3.18/drivers/parport/parport_pc.c Sun Sep 12 13:42:20 1999 @@ -1202,7 +1202,7 @@ outb (ECR_SPP << 5, ECONTROL (pb)); /* Reset FIFO */ outb (0xf4, ECONTROL (pb)); /* Configuration mode */ - config = inb (FIFO (pb)); + config = inb (CONFIGA (pb)); pword = (config >> 4) & 0x7; switch (pword) { case 0: @@ -1225,10 +1225,10 @@ priv->pword = pword; printk (KERN_DEBUG "0x%lx: PWord is %d bits\n", pb->base, 8 * pword); - config = inb (CONFIGB (pb)); printk (KERN_DEBUG "0x%lx: Interrupts are ISA-%s\n", pb->base, config & 0x80 ? "Level" : "Pulses"); + config = inb (CONFIGB (pb)); if (!(config & 0x40)) { printk (KERN_WARNING "0x%lx: IRQ conflict!\n", pb->base); pb->irq = PARPORT_IRQ_NONE; - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.rutgers.edu Please read the FAQ at http://www.tux.org/lkml/
| |