Merge branch 'xerox_mfp-no-usb-clear_halt-workaround' into 'master'

xerox_mfp: skip ENDPOINT CLEAR HALT command by default. #706

See merge request sane-project/backends!799
merge-requests/813/head
Alex Belkin 2023-11-03 04:19:53 +03:00
commit b38e620c23
2 zmienionych plików z 30 dodań i 2 usunięć

Wyświetl plik

@ -21,6 +21,21 @@
extern int sanei_debug_xerox_mfp;
static int
xerox_need_clear_halt()
{
char *env;
int workaround = 0;
env = getenv("SANE_XEROX_USB_HALT_WORKAROUND");
if (env) {
workaround = atoi(env);
DBG(5, "xerox_need_clear_halt: workaround: %d\n", workaround);
return workaround;
}
return 0;
}
int
usb_dev_request(struct device *dev,
SANE_Byte *cmd, size_t cmdlen,
@ -70,7 +85,9 @@ usb_dev_open(struct device *dev)
dev->dn = -1;
return status;
}
sanei_usb_clear_halt(dev->dn);
if (xerox_need_clear_halt()) {
sanei_usb_clear_halt(dev->dn);
}
return SANE_STATUS_GOOD;
}
@ -92,7 +109,9 @@ usb_dev_close(struct device *dev)
ret_cancel(dev, 0);
}
sanei_usb_clear_halt(dev->dn); /* unstall for next users */
if (xerox_need_clear_halt()) {
sanei_usb_clear_halt(dev->dn); /* unstall for next users */
}
sanei_usb_close(dev->dn);
dev->dn = -1;
}

Wyświetl plik

@ -178,6 +178,15 @@ setting the environment variable
to 1. This may work around issues which happen with particular kernel
versions. Example:
.I export SANE_USB_WORKAROUND=1.
.TP
.B SANE_XEROX_USB_HALT_WORKAROUND
If your old (pre-2010) Xerox / Samsung / HP scanner is detected
only once and subsequent usage requires replugging the cable, try
setting the environment variable
.B SANE_XEROX_USB_HALT_WORKAROUND
to 1. This may work around issues which happen with particular USB
controllers. Example:
.I export SANE_XEROX_USB_HALT_WORKAROUND=1.
.SH "SEE ALSO"
.BR sane (7),