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 */
131static 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 */
176static 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 */
191static 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*/
206static 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 */
221static 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 */
236static 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 */
251static 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 */
266static 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 */
281static 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//  */
296static 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 */
311static 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 */
326static 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 */
341static 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 */
356static 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 */
371static 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 */
386static 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 */
401static 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 */
416static 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 */
431static 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 */
446static 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 */
461static 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 */
476static 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 */
491static 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 */
504static 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 */
519static 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 */
535static 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 */
553static 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 */
572static 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 */
594static 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 */
616static 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 */
635static 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 */
653static 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 */
671static 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 */
690static 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 */
708static 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 */
726static 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 */
744static 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 */
764static 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 */
784static 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 */
803static 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 */
824static 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 */
891static 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 */
936static 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 */
981static 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 */
1026static 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 */
1071static 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 */
1116static 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 */
1161static 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 */
1206static 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 */
1251static 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 */
1296static 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 */
1341static 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 */
1386static 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 */
1431static 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 */
1476static 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 */
1544static 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 */
1611static 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) */
1670static 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 */
1729static 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)        */
17655416 /*	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 */
1793static 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 */
1859static 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 */
1925static 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 */
1992static 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 */
2061static 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 */
2130static 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 */
2198static 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 */
2261static 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 */
2330static 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 */
2399static 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 */
2468static 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 */
2538static 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. */
2608static 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 */
2678static 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 */
2753static 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 */
2861static 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