[Linux-parport] Kernel & libieee1284 report BIOS ECP mode as EPP

vdb128 at picaros.org vdb128 at picaros.org
Fri Oct 1 07:46:32 EDT 2004


> Winbond Super-IO detection, now testing ports 3F0,370,250,4E,2E ...
> Winbond chip at EFER=0x2e key=0x87 devid=82 devrev=83 oldid=ff
> type=unknown

> W83627THF > 326G7C23165600UA

You might try to add devid:devrev=82:83 to the list.

--- linux-2.4.23/drivers/parport/parport_pc.c~  Mon Mar  1 00:46:52 2004
+++ linux-2.4.23/drivers/parport/parport_pc.c   Fri Oct  1 13:05:01 2004
@@ -1520,6 +1527,7 @@ static void __devinit decode_winbond(int
        else if ((id & ~0x0f) == 0x5270) type="83977CTF / SMSC 97w36x";
        else if ((id & ~0x0f) == 0x52f0) type="83977EF / SMSC 97w35x";
        else if ((id & ~0x0f) == 0x5210) type="83627";
+       else if ((id & ~0x0f) == 0x8280) type="83627THF";
        else if ((id & ~0x0f) == 0x6010) type="83697HF";
        else if ((oldid &0x0f ) == 0x0a) { type="83877F"; progif=1;}
        else if ((oldid &0x0f ) == 0x0b) { type="83877AF"; progif=1;}

> The chipset appears to be recognized. Would it be hard to add this  
> extension?

If the above works, then a possible solution is to extend the 

  static struct superio_struct {	/* For Super-IO chips autodetection */
	int io;
	int irq;
	int dma;
  } superios[NR_SUPERIOS] __devinitdata = { {0,},};

with a member 'int noepp;' which is set to 1 if EPP is not found in 

  static void __devinit show_parconfig_winbond(int io, int key) .

Then copy the procedure

  get_superio_irq (struct parport *p)

rename it to 'get_superio_noepp()' and let it return 'superios[i].noepp'
or zero on failure.  Finally, in

  static int __devinit parport_EPP_supported(struct parport *pb)

prepend

	if(get_superio_noepp(pb)) {
	  result=-25;
	  goto end;
	}

just before EPP is enabled by the line

	pb->modes |= PARPORT_MODE_EPP;

If all works, then you should take the long road of trying to get the
diff -bpu accepted by the parport_pc maintainers.  Another route would
be to disable EPP use (perhaps a module option noepp=1) in the scanner
driver.

Just my thought,
Servaas



More information about the Linux-parport mailing list