On Sun, Oct 13, 2002 at 05:13:41PM +0100, Tim Waugh wrote:
> On Thu, Oct 10, 2002 at 09:31:38PM +0200, VOLTZ Stéphane wrote:
>
> > Here's the end of the strace:
> >
> >
> > ioctl(3, PPWDATA, 0xbffff39f) = 0
> > ioctl(3, PPWDATA, 0xbffff39f) = 0
> > ioctl(3, PPWDATA, 0xbffff39f) = 0
> > ioctl(3, PPWDATA, 0xbffff39f) = 0
> > ioctl(3, PPWDATA, 0xbffff39f) = 0
> > ioctl(3, PPRCONTROL, 0xbffff3a3) = 0
> > ioctl(3, PPRCONTROL, 0xbffff3a3) = 0
> > ioctl(3, PPWCONTROL, 0xbffff39f) = 0
> > ioctl(3, PPWCONTROL, 0xbffff39f) = 0
> > ioctl(3, PPRCONTROL, 0xbffff3a3) = 0
> > ioctl(3, PPWCONTROL, 0xbffff39f) = 0
> > ioctl(3, PPWCONTROL, 0xbffff39f) = 0
> > ioctl(3, PPWCONTROL, 0xbffff39f) = 0
> > ioctl(3, PPWCONTROL, 0xbffff39f) = 0
> > ioctl(3, PPWDATA, 0xbffff39f) = 0
> > ioctl(3, PPWDATA, 0xbffff39f) = 0
> > ioctl(3, PPWCONTROL, 0xbffff39f) = 0
> > ioctl(3, PPWDATA, 0xbffff7df) = 0
> > ioctl(3, PPWCONTROL, 0xbffff7df) = 0
> > ioctl(3, PPSETMODE, 0xbffff81c) = 0
> > write(3, "J", 1) = 0
> > ioctl(3, PPSETMODE, 0xbffff81c) = 0
> > write(3, "\0", 1) = 0
> > ioctl(3, PPSETMODE, 0xbffff818) = 0
> > write(3, "\r", 1) = 0
> > ioctl(3, PPDATADIR, 0xbffff818) = 0
> > ioctl(3, PPSETMODE, 0xbffff818) = 0
> > read(3, 0xbffff816, 1) = ? ERESTARTSYS (To be restarted)
> > --- SIGTERM (Terminated) ---
> > +++ killed by SIGTERM +++
> >
> >
> > And here's the affected code:
> >
> > breg = (unsigned char) (reg);
> > mode = IEEE1284_MODE_EPP | IEEE1284_ADDR;
> > rc = ioctl (fd, PPSETMODE, &mode);
> > if (rc)
> > DBG (0, "ppdev ioctl returned <%s> (%s:%d)\n", strerror (errno),
> > __FILE__, __LINE__);
> > rc = write (fd, &breg, 1);
> >
> > mode = 1; /* data_reverse */
> > rc = ioctl (fd, PPDATADIR, &mode);
> >
> > mode = IEEE1284_MODE_EPP | IEEE1284_DATA;
> > rc = ioctl (fd, PPSETMODE, &mode);
> > if (rc)
> > DBG (0, "ppdev ioctl returned <%s> (%s:%d)\n", strerror (errno),
> > __FILE__, __LINE__);
> > rc = read (fd, &bval, 1);
> > value = bval;
> >
> > mode = 0; /* forward */
> > rc = ioctl (fd, PPDATADIR, &mode); /* program blocks here */
>
> I think you mean that it blocks at the read(), a few lines above that.
>
You're right, I commented the wrong line.
> > Any suggestion ?
>
> Not really. You said that 'EPP' works but 'ECP+EPP' doesn't (in the
> BIOS). What are the 'dmesg' lines that parport logs for each of
> these?
>
> Tim.
> */
In fact I have:
+----------+--------------------+-------------------+
| | EPP IN BIOS | ECP/EPP IN BIOS |
+----------+--------------------+-------------------+
| 2.4.18 | OK | OK |
+----------+--------------------+-------------------+
| >2.4.18 | hangs | OK |
+----------+--------------------+-------------------+
dmesg output for parport 2.4.19-pre8, ECP/EPP in BIOS:
parport0: PC-style at 0x378 (0x778), irq 7, dma 3 [PCSPP,TRISTATE,COMPAT,EPP,ECP,DMA]
lp0: using parport0 (interrupt-driven).
dmesg output for parport 2.4.19-pre7, EPP in BIOS:
parport0: PC-style at 0x378 (0x778), irq 7 [PCSPP,TRISTATE,EPP]
lp0: using parport0 (interrupt-driven).
dmesg output for parport 2.4.18, ECP/EPP in BIOS:
parport0: PC-style at 0x378 (0x778), irq 7, dma 3 [PCSPP,TRISTATE,COMPAT,EPP,ECP,DMA]
lp0: using parport0 (interrupt-driven).
dmesg output for parport 2.4.18, EPP in BIOS:
parport0: PC-style at 0x378 [PCSPP,TRISTATE,EPP]
lp0: using parport0 (polling).
Could it be interrupt-related ? My 2.4.18 setting does not use IRQ in EPP
only mode, while 2.4.19 does.
Regards,
Stef
-- 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 : Wed Oct 16 2002 - 01:58:06 EDT