From: Tim Waugh <twaugh@redhat.com>
To: Marcelo Tosatti <marcelo@conectiva.com.br>
Cc: linux-kernel@vger.kernel.org
Subject: [patch] 2.4.18-pre3: fix PLIP
Date: Sun, 13 Jan 2002 12:46:50 +0000 [thread overview]
Message-ID: <20020113124650.O31314@redhat.com> (raw)
In-Reply-To: <20020111233009.29852.qmail@web20207.mail.yahoo.com>
In-Reply-To: <20020111233009.29852.qmail@web20207.mail.yahoo.com>; from vasvir@yahoo.gr on Fri, Jan 11, 2002 at 03:30:09PM -0800
Hi Marcelo,
This patch from Niels fixes the problem with PLIP.
Tim.
*/
--- linux/drivers/parport/parport_pc.c.ecr2 Sun Jan 13 12:44:52 2002
+++ linux/drivers/parport/parport_pc.c Sun Jan 13 12:45:08 2002
@@ -128,7 +128,6 @@
static int change_mode(struct parport *p, int m)
{
const struct parport_pc_private *priv = p->physport->private_data;
- int ecr = ECONTROL(p);
unsigned char oecr;
int mode;
@@ -140,7 +139,7 @@
}
/* Bits <7:5> contain the mode. */
- oecr = inb (ecr);
+ oecr = inb (ECONTROL (p));
mode = (oecr >> 5) & 0x7;
if (mode == m) return 0;
@@ -631,7 +630,7 @@
/* FIFO is full. Wait for interrupt. */
/* Clear serviceIntr */
- outb (ecrval & ~(1<<2), ECONTROL (port));
+ ECR_WRITE (port, ecrval & ~(1<<2));
false_alarm:
ret = parport_wait_event (port, HZ);
if (ret < 0) break;
@@ -859,7 +858,7 @@
printk (KERN_DEBUG "%s: FIFO is stuck\n", port->name);
/* Prevent further data transfer. */
- frob_econtrol (port, 0xe0, ECR_TST << 5);
+ frob_set_mode (port, ECR_TST);
/* Adjust for the contents of the FIFO. */
for (written -= priv->fifo_depth; ; written++) {
@@ -956,7 +955,7 @@
printk (KERN_DEBUG "%s: FIFO is stuck\n", port->name);
/* Prevent further data transfer. */
- frob_econtrol (port, 0xe0, ECR_TST << 5);
+ frob_set_mode (port, ECR_TST);
/* Adjust for the contents of the FIFO. */
for (written -= priv->fifo_depth; ; written++) {
@@ -1135,7 +1134,7 @@
}
/* Clear serviceIntr */
- outb (ecrval & ~(1<<2), ECONTROL (port));
+ ECR_WRITE (port, ecrval & ~(1<<2));
false_alarm:
dump_parport_state ("waiting", port);
ret = parport_wait_event (port, HZ);
@@ -1738,7 +1737,7 @@
if ((inb (ECONTROL (pb)) & 0x3 ) != 0x1)
goto no_reg;
- outb (0x34, ECONTROL (pb));
+ ECR_WRITE (pb, 0x34);
if (inb (ECONTROL (pb)) != 0x35)
goto no_reg;
@@ -1816,8 +1815,8 @@
return 0;
/* Find out FIFO depth */
- frob_set_mode (pb, ECR_SPP); /* Reset FIFO */
- frob_set_mode (pb, ECR_TST); /* TEST FIFO */
+ ECR_WRITE (pb, ECR_SPP << 5); /* Reset FIFO */
+ ECR_WRITE (pb, ECR_TST << 5); /* TEST FIFO */
for (i=0; i < 1024 && !(inb (ECONTROL (pb)) & 0x02); i++)
outb (0xaa, FIFO (pb));
@@ -1826,7 +1825,7 @@
* it doesn't support ECP or FIFO MODE
*/
if (i == 1024) {
- frob_set_mode (pb, ECR_SPP);
+ ECR_WRITE (pb, ECR_SPP << 5);
return 0;
}
@@ -1877,8 +1876,8 @@
priv->readIntrThreshold = i;
- frob_set_mode (pb, ECR_SPP); /* Reset FIFO */
- outb (0xf4, ECONTROL (pb)); /* Configuration mode */
+ ECR_WRITE (pb, ECR_SPP << 5); /* Reset FIFO */
+ ECR_WRITE (pb, 0xf4); /* Configuration mode */
config = inb (CONFIGA (pb));
pword = (config >> 4) & 0x7;
switch (pword) {
@@ -1939,7 +1938,7 @@
return 0;
oecr = inb (ECONTROL (pb));
- frob_set_mode (pb, ECR_PS2);
+ ECR_WRITE (pb, ECR_PS2 << 5);
result = parport_PS2_supported(pb);
ECR_WRITE (pb, oecr);
return result;
@@ -1972,8 +1971,8 @@
/* Check for Intel bug. */
if (priv->ecr) {
unsigned char i;
- for (i = 0; i < 4; i++) {
- frob_set_mode (pb, i);
+ for (i = 0x00; i < 0x80; i += 0x20) {
+ ECR_WRITE (pb, i);
if (clear_epp_timeout (pb)) {
/* Phony EPP in ECP. */
return 0;
@@ -2004,7 +2003,7 @@
oecr = inb (ECONTROL (pb));
/* Search for SMC style EPP+ECP mode */
- frob_set_mode (pb, ECR_EPP);
+ ECR_WRITE (pb, 0x80);
outb (0x04, CONTROL (pb));
result = parport_EPP_supported(pb);
@@ -2045,7 +2044,7 @@
PARPORT_IRQ_NONE, 7, 9, 10, 11, 14, 15, 5
};
- frob_set_mode (pb, ECR_CNF); /* Configuration MODE */
+ ECR_WRITE (pb, ECR_CNF << 5); /* Configuration MODE */
intrLine = (inb (CONFIGB (pb)) >> 3) & 0x07;
irq = lookup[intrLine];
@@ -2062,16 +2061,16 @@
sti();
irqs = probe_irq_on();
- frob_set_mode (pb, ECR_SPP); /* Reset FIFO */
- frob_econtrol (pb, ECR_MODE_MASK | 0x04, (ECR_TST << 5) | 0x04);
- frob_set_mode (pb, ECR_TST);
+ ECR_WRITE (pb, ECR_SPP << 5); /* Reset FIFO */
+ ECR_WRITE (pb, (ECR_TST << 5) | 0x04);
+ ECR_WRITE (pb, ECR_TST << 5);
/* If Full FIFO sure that writeIntrThreshold is generated */
for (i=0; i < 1024 && !(inb (ECONTROL (pb)) & 0x02) ; i++)
outb (0xaa, FIFO (pb));
pb->irq = probe_irq_off(irqs);
- frob_set_mode (pb, ECR_SPP);
+ ECR_WRITE (pb, ECR_SPP << 5);
if (pb->irq <= 0)
pb->irq = PARPORT_IRQ_NONE;
--- linux/drivers/parport/ChangeLog.ecr2 Sun Jan 13 12:44:52 2002
+++ linux/drivers/parport/ChangeLog Sun Jan 13 12:45:08 2002
@@ -1,3 +1,8 @@
+2002-01-13 Niels Kristian Bech Jensen <nkbj@image.dk>
+
+ * parport_pc.c: Change some occurrences of frob_set_mode to
+ ECR_WRITE. This fixes PLIP.
+
2002-01-04 Tim Waugh <twaugh@redhat.com>
* share.c (parport_claim_or_block): Sleep interruptibly to prevent
prev parent reply other threads:[~2002-01-13 12:47 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2002-01-11 23:30 2.4.18pre2: PLIP broken Vassilis Virvilis
2002-01-13 12:46 ` Tim Waugh [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20020113124650.O31314@redhat.com \
--to=twaugh@redhat.com \
--cc=linux-kernel@vger.kernel.org \
--cc=marcelo@conectiva.com.br \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.