From: michael Date: Sat, 17 Mar 2007 00:13:23 +0000 (+0000) Subject: cleanup parallel support a bit X-Git-Url: https://git.zerfleddert.de/cgi-bin/gitweb.cgi/usb-driver/commitdiff_plain/ae413cee9cf3329f517cbf61c12a8a9af2f8a0e1?hp=57fade8e359a0868939de153436a58bd7d0bd098 cleanup parallel support a bit --- diff --git a/usb-driver.c b/usb-driver.c index 1c5b18b..b4a1549 100644 --- a/usb-driver.c +++ b/usb-driver.c @@ -258,33 +258,65 @@ int pp_transfer(WD_TRANSFER *tr, int fd, unsigned int request, unsigned char *wd if (parportfd < 0) return ret; - switch(tr->cmdTrans) { - case 10: /* Read Byte */ - if ((unsigned long)tr->dwPort == ppbase) { /* Data Port */ - ret = 0; /* We don't support reading of the data port */ - } else if ((unsigned long)tr->dwPort == ppbase + 1) { /* Status Port */ - DPRINTF("status port\n"); - ret = ioctl(parportfd, PPRSTATUS, &val); - } else if ((unsigned long)tr->dwPort == ppbase + 2) { /* Control Port */ - DPRINTF("control port\n"); - ret = ioctl(parportfd, PPRCONTROL, &val); + 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 13: /* Write Byte */ - if ((unsigned long)tr->dwPort == ppbase) { /* Data Port */ - DPRINTF("data port\n"); - ret = ioctl(parportfd, PPWDATA, &val); - } else if ((unsigned long)tr->dwPort == ppbase + 1) { /* Status Port */ - ret = 0; /* Status Port is readonly */ - } else if ((unsigned long)tr->dwPort == ppbase + 2) { /* Control Port */ - DPRINTF("control port\n"); - ret = ioctl(parportfd, PPWCONTROL, &val); + 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; + 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: - fprintf(stderr,"!!!Unsupported TRANSFER command: %lu!!!\n", tr->cmdTrans); - ret = -1; - break; + DPRINTF("access to unsupported address range (probably ECP)!\n"); + ret = 0; + break; } tr->Data.Byte = val; diff --git a/usb-driver.h b/usb-driver.h index 77b60f2..187be1b 100644 --- a/usb-driver.h +++ b/usb-driver.h @@ -22,6 +22,12 @@ #define MAGIC 0xa410b413UL +#define PP_DATA 0 +#define PP_STATUS 1 +#define PP_CONTROL 2 +#define PP_READ 10 +#define PP_WRITE 13 + #define WDU_GET_MAX_PACKET_SIZE(x) ((unsigned short) (((x) & 0x7ff) * (1 + (((x) & 0x1800) >> 11)))) /* http://www.jungo.com/support/documentation/windriver/811/wdusb_man_mhtml/node78.html#SECTION001734000000000000000 */