[Linux-parport] EPP modes

Adam Baker parport at baker-net.org.uk
Mon Mar 3 13:41:17 EST 2008

On Monday 03 March 2008 10:22, Leopold Palomo-Avellaneda wrote:
> Hi,

> I have realised that all the boxes that we have here using 2.6.18 (debian
> kernel stock and 2.6.22) nones has EPP active. Also with kernels more
> recent. Also, only in a lab of 7 different boxes, only one could support
> EPP, when _ALL_  of them the bios claims to support it.
> So my question are:
> Is this a problem of the driver? This driver is unmaintained?

Short answer, you need to patch your kernel, as per the patch below
(which is against 2.6.25-rc2 but this code hasn't changed in ages).

Longer answer: A long time ago (~ 10 years), Intel produced a chipset that 
included broken EPP support. The Linux parport driver was written to detect 
such a chipset and disable EPP support on it. Unfortunately the test that was 
written gives false positives for many current chipsets and no-one seems to 
know exactly what the problem hardware was, let alone have a sample of it to 
see if a better test can be written. After such a long time it is probably 
appropriate to just remove the test (on average it does more harm than good) 
however you are correct in asserting the driver is unmaintained so no-one is 
bothering to fix it.

In theory the way to get the change into mainline in that case is to post to 
LKML but you should then be prepared to test development kernels etc. so I 
haven't bothered. If you want to chase it up feel free to add

Signed-off-by: Adam Baker <linux at baker-net.org.uk>

to the patch.

diff --git a/drivers/parport/parport_pc.c b/drivers/parport/parport_pc.c
index e9743d3..363c13f 100644
--- a/drivers/parport/parport_pc.c
+++ b/drivers/parport/parport_pc.c
@@ -1903,18 +1903,6 @@ static int parport_EPP_supported(struct 
 		return 0;  /* No way to clear timeout */
-	/* Check for Intel bug. */
-	if (priv->ecr) {
-		unsigned char i;
-		for (i = 0x00; i < 0x80; i += 0x20) {
-			ECR_WRITE (pb, i);
-			if (clear_epp_timeout (pb)) {
-				/* Phony EPP in ECP. */
-				return 0;
-			}
-		}
-	}
 	pb->modes |= PARPORT_MODE_EPP;
 	/* Set up access functions to use EPP hardware. */

More information about the Linux-parport mailing list