From 28e7c3682ecc8082cd0b96c632860320be5cc71b Mon Sep 17 00:00:00 2001 From: michael Date: Sat, 17 Mar 2007 00:43:00 +0000 Subject: [PATCH 1/1] parallel cable transfer cleanup --- usb-driver.c | 111 ++++++++++++++++++++++++--------------------------- 1 file changed, 52 insertions(+), 59 deletions(-) diff --git a/usb-driver.c b/usb-driver.c index b4a1549..33268f0 100644 --- a/usb-driver.c +++ b/usb-driver.c @@ -239,6 +239,7 @@ int usb_deviceinfo(unsigned char *buf) { int pp_transfer(WD_TRANSFER *tr, int fd, unsigned int request, unsigned char *wdioctl) { int ret = 0; + unsigned long port = (unsigned long)tr->dwPort; unsigned char val; DPRINTF("dwPort: 0x%lx, cmdTrans: %lu, dwbytes: %ld, fautoinc: %ld, dwoptions: %ld\n", @@ -258,65 +259,57 @@ int pp_transfer(WD_TRANSFER *tr, int fd, unsigned int request, unsigned char *wd if (parportfd < 0) return ret; - switch((unsigned long)tr->dwPort - ppbase) { - case PP_DATA: - DPRINTF("data port\n"); - switch(tr->cmdTrans) { - case PP_READ: - ret = 0; /* We don't support reading of the data port */ - break; - - case PP_WRITE: - ret = ioctl(parportfd, PPWDATA, &val); - break; - - default: - fprintf(stderr,"!!!Unsupported TRANSFER command: %lu!!!\n", tr->cmdTrans); - ret = -1; - break; - } - break; - - case PP_STATUS: - DPRINTF("status port\n"); - switch(tr->cmdTrans) { - case PP_READ: - ret = ioctl(parportfd, PPRSTATUS, &val); - break; - - case PP_WRITE: - ret = 0; /* Status Port is readonly */ - break; - - default: - fprintf(stderr,"!!!Unsupported TRANSFER command: %lu!!!\n", tr->cmdTrans); - ret = -1; - break; - } - break; - - case PP_CONTROL: - DPRINTF("control port\n"); - switch(tr->cmdTrans) { - case PP_READ: - ret = ioctl(parportfd, PPRCONTROL, &val); - break; - - case PP_WRITE: - ret = ioctl(parportfd, PPWCONTROL, &val); - break; - - default: - fprintf(stderr,"!!!Unsupported TRANSFER command: %lu!!!\n", tr->cmdTrans); - ret = -1; - break; - } - break; - - default: - DPRINTF("access to unsupported address range (probably ECP)!\n"); - ret = 0; - break; + if (port == ppbase + PP_DATA) { + DPRINTF("data port\n"); + switch(tr->cmdTrans) { + case PP_READ: + ret = 0; /* We don't support reading of the data port */ + break; + + case PP_WRITE: + ret = ioctl(parportfd, PPWDATA, &val); + break; + + default: + fprintf(stderr,"!!!Unsupported TRANSFER command: %lu!!!\n", tr->cmdTrans); + ret = -1; + break; + } + } else if (port == ppbase + PP_STATUS) { + DPRINTF("status port\n"); + switch(tr->cmdTrans) { + case PP_READ: + ret = ioctl(parportfd, PPRSTATUS, &val); + break; + + case PP_WRITE: + ret = 0; /* Status Port is readonly */ + break; + + default: + fprintf(stderr,"!!!Unsupported TRANSFER command: %lu!!!\n", tr->cmdTrans); + ret = -1; + break; + } + } else if (port == ppbase + PP_CONTROL) { + DPRINTF("control port\n"); + switch(tr->cmdTrans) { + case PP_READ: + ret = ioctl(parportfd, PPRCONTROL, &val); + break; + + case PP_WRITE: + ret = ioctl(parportfd, PPWCONTROL, &val); + break; + + default: + fprintf(stderr,"!!!Unsupported TRANSFER command: %lu!!!\n", tr->cmdTrans); + ret = -1; + break; + } + } else { + DPRINTF("access to unsupported address range (probably ECP)!\n"); + ret = 0; } tr->Data.Byte = val; -- 2.39.2