1 /* sane - Scanner Access Now Easy.
2
3 Copyright (C) 2019 Povilas Kanapickas <povilas@radix.lt>
4
5 This file is part of the SANE package.
6
7 This program is free software; you can redistribute it and/or
8 modify it under the terms of the GNU General Public License as
9 published by the Free Software Foundation; either version 2 of the
10 License, or (at your option) any later version.
11
12 This program is distributed in the hope that it will be useful, but
13 WITHOUT ANY WARRANTY; without even the implied warranty of
14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15 General Public License for more details.
16
17 You should have received a copy of the GNU General Public License
18 along with this program. If not, see <https://www.gnu.org/licenses/>.
19 */
20
21 #define DEBUG_DECLARE_ONLY
22
23 #include "low.h"
24
25 namespace genesys {
26
27 StaticInit<std::vector<Genesys_Gpo>> s_gpo;
28
genesys_init_gpo_tables()29 void genesys_init_gpo_tables()
30 {
31 s_gpo.init();
32
33 Genesys_Gpo gpo;
34 gpo.id = GpioId::UMAX;
35 gpo.regs = {
36 { 0x66, 0x11 },
37 { 0x67, 0x00 },
38 { 0x68, 0x51 },
39 { 0x69, 0x20 },
40 };
41 s_gpo->push_back(gpo);
42
43
44 gpo = Genesys_Gpo();
45 gpo.id = GpioId::ST12;
46 gpo.regs = {
47 { 0x66, 0x11 },
48 { 0x67, 0x00 },
49 { 0x68, 0x51 },
50 { 0x69, 0x20 },
51 };
52 s_gpo->push_back(gpo);
53
54
55 gpo = Genesys_Gpo();
56 gpo.id = GpioId::ST24;
57 gpo.regs = {
58 { 0x66, 0x00 },
59 { 0x67, 0x00 },
60 { 0x68, 0x51 },
61 { 0x69, 0x20 },
62 };
63 s_gpo->push_back(gpo);
64
65
66 gpo = Genesys_Gpo();
67 gpo.id = GpioId::MD_5345; // bits 11-12 are for bipolar V-ref input voltage
68 gpo.regs = {
69 { 0x66, 0x30 },
70 { 0x67, 0x18 },
71 { 0x68, 0xa0 },
72 { 0x69, 0x18 },
73 };
74 s_gpo->push_back(gpo);
75
76
77 gpo = Genesys_Gpo();
78 gpo.id = GpioId::HP2400;
79 gpo.regs = {
80 { 0x66, 0x30 },
81 { 0x67, 0x00 },
82 { 0x68, 0x31 },
83 { 0x69, 0x00 },
84 };
85 s_gpo->push_back(gpo);
86
87
88 gpo = Genesys_Gpo();
89 gpo.id = GpioId::HP2300;
90 gpo.regs = {
91 { 0x66, 0x00 },
92 { 0x67, 0x00 },
93 { 0x68, 0x00 },
94 { 0x69, 0x00 },
95 };
96 s_gpo->push_back(gpo);
97
98
99 gpo = Genesys_Gpo();
100 gpo.id = GpioId::CANON_LIDE_35;
101 gpo.regs = {
102 { 0x6c, 0x02 },
103 { 0x6d, 0x80 },
104 { 0x6e, 0xef },
105 { 0x6f, 0x80 },
106 };
107 s_gpo->push_back(gpo);
108
109
110 gpo = Genesys_Gpo();
111 gpo.id = GpioId::CANON_LIDE_90;
112 gpo.regs = {
113 { 0x6b, 0x03 },
114 { 0x6c, 0x74 },
115 { 0x6d, 0x80 },
116 { 0x6e, 0x7f },
117 { 0x6f, 0xe0 },
118 };
119 s_gpo->push_back(gpo);
120
121
122 gpo = Genesys_Gpo();
123 gpo.id = GpioId::XP200;
124 gpo.regs = {
125 { 0x66, 0x30 },
126 { 0x67, 0x00 },
127 { 0x68, 0xb0 },
128 { 0x69, 0x00 },
129 };
130 s_gpo->push_back(gpo);
131
132
133 gpo = Genesys_Gpo();
134 gpo.id = GpioId::HP3670;
135 gpo.regs = {
136 { 0x66, 0x00 },
137 { 0x67, 0x00 },
138 { 0x68, 0x00 },
139 { 0x69, 0x00 },
140 };
141 s_gpo->push_back(gpo);
142
143
144 gpo = Genesys_Gpo();
145 gpo.id = GpioId::XP300;
146 gpo.regs = {
147 { 0x6c, 0x09 },
148 { 0x6d, 0xc6 },
149 { 0x6e, 0xbb },
150 { 0x6f, 0x00 },
151 };
152 s_gpo->push_back(gpo);
153
154
155 gpo = Genesys_Gpo();
156 gpo.id = GpioId::DP665;
157 gpo.regs = {
158 { 0x6c, 0x18 },
159 { 0x6d, 0x00 },
160 { 0x6e, 0xbb },
161 { 0x6f, 0x00 },
162 };
163 s_gpo->push_back(gpo);
164
165
166 gpo = Genesys_Gpo();
167 gpo.id = GpioId::DP685;
168 gpo.regs = {
169 { 0x6c, 0x3f },
170 { 0x6d, 0x46 },
171 { 0x6e, 0xfb },
172 { 0x6f, 0x00 },
173 };
174 s_gpo->push_back(gpo);
175
176
177 gpo = Genesys_Gpo();
178 gpo.id = GpioId::CANON_LIDE_200;
179 gpo.regs = {
180 { 0x6b, 0x02 },
181 { 0x6c, 0xf9 }, // 0xfb when idle , 0xf9/0xe9 (1200) when scanning
182 { 0x6d, 0x20 },
183 { 0x6e, 0xff },
184 { 0x6f, 0x00 },
185 { 0xa6, 0x04 },
186 { 0xa7, 0x04 },
187 { 0xa8, 0x00 },
188 { 0xa9, 0x00 },
189 };
190 s_gpo->push_back(gpo);
191
192
193 gpo = Genesys_Gpo();
194 gpo.id = GpioId::CANON_LIDE_700F;
195 gpo.regs = {
196 { 0x6b, 0x06 },
197 { 0x6c, 0xdb },
198 { 0x6d, 0xff },
199 { 0x6e, 0xff },
200 { 0x6f, 0x80 },
201 { 0xa6, 0x15 },
202 { 0xa7, 0x07 },
203 { 0xa8, 0x20 },
204 { 0xa9, 0x10 },
205 };
206 s_gpo->push_back(gpo);
207
208
209 gpo = Genesys_Gpo();
210 gpo.id = GpioId::KVSS080;
211 gpo.regs = {
212 { 0x6c, 0xf5 },
213 { 0x6d, 0x20 },
214 { 0x6e, 0x7e },
215 { 0x6f, 0xa1 },
216 { 0xa6, 0x06 },
217 { 0xa7, 0x0f },
218 { 0xa8, 0x00 },
219 { 0xa9, 0x08 },
220 };
221 s_gpo->push_back(gpo);
222
223
224 gpo = Genesys_Gpo();
225 gpo.id = GpioId::G4050;
226 gpo.regs = {
227 { 0x6c, 0x20 },
228 { 0x6d, 0x00 },
229 { 0x6e, 0xfc },
230 { 0x6f, 0x00 },
231 { 0xa6, 0x08 },
232 { 0xa7, 0x1e },
233 { 0xa8, 0x3e },
234 { 0xa9, 0x06 },
235 };
236 s_gpo->push_back(gpo);
237
238
239 gpo = Genesys_Gpo();
240 gpo.id = GpioId::G4010;
241 gpo.regs = {
242 { 0x6c, 0x20 },
243 { 0x6d, 0x00 },
244 { 0x6e, 0xfc },
245 { 0x6f, 0x00 },
246 { 0xa6, 0x08 },
247 { 0xa7, 0x1e },
248 { 0xa8, 0x3e },
249 { 0xa9, 0x06 },
250 };
251 s_gpo->push_back(gpo);
252
253
254 gpo = Genesys_Gpo();
255 gpo.id = GpioId::HP_N6310;
256 gpo.regs = {
257 { 0x6c, 0xa3 },
258 { 0x6d, 0x00 },
259 { 0x6e, 0x7f },
260 { 0x6f, 0x00 },
261 };
262 s_gpo->push_back(gpo);
263
264
265 gpo = Genesys_Gpo();
266 gpo.id = GpioId::CANON_LIDE_110;
267 gpo.regs = {
268 { 0x6c, 0xfb },
269 { 0x6d, 0x20 },
270 { 0x6e, 0xff },
271 { 0x6f, 0x00 },
272 };
273 s_gpo->push_back(gpo);
274
275
276 gpo = Genesys_Gpo();
277 gpo.id = GpioId::CANON_LIDE_120;
278 gpo.regs = {
279 { 0x6c, 0xfb },
280 { 0x6d, 0x20 },
281 { 0x6e, 0xff },
282 { 0x6f, 0x00 },
283 };
284 s_gpo->push_back(gpo);
285
286
287 gpo = Genesys_Gpo();
288 gpo.id = GpioId::CANON_LIDE_210;
289 gpo.regs = {
290 { 0x6c, 0xfb },
291 { 0x6d, 0x20 },
292 { 0x6e, 0xff },
293 { 0x6f, 0x00 },
294 };
295 s_gpo->push_back(gpo);
296
297
298 gpo = Genesys_Gpo();
299 gpo.id = GpioId::PLUSTEK_OPTICPRO_3600;
300 gpo.regs = {
301 { 0x6c, 0x02 },
302 { 0x6d, 0x00 },
303 { 0x6e, 0x1e },
304 { 0x6f, 0x80 },
305 };
306 s_gpo->push_back(gpo);
307
308
309 gpo = Genesys_Gpo();
310 gpo.id = GpioId::PLUSTEK_OPTICFILM_7200;
311 gpo.regs = {
312 { 0x6b, 0x33 },
313 { 0x6c, 0x00 },
314 { 0x6d, 0x80 },
315 { 0x6e, 0x0c },
316 { 0x6f, 0x80 },
317 { 0x7e, 0x00 }
318 };
319 s_gpo->push_back(gpo);
320
321
322 gpo = Genesys_Gpo();
323 gpo.id = GpioId::PLUSTEK_OPTICFILM_7200I;
324 gpo.regs = {
325 { 0x6c, 0x4c },
326 { 0x6d, 0x80 },
327 { 0x6e, 0x4c },
328 { 0x6f, 0x80 },
329 { 0xa6, 0x00 },
330 { 0xa7, 0x07 },
331 { 0xa8, 0x20 },
332 { 0xa9, 0x01 },
333 };
334 s_gpo->push_back(gpo);
335
336 gpo = Genesys_Gpo();
337 gpo.id = GpioId::PLUSTEK_OPTICFILM_7300;
338 gpo.regs = {
339 { 0x6c, 0x4c },
340 { 0x6d, 0x00 },
341 { 0x6e, 0x4c },
342 { 0x6f, 0x80 },
343 { 0xa6, 0x00 },
344 { 0xa7, 0x07 },
345 { 0xa8, 0x20 },
346 { 0xa9, 0x01 },
347 };
348 s_gpo->push_back(gpo);
349
350
351 gpo = Genesys_Gpo();
352 gpo.id = GpioId::PLUSTEK_OPTICFILM_7400;
353 gpo.regs = {
354 { 0x6b, 0x30 }, { 0x6c, 0x4c }, { 0x6d, 0x80 }, { 0x6e, 0x4c }, { 0x6f, 0x80 },
355 { 0xa6, 0x00 }, { 0xa7, 0x07 }, { 0xa8, 0x20 }, { 0xa9, 0x01 },
356 };
357 s_gpo->push_back(gpo);
358
359
360 gpo = Genesys_Gpo();
361 gpo.id = GpioId::PLUSTEK_OPTICFILM_7500I;
362 gpo.regs = {
363 { 0x6c, 0x4c },
364 { 0x6d, 0x00 },
365 { 0x6e, 0x4c },
366 { 0x6f, 0x80 },
367 { 0xa6, 0x00 },
368 { 0xa7, 0x07 },
369 { 0xa8, 0x20 },
370 { 0xa9, 0x01 },
371 };
372 s_gpo->push_back(gpo);
373
374
375 gpo = Genesys_Gpo();
376 gpo.id = GpioId::PLUSTEK_OPTICFILM_8200I;
377 gpo.regs = {
378 { 0x6b, 0x30 }, { 0x6c, 0x4c }, { 0x6d, 0x80 }, { 0x6e, 0x4c }, { 0x6f, 0x80 },
379 { 0xa6, 0x00 }, { 0xa7, 0x07 }, { 0xa8, 0x20 }, { 0xa9, 0x01 },
380 };
381 s_gpo->push_back(gpo);
382
383
384 gpo = Genesys_Gpo();
385 gpo.id = GpioId::CANON_4400F;
386 gpo.regs = {
387 { 0x6c, 0x01 },
388 { 0x6d, 0x7f },
389 { 0x6e, 0xff },
390 { 0x6f, 0x00 },
391 { 0xa6, 0x00 },
392 { 0xa7, 0xff },
393 { 0xa8, 0x07 },
394 { 0xa9, 0x00 },
395 };
396 s_gpo->push_back(gpo);
397
398
399 gpo = Genesys_Gpo();
400 gpo.id = GpioId::CANON_5600F;
401 gpo.regs = {
402 { 0x6b, 0x87 },
403 { 0x6c, 0xf0 },
404 { 0x6d, 0x5f },
405 { 0x6e, 0x7f },
406 { 0x6f, 0xa0 },
407 { 0xa6, 0x07 },
408 { 0xa7, 0x1c },
409 { 0xa8, 0x00 },
410 { 0xa9, 0x04 },
411 };
412 s_gpo->push_back(gpo);
413
414
415 gpo = Genesys_Gpo();
416 gpo.id = GpioId::CANON_8400F;
417 gpo.regs = {
418 { 0x6c, 0x9a },
419 { 0x6d, 0xdf },
420 { 0x6e, 0xfe },
421 { 0x6f, 0x60 },
422 { 0xa6, 0x00 },
423 { 0xa7, 0x03 },
424 { 0xa8, 0x00 },
425 { 0xa9, 0x02 },
426 };
427 s_gpo->push_back(gpo);
428
429
430 gpo = Genesys_Gpo();
431 gpo.id = GpioId::CANON_8600F;
432 gpo.regs = {
433 { 0x6c, 0x20 },
434 { 0x6d, 0x7c },
435 { 0x6e, 0xff },
436 { 0x6f, 0x00 },
437 { 0xa6, 0x00 },
438 { 0xa7, 0xff },
439 { 0xa8, 0x00 },
440 { 0xa9, 0x00 },
441 };
442 s_gpo->push_back(gpo);
443
444
445 gpo = Genesys_Gpo();
446 gpo.id = GpioId::IMG101;
447 gpo.regs = {
448 { 0x6b, 0x72 }, { 0x6c, 0x1f }, { 0x6d, 0xa4 }, { 0x6e, 0x13 }, { 0x6f, 0xa7 },
449 { 0xa6, 0x11 }, { 0xa7, 0xff }, { 0xa8, 0x19 }, { 0xa9, 0x05 },
450 };
451 s_gpo->push_back(gpo);
452
453
454 gpo = Genesys_Gpo();
455 gpo.id = GpioId::PLUSTEK_OPTICBOOK_3800;
456 gpo.regs = {
457 { 0x6b, 0x30 }, { 0x6c, 0x01 }, { 0x6d, 0x80 }, { 0x6e, 0x2d }, { 0x6f, 0x80 },
458 { 0xa6, 0x0c }, { 0xa7, 0x8f }, { 0xa8, 0x08 }, { 0xa9, 0x04 },
459 };
460 s_gpo->push_back(gpo);
461
462
463 gpo = Genesys_Gpo();
464 gpo.id = GpioId::CANON_LIDE_80;
465 gpo.regs = {
466 { 0x6c, 0x28 },
467 { 0x6d, 0x90 },
468 { 0x6e, 0x75 },
469 { 0x6f, 0x80 },
470 };
471 s_gpo->push_back(gpo);
472 }
473
474 } // namespace genesys
475