Philip.Blundell@pobox.com writes:
> >I think that is the problem, you will certainly print via ghostscript and
> >the printer is to slow to show any effect.
>
> Mmm; even `dd if=/dev/zero of=/dev/lp0' runs at the same speed, though. Oh
> well.
>
Hallo,
Here are some tests with the Gigabyte BXD mainboard containg the Winbond
83977TF talking to an old HP Deskjet 560 , with Dual Celeron 300@450.
CONFIG_PARPORT_PC_FIFO=y and CONFIG_PARPORT_1284=y are set. This is with a
plain 2.4.2 parport suite, no ECP mode patch from above. The 64 kByte of zero
data doesn't fits into the HP560 cache.
siemens:/usr/src/linux # rmmod lp && rmmod parport_pc
siemens:/usr/src/linux # insmod drivers/parport/parport_pc.o io=0x378
siemens:/usr/src/linux # insmod drivers/char/lp.o
siemens:/usr/src/linux # time dd if=/dev/zero of=/dev/lp0 count=128
128+0 records in
128+0 records out
real 0m12.596s
user 0m0.000s
sys 0m2.530s
siemens:/usr/src/linux # rmmod lp && rmmod parport_pc
siemens:/usr/src/linux # insmod drivers/parport/parport_pc.o io=0x378 irq=7
siemens:/usr/src/linux # insmod drivers/char/lp.o
siemens:/usr/src/linux # time dd if=/dev/zero of=/dev/lp0 count=128
128+0 records in
128+0 records out
real 0m12.314s
user 0m0.000s
sys 0m1.020s
siemens:/usr/src/linux # rmmod lp && rmmod parport_pc
siemens:/usr/src/linux # insmod drivers/parport/parport_pc.o io=0x378 irq=7 dma=3
siemens:/usr/src/linux # insmod drivers/char/lp.o
siemens:/usr/src/linux # time dd if=/dev/zero of=/dev/lp0 count=128
128+0 records in
128+0 records out
real 0m13.255s
user 0m0.010s
sys 0m0.010s
Applying Philip's ECP Mode patch doesn't change the situation.
This indicats for me, that ECP DMA mode has the lowest system load, but also the
longest printing time.
However simplifying parport_pc_fifo_write_block_pio to no longer poll like in
the patch appended, brings down the system time for no_dma printing while
giveing a good speed:
siemens:/usr/src/linux # rmmod lp && rmmod parport_pc
siemens:/usr/src/linux # insmod drivers/parport/parport_pc.o io=0x378 irq=7 && insmod drivers/char/lp.o
siemens:/usr/src/linux # time dd if=/dev/zero of=/dev/lp0 count=128
128+0 records in
128+0 records out
real 0m12.480s
user 0m0.000s
sys 0m0.210s
Why does parport_pc_fifo_write_block_pio poll until the fifo is totally
empty? i.m.h.o. it should write to the fifo until it's full and then wait for
the fifo interrupt.
Bye
Uwe Bonnes bon@elektron.ikp.physik.tu-darmstadt.de
Free Software: If you contribute nothing, expect nothing
-- --- linux/drivers/parport/parport_pc.c~ Sun Mar 18 17:54:13 2001 +++ linux/drivers/parport/parport_pc.c Sun Mar 25 01:14:28 2001 @@ -547,6 +547,7 @@ /* Can't fail now. */ expire = jiffies + port->cad->timeout; +#if 0 poll: if (signal_pending (current)) break; @@ -571,6 +572,16 @@ byte = *bufp++; outb (byte, fifo); left--; +#else + if (signal_pending (current)) + break; + + if (!(ecrval & 0x02)) { + byte = *bufp++; + outb (byte, fifo); + left--; + } +#endif } return length - left;-- To unsubscribe, send mail to: linux-parport-request@torque.net -- -- with the single word "unsubscribe" in the body of the message. --
This archive was generated by hypermail 2b29 : Sat Mar 24 2001 - 19:16:39 EST