X-Git-Url: http://git.zerfleddert.de/cgi-bin/gitweb.cgi/usb-driver/blobdiff_plain/7824bbf66ef9cc123dfdb2653983fcc1cac07860..cdc9c5bf0932e07ed1a19bd7315bad79a2a41b4c:/usb-driver.c diff --git a/usb-driver.c b/usb-driver.c index fa2611e..c497b50 100644 --- a/usb-driver.c +++ b/usb-driver.c @@ -241,6 +241,7 @@ int pp_transfer(WD_TRANSFER *tr, int fd, unsigned int request, unsigned char *wd int ret = 0; unsigned long port = (unsigned long)tr->dwPort; unsigned char val; + static int last_pp_write = 0; DPRINTF("dwPort: 0x%lx, cmdTrans: %lu, dwbytes: %ld, fautoinc: %ld, dwoptions: %ld\n", (unsigned long)tr->dwPort, tr->cmdTrans, tr->dwBytes, @@ -268,6 +269,7 @@ int pp_transfer(WD_TRANSFER *tr, int fd, unsigned int request, unsigned char *wd case PP_WRITE: ret = ioctl(parportfd, PPWDATA, &val); + last_pp_write = val; break; default: @@ -276,10 +278,17 @@ int pp_transfer(WD_TRANSFER *tr, int fd, unsigned int request, unsigned char *wd break; } } else if (port == ppbase + PP_STATUS) { - DPRINTF("status port\n"); + DPRINTF("status port (last write: %d)\n", last_pp_write); switch(tr->cmdTrans) { case PP_READ: ret = ioctl(parportfd, PPRSTATUS, &val); +#ifdef TRENZ + val &= 95; + if (last_pp_write & 64) + val |= 32; + else + val |= 128; +#endif break; case PP_WRITE: