parallel cable transfer cleanup
This commit is contained in:
parent
ae413cee9c
commit
28e7c3682e
99
usb-driver.c
99
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 pp_transfer(WD_TRANSFER *tr, int fd, unsigned int request, unsigned char *wdioctl) {
|
||||||
int ret = 0;
|
int ret = 0;
|
||||||
|
unsigned long port = (unsigned long)tr->dwPort;
|
||||||
unsigned char val;
|
unsigned char val;
|
||||||
|
|
||||||
DPRINTF("dwPort: 0x%lx, cmdTrans: %lu, dwbytes: %ld, fautoinc: %ld, dwoptions: %ld\n",
|
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)
|
if (parportfd < 0)
|
||||||
return ret;
|
return ret;
|
||||||
|
|
||||||
switch((unsigned long)tr->dwPort - ppbase) {
|
if (port == ppbase + PP_DATA) {
|
||||||
case PP_DATA:
|
DPRINTF("data port\n");
|
||||||
DPRINTF("data port\n");
|
switch(tr->cmdTrans) {
|
||||||
switch(tr->cmdTrans) {
|
case PP_READ:
|
||||||
case PP_READ:
|
ret = 0; /* We don't support reading of the data port */
|
||||||
ret = 0; /* We don't support reading of the data port */
|
break;
|
||||||
break;
|
|
||||||
|
|
||||||
case PP_WRITE:
|
case PP_WRITE:
|
||||||
ret = ioctl(parportfd, PPWDATA, &val);
|
ret = ioctl(parportfd, PPWDATA, &val);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
fprintf(stderr,"!!!Unsupported TRANSFER command: %lu!!!\n", tr->cmdTrans);
|
fprintf(stderr,"!!!Unsupported TRANSFER command: %lu!!!\n", tr->cmdTrans);
|
||||||
ret = -1;
|
ret = -1;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
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_STATUS:
|
case PP_WRITE:
|
||||||
DPRINTF("status port\n");
|
ret = 0; /* Status Port is readonly */
|
||||||
switch(tr->cmdTrans) {
|
break;
|
||||||
case PP_READ:
|
|
||||||
ret = ioctl(parportfd, PPRSTATUS, &val);
|
|
||||||
break;
|
|
||||||
|
|
||||||
case PP_WRITE:
|
default:
|
||||||
ret = 0; /* Status Port is readonly */
|
fprintf(stderr,"!!!Unsupported TRANSFER command: %lu!!!\n", tr->cmdTrans);
|
||||||
break;
|
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;
|
||||||
|
|
||||||
default:
|
case PP_WRITE:
|
||||||
fprintf(stderr,"!!!Unsupported TRANSFER command: %lu!!!\n", tr->cmdTrans);
|
ret = ioctl(parportfd, PPWCONTROL, &val);
|
||||||
ret = -1;
|
break;
|
||||||
break;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
|
|
||||||
case PP_CONTROL:
|
default:
|
||||||
DPRINTF("control port\n");
|
fprintf(stderr,"!!!Unsupported TRANSFER command: %lu!!!\n", tr->cmdTrans);
|
||||||
switch(tr->cmdTrans) {
|
ret = -1;
|
||||||
case PP_READ:
|
break;
|
||||||
ret = ioctl(parportfd, PPRCONTROL, &val);
|
}
|
||||||
break;
|
} else {
|
||||||
|
DPRINTF("access to unsupported address range (probably ECP)!\n");
|
||||||
case PP_WRITE:
|
ret = 0;
|
||||||
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;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
tr->Data.Byte = val;
|
tr->Data.Byte = val;
|
||||||
|
Reference in New Issue
Block a user