1750899 - CANOSCAN N650U scanner device not correctly detected via USB

This commit is contained in:
Zdenek Dohnal 2020-10-09 09:14:16 +02:00
parent 71d240dca0
commit 52edec3410
2 changed files with 26 additions and 1 deletions

View File

@ -14,7 +14,7 @@
Summary: Scanner access software
Name: sane-backends
Version: 1.0.31
Release: 2%{?dist}
Release: 3%{?dist}
# lib/ is LGPLv2+, backends are GPLv2+ with exceptions
# Tools are GPLv2+, docs are public domain
# see LICENSE for details
@ -37,6 +37,8 @@ Patch1: sane-backends-1.0.23-soname.patch
Patch2: sane-backends-1.0.23-sane-config-multilib.patch
# saned manpage incomplete and exists when saned is not installed (#1515762)
Patch3: sane-backends-saned-manpage.patch
# 1750899 - CANOSCAN N650U scanner device not correctly detected via USB
Patch4: sane-plustek-add-1ms.patch
URL: http://www.sane-project.org
@ -155,6 +157,7 @@ access image acquisition devices available on the local host.
%patch1 -p1 -b .soname
%patch2 -p1 -b .sane-config-multilib
%patch3 -p1 -b .saned-manpage
%patch4 -p1 -b .sane-plustek-add-1ms
%build
CFLAGS="%optflags -fno-strict-aliasing"
@ -428,6 +431,9 @@ exit 0
%{_unitdir}/saned@.service
%changelog
* Fri Oct 09 2020 Zdenek Dohnal <zdohnal@redhat.com> - 1.0.31-3
- 1750899 - CANOSCAN N650U scanner device not correctly detected via USB
* Mon Sep 14 2020 Zdenek Dohnal <zdohnal@redhat.com> - 1.0.31-2
- make the base package depend on sane-airscan instead of libsane-airscan lib

View File

@ -0,0 +1,19 @@
diff --git a/backend/plustek-usbhw.c b/backend/plustek-usbhw.c
index 05d3cc7..28cbd52 100644
--- a/backend/plustek-usbhw.c
+++ b/backend/plustek-usbhw.c
@@ -1451,6 +1451,14 @@ usb_ResetRegisters( Plustek_Device *dev )
* CanoScan devices to work properly after power-up
*/
sanei_lm983x_write_byte( dev->fd, 0x5b, regs[0x5b] );
+
+ /* At least CanoScan N650U can have a problem with writing
+ * to register 0x59 due XHCI USB controller is too
+ * fast for him. Simulate EHCI USB controller's
+ * behavior here - wait 1ms.
+ */
+ usleep(1000);
+
sanei_lm983x_write_byte( dev->fd, 0x59, regs[0x59] );
sanei_lm983x_write_byte( dev->fd, 0x5a, regs[0x5a] );
} else {