1 /*.............................................................................
2  * Project : SANE library for Plustek flatbed scanners.
3  *.............................................................................
4  */
5 
6 /** @file plustek-usbdevs.c
7  *  @brief Here we have our USB device definitions.
8  *
9  * Based on sources acquired from Plustek Inc.<br>
10  * Copyright (C) 2001-2013 Gerhard Jaeger <gerhard@gjaeger.de>
11  *
12  * History:
13  * - 0.40 - starting version of the USB support
14  * - 0.41 - added EPSON1250 entries
15  *        - changed reg 0x58 of EPSON Hw0x04B8_0x010F to 0x0d
16  *        - reduced memory size of EPSON to 512
17  *        - adjusted tpa origin of UT24
18  * - 0.42 - added register 0x27, 0x2c-0x37
19  *        - tweaked EPSON1250 settings according to Gene and Reinhard
20  *        - tweaked HP2200 settings according to Stefan
21  *        - added UMAX 3400 entries
22  *        - added HP2100 settings according to Craig Smoothey
23  *        - added LM9832 based U24
24  *        - added Canon N650U entry
25  * - 0.43 - tweaked HP 2200C entries
26  *        - added _WAF_MISC_IO5 for HP lamp switching
27  *        - added motor profiles
28  *        - cleanup
29  * - 0.44 - added EPSON 1260 and 660
30  *        - added Genius Model strings
31  *        - added Canon N670U entry
32  *        - added bStepsToReverse to the HwDesc structure
33  *        - tweaked EPSON1250 settings for TPA (thanks to Till Kamppeter)
34  * - 0.45 - added UMAX motor settings
35  *        - added UMAX 5400 settings
36  *        - added CanoScan1240 settings (thanks to Johann Philipp)
37  *        - tweaked EPSON 1260 settings
38  *        - removed EPSON 660 stuff
39  *        - added Canon 1220U entry
40  *        - added entry for Compaq S4-100
41  * - 0.46 - fine-tuning for the CanoScan devices
42  *        - fixed HP2200 shading position
43  *        - renamed to plustek-usbdevs.c
44  * - 0.47 - added BearPaw 1200 settings for PID 0x4001 (LM9832)
45  *        - tweaked the LiDE20 MCLK setting for 75DPI grayscale
46  *        - enlarged the scan-area of the UMAX3400 to 11.7"
47  *        - added CanoScan D660U
48  * - 0.48 - added another incarnation of the UMAX 3400
49  *        - added parameters for UMAX 3450 TPA
50  *        - parameter tuning for CanoScan D660U
51  *        - cleanup
52  * - 0.49 - tweaked motor settings for EPSON and CANON1200
53  *        - added support for CanoScan LiDE25
54  * - 0.50 - cleanup
55  *        - removed obsolete _WAF_BLACKFINE
56  *        - LiDE20 does not seem to have a reliable black calibration area
57  *          so the devices now will switch off the lamp for dark calibration
58  *        - added Stephan Februarys' <stephanf@singnet.com.sg> LiDE25 changes
59  *        - fixed high-speed feature of CanoScan D660U
60  *        - tweaked LiDE25, LiDE30 and N1220U settings
61  *        - changed high-speed setting for UMAX 3400, due to bugreport #302317
62  *        - fixed CanoScan N650U settings
63  *        - fixed CanoScan N670U settings, see (bugreport #302738)
64  *        - added high-speed setting for HP2200
65  * - 0.51 - tweaked CanoScan N1220U settings again
66  *        - added settings for Syscan TravelScan 662
67  *        - tweaked settings for Bearpaw 1200
68  *        - fixed CanoScan LiDE20 settings, cause of various reports, seems
69  *          Canon has built-in different motortypes
70  *        - also fixed Motorsettings for LiDE30
71  * - 0.52 - added Q-Scan USB001 settings
72  *        - added Q-Scan USB201 settings (thanks to Hiroshi Miura)
73  *        - tweaked motor settings for Bearpaw 1200
74  *        - added TravelScan 464 settings
75  *        - tweaked highspeed motor settings for Epson 1260
76  *        - tweaked CanoScan N650U motor settings
77  *
78  * <hr>
79  * This file is part of the SANE package.
80  *
81  * This program is free software; you can redistribute it and/or
82  * modify it under the terms of the GNU General Public License as
83  * published by the Free Software Foundation; either version 2 of the
84  * License, or (at your option) any later version.
85  *
86  * This program is distributed in the hope that it will be useful, but
87  * WITHOUT ANY WARRANTY; without even the implied warranty of
88  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
89  * General Public License for more details.
90  *
91  * You should have received a copy of the GNU General Public License
92  * along with this program.  If not, see <https://www.gnu.org/licenses/>.
93  *
94  * As a special exception, the authors of SANE give permission for
95  * additional uses of the libraries contained in this release of SANE.
96  *
97  * The exception is that, if you link a SANE library with other files
98  * to produce an executable, this does not by itself cause the
99  * resulting executable to be covered by the GNU General Public
100  * License.  Your use of that executable is in no way restricted on
101  * account of linking the SANE library code into it.
102  *
103  * This exception does not, however, invalidate any other reasons why
104  * the executable file might be covered by the GNU General Public
105  * License.
106  *
107  * If you submit changes to SANE to the maintainers to be included in
108  * a subsequent release, you agree by submitting the changes that
109  * those changes may be distributed with this exception intact.
110  *
111  * If you write modifications of your own for SANE, it is your choice
112  * whether to permit this exception to apply to your modifications.
113  * If you do not wish that, delete this exception notice.
114  * <hr>
115  */
116 
117 /* the other stuff is included by plustek.c ...*/
118 #include "plustek-usb.h"
119 
120 /** for Register 0x26
121  */
122 #define _ONE_CH_COLOR 0x04
123 #define _RED_CH       0x00
124 #define _GREEN_CH     0x08
125 #define _BLUE_CH      0x10
126 
127 
128 /* Plustek Model: UT12/UT16
129  * KH: NS9831 + TPA + Button + NEC3799
130  */
131 static DCapsDef Cap0x07B3_0x0017_0 =
132 {
133 	{	/* Normal */
134 		{0, 93},        /* DataOrigin (X: 0, Y: 8mm from home) */
135 		0, -1,          /* ShadingOriginY, DarkShadOrgY        */
136 		{2550, 3508},   /* Size                                */
137 		{50, 50}       /* MinDpi                              */
138 	},
139 	{	/* Positive */
140 		{1040 + 15, 744 - 32},/* DataOrigin (X: 7cm + 1.8cm, Y: 8mm + 5.5cm)*/
141 		543, -1,              /* ShadingOriginY (Y: 8mm + 3.8cm)     */
142 		{473, 414},           /* Size (X: 4cm, Y: 3.5cm)             */
143 		{150, 150}           /* MinDpi                              */
144 	},
145 	{	/* Negative */
146 		{1004 + 55, 744 + 12},	/* DataOrigin (X: 7cm + 1.5cm, Y: 8mm + 5.5cm)*/
147 
148 		/* 533 blaustichig */
149 		537 /* hell */
150 		/* 543 gruenstichig  */
151 
152 		/*543*/, -1,    /* ShadingOriginY (Y: 8mm + 3.8cm)     */
153 		{567, 414},     /* Size	(X: 4.8cm, Y: 3.5cm)           */
154 		{150, 150}     /* MinDpi                              */
155 	},
156 	{	/* Adf */
157 		{0, 95},        /* DataOrigin (X: 0, Y: 8mm from home) */
158 		0, -1,          /* ShadingOriginY, DarkShadOrgY        */
159 		{2550, 3508},   /* Size                                */
160 		{50, 50}        /* MinDpi                              */
161 	},
162 	{600, 600},                                   /* OpticDpi */
163 	DEVCAPSFLAG_Positive + DEVCAPSFLAG_Negative,  /* wFlags   */
164 	SENSORORDER_rgb,    /* bSensorOrder    */
165 	4,                  /* bSensorDistance */
166 	4,                  /* bButtons        */
167 	kNEC3799,           /* bCCD            */
168 	0x07,               /* bPCB            */
169 	_WAF_NONE,          /* no workarounds or other special stuff needed */
170  	_NO_MIO             /* does not use misc I/O for lamp               */
171 };
172 
173 /* Plustek Model: U24
174  * Description of the entries, see above...
175  */
176 static DCapsDef Cap0x07B3_0x0015_0 =
177 {
178 	{{0, 93},               0,   -1, {2550, 3508}, { 50,  50}},
179 	{{1040 + 15, 744 - 32},	543, -1, {473, 414},   {150, 150}},
180 	{{1004 + 20, 744 + 32},	543, -1, {567, 414},   {150, 150}},
181 	{{0, 95},               0,   -1, {2550, 3508}, { 50,  50}},
182 	{600, 600},
183 	0,
184 	SENSORORDER_rgb,
185 	4, 4, kNEC3799, 0x05, _WAF_NONE, _NO_MIO
186 };
187 
188 /* Plustek Model: ???
189  * KH: NS9831 + TPA + Button + NEC3799
190  */
191 static DCapsDef Cap0x07B3_0x0014_0 =
192 {
193 	{{0, 93},               0,   -1, {2550, 3508}, { 50,  50}},
194 	{{1040 + 15, 744 - 32},	543, -1, {473, 414},   {150, 150}},
195 	{{1004 + 20, 744 + 32},	543, -1, {567, 414},   {150, 150}},
196 	{{0, 95},               0,   -1, {2550, 3508}, { 50,  50}},
197 	{600, 600},
198 	0,
199 	SENSORORDER_rgb,
200 	4, 0, kNEC3799, 0x04, _WAF_NONE, _NO_MIO
201 };
202 
203 /* Plustek Model: ??? and Genius ColorPage-HR6 V2
204  * KH: NS9831 + TPA + Button + NEC3799
205 */
206 static DCapsDef Cap0x07B3_0x0007_0 =
207 {
208 	{{0,    124},  36, -1, {2550, 3508}, { 50, 50 }},
209 	{{1040, 744}, 543, -1, { 473, 414 }, {150, 150}},
210 	{{1004, 744}, 543, -1, { 567, 414 }, {150, 150}},
211 	{{0,     95},	0, -1, {2550, 3508}, { 50, 50 }},
212 	{600, 600},
213 	DEVCAPSFLAG_Positive + DEVCAPSFLAG_Negative,
214 	SENSORORDER_rgb,
215 	4, 5, kNEC3799, 0x07, _WAF_NONE, _NO_MIO
216 };
217 
218 /* Plustek Model: ???
219  * Tokyo: NS9832 + Button + SONY548
220  */
221 static DCapsDef Cap0x07B3_0x0005_2 =
222 {
223 	{{ 0, 64}, 0, -1, {2550, 3508}, { 50, 50 }},
224 	{{ 0,  0}, 0, -1, {0, 0}, { 0, 0 }},
225 	{{ 0,  0}, 0, -1, {0, 0}, { 0, 0 }},
226 	{{ 0,  0}, 0, -1, {0, 0}, { 0, 0 }},
227 	{600, 600},
228 	0,
229 	SENSORORDER_rgb,
230 	8, 2, kSONY548, 0x05, _WAF_NONE, _NO_MIO
231 };
232 
233 /* Genius ColorPage-HR7
234  * Hualien: NS9832 + TPA + Button + NEC3778
235  */
236 static DCapsDef Cap0x07B3_0x0007_4 =
237 {
238 	{{       0,  111 - 4 },	  0, -1, {2550, 3508}, { 50, 50 }},
239 	{{1040 + 5,  744 - 32}, 543, -1, { 473, 414 }, {150, 150}},
240 	{{1040 - 20, 768     },	543, -1, { 567, 414 }, {150, 150}},
241 	{{        0, 95      },   0, -1, {2550, 3508}, { 50, 50 }},
242 	{1200, 1200},
243 	DEVCAPSFLAG_Positive + DEVCAPSFLAG_Negative,
244 	SENSORORDER_rgb,
245 	12,	5, kNEC3778, 0x07, _WAF_NONE, _NO_MIO
246 };
247 
248 /* Genius ColorPage-HR7LE and ColorPage-HR6X
249  * Hualien: NS9832 + Button + NEC3778
250  */
251 static DCapsDef Cap0x07B3_0x0005_4 =
252 {
253 	{{ 0,  111 - 4 }, 0, -1, {2550, 3508}, {50, 50}},
254 	{{ 0,  0}, 0, -1, {0, 0}, { 0, 0 }},
255 	{{ 0,  0}, 0, -1, {0, 0}, { 0, 0 }},
256 	{{ 0,  0}, 0, -1, {0, 0}, { 0, 0 }},
257 	{1200, 1200},
258 	0,
259 	SENSORORDER_rgb,
260 	12, 5, kNEC3778, 0x05, _WAF_NONE, _NO_MIO
261 };
262 
263 /* Plustek Model: ???, Genius ColorPage HR6A
264  * KH: NS9831 + TPA + Button + NEC3799
265  */
266 static DCapsDef Cap0x07B3_0x000F_0 =
267 {
268 	{{   0, 130},  12, -1, {2550, 3508}, { 50, 50 }},
269 	{{1040, 744}, 543, -1, { 473, 414 }, {150, 150}},
270 	{{1004, 744}, 543, -1, { 567, 414 }, {150, 150}},
271 	{{   0, 244},  12, -1, {2550, 4200}, { 50, 50 }},
272 	{600, 600},
273 	DEVCAPSFLAG_Normal + DEVCAPSFLAG_Adf,
274 	SENSORORDER_rgb,
275 	4, 5, kNEC3799, 0x0F, _WAF_NONE, _NO_MIO
276 };
277 
278 /* Plustek Model: UT12
279  * KH: NS9831 + TPA + Button + NEC3799
280  */
281 static DCapsDef Cap0x07B3_0x0013_0 =
282 {
283 	{{        0,       93},   0, -1, {2550, 3508}, { 50,  50}},
284 	{{1040 + 15, 744 - 32}, 543, -1, { 473,  414}, {150, 150}},
285 	{{1004 + 30, 744 + 32},	543, -1, { 567,  414}, {150, 150}},
286 	{{        0,       95},   0, -1, {2550, 3508}, { 50,  50}},
287 	{600, 600},
288 	DEVCAPSFLAG_Positive + DEVCAPSFLAG_Negative,
289 	SENSORORDER_rgb,
290 	4, 4, kNEC3799, 0x03, _WAF_NONE, _NO_MIO
291 };
292 
293 /* Plustek Model: U24
294  * KH: NS9831 + Button + NEC3799
295 //  */
296 static DCapsDef Cap0x07B3_0x0011_0 =
297 {
298 	{{        0,       93},   0, -1, {2550, 3508}, { 50,  50}},
299 	{{1040 + 15, 744 - 32},	543, -1, { 473,  414}, {150, 150}},
300 	{{1004 + 20, 744 + 32}, 543, -1, { 567,  414}, {150, 150}},
301 	{{        0,       95},   0, -1, {2550, 3508}, { 50,  50}},
302 	{600, 600},
303 	0,
304 	SENSORORDER_rgb,
305 	4, 4, kNEC3799, 0x01, _WAF_NONE, _NO_MIO
306 };
307 
308 /* Plustek Model: U12
309  * KH: NS9831 + TPA + Button + NEC3799
310  */
311 static DCapsDef Cap0x07B3_0x0010_0 =
312 {
313 	{{        0,       93},   0, -1, {2550, 3508}, { 50,  50}},
314 	{{1040 + 15, 744 - 32},	543, -1, { 473,  414}, {150, 150}},
315 	{{1004 + 20, 744 + 32}, 543, -1, { 567,  414}, {150, 150}},
316 	{{        0,       95},	  0, -1, {2550, 3508}, { 50,  50}},
317 	{600, 600},
318 	0,
319 	SENSORORDER_rgb,
320 	4, 0, kNEC3799, 0x00, _WAF_BSHIFT7_BUG, _NO_MIO
321 };
322 
323 /* Plustek Model: ???
324  * KH: NS9831 + TPA + Button + NEC3778
325  */
326 static DCapsDef Cap0x07B3_0x0013_4 =
327 {
328 	{{        0, 99 /*114*/},   0, -1, {2550, 3508}, { 50,  50}},
329 	{{     1055,   744 - 84}, 543, -1, { 473,  414}, {150, 150}},
330 	{{1004 + 20,   744 - 20}, 543, -1, { 567,  414}, {150, 150}},
331 	{{        0,         95},   0, -1, {2550, 3508}, { 50,  50}},
332 	{1200, 1200},
333 	DEVCAPSFLAG_Positive + DEVCAPSFLAG_Negative,
334 	SENSORORDER_rgb,
335 	12, 4, kNEC3778, 0x03, _WAF_NONE, _NO_MIO
336 };
337 
338 /* Plustek Model: ???
339  * KH: NS9831 + Button + NEC3778
340  */
341 static DCapsDef Cap0x07B3_0x0011_4 =
342 {
343 	{{        0, 99 /*114*/},   0, -1, {2550, 3508}, { 50,  50}},
344 	{{     1055,   744 - 84}, 543, -1, { 473,  414}, {150, 150}},
345 	{{1004 + 20,   744 - 20}, 543, -1 ,{ 567,  414}, {150, 150}},
346 	{{        0,         95},   0, -1, {2550, 3508}, { 50,  50}},
347 	{1200, 1200},
348 	0,
349 	SENSORORDER_rgb,
350 	12, 4, kNEC3778, 0x01, _WAF_NONE, _NO_MIO
351 };
352 
353 /* Plustek Model: ???
354  * KH: NS9831 + TPA + Button + NEC3778
355  */
356 static DCapsDef Cap0x07B3_0x0010_4 =
357 {
358 	{{        0, 99 /*114*/},   0, -1, {2550, 3508}, { 50,  50}},
359 	{{     1055,   744 - 84}, 543, -1, { 473,  414}, {150, 150}},
360 	{{1004 + 20,   744 - 20}, 543, -1, { 567,  414}, {150, 150}},
361 	{{        0,         95},   0, -1, {2550, 3508}, { 50,  50}},
362 	{1200, 1200},
363 	0,
364 	SENSORORDER_rgb,
365 	12, 0, kNEC3778, 0x00, _WAF_NONE, _NO_MIO
366 };
367 
368 /* Plustek Model: UA18?
369  * KH: NS9831 + TPA + Button + NEC3778
370  */
371 static DCapsDef Cap0x07B3_0x000F_4 =
372 {
373 	{{        0,      107},   0, -1, {2550, 3508}, { 50,  50}},
374 	{{ 1040 + 5, 744 - 32}, 543, -1, { 473,  414}, {150, 150}},
375 	{{1040 - 20,      768}, 543, -1, { 567,  414}, {150, 150}},
376 	{{        0,      244},   0, -1, {2550, 4200}, { 50,  50}},
377 	{1200, 1200},
378 	DEVCAPSFLAG_Normal + DEVCAPSFLAG_Adf,
379 	SENSORORDER_rgb,
380 	12, 5, kNEC3778, 0x0F, _WAF_NONE, _NO_MIO
381 };
382 
383 /* Plustek Model: ???
384  * KH: NS9831 + TPA + Button + NEC3778
385  */
386 static DCapsDef Cap0x07B3_0x0016_4 =
387 {
388 	{{   0,  93},   0, -1, {2550, 3508}, { 50,  50}},
389 	{{ 954, 422}, 272, -1, { 624, 1940}, {150, 150}},
390 	{{1120, 438}, 275, -1, { 304, 1940}, {150, 150}},
391 	{{   0,  95},   0, -1, {2550, 3508}, { 50,  50}},
392 	{1200, 1200},
393 	DEVCAPSFLAG_Positive + DEVCAPSFLAG_Negative,
394 	SENSORORDER_rgb,
395 	12, 4, kNEC3778, 0x06, _WAF_NONE, _NO_MIO
396 };
397 
398 /* Plustek Model: UT24
399  * KH: NS9832 + TPA + Button + NEC3778
400  */
401 static DCapsDef Cap0x07B3_0x0017_4 =
402 {
403 	{{             0,  99 - 6},	    0, -1, {2550, 3508}, { 50,  50}},
404 	{{1025 /*1055*/, 744 - 84},   543, -1, { 473,  414}, {150, 150}},
405 	{{1048 /*1024*/, 754/*724*/}, 543, -1, { 567,  414}, {150, 150}},
406 	{{            0,       95},     0, -1, {2550, 3508}, { 50,  50}},
407 	{1200, 1200},
408 	DEVCAPSFLAG_Positive + DEVCAPSFLAG_Negative,
409 	SENSORORDER_rgb,
410 	12, 4, kNEC3778, 0x07, _WAF_NONE, _NO_MIO
411 };
412 
413 /* Plustek Model: U24
414  * KH: NS9832 + Button + NEC3778
415  */
416 static DCapsDef Cap0x07B3_0x0015_4 =
417 {
418 	{{        0,   99 - 6},   0, -1, {2550, 3508}, { 50,  50}},
419 	{{     1055, 744 - 84}, 543, -1, { 473,  414}, {150, 150}},
420 	{{1004 + 20, 744 - 20}, 543, -1, { 567,  414}, {150, 150}},
421 	{{        0,       95},   0, -1, {2550, 3508}, { 50,  50}},
422 	{1200, 1200},
423 	0,
424 	SENSORORDER_rgb,
425 	12, 4, kNEC3778, 0x05, _WAF_NONE, _NO_MIO
426 };
427 
428 /* Plustek Model: ???
429  * KH: NS9832 + TPA + Button + NEC3778
430  */
431 static DCapsDef Cap0x07B3_0x0014_4 =
432 {
433 	{{        0,   99 - 6},   0, -1, {2550, 3508}, { 50,  50}},
434 	{{     1055, 744 - 84}, 543, -1, { 473,  414}, {150, 150}},
435 	{{1004 + 20, 744 - 20},	543, -1, { 567,  414}, {150, 150}},
436 	{{        0,       95},   0, -1, {2550, 3508}, { 50,  50}},
437 	{1200, 1200},
438 	0,
439 	SENSORORDER_rgb,
440 	12, 0, kNEC3778, 0x04, _WAF_NONE, _NO_MIO
441 };
442 
443 /* Plustek Model: ??? A3 model
444  * KH: NS9831 + TPA + Button + SONY518
445  */
446 static DCapsDef Cap0x07B3_0x0014_1 =
447 {
448 	{{        0,       93},   0, -1, {3600, 5100}, { 50,  50}},
449 	{{1040 + 15, 744 - 32}, 543, -1, { 473,  414}, {150, 150}},
450 	{{1004 + 20, 744 + 32}, 543, -1, { 567,  414}, {150, 150}},
451 	{{        0,       95},   0, -1, {2550, 3508}, { 50,  50}},
452 	{400, 400},
453 	0,
454 	SENSORORDER_rgb,
455 	8, 0, kSONY518, 0x04, _WAF_NONE, _NO_MIO
456 };
457 
458 /* Model: ???
459  * KH: NS9832 + NEC3799 + 600 DPI Motor (for Brother demo only)
460  */
461 static DCapsDef Cap0x07B3_0x0012_0 =
462 {
463 	{{        0,       93},   0, -1, {2550, 3508}, { 50,  50}},
464 	{{1040 + 15, 744 - 32},	543, -1, { 473,  414}, {150, 150}},
465 	{{1004 + 20, 744 + 32}, 543, -1, { 567,  414}, {150, 150}},
466 	{{        0,       95},   0, -1, {2550, 3508}, { 50,  50}},
467 	{600, 600},
468 	0,
469 	SENSORORDER_rgb,
470 	4, 0, kNEC3799, 0x02, _WAF_NONE, _NO_MIO
471 };
472 
473 /* Plustek Model: ???
474  * KH: NS9831 + TPA + Button + SONY548
475  */
476 static DCapsDef Cap0x07B3_0x0017_2 =
477 {
478 	{{        0,       93},   0, -1, {2550, 3508}, { 50,  50}},
479 	{{1040 + 15, 744 - 32}, 543, -1, { 473,  414}, {150, 150}},
480 	{{     1004,      744},	543, -1, { 567,  414}, {150, 150}},
481 	{{        0,       95},   0, -1, {2550, 3508}, { 50,  50}},
482 	{600, 600},
483 	DEVCAPSFLAG_Positive + DEVCAPSFLAG_Negative,
484 	SENSORORDER_bgr,
485 	8, 4, kSONY548, 0x07, _WAF_NONE, _NO_MIO
486 };
487 
488 /* Plustek Model: ???
489  * KH: NS9831 + TPA + Button + NEC3799
490  */
491 static DCapsDef Cap0x07B3_0x0017_3 =
492 {
493 	{{        0,       93},   0, -1, {2550, 3508}, { 50,  50}},
494 	{{1040 + 15, 744 - 32}, 543, -1, { 473,  414}, {150, 150}},
495 	{{1004 + 30, 744 + 32}, 543, -1, { 567,  414}, {150, 150}},
496 	{{        0,       95},   0, -1, {2550, 3508}, { 50,  50}},
497 	{600, 600},
498 	DEVCAPSFLAG_Positive + DEVCAPSFLAG_Negative,
499 	SENSORORDER_rgb,
500 	8, 4, kNEC8861, 0x07, _WAF_NONE, _NO_MIO
501 };
502 
503 /* Model: HP Scanjet 2100c */
504 static DCapsDef Cap0x03F0_0x0505 =
505 {
506 	{{ 0,  65}, 10, -1, {2550, 3508}, { 50,  50}},
507 	{{ 0,   0},  0, -1, {0, 0}, { 0, 0 }},
508 	{{ 0,   0},  0, -1, {0, 0}, { 0, 0 }},
509 	{{ 0,   0},  0, -1, {0, 0}, { 0, 0 }},
510 	{600, 600},
511 	0,
512 	SENSORORDER_rgb,
513 	4, 0, kNECSLIM, 0x00, _WAF_NONE, _NO_MIO
514 };
515 
516 /* Model: HP Scanjet 2200c (thanks to Stefan Nilsen)
517  * NS9832 + 2 Buttons + NEC3799 + 600 DPI Motor
518  */
519 static DCapsDef Cap0x03F0_0x0605 =
520 {
521 	/* DataOrigin (x, y), ShadingOriginY */
522 	{{ 0, 209},  40, -1, {2550, 3508}, { 50,  50}},
523 	{{ 0,   0},   0, -1, {0, 0}, { 0, 0 }},
524 	{{ 0,   0},   0, -1, {0, 0}, { 0, 0 }},
525 	{{ 0,   0},   0, -1, {0, 0}, { 0, 0 }},
526 	{600, 600},
527 	0,
528 	SENSORORDER_rgb,
529 	4, 2, kNECSLIM, 0x00, _WAF_NONE, _NO_MIO
530 };
531 
532 /* Mustek BearPaw 1200 (thanks to Henning Meier-Geinitz)
533  * NS9831 + 5 Buttons + NEC3798
534  */
535 static DCapsDef Cap0x0400_0x1000_0 =
536 {
537 	{{ 0, 130}, 20, -1, {2550, 3508}, { 50, 50 }},
538 	{{ 0,  0},   0, -1, {0, 0}, { 0, 0 }},
539 	{{ 0,  0},   0, -1, {0, 0}, { 0, 0 }},
540 	{{ 0,  0},   0, -1, {0, 0}, { 0, 0 }},
541 	{600, 600},
542 	0,
543 	SENSORORDER_rgb,
544 	8,
545 	5, kNEC8861, 0x00,
546 	_WAF_MISC_IO_LAMPS | _WAF_LOFF_ON_START | _WAF_USE_ALT_DESC,
547 	_NO_MIO
548 };
549 
550 /* Mustek BearPaw 2400
551  * NS9832 + 5 Buttons + SONY548
552  */
553 static DCapsDef Cap0x0400_0x1001_0 =
554 {
555 	{{ 0, 130/*209*/}, 35/*20*/, -1, {2550, 3508}, { 50, 50 }},
556 	{{ 0,  0}, 0, -1, {0, 0}, { 0, 0 }},
557 	{{ 0,  0}, 0, -1, {0, 0}, { 0, 0 }},
558 	{{ 0,  0}, 0, -1, {0, 0}, { 0, 0 }},
559 	{ 600, 600 }, /*{ 1200, 1200 }, */
560 	0,
561 	SENSORORDER_rgb,
562 	4,/*16*/            /* sensor distance   */
563 	5,                  /* number of buttons */
564 	kSONY548,           /* CCD type          */
565 	0, _WAF_USE_ALT_DESC, _NO_MIO
566 };
567 
568 /* Epson Perfection/Photo1250 (thanks to Gene Heskett and Reinhard Max)
569  * Epson Perfection/Photo1260 (thanks to Till Kamppeter)
570  * NS9832 + 4 Buttons + CCD????
571  */
572 static DCapsDef Cap0x04B8_0x010F =
573 {
574 	/* Normal */
575 	{{   25,   85},  10, -1, {2550, 3508}, { 100, 100 }},
576 	/* Positive */
577 	{{ 1100,  972}, 720, -1, { 473,  414}, { 150, 150 }},
578 	/* Negative */
579 	{{ 1116, 1049}, 720, -1, { 567,  414}, { 150, 150 }},
580 	{{ 0,  0},   0, -1, {0, 0}, { 0, 0 }},
581 	{1200, 1200},
582 	0,
583 	SENSORORDER_rgb,
584 	8,                  /* sensor distance                         */
585 	4,                  /* number of buttons                       */
586 	kEPSON,             /* use default settings during calibration */
587 	0,                  /* not used here...                        */
588 	_WAF_MISC_IO_LAMPS, /* use miscio 6 for lamp switching         */
589 	_MIO6 + _TPA(_MIO1) /* and miscio 1 for optional TPA           */
590 };
591 
592 /* Umax 3400/3450
593  */
594 static DCapsDef Cap0x1606_0x0060 =
595 {
596 	/* Normal */
597 	{{  30, 105 },  15, -1, {2550, 3508}, { 100, 100 }},
598 	/* Positive */
599 	{{ 700, 760 }, 650, -1, {1200, 1500}, { 150, 150 }},
600 	/* Negative */
601 	{{ 700, 760 }, 650, -1, {1200, 1500}, { 150, 150 }},
602 	{{   0,   0 },   0, -1, {0, 0}, { 0, 0 }},
603 	{600, 600},
604 	DEVCAPSFLAG_LargeTPA,
605 	SENSORORDER_bgr,
606 	8,                  /* sensor distance                         */
607 	4,                  /* number of buttons                       */
608 	kNEC8861,           /* use default settings during calibration */
609 	0,                  /* not used here...                        */
610 	_WAF_MISC_IO_LAMPS, /* use miscio 3 for lamp switching         */
611 	_MIO3 + _TPA(_MIO6) /* and miscio 6 for optional TPA           */
612 };
613 
614 /* Umax 5400
615  */
616 static DCapsDef Cap0x1606_0x0160 =
617 {
618  	{{ 30, 165}, 0, -1, {2550, 3508}, {100, 100}},
619  	{{  0,   0}, 0, -1, {0, 0}, { 0, 0 }},
620  	{{  0,   0}, 0, -1, {0, 0}, { 0, 0 }},
621  	{{  0,   0}, 0, -1, {0, 0}, { 0, 0 }},
622  	{1200, 1200},
623  	0,
624  	SENSORORDER_bgr,
625  	12,                 /* sensor distance                         */
626  	4,                  /* number of buttons                       */
627  	kNEC3778,           /* use default settings during calibration */
628  	0,                  /* not used here...                        */
629  	_WAF_MISC_IO_LAMPS, /* use miscio 3 for lamp switching         */
630     _MIO3
631 };
632 
633 /* Canon N650U/N656U
634  */
635 static DCapsDef Cap0x04A9_0x2206 =
636 {
637 	{{ 0, 90}, 45, 10, {2550, 3508}, {75, 75}},
638 	{{ 0,  0},  0,  0, {0, 0}, { 0, 0 }},
639 	{{ 0,  0},  0,  0, {0, 0}, { 0, 0 }},
640 	{{ 0,  0},  0,  0, {0, 0}, { 0, 0 }},
641 	{600, 600},
642 	0,
643 	SENSORORDER_rgb,
644 	8,                  /* sensor distance                         */
645 	1,                  /* number of buttons                       */
646 	kCIS650,            /* use default settings during calibration */
647 	0,                  /* not used here...                        */
648 	_WAF_MISC_IO_LAMPS, _NO_MIO
649 };
650 
651 /* Canon N1220U
652  */
653 static DCapsDef Cap0x04A9_0x2207 =
654 {
655 	{{ 0, 85}, 45, 10, {2550, 3508}, {75, 75}},
656 	{{ 0,  0},  0,  0, {0, 0}, { 0, 0 }},
657 	{{ 0,  0},  0,  0, {0, 0}, { 0, 0 }},
658 	{{ 0,  0},  0,  0, {0, 0}, { 0, 0 }},
659 	{1200, 1200},
660 	0,
661 	SENSORORDER_rgb,
662 	16,                 /* sensor distance                         */
663 	1,                  /* number of buttons                       */
664 	kCIS1220,           /* use default settings during calibration */
665 	0,                  /* not used here...                        */
666 	_WAF_MISC_IO_LAMPS, _NO_MIO
667 };
668 
669 /* Canon D660U
670  */
671 static DCapsDef Cap0x04A9_0x2208 =
672 {
673 	{{  45, 125},  15, -1, {2550, 3508}, { 50,  50}},
674 	{{1060, 744}, 510, -1, { 473,  414}, {150, 150}},
675 	{{1082, 842}, 610, -1, { 567,  414}, {150, 150}},
676 	{{   0,   0},   0,  0, {   0,    0}, {  0,   0}},
677 	{600, 600},
678 	DEVCAPSFLAG_Positive + DEVCAPSFLAG_Negative,
679 	SENSORORDER_rgb,
680 	4,
681 	1,
682 	kNEC8861,           /* use default settings during calibration */
683 	0,
684 	(_WAF_MISC_IO_LAMPS | _WAF_BIN_FROM_COLOR | _WAF_GRAY_FROM_COLOR),
685 	_MIO5 + _TPA(_MIO6)
686 };
687 
688 /* Canon N670U/N676U/LiDE20
689  */
690 static DCapsDef Cap0x04A9_0x220D =
691 {
692 	{{ 0, 110}, 45, -1, {2550, 3508}, {75, 75}},
693 	{{ 0,   0},  0,  0, {0, 0}, { 0, 0 }},
694 	{{ 0,   0},  0,  0, {0, 0}, { 0, 0 }},
695 	{{ 0,   0},  0,  0, {0, 0}, { 0, 0 }},
696 	{600, 600},
697 	0,
698 	SENSORORDER_rgb,
699 	8,                  /* sensor distance                         */
700 	3,                  /* number of buttons                       */
701 	kCIS670,
702 	0,                  /* not used here...                        */
703 	_WAF_MISC_IO_LAMPS, _NO_MIO
704 };
705 
706 /* Canon N1240U/LiDE30
707  */
708 static DCapsDef Cap0x04A9_0x220E =
709 {
710 	{{ 0, 100}, 50, 10, {2550, 3508}, {75, 75}},
711 	{{ 0,   0},  0,  0, {0, 0}, { 0, 0 }},
712 	{{ 0,   0},  0,  0, {0, 0}, { 0, 0 }},
713 	{{ 0,   0},  0,  0, {0, 0}, { 0, 0 }},
714 	{1200, 1200},
715 	0,
716 	SENSORORDER_rgb,
717 	16,                 /* sensor distance                         */
718 	3,                  /* number of buttons                       */
719 	kCIS1240,
720 	0,                  /* not used here...                        */
721 	_WAF_MISC_IO_LAMPS, _NO_MIO
722 };
723 
724 /* Canon LiDE25
725  */
726 static DCapsDef Cap0x04A9_0x2220 =
727 {
728 	{{ 0, 100}, 50, 10, {2550, 3508}, {75, 75}},
729 	{{ 0,   0},  0,  0, {0, 0}, { 0, 0 }},
730 	{{ 0,   0},  0,  0, {0, 0}, { 0, 0 }},
731 	{{ 0,   0},  0,  0, {0, 0}, { 0, 0 }},
732 	{1200, 1200},
733 	0,
734 	SENSORORDER_rgb,
735 	16,                 /* sensor distance                         */
736 	3,                  /* number of buttons                       */
737 	kCIS1240,
738 	0,                  /* not used here...                        */
739 	_WAF_MISC_IO_LAMPS, _NO_MIO
740 };
741 
742 /* Syscan TravelScan 662 A6 sheet-fed scanner
743  */
744 static DCapsDef Cap0x0A82_0x6620 =
745 {
746 	{{ 0,   0}, 100, -1, {1226, 3508}, {75, 75}},
747 	{{ 0,   0},   0,  0, {0, 0}, { 0, 0 }},
748 	{{ 0,   0},   0,  0, {0, 0}, { 0, 0 }},
749 	{{ 0,   0},   0,  0, {0, 0}, { 0, 0 }},
750 	{600, 600},
751 	DEVCAPSFLAG_SheetFed,
752 	SENSORORDER_rgb,
753 	8,
754 	1,
755 	kNEC8861,           /* use default settings during calibration */
756 	0,                  /* not used here... */
757 	(_WAF_MISC_IO_LAMPS | _WAF_MISC_IO_BUTTONS |
758 	 _WAF_BIN_FROM_COLOR | _WAF_GRAY_FROM_COLOR),
759 	_MIO5 + _PORT1 + _PS_INP_MIO2
760 };
761 
762 /* Syscan TravelScan 464 A4 sheet-fed scanner
763  */
764 static DCapsDef Cap0x0A82_0x4600 =
765 {
766 	{{ 0,   0}, 150, -1, {2550, 3508}, {75, 75}},
767 	{{ 0,   0},   0,  0, {0, 0}, { 0, 0 }},
768 	{{ 0,   0},   0,  0, {0, 0}, { 0, 0 }},
769 	{{ 0,   0},   0,  0, {0, 0}, { 0, 0 }},
770 	{600, 600},
771 	DEVCAPSFLAG_SheetFed,
772 	SENSORORDER_rgb,
773 	8,
774 	1,
775 	kNEC8861,           /* use default settings during calibration */
776 	0,                  /* not used here... */
777 	(_WAF_MISC_IO_LAMPS | _WAF_MISC_IO_BUTTONS |
778 	 _WAF_BIN_FROM_COLOR | _WAF_GRAY_FROM_COLOR),
779 	_MIO5 + _PORT1 + _PS_INP_MIO2
780 };
781 
782 /* IRIScan/Q-Scan USB001 A4 sheet-fed scanner
783  */
784 static DCapsDef Cap0x0A53_0x1000 =
785 {
786 	{{ 0,   0}, 150, -1, {2550, 3508}, {150, 150}},
787 	{{ 0,   0},   0,  0, {0, 0}, { 0, 0 }},
788 	{{ 0,   0},   0,  0, {0, 0}, { 0, 0 }},
789 	{{ 0,   0},   0,  0, {0, 0}, { 0, 0 }},
790 	{300, 300},
791 	DEVCAPSFLAG_SheetFed,
792 	SENSORORDER_gbr,
793 	2,                  /* sensor distance                         */
794 	0,                  /* number of buttons                       */
795 	kNEC8861,           /* use default settings during calibration */
796 	200,                /* threshold for resetting sensor-order    */
797 	(_WAF_MISC_IO_LAMPS | _WAF_RESET_SO_TO_RGB | _WAF_ONLY_8BIT),
798 	_PS_INP1
799 };
800 
801 /* PandP USB201 Q-Scan A6 Scanner
802  */
803 static DCapsDef Cap0x0A53_0x2000 =
804 {
805 	{{ 0,   0},   0, -1, {1226, 3508}, { 50, 50 }},
806 	{{ 0,   0},   0,  0, {0, 0}, { 0, 0 }},
807 	{{ 0,   0},   0,  0, {0, 0}, { 0, 0 }},
808 	{{ 0,   0},   0,  0, {0, 0}, { 0, 0 }},
809 	{600, 600},
810 	DEVCAPSFLAG_SheetFed,
811 	SENSORORDER_rgb,
812 	4,
813 	0,
814 	kNEC8861,
815 	0,
816 	_WAF_NONE,
817 	_PS_INP1
818 };
819 
820 /******************* additional Hardware descriptions ************************/
821 
822 /** U24, UT12 and UT16
823  */
824 static HWDef Hw0x07B3_0x0017_0 =
825 {
826 	1.5,            /* dMaxMotorSpeed                           */
827 	1.2,            /* dMaxMoveSpeed                            */
828 	0.0,            /* dHighSpeed                               */
829 	9,              /* dIntegrationTimeLowLamp                  */
830 	9,              /* dIntegrationTimeHighLamp                 */
831 	300,            /* wMotorDpi (Full step DPI)                */
832 	512,            /* wRAMSize (KB)                            */
833 	4,              /* dMinIntegrationTimeLowres (ms)           */
834 	5,              /* dMinIntegrationTimeHighres (ms)          */
835 	3000,           /* wGreenPWMDutyCycleLow                    */
836 	4095,           /* wGreenPWMDutyCycleHigh                   */
837 	0x02,           /* bSensorConfiguration (0x0b)              */
838 	0x04,           /* bReg_0x0c                                */
839 	0x37,           /* bReg_0x0d                                */
840 	0x13,           /* bReg_0x0e                                */
841 	/* bReg_0x0f_Mono [10]  (0x0f to 0x18)                      */
842 	{2, 7, 0, 1, 0, 0, 0, 0, 4, 0},
843 	/* bReg_0x0f_Color [10]	(0x0f to 0x18)                      */
844 	{5, 23, 1, 3, 0, 0, 0, 12, 10, 22},
845 
846 	_GREEN_CH,      /* bReg_0x26 color mode - bits 4 and 5      */
847 	0,              /* bReg 0x27 color mode                     */
848 
849 	1,              /* bReg 0x29 illumination mode              */
850 
851 	/* illumination mode settings (not used for CCD devices)    */
852 	{ 0, 0, 0, 0, 0, 0, 0 },
853 	{ 0, 0, 0, 0, 0, 0, 0 },
854 
855 	1,              /* StepperPhaseCorrection (0x1a & 0x1b)     */
856 	14,             /* 15,  bOpticBlackStart (0x1c)             */
857 	62,             /* 60,  bOpticBlackEnd (0x1d)               */
858 	110,            /* 65,  wActivePixelsStart (0x1e & 0x1f)    */
859 	5400,           /* 5384 ,wLineEnd   (0x20 & 0x21)           */
860 
861 	0,              /* red lamp on    (reg 0x2c + 0x2d)         */
862 	16383,          /* red lamp off   (reg 0x2e + 0x2f)         */
863 	0,              /* green lamp on  (reg 0x30 + 0x31)         */
864 	0,              /* green lamp off (reg 0x32 + 0x33)         */
865 	0,              /* blue lamp on   (reg 0x34 + 0x35)         */
866 	16383,          /* blue lamp off  (reg 0x36 + 0x37)         */
867 
868 	/* Misc                                                     */
869 	3,              /* bReg_0x45                                */
870 	0,              /* wStepsAfterPaperSensor2 (0x4c & 0x4d)    */
871 	0x1e,           /* bstepsToReverse reg 0x50)                */
872 	0xa8,           /* 0xfc -bReg_0x51                          */
873 	0,              /* bReg_0x54                                */
874 	0xff,           /* 0xa3 - bReg_0x55                         */
875 	64,             /* bReg_0x56                                */
876 	20,             /* bReg_0x57                                */
877 	0x0d,           /* bReg_0x58                                */
878 	0x22,           /* bReg_0x59                                */
879 	0x82,           /* bReg_0x5a                                */
880 	0x88,           /* bReg_0x5b                                */
881 	0,              /* bReg_0x5c                                */
882 	0,              /* bReg_0x5d                                */
883 	0,              /* bReg_0x5e                                */
884 	_LM9832,        /* chip type                                */
885 	MODEL_KaoHsiung,/* motorModel                               */
886 	1.0
887 };
888 
889 /** Genius ColorPage-HR6 V2 and ColorPage-HR6X
890  */
891 static HWDef Hw0x07B3_0x0007_0 =
892 {
893 	1.5, 1.2, 0.0,
894 	9, 9,
895 	300,
896 	512,
897 	4, 5,
898 	3000, 4095,
899 	0x02, 0x14,	0x27, 0x13,
900 	{2, 7, 0, 1, 0, 0, 0, 0, 4, 0},
901 	{5, 23, 1, 3, 0, 0, 0, 6, 10, 22},
902 	_GREEN_CH,
903 	0,
904 	1,
905 	/* illumination mode settings (not used for CCD devices) */
906 	{ 0, 0, 0, 0, 0, 0, 0 },
907 	{ 0, 0, 0, 0, 0, 0, 0 },
908 	1,
909 	14,
910 	62,
911 	110,
912 	5384,
913 	0,
914 	16383,
915 	0,
916 	0,
917 	0,
918 	16383,
919 	3,
920 	0,
921 	0x1e,
922 	0xa8,
923 	0,
924 	0xff,
925 	64,
926 	20,
927 	0x0d, 0x88, 0x28, 0x3b,
928 	0, 0, 0,
929 	_LM9832,
930 	MODEL_HuaLien,
931 	1.0
932 };
933 
934 /** unknown
935  */
936 static HWDef Hw0x07B3_0x0007_2 =
937 {
938 	1.4, 1.2, 0.0,
939 	9, 9,
940 	600,
941 	512,
942 	4, 5,
943 	3000, 4095,
944 	0x02, 0x3f,	0x2f, 0x36,
945 	{2, 7, 0, 1, 0, 0, 0, 0, 4, 0},
946 	{7, 20, 1, 4, 7, 10, 0, 6, 12, 0},
947 	_GREEN_CH,
948 	0,
949 	1,
950 	/* illumination mode settings (not used for CCD devices) */
951 	{ 0, 0, 0, 0, 0, 0, 0 },
952 	{ 0, 0, 0, 0, 0, 0, 0 },
953 	1,
954 	16,
955 	64,
956 	152,
957 	5416,
958 	0,
959 	16383,
960 	0,
961 	0,
962 	0,
963 	16383,
964 	3,
965 	0,
966 	0x1e,
967 	0xfc,
968 	0,
969 	0xff,
970 	64,
971 	20,
972 	0x0d, 0x88, 0x28, 0x3b,
973 	0, 0, 0,
974 	_LM9832,
975 	MODEL_Tokyo600,
976 	1.0
977 };
978 
979 /** Genius ColorPage-HR7 and ColorPage-HR7LE
980  */
981 static HWDef Hw0x07B3_0x0007_4 =
982 {
983 	1.1, 0.9, 0.0,
984 	12, 12,
985 	600,
986 	2048,
987 	8, 8,
988 	4095, 4095,
989 	0x06, 0x30,	0x2f, 0x2a,
990 	{2, 7, 5, 6, 6, 7, 0, 0, 0, 5},
991 	{20, 4, 13, 16, 19, 22, 0, 6, 23, 11},
992 	_GREEN_CH,
993 	0,
994 	1,
995 	/* illumination mode settings (not used for CCD devices) */
996 	{ 0, 0, 0, 0, 0, 0, 0 },
997 	{ 0, 0, 0, 0, 0, 0, 0 },
998 	1,
999 	13,
1000 	62,
1001 	304,
1002 	10684,
1003 	0,
1004 	16383,
1005 	0,
1006 	0,
1007 	0,
1008 	16383,
1009 	3,
1010 	0,
1011 	0x1e,
1012 	0xa8,
1013 	0,
1014 	0xff,
1015 	24,
1016 	40,
1017 	0x0d, 0x88, 0x28, 0x3b,
1018 	0, 0, 0,
1019 	_LM9832,
1020 	MODEL_HuaLien,
1021 	1.0
1022 };
1023 
1024 /** Genius ColorPage-HR6A
1025  */
1026 static HWDef Hw0x07B3_0x000F_0 =
1027 {
1028 	1.5, 1.0, 0.0,
1029 	9, 9,
1030 	300,
1031 	512,
1032 	4, 5,
1033 	3000, 4095,
1034 	0x02, 0x14,	0x27, 0x13,
1035 	{2, 7, 0, 1, 0, 0, 0, 0, 4, 0},
1036 	{5, 23, 1, 3, 0, 0, 0, 6, 10, 22},
1037 	_GREEN_CH,
1038 	0,
1039 	1,
1040 	/* illumination mode settings (not used for CCD devices)    */
1041 	{ 0, 0, 0, 0, 0, 0, 0 },
1042 	{ 0, 0, 0, 0, 0, 0, 0 },
1043 	1,
1044 	14,
1045 	62,
1046 	110,
1047 	5384,
1048 	0,
1049 	16383,
1050 	0,
1051 	0,
1052 	0,
1053 	16383,
1054 	3,
1055 	0,
1056 	0x1e,
1057 	0xa8,
1058 	0,
1059 	0xff,
1060 	64,
1061 	20,
1062 	0x05, 0x88, 0x08, 0x3b,
1063 	0, 0, 0,
1064 	_LM9832,
1065 	MODEL_HuaLien,
1066 	1.0
1067 };
1068 
1069 /** U12/UT12 and U24
1070  */
1071 static HWDef Hw0x07B3_0x0013_0 =
1072 {
1073 	1.5, 1.2, 0.0,
1074 	9, 9,
1075 	300,
1076 	512,
1077 	4, 5,
1078 	3000, 4095,
1079 	0x02, 0x04, 0x37, 0x13,
1080 	{2, 7, 0, 1, 0, 0, 0, 0, 4, 0},
1081 	{5, 23, 1, 3, 0, 0, 0, 12, 10, 22},
1082 	_GREEN_CH,
1083 	0,
1084 	1,
1085 	/* illumination mode settings (not used for CCD devices) */
1086 	{ 0, 0, 0, 0, 0, 0, 0 },
1087 	{ 0, 0, 0, 0, 0, 0, 0 },
1088 	1,
1089 	14,
1090 	62,
1091 	110,
1092 	5400,
1093 	0,
1094 	16383,
1095 	0,
1096 	0,
1097 	0,
1098 	16383,
1099 	3,
1100 	0,
1101 	0x1e,
1102 	0xa8,
1103 	0,
1104 	0xff,
1105 	64,
1106 	20,
1107 	0x0d, 0x22,	0x82, 0x88,
1108 	0, 0, 0,
1109 	_LM9831,
1110 	MODEL_KaoHsiung,
1111 	1.0
1112 };
1113 
1114 /** unknown
1115  */
1116 static HWDef Hw0x07B3_0x0013_4 =
1117 {
1118 	1.0, 0.9, 0.0,
1119 	12, 12,
1120 	600,
1121 	2048,
1122 	8, 8,
1123 	4095, 4095,
1124 	0x06, 0x20, 0x2f, 0x2a,
1125 	{2, 7, 5, 6, 6, 7, 0, 0, 0, 5},
1126 	{20, 4, 13, 16, 19, 22, 0, 0, 23, 11},
1127 	_GREEN_CH,
1128 	0,
1129 	1,
1130 	/* illumination mode settings (not used for CCD devices) */
1131 	{ 0, 0, 0, 0, 0, 0, 0 },
1132 	{ 0, 0, 0, 0, 0, 0, 0 },
1133 	1,
1134 	13,
1135 	62,
1136 	320,
1137 	10684,
1138 	0,
1139 	16383,
1140 	0,
1141 	0,
1142 	0,
1143 	16383,
1144 	3,
1145 	0,
1146 	0x1e,
1147 	0xa8,
1148 	0,
1149 	0xff,
1150 	10,
1151 	48,
1152 	0x0d, 0x22, 0x82, 0x88,
1153 	0, 0, 0,
1154 	_LM9831,
1155 	MODEL_KaoHsiung,
1156 	1.0
1157 };
1158 
1159 /** unknown
1160  */
1161 static HWDef Hw0x07B3_0x000F_4 =
1162 {
1163 	1.1, 0.9, 0.0,
1164 	12,	12,
1165 	600,
1166 	2048,
1167 	8, 8,
1168 	4095, 4095,
1169 	0x06, 0x30,	0x2f, 0x2a,
1170 	{2, 7, 5, 6, 6, 7, 0, 0, 0, 5},
1171 	{20, 4, 13, 16, 19, 22, 0, 6, 23, 11},
1172 	_GREEN_CH,
1173 	0,
1174 	1,
1175 	/* illumination mode settings (not used for CCD devices) */
1176 	{ 0, 0, 0, 0, 0, 0, 0 },
1177 	{ 0, 0, 0, 0, 0, 0, 0 },
1178 	1,
1179 	13,
1180 	62,
1181 	304,
1182 	10684,
1183 	0,
1184 	16383,
1185 	0,
1186 	0,
1187 	0,
1188 	16383,
1189 	3,
1190 	0,
1191 	0x1e,
1192 	0xa8,
1193 	0,
1194 	0xff,
1195 	24,
1196 	40,
1197 	0x05, 0x88, 0x08, 0x3b,
1198 	0, 0, 0,
1199 	_LM9832,
1200 	MODEL_HuaLien,
1201 	1.0
1202 };
1203 
1204 /** unknown
1205  */
1206 static HWDef Hw0x07B3_0x0016_4 =
1207 {
1208 	1.0, 0.9, 0.0,
1209 	12, 12,
1210 	600,
1211 	2048,
1212 	8, 8,
1213 	4095, 4095,
1214 	0x06, 0x20,	0x2f, 0x2a,
1215 	{2, 7, 5, 6, 6, 7, 0, 0, 0, 5},
1216 	{20, 4, 13, 16, 19, 22, 0, 0, 23, 11},
1217 	_GREEN_CH,
1218 	0,
1219 	1,
1220 	/* illumination mode settings (not used for CCD devices) */
1221 	{ 0, 0, 0, 0, 0, 0, 0 },
1222 	{ 0, 0, 0, 0, 0, 0, 0 },
1223 	1,
1224 	13,
1225 	62,
1226 	320,
1227 	10684,
1228 	0,
1229 	16383,
1230 	0,
1231 	0,
1232 	0,
1233 	16383,
1234 	3,
1235 	0,
1236 	0x1e,
1237 	0xa8,
1238 	0,
1239 	0xff,
1240 	10,
1241 	48,
1242 	0x0d, 0x22, 0x82, 0x88,
1243 	0, 0, 0,
1244 	_LM9832,
1245 	MODEL_KaoHsiung,
1246 	1.0
1247 };
1248 
1249 /** Plustek OpticPro UT24 and others...
1250  */
1251 static HWDef Hw0x07B3_0x0017_4 =
1252 {
1253 	1.0, 0.9, 0.0,
1254 	12, 12,
1255 	600,
1256 	2048,
1257 	8, 8,
1258 	4095, 4095,
1259 	0x06, 0x20, 0x2f, 0x2a,
1260 	{2, 7, 5, 6, 6, 7, 0, 0, 0, 5},
1261 	{20, 4, 13, 16, 19, 22, 0, 0, 23, 11},
1262 	_GREEN_CH,
1263 	0,
1264 	1,
1265 	/* illumination mode settings (not used for CCD devices) */
1266 	{ 0, 0, 0, 0, 0, 0, 0 },
1267 	{ 0, 0, 0, 0, 0, 0, 0 },
1268 	1,
1269 	13,
1270 	62,
1271 	320,
1272 	10684,
1273 	0,
1274 	16383,
1275 	0,
1276 	0,
1277 	0,
1278 	16383,
1279 	3,
1280 	0,
1281 	0x1e,
1282 	0xa8,
1283 	0,
1284 	0xff,
1285 	10,
1286 	48,
1287 	0x0d, 0x22, 0x82, 0x88,
1288 	0, 0, 0,
1289 	_LM9832,
1290 	MODEL_KaoHsiung,
1291 	1.0
1292 };
1293 
1294 /** unknown
1295  */
1296 static HWDef Hw0x07B3_0x0017_1 =
1297 {
1298 	1.5, 1.5, 0.0,
1299 	9, 9,
1300 	200,
1301 	2048,
1302 	4, 5,
1303 	3000, 4095,
1304 	0x02, 0x08, 0x2f, 0x36,
1305 	{2, 7, 0, 1, 0, 0, 0, 0, 4, 0},
1306 	{5, 23, 1, 4, 7, 10, 0, 0, 10, 12},
1307 	_GREEN_CH,
1308 	0,
1309 	1,
1310 	/* illumination mode settings (not used for CCD devices) */
1311 	{ 0, 0, 0, 0, 0, 0, 0 },
1312 	{ 0, 0, 0, 0, 0, 0, 0 },
1313 	1,
1314 	15,
1315 	60,
1316 	110,
1317 	5415,
1318 	0,
1319 	16383,
1320 	0,
1321 	0,
1322 	0,
1323 	16383,
1324 	3,
1325 	0,
1326 	0x1e,
1327 	0xa8,
1328 	0,
1329 	0xff,
1330 	64,
1331 	20,
1332 	0x0d, 0x22, 0x82, 0x88,
1333 	0, 0, 0,
1334 	_LM9832,
1335 	MODEL_KaoHsiung,
1336 	1.0
1337 };
1338 
1339 /** unknown
1340  */
1341 static HWDef Hw0x07B3_0x0012_0 =
1342 {
1343 	1.5, 1.4, 0.0,
1344 	9, 9,
1345 	600,
1346 	2048,
1347 	4, 5,
1348 	3000, 4095,
1349 	0x02, 0x04, 0x37, 0x13,
1350 	{2, 7, 0, 1, 0, 0, 0, 0, 4, 0},
1351 	{5, 23, 1, 3, 0, 0, 0, 12, 10, 22},
1352 	_GREEN_CH,
1353 	0,
1354 	1,
1355 	/* illumination mode settings (not used for CCD devices) */
1356 	{ 0, 0, 0, 0, 0, 0, 0 },
1357 	{ 0, 0, 0, 0, 0, 0, 0 },
1358 	1,
1359 	14,
1360 	62,
1361 	110,
1362 	5400,
1363 	0,
1364 	16383,
1365 	0,
1366 	0,
1367 	0,
1368 	16383,
1369 	3,
1370 	0,
1371 	0x1e,
1372 	0xa8,
1373 	0,
1374 	0xff,
1375 	64,
1376 	20,
1377 	0x0d, 0x22, 0x82, 0x88,
1378 	0, 0, 0,
1379 	_LM9832,
1380 	MODEL_KaoHsiung,
1381 	1.0
1382 };
1383 
1384 /** unknown
1385  */
1386 static HWDef Hw0x07B3_0x0017_2 =
1387 {
1388 	1.5, 1.2, 0.0,
1389 	9, 9,
1390 	300,
1391 	512,
1392 	4, 5,
1393 	3000, 4095,
1394 	0x02, 0, 0x2f, 0x36,
1395 	{2, 7, 0, 1, 0, 0, 0, 0, 4, 0},
1396 	{5, 0, 1, 4, 7, 10, 0, 0, 12, 0},
1397 	_GREEN_CH,
1398 	0,
1399 	1,
1400 	/* illumination mode settings (not used for CCD devices) */
1401 	{ 0, 0, 0, 0, 0, 0, 0 },
1402 	{ 0, 0, 0, 0, 0, 0, 0 },
1403 	1,
1404 	16,
1405 	64,
1406 	110,
1407 	5416,
1408 	0,
1409 	16383,
1410 	0,
1411 	0,
1412 	0,
1413 	16383,
1414 	3,
1415 	0,
1416 	0x1e,
1417 	0xa8,
1418 	0,
1419 	0xff,
1420 	64,
1421 	20,
1422 	0x0d, 0x22,	0x82, 0x88,
1423 	0, 0, 0,
1424 	_LM9832,
1425 	MODEL_KaoHsiung,
1426 	1.0
1427 };
1428 
1429 /** unknown
1430  */
1431 static HWDef Hw0x07B3_0x0017_3 =
1432 {
1433 	1.5, 1.2, 0.0,
1434 	9, 9,
1435 	300,
1436 	512,
1437 	4, 5,
1438 	3000, 4095,
1439 	0x02, 0x04, 0x37, 0x13,
1440 	{2, 7, 0, 1, 0, 0, 0, 0, 4, 0},
1441 	{5, 23, 1, 4, 7, 10, 0, 0, 11, 23},
1442 	_GREEN_CH,
1443 	0,
1444 	1,
1445 	/* illumination mode settings (not used for CCD devices) */
1446 	{ 0, 0, 0, 0, 0, 0, 0 },
1447 	{ 0, 0, 0, 0, 0, 0, 0 },
1448 	1,
1449 	14,
1450 	62,
1451 	110,
1452 	5400,
1453 	0,
1454 	16383,
1455 	0,
1456 	0,
1457 	0,
1458 	16383,
1459 	3,
1460 	0,
1461 	0x1e,
1462 	0xa8,
1463 	0,
1464 	0xff,
1465 	64,
1466 	20,
1467 	0x0d, 0x22, 0x82, 0x88,
1468 	0, 0, 0,
1469 	_LM9832,
1470 	MODEL_KaoHsiung,
1471 	1.0
1472 };
1473 
1474 /** HP Scanjet 2100C
1475  */
1476 static HWDef Hw0x03F0_0x0505 =
1477 {
1478 	1.05,   /* dMaxMotorSpeed                           */
1479 	1.05,   /* dMaxMoveSpeed                            */
1480 	0.0,    /* dHighSpeed                               */
1481 	6,      /* dIntegrationTimeLowLamp                  */
1482 	8,      /* dIntegrationTimeHighLamp                 */
1483 	600,    /* wMotorDpi (Full step DPI)                */
1484 	512,    /* wRAMSize (KB)                            */
1485 	6,      /* dMinIntegrationTimeLowres (ms)           */
1486 	6,      /* dMinIntegrationTimeHighres (ms)          */
1487 	0,      /* wGreenPWMDutyCycleLow                    */
1488 	0,      /* wGreenPWMDutyCycleHigh                   */
1489 	0x02,   /* bSensorConfiguration (0x0b)              */
1490 	0x00,   /* bReg_0x0c                                */
1491 	0x2F,   /* bReg_0x0d                                */
1492 	0x13,   /* bReg_0x0e                                */
1493 	        /* bReg_0x0f_Mono[10] (0x0f to 0x18)        */
1494 
1495 	{ 0x02, 0x07, 0x01, 0x02, 0x02, 0x03, 0x00, 0x00, 0x04, 0x07 },
1496 
1497 	       /* bReg_0x0f_Color[10] (0x0f to 0x18)       */
1498 	{ 0x08, 0x17, 0x00, 0x03, 0x08, 0x0b, 0x00, 0x00, 0x0a, 0x14 },
1499 
1500 	_GREEN_CH,  /* bReg_0x26 color mode - bits 4 and 5  */
1501 	0,          /* bReg 0x27 color mode                 */
1502 
1503 	1,          /* bReg 0x29 illumination mode          */
1504 
1505 	/* illumination mode settings (not used for CCD devices) */
1506 	{ 0, 0, 0, 0, 0, 0, 0 },
1507 	{ 0, 0, 0, 0, 0, 0, 0 },
1508 
1509 	1,      /* StepperPhaseCorrection (0x1a & 0x1b)     */
1510 	15,     /* bOpticBlackStart (0x1c)                  */
1511 	50,     /* bOpticBlackEnd (0x1d)                    */
1512 	140,    /* wActivePixelsStart (0x1e & 0x1f)         */
1513 	5414,   /* wLineEnd=(0x20 & 0x21)                   */
1514 
1515 	1,      /* red lamp on    (reg 0x2c + 0x2d)         */
1516 	16383,  /* red lamp off   (reg 0x2e + 0x2f)         */
1517 	16383,  /* green lamp on  (reg 0x30 + 0x31)         */
1518 	1,      /* green lamp off (reg 0x32 + 0x33)         */
1519 	16383,  /* blue lamp on   (reg 0x34 + 0x35)         */
1520 	1,      /* blue lamp off  (reg 0x36 + 0x37)         */
1521 
1522 	/* Misc                                             */
1523 	0x13,   /* bReg_0x45                                */
1524 	0,      /* wStepsAfterPaperSensor2 (0x4c & 0x4d)    */
1525 	0x1e,   /* steps to reverse on buffer full reg 0x50 */
1526 	0xfc,   /* 0xa8 -bReg_0x51                          */
1527 	0,      /* bReg_0x54                                */
1528 	0x18,   /* bReg_0x55                                */
1529 	8,      /* bReg_0x56                                */
1530 	60,     /* bReg_0x57                                */
1531 	0x0d,   /* bReg_0x58                                */
1532 	0xaa,   /* bReg_0x59                                */
1533 	0xba,   /* bReg_0x5a                                */
1534 	0xbb,   /* bReg_0x5b                                */
1535 	0,      /* bReg_0x5c                                */
1536 	0,      /* bReg_0x5d                                */
1537 	0,      /* bReg_0x5e                                */
1538 	_LM9831,
1539 	MODEL_HP,
1540 	1.0
1541 };
1542 
1543 /** HP Scanjet 2200C */
1544 static HWDef Hw0x03F0_0x0605 =
1545 {
1546 	1.05,   /* dMaxMotorSpeed                           */
1547 	1.05,   /* dMaxMoveSpeed                            */
1548 	2.2,    /* dHighSpeed                               */
1549 	6,      /* dIntegrationTimeLowLamp                  */
1550 	8,      /* dIntegrationTimeHighLamp                 */
1551 	600,    /* ok wMotorDpi (Full step DPI)             */
1552 	512,    /* wRAMSize (KB)                            */
1553 	6,      /* dMinIntegrationTimeLowres (ms)           */
1554 	6,      /* dMinIntegrationTimeHighres (ms)          */
1555 	0,      /* wGreenPWMDutyCycleLow                    */
1556 	0,      /* wGreenPWMDutyCycleHigh                   */
1557 	0x02,   /* bSensorConfiguration (0x0b)              */
1558 	0x04,   /* bReg_0x0c                                */
1559 	0x2F,   /* bReg_0x0d                                */
1560 	0x1F,   /* bReg_0x0e                                */
1561 
1562 	/* bReg_0x0f_Mono[10] (0x0f to 0x18)        */
1563 	{ 0x02, 0x07, 0x01, 0x02, 0x02, 0x03, 0x00, 0x00, 0x04, 0x07 },
1564 
1565 	/* bReg_0x0f_Color[10] (0x0f to 0x18)       */
1566 	{ 0x08, 0x17, 0x00, 0x03, 0x08, 0x0b, 0x00, 0x00, 0x0a, 0x14 },
1567 
1568 	_GREEN_CH,  /* bReg_0x26 color mode - bits 4 and 5  */
1569 	0,          /* bReg 0x27 color mode                 */
1570 	1,          /* bReg 0x29 illumination mode          */
1571 
1572 	/* illumination mode settings (not used for CCD devices)*/
1573 	{ 0, 0, 0, 0, 0, 0, 0 },
1574 	{ 0, 0, 0, 0, 0, 0, 0 },
1575 
1576 	1,      /* StepperPhaseCorrection (0x1a & 0x1b)     */
1577 	14,     /* bOpticBlackStart (0x1c)                  */
1578 	63,     /* bOpticBlackEnd (0x1d)                    */
1579 	140,    /* wActivePixelsStart (0x1e & 0x1f)         */
1580 	5367,   /* wLineEnd=(0x20 & 0x21)                   */
1581 
1582 	1,      /* red lamp on    (reg 0x2c + 0x2d)         */
1583 	16383,  /* red lamp off   (reg 0x2e + 0x2f)         */
1584 	16383,  /* green lamp on  (reg 0x30 + 0x31)         */
1585 	1,      /* green lamp off (reg 0x32 + 0x33)         */
1586 	16383,  /* blue lamp on   (reg 0x34 + 0x35)         */
1587 	1,      /* blue lamp off  (reg 0x36 + 0x37)         */
1588 
1589 	/* Misc                                             */
1590 	0x13,   /* bReg_0x45                                */
1591 	0,      /* wStepsAfterPaperSensor2 (0x4c & 0x4d)    */
1592 	0x1e,   /* steps to reverse on buffer full (0x50)   */
1593 	0xfc,   /* 0xa8 -bReg_0x51                          */
1594 	0,      /* bReg_0x54                                */
1595 	0x18,   /* bReg_0x55                                */
1596 	8,      /* bReg_0x56                                */
1597 	60,     /* bReg_0x57                                */
1598 	0x0d,   /* bReg_0x58                                */
1599 	0xcc,   /* bReg_0x59                                */
1600 	0xbc,   /* bReg_0x5a                                */
1601 	0xbb,   /* bReg_0x5b                                */
1602 	0,      /* bReg_0x5c                                */
1603 	0,      /* bReg_0x5d                                */
1604 	0,      /* bReg_0x5e                                */
1605 	_LM9832,
1606 	MODEL_HP,
1607 	1.0
1608 };
1609 
1610 /** Mustek BearPaw 1200 */
1611 static HWDef Hw0x0400_0x1000_0 =
1612 {
1613 	1.75,   /* ok dMaxMotorSpeed                            */
1614 	1.25,   /* ok dMaxMoveSpeed                             */
1615 	0.0,    /* ok dHighSpeed                                */
1616 	12,     /* ok dIntegrationTimeLowLamp                   */
1617 	12,     /* ok dIntegrationTimeHighLamp                  */
1618 	600,    /* ok wMotorDpi (Full step DPI)                 */
1619 	512,    /* ok wRAMSize (KB)                             */
1620 	9,      /* ok dMinIntegrationTimeLowres (ms)            */
1621 	9,      /* ok dMinIntegrationTimeHighres (ms)           */
1622 	1169,   /* ok wGreenPWMDutyCycleLow (reg 0x2a + 0x2b)   */
1623 	1169,   /* ok wGreenPWMDutyCycleHigh (reg 0x2a + 0x2b)  */
1624 	0x02,   /* ok bSensorConfiguration (0x0b)               */
1625 	0x7c,   /* ok sensor control settings (reg 0x0c)        */
1626 	0x3f,   /* ok sensor control settings (reg 0x0d)        */
1627 	0x15,   /* ok sensor control settings (reg 0x0e)        */
1628             /* ok  mono (reg 0x0f to 0x18) */
1629 	{ 0x04, 0x07, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x03, 0x06},
1630             /* ok color (reg 0x0f to 0x18)                  */
1631 	{ 0x04, 0x16, 0x01, 0x02, 0x05, 0x06, 0x00, 0x00, 0x0a, 0x16},
1632 	_GREEN_CH,	/* bReg_0x26 color mode - bits 4 and 5      */
1633 	0,          /* bReg 0x27 color mode                     */
1634 	1,          /* bReg 0x29 illumination mode              */
1635 	/* illumination mode settings (not used for CCD devices)*/
1636 	{ 0, 0, 0, 0, 0, 0, 0 },
1637 	{ 0, 0, 0, 0, 0, 0, 0 },
1638 	257,    /* ok StepperPhaseCorrection (reg 0x1a + 0x1b)  */
1639 	0x0e,   /* ok bOpticBlackStart (reg 0x1c)               */
1640 	0x1d,   /* ok bOpticBlackEnd (reg 0x1d)                 */
1641 	140,    /* ok wActivePixelsStart (reg 0x1e + 0x1f)      */
1642 	5369,   /* ok wLineEnd (reg 0x20 + 0x21)                */
1643 	0,      /* red lamp on    (reg 0x2c + 0x2d)             */
1644 	16383,  /* red lamp off   (reg 0x2e + 0x2f)             */
1645 	0,      /* green lamp on  (reg 0x30 + 0x31)             */
1646 	0,      /* green lamp off (reg 0x32 + 0x33)             */
1647 	0,      /* blue lamp on   (reg 0x34 + 0x35)             */
1648 	16383,  /* blue lamp off  (reg 0x36 + 0x37)             */
1649 	0x13,   /* ok stepper motor control (reg 0x45)          */
1650 	0,      /* wStepsAfterPaperSensor2 (reg 0x4c + 0x4d)    */
1651 	0x1e,   /* steps to reverse on buffer full (reg 0x50)   */
1652 	0xfc,   /* ok acceleration profile (reg 0x51)           */
1653 	0,      /* ok lines to process (reg 0x54)               */
1654 	0x13,   /* ok kickstart (reg 0x55)                      */
1655 	0x03,   /* ok pwm freq (reg 0x56)                       */
1656 	0x20,   /* ok pwm duty cycle (reg 0x57)                 */
1657 	0x0d,	/* ok Paper sense (reg 0x58)                    */
1658 	0x44,   /* ok misc io12 (reg 0x59)                      */
1659 	0x44,   /* ok misc io34 (reg 0x5a)                      */
1660 	0x16,   /* ok misc io56 (reg 0x5b)                      */
1661 	0,      /* ok test mode ADC Output CODE MSB (reg 0x5c)  */
1662 	0,      /* ok test mode ADC Output CODE LSB (reg 0x5d)  */
1663 	0,      /* ok test mode (reg 0x5e)                      */
1664 	_LM9831,
1665 	MODEL_MUSTEK600,
1666 	1.5
1667 };
1668 
1669 /** Mustek BearPaw 1200 (LM9832) */
1670 static HWDef Hw0x0400_0x1001_1 =
1671 {
1672 	1.25,   /* ok dMaxMotorSpeed                            */
1673 	1.25,   /* ok dMaxMoveSpeed                             */
1674 	0.0,    /* dHighSpeed                                   */
1675 	12,     /* ok dIntegrationTimeLowLamp                   */
1676 	12,     /* ok dIntegrationTimeHighLamp                  */
1677 	600,    /* ok wMotorDpi (Full step DPI)                 */
1678 	512,    /* ok wRAMSize (KB)                             */
1679 	9,      /* ok dMinIntegrationTimeLowres (ms)            */
1680 	9,      /* ok dMinIntegrationTimeHighres (ms)           */
1681 	1169,   /* ok wGreenPWMDutyCycleLow (reg 0x2a + 0x2b)   */
1682 	1169,   /* ok wGreenPWMDutyCycleHigh (reg 0x2a + 0x2b)  */
1683 	0x02,   /* ok bSensorConfiguration (0x0b)               */
1684 	0x7c,   /* ok sensor control settings (reg 0x0c)        */
1685 	0x3f,   /* ok sensor control settings (reg 0x0d)        */
1686 	0x15,   /* ok sensor control settings (reg 0x0e)        */
1687             /* ok  mono (reg 0x0f to 0x18) */
1688 	{ 0x04, 0x07, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x03, 0x06},
1689             /* ok color (reg 0x0f to 0x18)                  */
1690 	{ 0x04, 0x16, 0x01, 0x02, 0x05, 0x06, 0x00, 0x00, 0x0a, 0x16},
1691 	_GREEN_CH,	/* bReg_0x26 color mode - bits 4 and 5      */
1692 	0,          /* bReg 0x27 color mode                     */
1693 	1,          /* bReg 0x29 illumination mode              */
1694 	/* illumination mode settings (not used for CCD devices)*/
1695 	{ 0, 0, 0, 0, 0, 0, 0 },
1696 	{ 0, 0, 0, 0, 0, 0, 0 },
1697 	257,    /* ok StepperPhaseCorrection (reg 0x1a + 0x1b)  */
1698 	0x0e,   /* ok bOpticBlackStart (reg 0x1c)               */
1699 	0x1d,   /* ok bOpticBlackEnd (reg 0x1d)                 */
1700 	140,    /* ok wActivePixelsStart (reg 0x1e + 0x1f)      */
1701 	5369,   /* ok wLineEnd (reg 0x20 + 0x21)                */
1702 	0,      /* red lamp on    (reg 0x2c + 0x2d)             */
1703 	16383,  /* red lamp off   (reg 0x2e + 0x2f)             */
1704 	0,      /* green lamp on  (reg 0x30 + 0x31)             */
1705 	0,      /* green lamp off (reg 0x32 + 0x33)             */
1706 	0,      /* blue lamp on   (reg 0x34 + 0x35)             */
1707 	16383,  /* blue lamp off  (reg 0x36 + 0x37)             */
1708 	0x13,   /* ok stepper motor control (reg 0x45)          */
1709 	0,      /* wStepsAfterPaperSensor2 (reg 0x4c + 0x4d)    */
1710 	0x1e,   /* steps to reverse on buffer full (reg 0x50)   */
1711 	0xfc,   /* ok acceleration profile (reg 0x51)           */
1712 	0,      /* ok lines to process (reg 0x54)               */
1713 	0x13,   /* ok kickstart (reg 0x55)                      */
1714 	0x03,   /* ok pwm freq (reg 0x56)                       */
1715 	0x20,   /* ok pwm duty cycle (reg 0x57)                 */
1716 	0x0d,	/* ok Paper sense (reg 0x58)                    */
1717 	0x44,   /* ok misc io12 (reg 0x59)                      */
1718 	0x44,   /* ok misc io34 (reg 0x5a)                      */
1719 	0x16,   /* ok misc io56 (reg 0x5b)                      */
1720 	0,      /* ok test mode ADC Output CODE MSB (reg 0x5c)  */
1721 	0,      /* ok test mode ADC Output CODE LSB (reg 0x5d)  */
1722 	0,      /* ok test mode (reg 0x5e)                      */
1723 	_LM9832,
1724 	MODEL_MUSTEK600,
1725 	1.5
1726 };
1727 
1728 /** BearPaw 2400 */
1729 static HWDef Hw0x0400_0x1001_0 =
1730 {
1731 	1.0/*1.8*/, /* ok dMaxMotorSpeed                        */
1732 	0.9/*1.8*/, /* ok dMaxMoveSpeed                         */
1733 	0.0,    /* ok dHighSpeed                                */
1734 	12,     /* ok dIntegrationTimeLowLamp                   */
1735 	12,     /* ok dIntegrationTimeHighLamp                  */
1736 	1200 /*	600*/ ,   /* ok wMotorDpi (Full step DPI)       */
1737 	2048,   /* ok wRAMSize (KB)                             */
1738 	9,      /* ok dMinIntegrationTimeLowres (ms)            */
1739 	9,      /* ok dMinIntegrationTimeHighres (ms)           */
1740 	1169,   /* ok wGreenPWMDutyCycleLow (reg 0x2a + 0x2b)   */
1741 	1169,   /* ok wGreenPWMDutyCycleHigh (reg 0x2a + 0x2b)  */
1742 
1743 	0x02 /*0x06*/,   /* ok bSensorConfiguration (0x0b)          */
1744 	0x3c,   /* ok sensor control settings (reg 0x0c)        */
1745 	0x3f,   /* ok sensor control settings (reg 0x0d)        */
1746 	0x11,   /* ok sensor control settings (reg 0x0e)        */
1747             /* ok  mono (reg 0x0f to 0x18) */
1748 
1749 	{2, 7, 0, 1, 0, 0, 0, 0, 4, 0},
1750 
1751 /*	{5, 14, 12, 15, 18, 21, 0, 0, 0, 9 },*/
1752 	{1,  4,  4,  5,  6,  7, 0, 0, 0, 3 },
1753 
1754 	_GREEN_CH, /* bReg_0x26 color mode - bits 4 and 5      */
1755 	0,         /* bReg 0x27 color mode                     */
1756 	1,         /* bReg 0x29 illumination mode              */
1757 	/* illumination mode settings (not used for CCD devices)*/
1758 	{ 0, 0, 0, 0, 0, 0, 0 },
1759 	{ 0, 0, 0, 0, 0, 0, 0 },
1760 
1761 	257,    /* StepperPhaseCorrection (reg 0x1a + 0x1b)    */
1762 	13,     /* bOpticBlackStart (reg 0x1c)                 */
1763 	60,     /* bOpticBlackEnd (reg 0x1d)                   */
1764 	10,     /* wActivePixelsStart (reg 0x1e + 0x1f)        */
1765 5416 /*	11000*/,  /* wLineEnd (reg 0x20 + 0x21)            */
1766 
1767 	1,      /* ok red lamp on    (reg 0x2c + 0x2d)         */
1768 	16383,  /* ok red lamp off   (reg 0x2e + 0x2f)         */
1769 	1,      /* ok green lamp on  (reg 0x30 + 0x31)         */
1770 	16383,  /* ok green lamp off (reg 0x32 + 0x33)         */
1771 	1,      /* ok blue lamp on   (reg 0x34 + 0x35)         */
1772 	16383,  /* ok blue lamp off  (reg 0x36 + 0x37)         */
1773 
1774 	0x03,   /* ok stepper motor control (reg 0x45)         */
1775 	0,      /* wStepsAfterPaperSensor2 (reg 0x4c + 0x4d)   */
1776 	0x1e,   /* steps to reverse on buffer full (reg 0x50)  */
1777 	0xfc,   /* ok acceleration profile (reg 0x51)          */
1778 	0x03,   /* ok lines to process (reg 0x54)              */
1779 	0x13,   /* Kickstart      0x55                         */
1780 	2,      /* PWM frequency  0x56                         */
1781 	32,     /* PWM duty cycle 0x57                         */
1782 	0x15,   /* paper sense 0x58                            */
1783 	0x44,   /* misc I/O 0x59                               */
1784 	0x44,   /* misc I/O 0x5a,                              */
1785 	0x46,   /* misc I/O 0x5b                               */
1786 	0, 0, 0,/* test registers, set to 0 (0x5c, 0x5d, 0x5e) */
1787 	_LM9832,
1788 	MODEL_MUSTEK1200,
1789 	1.0
1790 };
1791 
1792 /** EPSON Perfection/Photo 1250 */
1793 static HWDef Hw0x04B8_0x010F =
1794 {
1795 	0.8,    /* dMaxMotorSpeed                               */
1796 	0.8,    /* dMaxMoveSpeed                                */
1797 	4.1,    /* dHighSpeed                                   */
1798 	12,     /* dIntegrationTimeLowLamp                      */
1799 	12,     /* dIntegrationTimeHighLamp                     */
1800 	600,    /* wMotorDpi (Full step DPI)                    */
1801 	512,    /* wRAMSize (KB)                                */
1802 	4,      /* dMinIntegrationTimeLowres (ms)               */
1803 	5,      /* dMinIntegrationTimeHighres (ms)              */
1804 	1,      /* ok wGreenPWMDutyCycleLow (reg 0x2a + 0x2b)   */
1805 	1,      /* ok wGreenPWMDutyCycleHigh (reg 0x2a + 0x2b)  */
1806 
1807 	0x02,   /* ok bSensorConfiguration (0x0b)               */
1808 	0x04,   /* ok sensor control settings (reg 0x0c)        */
1809 	0x7d,   /* ok sensor control settings (reg 0x0d)        */
1810 	0x37,   /* ok sensor control settings (reg 0x0e)        */
1811 
1812 	{0x02, 0x07, 0x00, 0x01, 0x04, 0x07, 0x00, 0x00, 0x03, 0x07},
1813 	        /* ok mono (reg 0x0f to 0x18) */
1814 	{0x06, 0x16, 0x00, 0x05, 0x0c, 0x17, 0x00, 0x00, 0x0a, 0x17},
1815 	        /* ok color (reg 0x0f to 0x18)                  */
1816 	_GREEN_CH,	/* ok bReg_0x26 color mode - bits 4 and 5   */
1817 	0x40,       /* ok bReg 0x27 color mode                  */
1818 	3,          /* bReg 0x29 illumination mode              */
1819 	/* illumination mode settings (not used for CCD devices)*/
1820 	{ 0, 0, 0, 0, 0, 0, 0 },
1821 	{ 0, 0, 0, 0, 0, 0, 0 },
1822 
1823 	1,      /* ok StepperPhaseCorrection (reg 0x1a + 0x1b)  */
1824 	0x00,   /* ok bOpticBlackStart (reg 0x1c)               */
1825 	0x42,   /* ok bOpticBlackEnd (reg 0x1d)                 */
1826 	69,     /* ok wActivePixelsStart (reg 0x1e + 0x1f)      */
1827 	10758,  /* ok wLineEnd (reg 0x20 + 0x21)                */
1828 
1829 	16383,  /* ok red lamp on    (reg 0x2c + 0x2d)          */
1830 	0,      /* ok red lamp off   (reg 0x2e + 0x2f)          */
1831 	16383,  /* ok green lamp on  (reg 0x30 + 0x31)          */
1832 	0,      /* ok green lamp off (reg 0x32 + 0x33)          */
1833 	16383,  /* ok blue lamp on   (reg 0x34 + 0x35)          */
1834 	0,      /* ok blue lamp off  (reg 0x36 + 0x37)          */
1835 
1836 	3,      /* ok stepper motor control (reg 0x45)          */
1837 	0,      /* ok wStepsAfterPaperSensor2 (reg 0x4c + 0x4d) */
1838 	0x1e,   /* steps to reverse on buffer full (reg 0x50)   */
1839 	0x0c,   /* ok acceleration profile (reg 0x51)           */
1840 	0,      /* ok lines to process (reg 0x54)               */
1841 	0x0f,   /* ok kickstart (reg 0x55)                      */
1842 	0x02,   /* ok pwm freq (reg 0x56)                       */
1843 	1,      /* ok pwm duty cycle (reg 0x57)                 */
1844 
1845 	0x0d,   /* ok Paper sense (reg 0x58)                    */
1846 
1847 	0x41,   /* ok misc io12 (reg 0x59)                      */
1848 	0x44,   /* ok misc io34 (reg 0x5a)                      */
1849 	0x14,   /* ok misc io56 (reg 0x5b)                      */
1850 	0,      /* ok test mode ADC Output CODE MSB (reg 0x5c)  */
1851 	0,      /* ok test mode ADC Output CODE LSB (reg 0x5d)  */
1852 	0,      /* ok test mode (reg 0x5e)                      */
1853 	_LM9832,
1854 	MODEL_EPSON,
1855 	1.0
1856 };
1857 
1858 /** EPSON Perfection/Photo 1260 */
1859 static HWDef Hw0x04B8_0x011D =
1860 {
1861 	0.9,    /* dMaxMotorSpeed                               */
1862 	0.8,    /* dMaxMoveSpeed                                */
1863 	3.0,    /* dHighSpeed                                   */
1864 	12,     /* dIntegrationTimeLowLamp                      */
1865 	12,     /* dIntegrationTimeHighLamp                     */
1866 	600,    /* wMotorDpi (Full step DPI)                    */
1867 	512,    /* wRAMSize (KB)                                */
1868 	4,      /* dMinIntegrationTimeLowres (ms)               */
1869 	5,      /* dMinIntegrationTimeHighres (ms)              */
1870 	1,      /* ok wGreenPWMDutyCycleLow (reg 0x2a + 0x2b)   */
1871 	1,      /* ok wGreenPWMDutyCycleHigh (reg 0x2a + 0x2b)  */
1872 
1873 	0x02,   /* ok bSensorConfiguration (0x0b)               */
1874 	0x04,   /* ok sensor control settings (reg 0x0c)        */
1875 	0x7d,   /* ok sensor control settings (reg 0x0d)        */
1876 	0x37,   /* ok sensor control settings (reg 0x0e)        */
1877 
1878 	{0x02, 0x07, 0x00, 0x01, 0x04, 0x07, 0x00, 0x00, 0x03, 0x07},
1879 	        /* ok mono (reg 0x0f to 0x18) */
1880 	{0x06, 0x0b, 0x00, 0x05, 0x0c, 0x17, 0x00, 0x00, 0x0a, 0x17},
1881 	        /* ok color (reg 0x0f to 0x18)                  */
1882 	_GREEN_CH,  /* ok bReg_0x26 color mode - bits 4 and 5   */
1883 	0x42,       /* ok bReg 0x27 color mode                  */
1884 	3,          /* bReg 0x29 illumination mode              */
1885 	/* illumination mode settings (not used for CCD devices)*/
1886 	{ 0, 0, 0, 0, 0, 0, 0 },
1887 	{ 0, 0, 0, 0, 0, 0, 0 },
1888 
1889 	1,      /* ok StepperPhaseCorrection (reg 0x1a + 0x1b)  */
1890 	0x00,   /* ok bOpticBlackStart (reg 0x1c)               */
1891 	0x42,   /* ok bOpticBlackEnd (reg 0x1d)                 */
1892 	69,     /* ok wActivePixelsStart (reg 0x1e + 0x1f)      */
1893 	10766,  /* ok wLineEnd (reg 0x20 + 0x21)                */
1894 
1895 	16383,  /* ok red lamp on    (reg 0x2c + 0x2d)          */
1896 	0,      /* ok red lamp off   (reg 0x2e + 0x2f)          */
1897 	16383,  /* ok green lamp on  (reg 0x30 + 0x31)          */
1898 	0,      /* ok green lamp off (reg 0x32 + 0x33)          */
1899 	16383,  /* ok blue lamp on   (reg 0x34 + 0x35)          */
1900 	0,      /* ok blue lamp off  (reg 0x36 + 0x37)          */
1901 
1902 	3,      /* ok stepper motor control (reg 0x45)          */
1903 	0,      /* ok wStepsAfterPaperSensor2 (reg 0x4c + 0x4d) */
1904 	0x1e,   /* steps to reverse on buffer full (reg 0x50)   */
1905 	0x0c,   /* ok acceleration profile (reg 0x51)           */
1906 	0,      /* ok lines to process (reg 0x54)               */
1907 	0x0f,   /* ok kickstart (reg 0x55)                      */
1908 	0x02,   /* ok pwm freq (reg 0x56)                       */
1909 	1,      /* ok pwm duty cycle (reg 0x57)                 */
1910 
1911 	0x0d,   /* ok Paper sense (reg 0x58)                    */
1912 
1913 	0x41,   /* ok misc io12 (reg 0x59)                      */
1914 	0x44,   /* ok misc io34 (reg 0x5a)                      */
1915 	0x14,   /* ok misc io56 (reg 0x5b)                      */
1916 	0,      /* ok test mode ADC Output CODE MSB (reg 0x5c)  */
1917 	0,      /* ok test mode ADC Output CODE LSB (reg 0x5d)  */
1918 	0,      /* ok test mode (reg 0x5e)                      */
1919 	_LM9832,
1920 	MODEL_EPSON,
1921 	1.5
1922 };
1923 
1924 /** Umax 3400/3450 */
1925 static HWDef Hw0x1606_0x0060 =
1926 {
1927 	1.5,    /* dMaxMotorSpeed                            */
1928 	0.8,    /* dMaxMoveSpeed                             */
1929 	2.75,   /* dHighSpeed                                */
1930 	9,      /* dIntegrationTimeLowLamp                   */
1931 	9,      /* dIntegrationTimeHighLamp                  */
1932 	600,    /* wMotorDpi (Full step DPI)                 */
1933 	512,    /* wRAMSize (KB)                             */
1934 	8,      /* dMinIntegrationTimeLowres (ms)            */
1935 	8,      /* dMinIntegrationTimeHighres (ms)           */
1936 	4095,   /* wGreenPWMDutyCycleLow (reg 0x2a + 0x2b)   */
1937 	4095,   /* wGreenPWMDutyCycleHigh (reg 0x2a + 0x2b)  */
1938 
1939 	0x06,   /* bSensorConfiguration (0x0b)               */
1940 	0x73,   /* sensor control settings (reg 0x0c)        */
1941 	0x77,   /* sensor control settings (reg 0x0d)        */
1942 	0x15,   /* sensor control settings (reg 0x0e)        */
1943 
1944 	{0x00, 0x03, 0x04, 0x05, 0x00, 0x00, 0x00, 0x00, 0x07, 0x03},
1945             /* mono (reg 0x0f to 0x18)                   */
1946 
1947 	{0x01, 0x0c, 0x0e, 0x10, 0x00, 0x00, 0x00, 0x00, 0x16, 0x0c},
1948                 /* color (reg 0x0f to 0x18)              */
1949 	_GREEN_CH,  /* bReg_0x26 color mode - bits 4 and 5   */
1950 	0x40,       /* bReg 0x27 color mode                  */
1951 	1,          /* bReg 0x29 illumination mode           */
1952 	/* illumination mode settings (not used for CCD devices) */
1953 	{ 0, 0, 0, 0, 0, 0, 0 },
1954 	{ 0, 0, 0, 0, 0, 0, 0 },
1955 
1956 	1,      /* StepperPhaseCorrection (reg 0x1a + 0x1b)  */
1957 	0x2f,   /* bOpticBlackStart (reg 0x1c)               */
1958 	0x3e,   /* bOpticBlackEnd (reg 0x1d)                 */
1959 	110,    /* ? wActivePixelsStart (reg 0x1e + 0x1f)    */
1960 	5469,   /* wLineEnd (reg 0x20 + 0x21)                */
1961 
1962 	1,      /* red lamp on    (reg 0x2c + 0x2d)          */
1963 	16383,  /* red lamp off   (reg 0x2e + 0x2f)          */
1964 	0,      /* green lamp on  (reg 0x30 + 0x31)          */
1965 	0,      /* green lamp off (reg 0x32 + 0x33)          */
1966 	32,     /* blue lamp on   (reg 0x34 + 0x35)          */
1967 	48,     /* blue lamp off  (reg 0x36 + 0x37)          */
1968 
1969 	3,      /* stepper motor control (reg 0x45)          */
1970 	0,      /* wStepsAfterPaperSensor2 (reg 0x4c + 0x4d) */
1971 	11,     /* steps to reverse on buffer full (reg 0x50)*/
1972 	0xfc,   /* acceleration profile (reg 0x51)           */
1973 	3,      /* lines to process (reg 0x54)               */
1974 	0xcb,   /* kickstart (reg 0x55)                      */
1975 	0x05,   /* pwm freq (reg 0x56)                       */
1976 	5,      /* pwm duty cycle (reg 0x57)                 */
1977 
1978 	0x0d,   /* Paper sense (reg 0x58)                    */
1979 
1980 	0x44,   /* misc io12 (reg 0x59)                      */
1981 	0x45,   /* misc io34 (reg 0x5a)                      */
1982 	0x74,   /* misc io56 (reg 0x5b)                      */
1983 	0,      /* test mode ADC Output CODE MSB (reg 0x5c)  */
1984 	0,      /* test mode ADC Output CODE LSB (reg 0x5d)  */
1985 	0,      /* test mode (reg 0x5e)                      */
1986 	_LM9832,
1987 	MODEL_UMAX,
1988 	1.0
1989 };
1990 
1991 /** Umax 5400 */
1992 static HWDef Hw0x1606_0x0160 =
1993 {
1994 	1.1,    /* dMaxMotorSpeed                            */
1995 	0.9,    /* dMaxMoveSpeed                             */
1996 	0.0,    /* dHighSpeed                                */
1997 	9,      /* dIntegrationTimeLowLamp                   */
1998 	9,      /* dIntegrationTimeHighLamp                  */
1999 	600,    /* wMotorDpi (Full step DPI)                 */
2000 	512,    /* wRAMSize (KB)                             */
2001 	8,      /* dMinIntegrationTimeLowres (ms)            */
2002 	8,      /* dMinIntegrationTimeHighres (ms)           */
2003 	4095,   /* wGreenPWMDutyCycleLow (reg 0x2a + 0x2b)   */
2004 	4095,   /* wGreenPWMDutyCycleHigh (reg 0x2a + 0x2b)  */
2005 
2006 	0x06,   /* bSensorConfiguration (0x0b)               */
2007 	0x73,   /* sensor control settings (reg 0x0c)        */
2008 	0x77,   /* sensor control settings (reg 0x0d)        */
2009 	0x25,   /* sensor control settings (reg 0x0e)        */
2010 
2011 	/* mono (reg 0x0f to 0x18) */
2012 	{0x00, 0x03, 0x04, 0x05, 0x00, 0x00, 0x00, 0x00, 0x07, 0x03},
2013 
2014 	/* color (reg 0x0f to 0x18)              */
2015 	{0x01, 0x0c, 0x0e, 0x10, 0x00, 0x00, 0x00, 0x00, 0x16, 0x0c},
2016 
2017 	_GREEN_CH,	/* bReg_0x26 color mode - bits 4 and 5   */
2018 	0x40,       /* bReg 0x27 color mode                  */
2019 	1,          /* bReg 0x29 illumination mode           */
2020 
2021 	/* illumination mode settings (not used for CCD devices) */
2022 	{ 0, 0, 0, 0, 0, 0, 0 },
2023 	{ 0, 0, 0, 0, 0, 0, 0 },
2024 
2025 	1,      /* StepperPhaseCorrection (reg 0x1a + 0x1b)  */
2026 	20,     /* bOpticBlackStart (reg 0x1c)               */
2027 	45,     /* bOpticBlackEnd (reg 0x1d)                 */
2028 	110,    /* ? wActivePixelsStart (reg 0x1e + 0x1f)    */
2029 	10669,  /* wLineEnd (reg 0x20 + 0x21)                */
2030 
2031 	1,      /* red lamp on    (reg 0x2c + 0x2d)          */
2032 	16383,  /* red lamp off   (reg 0x2e + 0x2f)          */
2033 	0,      /* green lamp on  (reg 0x30 + 0x31)          */
2034 	0,      /* green lamp off (reg 0x32 + 0x33)          */
2035 	32,     /* blue lamp on   (reg 0x34 + 0x35)          */
2036 	48,     /* blue lamp off  (reg 0x36 + 0x37)          */
2037 
2038 	3,      /* stepper motor control (reg 0x45)          */
2039 	0,      /* wStepsAfterPaperSensor2 (reg 0x4c + 0x4d) */
2040 	11,     /* steps to reverse on buffer full (reg 0x50)*/
2041 	0xfc,   /* acceleration profile (reg 0x51)           */
2042 	3,      /* lines to process (reg 0x54)               */
2043 	0xcb,   /* kickstart (reg 0x55)                      */
2044 	0x05,   /* pwm freq (reg 0x56)                       */
2045 	5,      /* pwm duty cycle (reg 0x57)                 */
2046 
2047 	0x0d,   /* Paper sense (reg 0x58)                    */
2048 
2049 	0x44,   /* misc io12 (reg 0x59)                      */
2050 	0x45,   /* misc io34 (reg 0x5a)                      */
2051 	0x7c,   /* misc io56 (reg 0x5b)                      */
2052 	0,      /* test mode ADC Output CODE MSB (reg 0x5c)  */
2053 	0,      /* test mode ADC Output CODE LSB (reg 0x5d)  */
2054 	0,      /* test mode (reg 0x5e)                      */
2055 	_LM9832,
2056 	MODEL_UMAX1200,
2057 	1.0
2058 };
2059 
2060 /** Canon N650U/N656U */
2061 static HWDef Hw0x04A9_0x2206 =
2062 {
2063 	0.76,   /* dMaxMotorSpeed                                */
2064 	0.243,  /* dMaxMoveSpeed                                 */
2065 	0.0,    /* dHighSpeed                                    */
2066 	100,    /* dIntegrationTimeLowLamp                       */
2067 	100,    /* dIntegrationTimeHighLamp                      */
2068 	1200,   /* wMotorDpi (Full step DPI)                     */
2069 	512,    /* wRAMSize (KB)                                 */
2070 	3.75,   /* dMinIntegrationTimeLowres (ms)                */
2071 	5.75,   /* dMinIntegrationTimeHighres (ms)               */
2072 	0,      /* wGreenPWMDutyCycleLow (reg 0x2a + 0x2b)       */
2073 	0,      /* wGreenPWMDutyCycleHigh (reg 0x2a + 0x2b)      */
2074 
2075 	0x15,   /* bSensorConfiguration (0x0b)                   */
2076 	0x4c,   /* sensor control settings (reg 0x0c)            */
2077 	0x2f,   /* sensor control settings (reg 0x0d)            */
2078 	0x00,   /* sensor control settings (reg 0x0e)            */
2079 
2080 	/* mono & color (reg 0x0f to 0x18) the
2081 	   same for CIS devices                          */
2082 
2083 	{0x00, 0x00, 0x04, 0x05, 0x06, 0x07, 0x00, 0x00, 0x00, 0x05},
2084 	{0x00, 0x00, 0x04, 0x05, 0x06, 0x07, 0x00, 0x00, 0x00, 0x05},
2085 
2086 	(_BLUE_CH | _ONE_CH_COLOR), /* bReg_0x26 color mode       */
2087 
2088 	0x00,   /* bReg 0x27 color mode                           */
2089 	2,      /* bReg 0x29 illumination mode (runtime)          */
2090             /* illumination mode settings                     */
2091 	{ 3,  0,    0, 23,  850,  0,   0 },
2092 	{ 2, 23, 2500, 23, 1800, 23, 950 },
2093 
2094 	1,      /* StepperPhaseCorrection (reg 0x1a + 0x1b)       */
2095 	0,      /* bOpticBlackStart (reg 0x1c)                    */
2096 	0,      /* bOpticBlackEnd (reg 0x1d)                      */
2097 	89,     /* ? wActivePixelsStart (reg 0x1e + 0x1f)         */
2098 	6074,   /* wLineEnd (reg 0x20 + 0x21)                     */
2099 
2100 	23,     /* red lamp on    (reg 0x2c + 0x2d)               */
2101 	2500,   /* red lamp off   (reg 0x2e + 0x2f)               */
2102 	23,     /* green lamp on  (reg 0x30 + 0x31)               */
2103 	1800,   /* green lamp off (reg 0x32 + 0x33)               */
2104 	23,     /* blue lamp on   (reg 0x34 + 0x35)               */
2105 	950,    /* blue lamp off  (reg 0x36 + 0x37)               */
2106 
2107 	3,      /* stepper motor control (reg 0x45)               */
2108 	0,      /* wStepsAfterPaperSensor2 (reg 0x4c + 0x4d)      */
2109 	0x3f,   /* steps to reverse when buffer is full reg 0x50) */
2110 	0xfc,   /* acceleration profile (reg 0x51)                */
2111 	0,      /* lines to process (reg 0x54)                    */
2112 	0x0f,   /* kickstart (reg 0x55)                           */
2113 	0x08,   /* pwm freq (reg 0x56)                            */
2114 	0x1f,   /* pwm duty cycle (reg 0x57)                      */
2115 
2116 	0x05,   /* Paper sense (reg 0x58)                         */
2117 
2118 	0x66,   /* misc io12 (reg 0x59)                           */
2119 	0x16,   /* misc io34 (reg 0x5a)                           */
2120 	0x91,   /* misc io56 (reg 0x5b)                           */
2121 	0x01,   /* test mode ADC Output CODE MSB (reg 0x5c)       */
2122 	0,      /* test mode ADC Output CODE LSB (reg 0x5d)       */
2123 	0,      /* test mode (reg 0x5e)                           */
2124 	_LM9832,
2125 	MODEL_CANON600,
2126 	2.0
2127 };
2128 
2129 /** Canon N1220U */
2130 static HWDef Hw0x04A9_0x2207 =
2131 {
2132 	0.72,   /* dMaxMotorSpeed                                 */
2133 	0.36,   /* dMaxMoveSpeed                                  */
2134 	0.0,    /* dHighSpeed                                     */
2135 	100,    /* wIntegrationTimeLowLamp                        */
2136 	100,    /* wIntegrationTimeHighLamp                       */
2137 	1200,   /* wMotorDpi (Full step DPI)                      */
2138 	512,    /* wRAMSize (KB)                                  */
2139 	3.75,   /* dMinIntegrationTimeLowres (ms)                 */
2140 	5.75,   /* dMinIntegrationTimeHighres (ms)                */
2141 	0,      /* wGreenPWMDutyCycleLow (reg 0x2a + 0x2b)        */
2142 	0,      /* wGreenPWMDutyCycleHigh (reg 0x2a + 0x2b)       */
2143 
2144 	0x15,   /* bSensorConfiguration (0x0b)                    */
2145 	0x4c,   /* sensor control settings (reg 0x0c)             */
2146 	0x2f,   /* sensor control settings (reg 0x0d)             */
2147 	0x00,   /* sensor control settings (reg 0x0e)             */
2148 
2149     /* mono (reg 0x0f to 0x18)                        */
2150 	{0x00, 0x00, 0x04, 0x05, 0x06, 0x07, 0x00, 0x00, 0x00, 0x05},
2151 
2152 	/* color (reg 0x0f to 0x18)                       */
2153 	{0x00, 0x00, 0x04, 0x05, 0x06, 0x07, 0x00, 0x00, 0x00, 0x05},
2154 
2155 	(_BLUE_CH | _ONE_CH_COLOR), /* bReg_0x26 color mode       */
2156 
2157 	0x00,   /* bReg 0x27 color mode                           */
2158 	2,      /* bReg 0x29 illumination mode                    */
2159 	{ 3,  0,     0, 23,  2200,  0,    0 },
2160 	{ 2, 23, 16383, 23, 15000, 23, 6600 },
2161 
2162 	1,      /* StepperPhaseCorrection (reg 0x1a + 0x1b)       */
2163 	0,      /* bOpticBlackStart (reg 0x1c)                    */
2164 	0,      /* bOpticBlackEnd (reg 0x1d)                      */
2165 	124,    /* wActivePixelsStart (reg 0x1e + 0x1f)           */
2166 	10586,  /* wLineEnd (reg 0x20 + 0x21)                     */
2167 
2168 	23,     /* red lamp on    (reg 0x2c + 0x2d)               */
2169 	16383,  /* red lamp off   (reg 0x2e + 0x2f)               */
2170 	23,     /* green lamp on  (reg 0x30 + 0x31)               */
2171 	15000,  /* green lamp off (reg 0x32 + 0x33)               */
2172 	23,     /* blue lamp on   (reg 0x34 + 0x35)               */
2173 	6600,   /* blue lamp off  (reg 0x36 + 0x37)               */
2174 
2175 	3,      /* stepper motor control (reg 0x45)               */
2176 	0,      /* wStepsAfterPaperSensor2 (reg 0x4c + 0x4d)      */
2177 	0,      /* steps to reverse when buffer is full reg 0x50) */
2178 	0xfc,   /* acceleration profile (reg 0x51)                */
2179 	0,      /* lines to process (reg 0x54)                    */
2180 	0x0f,   /* kickstart (reg 0x55)                           */
2181 	0x08,   /* pwm freq (reg 0x56)                            */
2182 	0x1f,   /* pwm duty cycle (reg 0x57)                      */
2183 
2184 	0x05,   /* Paper sense (reg 0x58)                         */
2185 
2186 	0x66,   /* misc io12 (reg 0x59)                           */
2187 	0x16,   /* misc io34 (reg 0x5a)                           */
2188 	0x91,   /* misc io56 (reg 0x5b)                           */
2189 	0x01,   /* test mode ADC Output CODE MSB (reg 0x5c)       */
2190 	0,      /* test mode ADC Output CODE LSB (reg 0x5d)       */
2191 	0,      /* test mode (reg 0x5e)                           */
2192 	_LM9832,
2193 	MODEL_CANON1200,
2194 	2.0
2195 };
2196 
2197 /** Canon D660U */
2198 static HWDef Hw0x04A9_0x2208 =
2199 {
2200 	1.2,    /* dMaxMotorSpeed                                 */
2201 	1.1,    /* dMaxMoveSpeed                                  */
2202 	2.75,   /* dHighSpeed                                     */
2203 	9,      /* dIntegrationTimeLowLamp                        */
2204 	9,      /* dIntegrationTimeHighLamp                       */
2205 	300,    /* wMotorDpi (Full step DPI)                      */
2206 	512,    /* wRAMSize (KB)                                  */
2207 	8,      /* dMinIntegrationTimeLowres (ms)                 */
2208 	8,      /* dMinIntegrationTimeHighres (ms)                */
2209 	4095,   /* wGreenPWMDutyCycleLow (reg 0x2a + 0x2b)        */
2210 	4095,   /* wGreenPWMDutyCycleHigh (reg 0x2a + 0x2b)       */
2211 
2212 	0x02,   /* bSensorConfiguration (0x0b)                    */
2213 	0x60,   /* sensor control settings (reg 0x0c)             */
2214 	0x2f,   /* sensor control settings (reg 0x0d)             */
2215 	0x13,   /* sensor control settings (reg 0x0e)             */
2216 
2217 	{0x06, 0x17, 0x01, 0x03, 0x05, 0x07, 0x00, 0x00, 0x0b },
2218 	{0x06, 0x17, 0x01, 0x03, 0x05, 0x07, 0x00, 0x00, 0x0b },
2219 	_GREEN_CH,
2220 	0,      /* bReg 0x27 color mode                           */
2221 	1,      /* bReg 0x29 illumination mode                    */
2222 
2223 	/* illumination mode settings (not used for CCD devices)  */
2224 	{ 0, 0, 0, 0, 0, 0, 0 },
2225 	{ 0, 0, 0, 0, 0, 0, 0 },
2226 
2227 	0,      /* StepperPhaseCorrection (reg 0x1a + 0x1b)       */
2228 	13,     /* bOpticBlackStart (reg 0x1c)                    */
2229 	33,     /* bOpticBlackEnd (reg 0x1d)                      */
2230 	64,     /* wActivePixelsStart (reg 0x1e + 0x1f)           */
2231 	5440,   /* wLineEnd (reg 0x20 + 0x21)                     */
2232 
2233 	16383,  /* red lamp on    (reg 0x2c + 0x2d)               */
2234 	1,      /* red lamp off   (reg 0x2e + 0x2f)               */
2235 	0,      /* green lamp on  (reg 0x30 + 0x31)               */
2236 	0,      /* green lamp off (reg 0x32 + 0x33)               */
2237 	0,      /* blue lamp on   (reg 0x34 + 0x35)               */
2238 	0,      /* blue lamp off  (reg 0x36 + 0x37)               */
2239 
2240 	3,      /* stepper motor control (reg 0x45)               */
2241 	0,      /* wStepsAfterPaperSensor2 (reg 0x4c + 0x4d)      */
2242 	0x20,   /* steps to reverse when buffer is full reg 0x50) */
2243 	0xfc,   /* acceleration profile (reg 0x51)                */
2244 	0,      /* lines to process (reg 0x54)                    */
2245 	0,      /* kickstart (reg 0x55)                           */
2246 	0x02,   /* pwm freq (reg 0x56)                            */
2247 	0x1f,   /* pwm duty cycle (reg 0x57)                      */
2248 	0x05,   /* Paper sense (reg 0x58)                         */
2249 	0x44,   /* misc io12 (reg 0x59)                           */
2250 	0x14,   /* misc io34 (reg 0x5a)                           */
2251 	0x11,   /* misc io56 (reg 0x5b)                           */
2252 	0,      /* test mode ADC Output CODE MSB (reg 0x5c)       */
2253 	0,      /* test mode ADC Output CODE LSB (reg 0x5d)       */
2254 	0,      /* test mode (reg 0x5e)                           */
2255 	_LM9832,
2256 	MODEL_CANONCCD1200,
2257 	1.5
2258 };
2259 
2260 /** Canon 670/676/LiDE20 */
2261 static HWDef Hw0x04A9_0x220D =
2262 {
2263 	0.72,   /* dMaxMotorSpeed                                 */
2264 	0.23,   /* dMaxMoveSpeed                                  */
2265 	0.0,    /* dHighSpeed                                     */
2266 	100,    /* dIntegrationTimeLowLamp                        */
2267 	100,    /* dIntegrationTimeHighLamp                       */
2268 	1200,   /* wMotorDpi (Full step DPI)                      */
2269 	512,    /* wRAMSize (KB)                                  */
2270 	3.75,   /* dMinIntegrationTimeLowres (ms)                 */
2271 	5.75,   /* dMinIntegrationTimeHighres (ms)                */
2272 	0,      /* wGreenPWMDutyCycleLow (reg 0x2a + 0x2b)        */
2273 	0,      /* wGreenPWMDutyCycleHigh (reg 0x2a + 0x2b)       */
2274 
2275 	0x15,   /* bSensorConfiguration (0x0b)                    */
2276 	0x4c,   /* sensor control settings (reg 0x0c)             */
2277 	0x2f,   /* sensor control settings (reg 0x0d)             */
2278 	0x00,   /* sensor control settings (reg 0x0e)             */
2279 
2280 	{0x00, 0x00, 0x04, 0x05, 0x06, 0x07, 0x00, 0x00, 0x00, 0x05},
2281 	        /* mono (reg 0x0f to 0x18)                        */
2282 
2283 	{0x00, 0x00, 0x04, 0x05, 0x06, 0x07, 0x00, 0x00, 0x00, 0x05},
2284 	        /* color (reg 0x0f to 0x18)                       */
2285 
2286 	(_BLUE_CH | _ONE_CH_COLOR), /* bReg_0x26 color mode       */
2287 
2288 	0x00,   /* bReg 0x27 color mode                           */
2289 	2,      /* bReg 0x29 illumination mode (runtime)          */
2290 
2291 	{ 3,  0,    0, 23, 1800,  0,    0 },
2292 	{ 2, 23, 3800, 23, 3300, 23, 2700 },
2293 
2294 	1,      /* StepperPhaseCorrection (reg 0x1a + 0x1b)       */
2295 	0,      /* bOpticBlackStart (reg 0x1c)                    */
2296 	0,      /* bOpticBlackEnd (reg 0x1d)                      */
2297 	75,     /* wActivePixelsStart (reg 0x1e + 0x1f)           */
2298 	6074,   /* wLineEnd (reg 0x20 + 0x21)                     */
2299 
2300 	23,     /* red lamp on    (reg 0x2c + 0x2d)               */
2301 	3800,   /* red lamp off   (reg 0x2e + 0x2f)               */
2302 	23,     /* green lamp on  (reg 0x30 + 0x31)               */
2303 	3300,   /* green lamp off (reg 0x32 + 0x33)               */
2304 	23,     /* blue lamp on   (reg 0x34 + 0x35)               */
2305 	2700,   /* blue lamp off  (reg 0x36 + 0x37)               */
2306 
2307 	3,      /* stepper motor control (reg 0x45)               */
2308 	0,      /* wStepsAfterPaperSensor2 (reg 0x4c + 0x4d)      */
2309 	0x3f,   /* steps to reverse when buffer is full reg 0x50) */
2310 	0xfc,   /* acceleration profile (reg 0x51)                */
2311 	0,      /* lines to process (reg 0x54)                    */
2312 	0x0f,   /* kickstart (reg 0x55)                           */
2313 	0x08,   /* pwm freq (reg 0x56)                            */
2314 	0x1f,   /* pwm duty cycle (reg 0x57)                      */
2315 
2316 	0x04,   /* Paper sense (reg 0x58)                         */
2317 
2318 	0x66,   /* misc io12 (reg 0x59)                           */
2319 	0x16,   /* misc io34 (reg 0x5a)                           */
2320 	0x91,   /* misc io56 (reg 0x5b)                           */
2321 	0x01,   /* test mode ADC Output CODE MSB (reg 0x5c)       */
2322 	0,      /* test mode ADC Output CODE LSB (reg 0x5d)       */
2323 	0,      /* test mode (reg 0x5e)                           */
2324 	_LM9833,
2325 	MODEL_CANON600,
2326 	2.0
2327 };
2328 
2329 /** Canon N1240U/LiDE30 */
2330 static HWDef Hw0x04A9_0x220E =
2331 {
2332 	0.72,   /* dMaxMotorSpeed                                 */
2333 	0.30,   /* dMaxMoveSpeed                                  */
2334 	0.0,    /* dHighSpeed                                     */
2335 	100,    /* wIntegrationTimeLowLamp                        */
2336 	100,    /* wIntegrationTimeHighLamp                       */
2337 	1200,   /* wMotorDpi (Full step DPI)                      */
2338 	512,    /* wRAMSize (KB)                                  */
2339 	3.75,   /* dMinIntegrationTimeLowres (ms)                 */
2340 	5.75,   /* dMinIntegrationTimeHighres (ms)                */
2341 	0,      /* wGreenPWMDutyCycleLow (reg 0x2a + 0x2b)        */
2342 	0,      /* wGreenPWMDutyCycleHigh (reg 0x2a + 0x2b)       */
2343 
2344 	0x15,   /* bSensorConfiguration (0x0b)                    */
2345 	0x4c,   /* sensor control settings (reg 0x0c)             */
2346 	0x2f,   /* sensor control settings (reg 0x0d)             */
2347 	0x00,   /* sensor control settings (reg 0x0e)             */
2348 
2349 	{0x00, 0x00, 0x04, 0x05, 0x06, 0x07, 0x00, 0x00, 0x00, 0x05},
2350 	        /* mono (reg 0x0f to 0x18)                        */
2351 
2352 	{0x00, 0x00, 0x04, 0x05, 0x06, 0x07, 0x00, 0x00, 0x00, 0x05},
2353 	        /* color (reg 0x0f to 0x18)                       */
2354 
2355 	(_BLUE_CH | _ONE_CH_COLOR), /* bReg_0x26 color mode       */
2356 
2357 	0x00,   /* bReg 0x27 color mode                           */
2358 	2,      /* bReg 0x29 illumination mode                    */
2359 
2360 	{ 3,  0,     0, 23,  3000,  0,    0 },
2361 	{ 2, 23, 16383, 23,  6500, 23, 4900 },
2362 
2363 	1,      /* StepperPhaseCorrection (reg 0x1a + 0x1b)       */
2364 	0,      /* bOpticBlackStart (reg 0x1c)                    */
2365 	0,      /* bOpticBlackEnd (reg 0x1d)                      */
2366 	52,     /* wActivePixelsStart (reg 0x1e + 0x1f)           */
2367 	10586,  /* wLineEnd (reg 0x20 + 0x21)                     */
2368 
2369 	23,     /* red lamp on    (reg 0x2c + 0x2d)               */
2370 	16383,  /* red lamp off   (reg 0x2e + 0x2f)               */
2371 	23,     /* green lamp on  (reg 0x30 + 0x31)               */
2372 	6500,   /* green lamp off (reg 0x32 + 0x33)               */
2373 	23,     /* blue lamp on   (reg 0x34 + 0x35)               */
2374 	4900,   /* blue lamp off  (reg 0x36 + 0x37)               */
2375 
2376 	3,      /* stepper motor control (reg 0x45)               */
2377 	0,      /* wStepsAfterPaperSensor2 (reg 0x4c + 0x4d)      */
2378 	0x20,   /* steps to reverse when buffer is full reg 0x50) */
2379 	0xfc,   /* acceleration profile (reg 0x51)                */
2380 	0,      /* lines to process (reg 0x54)                    */
2381 	0x0f,   /* kickstart (reg 0x55)                           */
2382 	0x08,   /* pwm freq (reg 0x56)                            */
2383 	0x1f,   /* pwm duty cycle (reg 0x57)                      */
2384 
2385 	0x04,   /* Paper sense (reg 0x58)                         */
2386 
2387 	0x66,   /* misc io12 (reg 0x59)                           */
2388 	0x16,   /* misc io34 (reg 0x5a)                           */
2389 	0x91,   /* misc io56 (reg 0x5b)                           */
2390 	0x01,   /* test mode ADC Output CODE MSB (reg 0x5c)       */
2391 	0,      /* test mode ADC Output CODE LSB (reg 0x5d)       */
2392 	0,      /* test mode (reg 0x5e)                           */
2393 	_LM9833,
2394 	MODEL_CANON1200,
2395 	2.0
2396 };
2397 
2398 /** Canon LiDE25 */
2399 static HWDef Hw0x04A9_0x2220 =
2400 {
2401 	0.70,   /* dMaxMotorSpeed                                 */
2402 	0.25,   /* dMaxMoveSpeed                                  */
2403 	0.0,    /* dHighSpeed                                     */
2404 	100,    /* wIntegrationTimeLowLamp                        */
2405 	100,    /* wIntegrationTimeHighLamp                       */
2406 	1200,   /* wMotorDpi (Full step DPI)                      */
2407 	512,    /* wRAMSize (KB)                                  */
2408 	3.75,   /* dMinIntegrationTimeLowres (ms)                 */
2409 	5.75,   /* dMinIntegrationTimeHighres (ms)                */
2410 	0,      /* wGreenPWMDutyCycleLow (reg 0x2a + 0x2b)        */
2411 	0,      /* wGreenPWMDutyCycleHigh (reg 0x2a + 0x2b)       */
2412 
2413 	0x11,   /* bSensorConfiguration (0x0b)                    */
2414 	0x4d,   /* sensor control settings (reg 0x0c)             */
2415 	0x2f,   /* sensor control settings (reg 0x0d)             */
2416 	0x00,   /* sensor control settings (reg 0x0e)             */
2417 
2418 	{0x00, 0x00, 0x04, 0x05, 0x06, 0x07, 0x00, 0x00, 0x00, 0x07},
2419 	        /* mono (reg 0x0f to 0x18)                        */
2420 
2421 	{0x00, 0x00, 0x04, 0x05, 0x06, 0x07, 0x00, 0x00, 0x00, 0x07},
2422 	        /* color (reg 0x0f to 0x18)                       */
2423 
2424 	(_BLUE_CH | _ONE_CH_COLOR), /* bReg_0x26 color mode       */
2425 
2426 	0x00,   /* bReg 0x27 color mode                           */
2427 	2,      /* bReg 0x29 illumination mode                    */
2428 
2429 	{ 3,  0,    0, 50, 3700,  0,    0 },
2430 	{ 2, 50, 5600, 50, 7100, 50, 4600 },
2431 
2432 	1,      /* StepperPhaseCorrection (reg 0x1a + 0x1b)       */
2433 	0,      /* bOpticBlackStart (reg 0x1c)                    */
2434 	0,      /* bOpticBlackEnd (reg 0x1d)                      */
2435 	0x7f,   /* wActivePixelsStart (reg 0x1e + 0x1f)           */
2436 	10559,  /* wLineEnd (reg 0x20 + 0x21)                     */
2437 
2438 	50,     /* red lamp on    (reg 0x2c + 0x2d)               */
2439 	5600,   /* red lamp off   (reg 0x2e + 0x2f)               */
2440 	50,     /* green lamp on  (reg 0x30 + 0x31)               */
2441 	7100,   /* green lamp off (reg 0x32 + 0x33)               */
2442 	50,     /* blue lamp on   (reg 0x34 + 0x35)               */
2443 	4600,   /* blue lamp off  (reg 0x36 + 0x37)               */
2444 
2445 	3,      /* stepper motor control (reg 0x45)               */
2446 	0,      /* wStepsAfterPaperSensor2 (reg 0x4c + 0x4d)      */
2447 	0x20,   /* steps to reverse when buffer is full reg 0x50) */
2448 	0xfc,   /* acceleration profile (reg 0x51)                */
2449 	0,      /* lines to process (reg 0x54)                    */
2450 	0x0f,   /* kickstart (reg 0x55)                           */
2451 	0x08,   /* pwm freq (reg 0x56)                            */
2452 	0x1f,   /* pwm duty cycle (reg 0x57)                      */
2453 
2454 	0x04,   /* Paper sense (reg 0x58)                         */
2455 
2456 	0x66,   /* misc io12 (reg 0x59)                           */
2457 	0x16,   /* misc io34 (reg 0x5a)                           */
2458 	0x91,   /* misc io56 (reg 0x5b)                           */
2459 	0x01,   /* test mode ADC Output CODE MSB (reg 0x5c)       */
2460 	0,      /* test mode ADC Output CODE LSB (reg 0x5d)       */
2461 	0,      /* test mode (reg 0x5e)                           */
2462 	_LM9833,
2463 	MODEL_CANON_LIDE25,
2464 	2.0
2465 };
2466 
2467 /** TravelScan 662 */
2468 static HWDef Hw0x0A82_0x6620 =
2469 {
2470 	0.72,   /* dMaxMotorSpeed                                 */
2471 	0.188,  /* dMaxMoveSpeed                                  */
2472 	0.0,    /* dHighSpeed                                     */
2473 	100,    /* wIntegrationTimeLowLamp                        */
2474 	100,    /* wIntegrationTimeHighLamp                       */
2475 	740,    /* wMotorDpi (Full step DPI)                      */
2476 	512,    /* wRAMSize (KB)                                  */
2477 	3.75,   /* dMinIntegrationTimeLowres (ms)                 */
2478 	5.75,   /* dMinIntegrationTimeHighres (ms)                */
2479 	3000,   /* wGreenPWMDutyCycleLow (reg 0x2a + 0x2b)        */
2480 	3000,   /* wGreenPWMDutyCycleHigh (reg 0x2a + 0x2b)       */
2481 
2482 	0x0d,   /* bSensorConfiguration (0x0b)                    */
2483 	0x00,   /* sensor control settings (reg 0x0c)             */
2484 	0x25,   /* sensor control settings (reg 0x0d)             */
2485 	0x00,   /* sensor control settings (reg 0x0e)             */
2486 
2487 	{0x18, 0x01, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x03, 0x07},
2488 	        /* mono (reg 0x0f to 0x18)                        */
2489 
2490 	{0x18, 0x01, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x03, 0x07},
2491 	        /* color (reg 0x0f to 0x18)                       */
2492 
2493 	(_BLUE_CH | _ONE_CH_COLOR), /* bReg_0x26 color mode       */
2494 
2495 	0x00,   /* bReg 0x27 color mode                           */
2496 	2,      /* bReg 0x29 illumination mode                    */
2497 
2498 	{ 3,  0,    0, 10, 450,  0,   0 },
2499 	{ 2, 10, 1000, 10, 880, 10, 630 },
2500 
2501 	1,      /* StepperPhaseCorrection (reg 0x1a + 0x1b)       */
2502 	1,      /* bOpticBlackStart (reg 0x1c)                    */
2503 	2,      /* bOpticBlackEnd (reg 0x1d)                      */
2504 	0x17,   /* wActivePixelsStart (reg 0x1e + 0x1f)           */
2505 	2600,   /* wLineEnd (reg 0x20 + 0x21)                     */
2506 
2507 	10,     /* red lamp on    (reg 0x2c + 0x2d)               */
2508 	1000,   /* red lamp off   (reg 0x2e + 0x2f)               */
2509 	10,     /* green lamp on  (reg 0x30 + 0x31)               */
2510 	880,    /* green lamp off (reg 0x32 + 0x33)               */
2511 	10,     /* blue lamp on   (reg 0x34 + 0x35)               */
2512 	630,    /* blue lamp off  (reg 0x36 + 0x37)               */
2513 
2514 	3,      /* stepper motor control (reg 0x45)               */
2515 	0,      /* wStepsAfterPaperSensor2 (reg 0x4c + 0x4d)      */
2516 
2517 	0,      /* steps to reverse when buffer is full reg 0x50) */
2518 	0,      /* acceleration profile (reg 0x51)                */
2519 	0,      /* lines to process (reg 0x54)                    */
2520 	0x09,   /* kickstart (reg 0x55)                           */
2521 	0x02,   /* pwm freq (reg 0x56)                            */
2522 	0x16,   /* pwm duty cycle (reg 0x57)                      */
2523 
2524 	0x01,   /* Paper sense (reg 0x58)                         */
2525 
2526 	0x0e,   /* misc io12 (reg 0x59)                           */
2527 	0x96,   /* misc io34 (reg 0x5a)                           */
2528 	0x01,   /* misc io56 (reg 0x5b)                           */
2529 	0,      /* test mode ADC Output CODE MSB (reg 0x5c)       */
2530 	0,      /* test mode ADC Output CODE LSB (reg 0x5d)       */
2531 	0,      /* test mode (reg 0x5e)                           */
2532 	_LM9833,
2533 	MODEL_TSCAN,
2534 	1.8
2535 };
2536 
2537 /** TravelScan 464 */
2538 static HWDef Hw0x0A82_0x4600 =
2539 {
2540 	0.72,   /* dMaxMotorSpeed                                 */
2541 	0.26,   /* dMaxMoveSpeed                                  */
2542 	0.0,    /* dHighSpeed                                     */
2543 	100,    /* wIntegrationTimeLowLamp                        */
2544 	100,    /* wIntegrationTimeHighLamp                       */
2545 	740,    /* wMotorDpi (Full step DPI)                      */
2546 	512,    /* wRAMSize (KB)                                  */
2547 	3.75,   /* dMinIntegrationTimeLowres (ms)                 */
2548 	5.75,   /* dMinIntegrationTimeHighres (ms)                */
2549 	3000,   /* wGreenPWMDutyCycleLow (reg 0x2a + 0x2b)        */
2550 	3000,   /* wGreenPWMDutyCycleHigh (reg 0x2a + 0x2b)       */
2551 
2552 	0x0d,   /* bSensorConfiguration (0x0b)                    */
2553 	0x00,   /* sensor control settings (reg 0x0c)             */
2554 	0x25,   /* sensor control settings (reg 0x0d)             */
2555 	0x00,   /* sensor control settings (reg 0x0e)             */
2556 
2557 	{0x18, 0x01, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x03, 0x07},
2558 	        /* mono (reg 0x0f to 0x18)                        */
2559 
2560 	{0x18, 0x01, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x03, 0x07},
2561 	        /* color (reg 0x0f to 0x18)                       */
2562 
2563 	(_BLUE_CH | _ONE_CH_COLOR), /* bReg_0x26 color mode       */
2564 
2565 	0x00,   /* bReg 0x27 color mode                           */
2566 	2,      /* bReg 0x29 illumination mode                    */
2567 
2568 	{ 3, 500, 1045, 500, 990, 500, 990 },
2569 	{ 2, 500, 1045, 500, 990, 500, 990 },
2570 
2571 	1,      /* StepperPhaseCorrection (reg 0x1a + 0x1b)       */
2572 	1,      /* bOpticBlackStart (reg 0x1c)                    */
2573 	2,      /* bOpticBlackEnd (reg 0x1d)                      */
2574 	0x17,   /* wActivePixelsStart (reg 0x1e + 0x1f)           */
2575 	5300,   /* wLineEnd (reg 0x20 + 0x21)                     */
2576 
2577 	500,    /* red lamp on    (reg 0x2c + 0x2d)               */
2578 	1045,   /* red lamp off   (reg 0x2e + 0x2f)               */
2579 	500,    /* green lamp on  (reg 0x30 + 0x31)               */
2580 	990,    /* green lamp off (reg 0x32 + 0x33)               */
2581 	500,    /* blue lamp on   (reg 0x34 + 0x35)               */
2582 	990,    /* blue lamp off  (reg 0x36 + 0x37)               */
2583 
2584 	3,      /* stepper motor control (reg 0x45)               */
2585 	0,      /* wStepsAfterPaperSensor2 (reg 0x4c + 0x4d)      */
2586 
2587 	0,      /* steps to reverse when buffer is full reg 0x50) */
2588 	0,      /* acceleration profile (reg 0x51)                */
2589 	0,      /* lines to process (reg 0x54)                    */
2590 	0x09,   /* kickstart (reg 0x55)                           */
2591 	0x02,   /* pwm freq (reg 0x56)                            */
2592 	0x16,   /* pwm duty cycle (reg 0x57)                      */
2593 
2594 	0x01,   /* Paper sense (reg 0x58)                         */
2595 
2596 	0x0e,   /* misc io12 (reg 0x59)                           */
2597 	0x96,   /* misc io34 (reg 0x5a)                           */
2598 	0x01,   /* misc io56 (reg 0x5b)                           */
2599 	0,      /* test mode ADC Output CODE MSB (reg 0x5c)       */
2600 	0,      /* test mode ADC Output CODE LSB (reg 0x5d)       */
2601 	0,      /* test mode (reg 0x5e)                           */
2602 	_LM9833,
2603 	MODEL_TSCAN_A4,
2604 	1.8
2605 };
2606 
2607 /** IRIScan/Q-Scan USB001 - Portable Peripheral Co., Ltd. */
2608 static HWDef Hw0x0A53_0x1000 =
2609 {
2610 	0.50,   /* dMaxMotorSpeed                                 */
2611 	0.40,   /* dMaxMoveSpeed                                  */
2612 	0.0,    /* dHighSpeed                                     */
2613 	100,    /* wIntegrationTimeLowLamp                        */
2614 	100,    /* wIntegrationTimeHighLamp                       */
2615 	300,    /* wMotorDpi (Full step DPI)                      */
2616 	512,    /* wRAMSize (KB)                                  */
2617 	3.75,   /* dMinIntegrationTimeLowres (ms)                 */
2618 	5.75,   /* dMinIntegrationTimeHighres (ms)                */
2619 	4095,   /* wGreenPWMDutyCycleLow (reg 0x2a + 0x2b)        */
2620 	4095,   /* wGreenPWMDutyCycleHigh (reg 0x2a + 0x2b)       */
2621 
2622 	0x09,   /* bSensorConfiguration (0x0b)                    */
2623 	0x00,   /* sensor control settings (reg 0x0c)             */
2624 	0x65,   /* sensor control settings (reg 0x0d)             */
2625 	0x13,   /* sensor control settings (reg 0x0e)             */
2626 
2627 	{0x02, 0x07, 0x05, 0x07, 0x00, 0x00, 0x00, 0x00, 0x06, 0x02},
2628 	       /* mono (reg 0x0f to 0x18)                         */
2629 
2630 	{0x02, 0x07, 0x05, 0x07, 0x00, 0x00, 0x00, 0x00, 0x06, 0x02},
2631 	      /* color (reg 0x0f to 0x18)                         */
2632 
2633 	(_BLUE_CH | _ONE_CH_COLOR), /* bReg_0x26 color mode       */
2634 
2635 	0x00,   /* bReg 0x27 color mode                           */
2636 	2,      /* bReg 0x29 illumination mode                    */
2637 
2638 	{ 3,    0,    0, 2593, 4600,    0,    0 },
2639 	{ 2, 2593, 7100, 2593, 4600, 2593, 4480 },
2640 
2641 	256,    /* StepperPhaseCorrection (reg 0x1a + 0x1b)       */
2642 	0,      /* bOpticBlackStart (reg 0x1c)                    */
2643 	0x15,   /* bOpticBlackEnd (reg 0x1d)                      */
2644 	0x15,   /* wActivePixelsStart (reg 0x1e + 0x1f)           */
2645 	5500,   /* wLineEnd (reg 0x20 + 0x21)                     */
2646 
2647 	2593,   /* red lamp on    (reg 0x2c + 0x2d)               */
2648 	7100,   /* red lamp off   (reg 0x2e + 0x2f)               */
2649 	2593,   /* green lamp on  (reg 0x30 + 0x31)               */
2650 	4600,   /* green lamp off (reg 0x32 + 0x33)               */
2651 	2593,   /* blue lamp on   (reg 0x34 + 0x35)               */
2652 	4480,   /* blue lamp off  (reg 0x36 + 0x37)               */
2653 
2654 	3,      /* stepper motor control (reg 0x45)               */
2655 	0,      /* wStepsAfterPaperSensor2 (reg 0x4c + 0x4d)      */
2656 
2657 	0,      /* steps to reverse when buffer is full reg 0x50) */
2658 	0,      /* acceleration profile (reg 0x51)                */
2659 	0,      /* lines to process (reg 0x54)                    */
2660 	0x1b,   /* kickstart (reg 0x55)                           */
2661 	0x08,   /* pwm freq (reg 0x56)                            */
2662 	0x15,   /* pwm duty cycle (reg 0x57)                      */
2663 
2664 	0x00,   /* Paper sense (reg 0x58)                         */
2665 
2666 	0x00,   /* misc io12 (reg 0x59)                           */
2667 	0x00,   /* misc io34 (reg 0x5a)                           */
2668 	0x00,   /* misc io56 (reg 0x5b)                           */
2669 	0,      /* test mode ADC Output CODE MSB (reg 0x5c)       */
2670 	0,      /* test mode ADC Output CODE LSB (reg 0x5d)       */
2671 	0,      /* test mode (reg 0x5e)                           */
2672 	_LM9832,
2673 	MODEL_QSCAN,
2674 	1.1
2675 };
2676 
2677 /** PandP USB201 Q-Scan A6 Scanner */
2678 static HWDef Hw0x0A53_0x2000 =
2679 {
2680 	0.5,	/* dMaxMotorSpeed                                 */
2681 	0.2,	/* dMaxMoveSpeed                                  */
2682 	0.0,	/* dHighSpeed                                     */
2683 	100,	/* wIntegrationTimeLowLamp                        */
2684 	100,	/* wIntegrationTimeHighLamp                       */
2685 	570,	/* wMotorDpi (Full step DPI)                      */
2686 	512,	/* wRAMSize (KB)                                  */
2687 	3.75,	/* dMinIntegrationTimeLowres (ms)                 */
2688 	5.75,	/* dMinIntegrationTimeHighres (ms)                */
2689 	0x0fff, /* wGreenPWMDutyCycleLow (reg 0x2a + 0x2b)        */
2690 	0x0fff, /* wGreenPWMDutyCycleHigh (reg 0x2a + 0x2b)       */
2691 
2692 	0x02,	/* bSensorConfiguration (0x0b)                    */
2693 	0x00,	/* sensor control settings (reg 0x0c)             */
2694 	0x25,	/* sensor control settings (reg 0x0d)             */
2695 	0x06,	/* sensor control settings (reg 0x0e)             */
2696 
2697 	{0x05, 0x0a, 0x01, 0x02, 0x00, 0x01, 0x00, 0x00, 0x04, 0x07},
2698 		/* mono (reg 0x0f to 0x18)                        */
2699 
2700 	{0x05, 0x0a, 0x01, 0x02, 0x00, 0x01, 0x00, 0x00, 0x04, 0x07},
2701 		/* color (reg 0x0f to 0x18)                       */
2702 
2703 	(_BLUE_CH | _ONE_CH_COLOR),	/* bReg_0x26 color mode   */
2704 
2705 	0x00,	/* bReg 0x27 color mode                           */
2706 	2,	/* bReg 0x29 illumination mode                    */
2707 
2708 	{ 3,  0,    0, 10, 450,  0,   0 },
2709 		/* initial illumination settings - mono           */
2710 	{ 2, 10, 1000, 10, 880, 10, 630 },
2711 		/* initial illumination settings - color          */
2712 
2713 	0x0101,	/* StepperPhaseCorrection (reg 0x1a + 0x1b)       */
2714 	0x004d,	/* bOpticBlackStart (reg 0x22 + 0x23)             */
2715 	0x11,	/* bOpticBlackEnd                                 */
2716 	0x0011,	/* wActivePixelsStart                             */
2717 	0x0bb8,	/* wLineEnd (reg 0x20 + 0x21)                     */
2718 
2719 	10,	/* red lamp on    (reg 0x2c + 0x2d)               */
2720 	1000,	/* red lamp off   (reg 0x2e + 0x2f)               */
2721 	10,	/* green lamp on  (reg 0x30 + 0x31)               */
2722 	880,	/* green lamp off (reg 0x32 + 0x33)               */
2723 	10,	/* blue lamp on   (reg 0x34 + 0x35)               */
2724 	630,	/* blue lamp off  (reg 0x36 + 0x37)               */
2725 
2726 	0x13,	/* stepper motor control (reg 0x45)               */
2727 	0x0000,	/* wStepsAfterPaperSensor2 (reg 0x4c + 0x4d)      */
2728 
2729 	0,	/* steps to reverse when buffer is full reg 0x50) */
2730 	0,	/* acceleration profile (reg 0x51)                */
2731 	0,	/* lines to process (reg 0x54)                    */
2732 	0x1b,	/* kickstart (reg 0x55)                           */
2733 	0x08,	/* pwm freq (reg 0x56)                            */
2734 	0x15,	/* pwm duty cycle (reg 0x57)                      */
2735 
2736 	0x00,	/* Paper sense (reg 0x58)                         */
2737 
2738 	0x20,	/* misc io12 (reg 0x59)                           */
2739 	0x02,	/* misc io34 (reg 0x5a)                           */
2740 	0x90,	/* misc io56 (reg 0x5b)                           */
2741 	0,	/* test mode ADC Output CODE MSB (reg 0x5c)       */
2742 	0,	/* test mode ADC Output CODE LSB (reg 0x5d)       */
2743 	0,	/* test mode (reg 0x5e)                           */
2744 	_LM9832,
2745 	MODEL_QSCAN_A6,
2746 	1.8
2747 };
2748 
2749 /******************** all available combinations *****************************/
2750 
2751 /** here we have all supported devices and their settings...
2752  */
2753 static SetDef Settings[] =
2754 {
2755 	/* Plustek devices... */
2756 	/* LM9831 based */
2757 	{"0x07B3-0x0010-0", &Cap0x07B3_0x0010_0, &Hw0x07B3_0x0013_0, "OpticPro U12"   },
2758 	{"0x07B3-0x0011-0", &Cap0x07B3_0x0011_0, &Hw0x07B3_0x0013_0, "OpticPro U24"   },
2759 	{"0x07B3-0x0013-0", &Cap0x07B3_0x0013_0, &Hw0x07B3_0x0013_0, "OpticPro UT12"  },
2760 
2761 	/* LM9832 based */
2762 	{"0x07B3-0x0017-0", &Cap0x07B3_0x0017_0, &Hw0x07B3_0x0017_0, "OpticPro UT12/UT16" },
2763 	{"0x07B3-0x0015-0", &Cap0x07B3_0x0015_0, &Hw0x07B3_0x0017_0, "OpticPro U24"   },
2764 	{"0x07B3-0x0015-4", &Cap0x07B3_0x0015_4, &Hw0x07B3_0x0017_4, "OpticPro U24"   },
2765 	{"0x07B3-0x0017-4", &Cap0x07B3_0x0017_4, &Hw0x07B3_0x0017_4, "OpticPro UT24"  },
2766 
2767 	/* never seen yet */
2768 	{"0x07B3-0x0013-4", &Cap0x07B3_0x0013_4, &Hw0x07B3_0x0013_4, "Unknown device" },
2769 	{"0x07B3-0x0011-4", &Cap0x07B3_0x0011_4, &Hw0x07B3_0x0013_4, "Unknown device" },
2770 	{"0x07B3-0x0010-4", &Cap0x07B3_0x0010_4, &Hw0x07B3_0x0013_4, "Unknown device" },
2771 	{"0x07B3-0x0014-0", &Cap0x07B3_0x0014_0, &Hw0x07B3_0x0017_0, "Unknown device" },
2772 	{"0x07B3-0x0014-4", &Cap0x07B3_0x0014_4, &Hw0x07B3_0x0017_4, "Unknown device" },
2773 	{"0x07B3-0x0016-4", &Cap0x07B3_0x0016_4, &Hw0x07B3_0x0016_4, "Unknown device" },
2774 	{"0x07B3-0x0017-2", &Cap0x07B3_0x0017_2, &Hw0x07B3_0x0017_2, "Unknown device" },
2775 	{"0x07B3-0x0017-3", &Cap0x07B3_0x0017_3, &Hw0x07B3_0x0017_3, "Unknown device" },
2776 	{"0x07B3-0x0007",   &Cap0x07B3_0x0007_0, &Hw0x07B3_0x0007_0, "Unknown device" },
2777 	{"0x07B3-0x000F",   &Cap0x07B3_0x000F_0, &Hw0x07B3_0x000F_0, "Unknown device" },
2778 	{"0x07B3-0x000F-4", &Cap0x07B3_0x000F_4, &Hw0x07B3_0x000F_4, "Unknown device" },
2779 	{"0x07B3-0x0005-2", &Cap0x07B3_0x0005_2, &Hw0x07B3_0x0007_2, "Unknown device" }, /* TOKYO 600 */
2780 	{"0x07B3-0x0014-1", &Cap0x07B3_0x0014_1, &Hw0x07B3_0x0017_1, "Unknown device" }, /* A3 */
2781 	{"0x07B3-0x0012-0", &Cap0x07B3_0x0012_0, &Hw0x07B3_0x0012_0, "Unknown device" }, /* Brother Demo */
2782 
2783 	/* Mustek BearPaw...*/
2784 	{"0x0400-0x1000-0", &Cap0x0400_0x1000_0, &Hw0x0400_0x1000_0, "BearPaw 1200" },
2785 	{"0x0400-0x1001-1", &Cap0x0400_0x1000_0, &Hw0x0400_0x1001_1, "BearPaw 1200" },
2786 	{"0x0400-0x1001-0", &Cap0x0400_0x1001_0, &Hw0x0400_0x1001_0, "BearPaw 2400" },
2787 
2788 	/* Genius devices... */
2789 	{"0x0458-0x2007",   &Cap0x07B3_0x0007_0, &Hw0x07B3_0x0007_0, "ColorPage-HR6 V2" },
2790 	{"0x0458-0x2008",   &Cap0x07B3_0x0007_0, &Hw0x07B3_0x0007_0, "ColorPage-HR6 V2" },
2791 	{"0x0458-0x2009",   &Cap0x07B3_0x000F_0, &Hw0x07B3_0x000F_0, "ColorPage-HR6A"   },
2792 	{"0x0458-0x2013",   &Cap0x07B3_0x0007_4, &Hw0x07B3_0x0007_4, "ColorPage-HR7"    },
2793 	{"0x0458-0x2015",   &Cap0x07B3_0x0005_4, &Hw0x07B3_0x0007_4, "ColorPage-HR7LE"  },
2794 	{"0x0458-0x2016",   &Cap0x07B3_0x0005_4, &Hw0x07B3_0x0007_0, "ColorPage-HR6X"   },
2795 
2796 	/* Hewlett Packard... */
2797 	{"0x03F0-0x0505",   &Cap0x03F0_0x0505, &Hw0x03F0_0x0505, "Scanjet 2100c" },
2798 	{"0x03F0-0x0605",   &Cap0x03F0_0x0605, &Hw0x03F0_0x0605, "Scanjet 2200c" },
2799 
2800 	/* EPSON... */
2801 	{"0x04B8-0x010F",   &Cap0x04B8_0x010F, &Hw0x04B8_0x010F, "Perfection 1250/Photo" },
2802 	{"0x04B8-0x011D",   &Cap0x04B8_0x010F, &Hw0x04B8_0x011D, "Perfection 1260/Photo" },
2803 
2804 	/* UMAX... */
2805 	{"0x1606-0x0050",   &Cap0x1606_0x0060, &Hw0x1606_0x0060, "3400" },
2806 	{"0x1606-0x0060",   &Cap0x1606_0x0060, &Hw0x1606_0x0060, "3400" },
2807 	{"0x1606-0x0160",   &Cap0x1606_0x0160, &Hw0x1606_0x0160, "5400" },
2808 
2809 	/* COMPAQ... */
2810 	{"0x049F-0x001A",   &Cap0x1606_0x0060, &Hw0x1606_0x0060, "S4-100" },
2811 
2812 	/* CANON... */
2813 	{"0x04A9-0x2206",   &Cap0x04A9_0x2206, &Hw0x04A9_0x2206, "CanoScan N650U/N656U" },
2814 	{"0x04A9-0x2207",   &Cap0x04A9_0x2207, &Hw0x04A9_0x2207, "CanoScan N1220U"      },
2815 	{"0x04A9-0x2208",   &Cap0x04A9_0x2208, &Hw0x04A9_0x2208, "CanoScan D660U"       },
2816 	{"0x04A9-0x220D",   &Cap0x04A9_0x220D, &Hw0x04A9_0x220D, "CanoScan N670U/N676U/LiDE20" },
2817 	{"0x04A9-0x220E",   &Cap0x04A9_0x220E, &Hw0x04A9_0x220E, "CanoScan N1240U/LiDE30"      },
2818 	{"0x04A9-0x2220",   &Cap0x04A9_0x2220, &Hw0x04A9_0x2220, "CanoScan LiDE25"      },
2819 
2820 	/* SYSCAN... */
2821 	{"0x0A82-0x4600",   &Cap0x0A82_0x4600, &Hw0x0A82_0x4600, "TravelScan 460/464" },
2822 	{"0x0A82-0x6620",   &Cap0x0A82_0x6620, &Hw0x0A82_0x6620, "TravelScan 662" },
2823 
2824 	/* Visioneer... */
2825 	{"0x04A7-0x0427",   &Cap0x0A82_0x4600, &Hw0x0A82_0x4600, "Strobe XP100" },
2826 
2827 	/* Portable Peripheral Co., Ltd. */
2828 	{"0x0A53-0x1000",   &Cap0x0A53_0x1000, &Hw0x0A53_0x1000, "Q-Scan USB001" },
2829 	{"0x0A53-0x2000",   &Cap0x0A53_0x2000, &Hw0x0A53_0x2000, "Q-Scan USB201" },
2830 
2831 	/* Please add other devices here...
2832 	 * The first entry is a string, composed out of the vendor and product id,
2833 	 * it's used by the driver to select the device settings. For other devices
2834 	 * than those of Plustek, you'll not need to add the second '-' part
2835 	 *
2836 	 * The second entry describes the capabilities of the device, you may find
2837 	 * one suitable for your scanner, for a better description of the entries
2838 	 * have a look at the beginning of this file at Cap0x07B3_0x0017_0 for
2839 	 * the UT12
2840 	 *
2841 	 * The third entry is for the default setting of the LM983x register
2842 	 * settings, you can often find these in your Windoze driver ini
2843 	 * Have a look at the Hw0x0400_0x1000_0 or Hw0x07B3_0x0017_0 for further
2844 	 * description
2845 	 *
2846 	 * The fourth entry is simply the name of the device, which will be
2847 	 * displayed by the frontend
2848 	 */
2849 	{ NULL, NULL, NULL, NULL }  /* last entry, never remove... */
2850 };
2851 
2852 /**
2853  * tables for the motor settings
2854  * The models KaoHsiung, HuaLien and Tokyo600 are currently set
2855  * within the code in conjunction with some CCD combinations.
2856  * NOTE: the touples PWM and PWM_Duty are used to set the registers
2857  *       0x56 and 0x57, the recommended setting is 8,10
2858  *       if you notice a whining noise and the motor does not move,
2859  *       you might increase the MCLK variable.
2860  */
2861 static ClkMotorDef Motors[] = {
2862 
2863 	{ MODEL_KaoHsiung,
2864 		64, 20, 6, /* PWM, PWM_Duty, MCLK for fast move */
2865 		0, 0,      /* for lineend adjustment, here disabled */
2866 		/* Motor settings (PWM and PWM_Duty) */
2867 		{{ 0, 0, 0 }, { 0, 0, 0 }, { 0, 0, 0 }, { 0, 0, 0 }, { 0, 0, 0 },
2868 		 { 0, 0, 0 }, { 0, 0, 0 }, { 0, 0, 0 }, { 0, 0, 0 }, { 0, 0, 0 }},
2869 		/* Color mode MCLK settings */
2870 		{ 2, 2, 2, 2, 2, 3, 3, 3, 3, 3 },
2871 		{ 2, 2, 2, 2, 2, 3, 3, 3, 3, 3 },
2872 		/* Gray mode MCLK settings */
2873 		{ 2, 2, 2, 2, 2, 3, 3, 3, 3, 3 },
2874 		{ 2, 2, 2, 2, 2, 3, 3, 3, 3, 3 }
2875 	},
2876 
2877 	{ MODEL_HuaLien, 64, 20, 6, 0, 0,
2878 		/* Motor settings (PWM and PWM_Duty) */
2879 		{{ 0, 0, 0 }, { 0, 0, 0 }, { 0, 0, 0 }, { 0, 0, 0 }, { 0, 0, 0 },
2880 		 { 0, 0, 0 }, { 0, 0, 0 }, { 0, 0, 0 }, { 0, 0, 0 }, { 0, 0, 0 }},
2881 		/* Color mode MCLK settings */
2882 		{ 2, 2, 2, 2, 2, 3, 3, 3, 3, 3 },
2883 		{ 2, 2, 2, 2, 2, 3, 3, 3, 3, 3 },
2884 		/* Gray mode MCLK settings */
2885 		{ 2, 2, 2, 2, 2, 3, 3, 3, 3, 3 },
2886 		{ 2, 2, 2, 2, 2, 3, 3, 3, 3, 3 }
2887 	},
2888 
2889 	{ MODEL_Tokyo600, 4, 4, 6, 0, 0,
2890 		/* Motor settings (PWM and PWM_Duty) */
2891 		{{ 0, 0, 0 }, { 0, 0, 0 }, { 0, 0, 0 }, { 0, 0, 0 }, { 0, 0, 0 },
2892 		 { 0, 0, 0 }, { 0, 0, 0 }, { 0, 0, 0 }, { 0, 0, 0 }, { 0, 0, 0 }},
2893 		/* Color mode MCLK settings */
2894 		{ 2, 2, 2, 2, 2, 3, 3, 3, 3, 3 },
2895 		{ 2, 2, 2, 2, 2, 3, 3, 3, 3, 3 },
2896 		/* Gray mode MCLK settings */
2897 		{ 2, 2, 2, 2, 2, 3, 3, 3, 3, 3 },
2898 		{ 2, 2, 2, 2, 2, 3, 3, 3, 3, 3 }
2899 	},
2900 
2901 	{ MODEL_MUSTEK600, 4, 4, 6, 0, 0,
2902 		/* Motor settings (PWM and PWM_Duty) */
2903 		{{ 16, 4, 1 }, { 16, 4, 1 }, { 16, 4, 1 }, { 16, 4, 1 }, { 16, 4, 1 },
2904 		 { 16, 4, 1 }, { 16, 4, 1 }, { 16, 4, 1 }, { 16, 4, 1 }, { 16, 4, 1 }},
2905 		/* Color mode MCLK settings */
2906 		{ 4.0, 3.5, 3.5, 4.0, 4.0, 5.0, 5.0, 7.5, 7.5, 7.5 },
2907 		{ 4.0, 3.5, 3.5, 4.0, 4.0, 5.0, 5.0, 7.5, 7.5, 7.5 },
2908 		/* Gray mode MCLK settings */
2909 		{ 7.5, 7.0, 6.5, 5.5, 5.5, 5.5, 7.0, 7.0, 7.0, 7.0 },
2910 		{ 7.5, 7.0, 6.5, 5.5, 5.5, 5.5, 7.0, 7.0, 7.0, 7.0 }
2911 	},
2912 
2913 	{ MODEL_MUSTEK1200, 2, 32, 3, 0, 0,
2914 		/* Motor settings (PWM and PWM_Duty) */
2915 		/* <=75dpi       <=100dpi      <=150dpi      <=200dpi      <=300dpi   */
2916 		{{ 2, 32, 1 }, { 2, 32, 1 }, { 2, 32, 1 }, { 2, 32, 1 }, { 2, 32, 1 },
2917 		/* <=400dpi      <=600dpi      <=800dpi      <=1200dpi     <=2400dpi */
2918 		 { 2, 32, 1 }, { 2, 32, 1 }, { 2, 32, 1 }, { 2, 32, 1 }, { 2, 32, 1 }},
2919 		/* Color mode MCLK settings */
2920 		{ 3.5, 3.5, 3.5, 3.5, 3.5, 3.5, 3.5, 3.5, 3.5, 3.5 },
2921 		{ 3.5, 3.5, 3.5, 3.5, 3.5, 3.5, 3.5, 3.5, 3.5, 3.5 },
2922 		/* Gray mode MCLK settings */
2923 		{ 10.0, 10.0, 10.0, 10.0, 10.0, 10.0, 10.0, 10.0, 10.0, 10.0 },
2924 		{ 10.0, 10.0, 10.0, 10.0, 10.0, 10.0, 10.0, 10.0, 10.0, 10.0 }
2925 	},
2926 
2927 	/* settings good for the HP models (tested with 2200)*/
2928 	{ MODEL_HP, 8, 60, 6, 0, 0,
2929 		/* Motor settings (PWM and PWM_Duty) */
2930 		{{ 8, 60, 1 }, { 8, 60, 1 }, { 8, 60, 1 }, { 8, 60, 1 }, { 8, 60, 1 },
2931 		 { 8, 60, 1 }, { 8, 60, 1 }, { 8, 60, 1 }, { 8, 60, 1 }, { 8, 60, 1 }},
2932     	/* Color mode MCLK settings */
2933 		{ 4.0, 4.0, 4.0, 4.0, 3.0, 4.0, 6.0, 6.0, 6.0, 6.0 },
2934 		{ 4.0, 4.0, 4.0, 4.0, 3.0, 4.0, 6.0, 6.0, 6.0, 6.0 },
2935 		/* Gray mode MCLK settings */
2936 		{ 8.0, 8.0, 8.0, 8.0, 8.0, 13.0, 13.0, 13.0, 13.0, 13.0 },
2937 		{ 8.0, 8.0, 8.0, 8.0, 8.0, 13.0, 13.0, 13.0, 13.0, 13.0 }
2938 	},
2939 
2940 	{ MODEL_CANON600, 8, 31, 12, 0, 0,
2941 		/* Motor settings (PWM and PWM_Duty) */
2942 		/* <=75dpi       <=100dpi      <=150dpi      <=200dpi      <=300dpi  */
2943 		{{ 8, 31, 1 }, { 8, 31, 1 }, { 8, 31, 1 }, { 8, 31, 1 }, { 8, 31, 1 },
2944 		/* <=400dpi      <=600dpi      <=800dpi      <=1200dpi     <=2400dpi */
2945 		 { 8, 31, 1 }, { 8, 31, 1 }, { 8, 31, 1 }, { 8, 31, 1 }, { 8, 31, 1 }},
2946 		/* Color mode MCLK settings */
2947 		{ 7.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0 },
2948 		{ 7.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0 },
2949 		/* Gray mode MCLK settings */
2950 		{ 15.0, 12.0, 12.0, 12.0, 12.0, 12.0, 12.0, 12.0, 12.0, 12.0 },
2951 		{ 15.0, 12.0, 12.0, 12.0, 12.0, 12.0, 12.0, 12.0, 12.0, 12.0 }
2952 	},
2953 
2954 	{ MODEL_CANON1200, 8, 31, 8, 0, 0,
2955 		/* Motor settings (PWM and PWM_Duty) */
2956 		/* <=75dpi       <=100dpi      <=150dpi      <=200dpi      <=300dpi  */
2957 		{{ 8, 31, 1 }, { 8, 31, 1 }, { 8, 31, 1 }, { 8, 31, 1 }, { 8, 31, 1 },
2958 		/* <=400dpi      <=600dpi      <=800dpi      <=1200dpi     <=2400dpi */
2959 		 { 8, 31, 1 }, { 8, 31, 1 }, { 8, 31, 1 }, { 8, 31, 1 }, { 8, 31, 1 }},
2960 		/* Color mode MCLK settings */
2961 		{ 3.0, 3.0, 3.0, 3.0, 3.0, 3.0, 3.0, 3.0, 3.0, 3.0 },
2962 		{ 3.0, 3.0, 3.0, 3.0, 3.0, 3.0, 5.0, 6.0, 6.0, 6.0 },
2963 		/* Gray mode MCLK settings */
2964 		{ 8.5, 7.0, 5.0, 4.0, 2.5, 2.5, 2.5,  2.5,  2.5,  2.5 },
2965 		{ 8.5, 6.5, 6.0, 6.0, 6.0, 6.0, 8.0, 12.0, 12.0, 12.0 }
2966 	},
2967 
2968 	/* settings good for the UMAX models (tested with 3400) */
2969 	{ MODEL_UMAX, 16, 4, 6, 0, 0,
2970 		/* Motor settings (PWM and PWM_Duty) */
2971 		{{ 16, 4, 1 }, { 16, 4, 1 }, { 16, 4, 1 }, { 16, 4, 1 }, { 16, 4, 1 },
2972 		 { 16, 4, 1 }, { 16, 4, 1 }, { 16, 4, 1 }, { 16, 4, 1 }, { 16, 4, 1 }},
2973     	/* Color mode MCLK settings */
2974 		{ 3.5, 3.5, 3.5, 3.5, 3.5, 3.5, 3.5, 3.5, 3.5, 3.5 },
2975 		{ 3.5, 3.5, 3.5, 3.5, 3.5, 3.5, 3.5, 3.5, 3.5, 3.5 },
2976 		/* Gray mode MCLK settings */
2977 		{ 10.5, 10.5, 10.5, 10.5, 10.5, 10.5, 10.5, 10.5, 10.5, 10.5 },
2978 		{ 10.5, 10.5, 10.5, 10.5, 10.5, 10.5, 10.5, 10.5, 10.5, 10.5 }
2979 	},
2980 
2981 	{ MODEL_UMAX1200, 16, 4, 6, 0, 0,
2982 		/* Motor settings (PWM and PWM_Duty) */
2983 		{{ 16, 4, 1 }, { 16, 4, 1 }, { 16, 4, 1 }, { 16, 4, 1 }, { 16, 4, 1 },
2984 		 { 16, 4, 1 }, { 16, 4, 1 }, { 16, 4, 1 }, { 16, 4, 1 }, { 16, 4, 1 }},
2985 		/* Color mode MCLK settings */
2986 		{ 3.0, 3.0, 3.0, 3.0, 3.0, 6.0, 6.0, 6.0, 6.0, 6.0 },
2987 		{ 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0 },
2988 		/* Gray mode MCLK settings */
2989 		{  6.0,  6.0,  6.0,  6.0,  6.0, 13.0, 13.0, 13.0, 13.0, 13.0 },
2990 		{ 13.0, 13.0, 13.0, 13.0, 13.0, 13.0, 13.0, 13.0, 13.0, 13.0 }
2991 	},
2992 
2993 	/* settings good for the EPSON models */
2994 	{ MODEL_EPSON, 2, 1, 6, 0, 0,
2995 		/* Motor settings (PWM and PWM_Duty) */
2996 		/* <=75dpi      <=100dpi     <=150dpi     <=200dpi     <=300dpi  */
2997 		{{ 2, 1, 1 }, { 2, 1, 1 }, { 2, 1, 1 }, { 2, 1, 1 }, { 2, 1, 1 },
2998 		/* <=400dpi     <=600dpi     <=800dpi     <=1200dpi    <=2400dpi */
2999 		 { 2, 1, 1 }, { 2, 1, 1 }, { 2, 1, 1 }, { 2, 1, 1 }, { 2, 1, 1 }},
3000 		/* Color mode MCLK settings */
3001 		{ 2.0, 2.0, 2.5, 2.5, 2.5, 2.5, 4.0, 4.0, 6.0, 6.0 },
3002 		{ 2.0, 2.0, 2.5, 2.5, 3.0, 3.0, 3.0, 4.0, 6.0, 6.0 },
3003 		/* Gray mode MCLK settings */
3004 		{ 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 9.0, 9.0, 18.0, 18.0 },
3005 		{ 6.0, 6.0, 6.0, 6.0, 6.0, 8.0, 9.0, 9.0, 18.0, 18.0 }
3006 	},
3007 
3008 	{ MODEL_CANONCCD1200, 2, 31, 3, 0, 0,
3009 		/* Motor settings (PWM and PWM_Duty) */
3010 		/* <=75dpi       <=100dpi      <=150dpi      <=200dpi      <=300dpi  */
3011 		{{ 2, 31, 1 }, { 2, 31, 1 }, { 2, 31, 1 }, { 2, 31, 1 }, { 2, 31, 1 },
3012 		/* <=400dpi      <=600dpi      <=800dpi      <=1200dpi     <=2400dpi */
3013 		 { 2, 31, 1 }, { 2, 31, 1 }, { 2, 31, 1 }, { 2, 31, 1 }, { 2, 31, 1 }},
3014 		/* Color mode MCLK settings */
3015 		{ 2.0, 2.0, 2.0, 2.5, 2.5, 2.5, 3.0, 3.5, 5.0, 5.0 },
3016 		{ 2.0, 2.0, 2.0, 3.0, 3.0, 3.0, 3.0, 4.0, 5.0, 5.0 },
3017 		/* Gray mode MCLK settings */
3018 		{ 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0,  6.0,  6.0,  6.0 },
3019 		{ 6.5, 6.5, 6.5, 7.0, 8.0, 8.0, 8.0, 10.0, 10.0, 10.0 }
3020 	},
3021 
3022 	{ MODEL_CANON_LIDE25, 8, 31, 3, 0, 0,
3023 	/* Motor settings (PWM and PWM_Duty) */
3024 		/* <=75dpi       <=100dpi      <=150dpi      <=200dpi      <=300dpi */
3025 		{{ 8, 31, 1 }, { 8, 31, 1 }, { 8, 31, 1 }, { 8, 31, 1 }, { 8, 31, 1 },
3026 		/* <=400dpi     <=600dpi      <=800dpi      <=1200dpi     <=2400dpi */
3027 		{ 8, 31, 1 }, { 8, 31, 1 }, { 8, 31, 1 }, { 8, 31, 1 }, { 8, 31, 1 }},
3028 		/* Color mode MCLK settings */
3029 		{ 3.0, 3.0, 3.0, 3.0, 3.5, 3.0, 3.0, 3.0, 3.0, 3.0 },
3030 		{ 3.0, 3.0, 3.0, 3.0, 3.5, 3.5, 5.0, 6.0, 6.0, 6.0 },
3031 		/* Gray mode MCLK settings */
3032 		{ 8.5, 7.0, 5.0, 4.0, 2.5, 2.5, 2.5,  2.5,  2.5,  2.5 },
3033 		{ 7.5, 6.5, 6.0, 6.0, 6.0, 6.0, 8.0, 12.0, 12.0, 12.0 }
3034 	},
3035 
3036 	{ MODEL_TSCAN, 2, 22, 6, 75, 4000,
3037 	/* Motor settings (PWM and PWM_Duty) */
3038 		/* <=75dpi       <=100dpi      <=150dpi      <=200dpi      <=300dpi */
3039 		{{ 2, 22, 1 }, { 2, 22, 1 }, { 2, 22, 1 }, { 2, 22, 1 }, { 2, 22, 1 },
3040 		/* <=400dpi     <=600dpi      <=800dpi      <=1200dpi     <=2400dpi */
3041 		{ 2, 22, 1 }, { 2, 22, 1 }, { 2, 22, 1 }, { 2, 22, 1 }, { 2, 22, 1 }},
3042 		/* Color mode MCLK settings */
3043 		{ 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0 },
3044 		{ 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0 },
3045 		/* Gray mode MCLK settings */
3046 		{ 16.0, 16.0, 16.0, 16.0, 16.0, 16.0, 16.0, 16.0, 16.0, 16.0 },
3047 		{ 16.0, 16.0, 16.0, 16.0, 16.0, 16.0, 16.0, 16.0, 16.0, 16.0 },
3048 	},
3049 
3050 	{ MODEL_TSCAN_A4, 2, 22, 6, 75, 8400,
3051 	/* Motor settings (PWM and PWM_Duty) */
3052 		/* <=75dpi       <=100dpi      <=150dpi      <=200dpi      <=300dpi */
3053 		{{ 2, 22, 1 }, { 2, 22, 1 }, { 2, 22, 1 }, { 2, 22, 1 }, { 2, 22, 1 },
3054 		/* <=400dpi     <=600dpi      <=800dpi      <=1200dpi     <=2400dpi */
3055 		{ 2, 22, 1 }, { 2, 22, 1 }, { 2, 22, 1 }, { 2, 22, 1 }, { 2, 22, 1 }},
3056 		/* Color mode MCLK settings */
3057 		{ 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0 },
3058 		{ 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0 },
3059 		/* Gray mode MCLK settings */
3060 		{ 16.0, 16.0, 16.0, 16.0, 16.0, 16.0, 16.0, 16.0, 16.0, 16.0 },
3061 		{ 16.0, 16.0, 16.0, 16.0, 16.0, 16.0, 16.0, 16.0, 16.0, 16.0 },
3062 	},
3063 
3064 	{ MODEL_QSCAN, 8, 21, 6, 300, 4600,
3065 	/* Motor settings (PWM and PWM_Duty) */
3066 		/* <=75dpi       <=100dpi      <=150dpi      <=200dpi      <=300dpi */
3067 		{{ 8, 21, 1 }, { 8, 21, 1 }, { 8, 21, 1 }, { 8, 21, 1 }, { 8, 21, 1 },
3068 		/* <=400dpi     <=600dpi      <=800dpi      <=1200dpi     <=2400dpi */
3069 		{ 8, 21, 1 }, { 8, 21, 1 }, { 8, 21, 1 }, { 8, 21, 1 }, { 8, 21, 1 }},
3070 		/* Color mode MCLK settings */
3071 		{ 6.5, 6.5, 6.5, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0 },
3072 		{ 6.5, 6.5, 6.5, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0 },
3073 		/* Gray mode MCLK settings */
3074 		{ 6.5, 6.5, 6.5, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0 },
3075 		{ 6.5, 6.5, 6.5, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0 },
3076 	},
3077 
3078 	{ MODEL_QSCAN_A6, 8, 15, 6, 0, 0,
3079 	/* Motor settings (PWM and PWM_Duty) */
3080 		/* <=75dpi       <=100dpi      <=150dpi      <=200dpi      <=300dpi */
3081 		{{ 8, 15, 1}, { 8, 15, 1 }, { 8, 15, 1 }, { 8, 15, 1 }, { 8, 15, 1 },
3082 		/* <=400dpi     <=600dpi      <=800dpi      <=1200dpi     <=2400dpi */
3083 		{ 8, 15, 1 }, { 8, 15, 1 }, { 8, 15, 1 }, { 8, 15, 1 }, { 8, 15, 1 }},
3084 		/* Color mode MCLK settings */
3085 		{ 7.5, 7.5, 7.5, 7.5, 7.5, 7.5, 7.5, 7.5, 7.5, 7.5 },
3086 		{ 7.5, 7.5, 7.5, 7.5, 7.5, 7.5, 7.5, 7.5, 7.5, 7.5 },
3087 		/* Gray mode MCLK settings */
3088 		{ 15.0, 15.0, 15.0, 15.0, 15.0, 15.0, 15.0, 15.0, 15.0, 15.0 },
3089 		{ 15.0, 15.0, 15.0, 15.0, 15.0, 15.0, 15.0, 15.0, 15.0, 15.0 },
3090 	}
3091 };
3092 
3093 /* END PLUSTEK-USBDEVS.C ....................................................*/
3094