X-Git-Url: http://git.zerfleddert.de/cgi-bin/gitweb.cgi/usb-driver/blobdiff_plain/e6293f4578d239b5616a72b6658804b7420c473a..3b1b5fa8abd003d16dff62d998d3660c24c5bd8b:/usb-driver.c diff --git a/usb-driver.c b/usb-driver.c index fa2611e..7efb628 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 FORCE_PC3_IDENT + val &= 95; + if (last_pp_write & 64) + val |= 32; + else + val |= 128; +#endif break; case PP_WRITE: @@ -345,7 +354,7 @@ int do_wdioctl(int fd, unsigned int request, unsigned char *wdioctl) { switch(request & ~(0xc0000000)) { case VERSION: version = (struct version_struct*)(wdheader->data); - strcpy(version->version, "WinDriver no more"); + strcpy(version->version, "libusb-driver.so $Revision: 1.59 $"); version->versionul = 802; DPRINTF("VERSION\n"); break;