[PATCH/RFC] parport_pc: remove ancient, overeager quirk that disables EPP support on many chipsets
From: Leopold Palomo-Avellaneda
Date: Thu Sep 15 2011 - 08:51:33 EST
Hi again,
sorry for the noise and my mistake. The patch...
there's a bug in the parport module that have been reported (in another
places) some time ago [1]. Also, this bug was reported at Redhat [2], but
nobody follow the report and it was closed.
As Adam Baker said [1] :
<quote>
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.
</quote>
I have applied the patch to the standard debian kernel and vanilla kernels and
runs perfectly. The patch simply erases a check. Applied to some Dell
hardware, now the EPP mode is detected and, after some initial tests it's
working.
Please, apply the patch.
Best regards,
Leo
[1] http://lists.infradead.org/pipermail/linux-parport/2008-March/000628.html
[2] https://bugzilla.redhat.com/show_bug.cgi?id=284471
Signed-off-by: Adam Baker <linux at baker-net.org.uk>
Signed-off-by: Leopold Palomo-Avellaneda <leo@xxxxxxxxxxxx>
---
--- linux-2.6-3.0.0/drivers/parport/parport_pc.c.orig 2011-09-13 16:29:54.333048437 +0200
+++ linux-2.6-3.0.0/drivers/parport/parport_pc.c 2011-09-13 16:30:39.933451659 +0200
@@ -2018,18 +2018,6 @@ static int parport_EPP_supported(struct
if (!clear_epp_timeout(pb))
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. */