Lines Matching full:dev
3 Copyright (C) 2010-2013 Stéphane Voltz <stef.dev@free.fr>
51 * @param dev device structure holding register set to initialize
54 gl843_init_registers (Genesys_Device * dev) in gl843_init_registers() argument
64 dev->reg.clear(); in gl843_init_registers()
66 dev->reg.init_reg(0x01, 0x00); in gl843_init_registers()
67 dev->reg.init_reg(0x02, 0x78); in gl843_init_registers()
68 dev->reg.init_reg(0x03, 0x1f); in gl843_init_registers()
69 if (dev->model->model_id == ModelId::HP_SCANJET_G4010 || in gl843_init_registers()
70 dev->model->model_id == ModelId::HP_SCANJET_G4050 || in gl843_init_registers()
71 dev->model->model_id == ModelId::HP_SCANJET_4850C) in gl843_init_registers()
73 dev->reg.init_reg(0x03, 0x1d); in gl843_init_registers()
75 if (dev->model->model_id == ModelId::CANON_8400F) { in gl843_init_registers()
76 dev->reg.init_reg(0x03, 0x1c); in gl843_init_registers()
79 dev->reg.init_reg(0x04, 0x10); in gl843_init_registers()
80 if (dev->model->model_id == ModelId::PLUSTEK_OPTICFILM_7200I || in gl843_init_registers()
81 dev->model->model_id == ModelId::PLUSTEK_OPTICFILM_7300 || in gl843_init_registers()
82 dev->model->model_id == ModelId::PLUSTEK_OPTICFILM_7500I) in gl843_init_registers()
84 dev->reg.init_reg(0x04, 0x22); in gl843_init_registers()
88 dev->reg.init_reg(0x05, 0x80); in gl843_init_registers()
89 if (dev->model->model_id == ModelId::HP_SCANJET_G4010 || in gl843_init_registers()
90 dev->model->model_id == ModelId::HP_SCANJET_G4050 || in gl843_init_registers()
91 dev->model->model_id == ModelId::HP_SCANJET_4850C) in gl843_init_registers()
93 dev->reg.init_reg(0x05, 0x08); in gl843_init_registers()
96 auto initial_scan_method = dev->model->default_method; in gl843_init_registers()
97 if (dev->model->model_id == ModelId::CANON_4400F || in gl843_init_registers()
98 dev->model->model_id == ModelId::CANON_8600F) in gl843_init_registers()
102 const auto& sensor = sanei_genesys_find_sensor_any(dev); in gl843_init_registers()
103 const auto& dpihw_sensor = sanei_genesys_find_sensor(dev, sensor.full_resolution, in gl843_init_registers()
105 sanei_genesys_set_dpihw(dev->reg, dpihw_sensor.register_dpihw); in gl843_init_registers()
108 dev->reg.init_reg(0x06, 0xd8); /* SCANMOD=110, PWRBIT and GAIN4 */ in gl843_init_registers()
109 if (dev->model->model_id == ModelId::HP_SCANJET_G4010 || in gl843_init_registers()
110 dev->model->model_id == ModelId::HP_SCANJET_G4050 || in gl843_init_registers()
111 dev->model->model_id == ModelId::HP_SCANJET_4850C) in gl843_init_registers()
113 dev->reg.init_reg(0x06, 0xd8); /* SCANMOD=110, PWRBIT and GAIN4 */ in gl843_init_registers()
115 if (dev->model->model_id == ModelId::PLUSTEK_OPTICFILM_7200I) { in gl843_init_registers()
116 dev->reg.init_reg(0x06, 0xd0); in gl843_init_registers()
118 if (dev->model->model_id == ModelId::CANON_4400F || in gl843_init_registers()
119 dev->model->model_id == ModelId::PLUSTEK_OPTICFILM_7300 || in gl843_init_registers()
120 dev->model->model_id == ModelId::PLUSTEK_OPTICFILM_7500I) in gl843_init_registers()
122 dev->reg.init_reg(0x06, 0xf0); /* SCANMOD=111, PWRBIT and no GAIN4 */ in gl843_init_registers()
125 dev->reg.init_reg(0x08, 0x00); in gl843_init_registers()
126 dev->reg.init_reg(0x09, 0x00); in gl843_init_registers()
127 dev->reg.init_reg(0x0a, 0x00); in gl843_init_registers()
128 if (dev->model->model_id == ModelId::HP_SCANJET_G4010 || in gl843_init_registers()
129 dev->model->model_id == ModelId::HP_SCANJET_G4050 || in gl843_init_registers()
130 dev->model->model_id == ModelId::HP_SCANJET_4850C) in gl843_init_registers()
132 dev->reg.init_reg(0x0a, 0x18); in gl843_init_registers()
134 if (dev->model->model_id == ModelId::CANON_8400F) { in gl843_init_registers()
135 dev->reg.init_reg(0x0a, 0x10); in gl843_init_registers()
140 dev->reg.init_reg(0x0b, 0x6a); in gl843_init_registers()
142 if (dev->model->model_id == ModelId::CANON_4400F) { in gl843_init_registers()
143 dev->reg.init_reg(0x0b, 0x69); // 16M only in gl843_init_registers()
145 if (dev->model->model_id == ModelId::CANON_8600F) { in gl843_init_registers()
146 dev->reg.init_reg(0x0b, 0x89); in gl843_init_registers()
148 if (dev->model->model_id == ModelId::PLUSTEK_OPTICFILM_7200I) { in gl843_init_registers()
149 dev->reg.init_reg(0x0b, 0x2a); in gl843_init_registers()
151 if (dev->model->model_id == ModelId::PLUSTEK_OPTICFILM_7300 || in gl843_init_registers()
152 dev->model->model_id == ModelId::PLUSTEK_OPTICFILM_7500I) { in gl843_init_registers()
153 dev->reg.init_reg(0x0b, 0x4a); in gl843_init_registers()
155 if (dev->model->model_id == ModelId::HP_SCANJET_G4010 || in gl843_init_registers()
156 dev->model->model_id == ModelId::HP_SCANJET_G4050 || in gl843_init_registers()
157 dev->model->model_id == ModelId::HP_SCANJET_4850C) in gl843_init_registers()
159 dev->reg.init_reg(0x0b, 0x69); in gl843_init_registers()
162 if (dev->model->model_id != ModelId::CANON_8400F && in gl843_init_registers()
163 dev->model->model_id != ModelId::PLUSTEK_OPTICFILM_7200I && in gl843_init_registers()
164 dev->model->model_id != ModelId::PLUSTEK_OPTICFILM_7300) in gl843_init_registers()
166 dev->reg.init_reg(0x0c, 0x00); in gl843_init_registers()
170 dev->reg.init_reg(0x10, 0x00); // SENSOR_DEF in gl843_init_registers()
171 dev->reg.init_reg(0x11, 0x00); // SENSOR_DEF in gl843_init_registers()
172 dev->reg.init_reg(0x12, 0x00); // SENSOR_DEF in gl843_init_registers()
173 dev->reg.init_reg(0x13, 0x00); // SENSOR_DEF in gl843_init_registers()
174 dev->reg.init_reg(0x14, 0x00); // SENSOR_DEF in gl843_init_registers()
175 dev->reg.init_reg(0x15, 0x00); // SENSOR_DEF in gl843_init_registers()
176 if (dev->model->model_id == ModelId::CANON_4400F || in gl843_init_registers()
177 dev->model->model_id == ModelId::CANON_8600F) in gl843_init_registers()
179 dev->reg.set16(REG_EXPR, 0x9c40); in gl843_init_registers()
180 dev->reg.set16(REG_EXPG, 0x9c40); in gl843_init_registers()
181 dev->reg.set16(REG_EXPB, 0x9c40); in gl843_init_registers()
183 if (dev->model->model_id == ModelId::HP_SCANJET_G4010 || in gl843_init_registers()
184 dev->model->model_id == ModelId::HP_SCANJET_G4050 || in gl843_init_registers()
185 dev->model->model_id == ModelId::HP_SCANJET_4850C) in gl843_init_registers()
187 dev->reg.set16(REG_EXPR, 0x2c09); in gl843_init_registers()
188 dev->reg.set16(REG_EXPG, 0x22b8); in gl843_init_registers()
189 dev->reg.set16(REG_EXPB, 0x10f0); in gl843_init_registers()
193 dev->reg.init_reg(0x16, 0x33); // SENSOR_DEF in gl843_init_registers()
194 dev->reg.init_reg(0x17, 0x1c); // SENSOR_DEF in gl843_init_registers()
195 dev->reg.init_reg(0x18, 0x10); // SENSOR_DEF in gl843_init_registers()
198 dev->reg.init_reg(0x19, 0x2a); // SENSOR_DEF in gl843_init_registers()
201 dev->reg.init_reg(0x1a, 0x04); // SENSOR_DEF in gl843_init_registers()
202 dev->reg.init_reg(0x1b, 0x00); // SENSOR_DEF in gl843_init_registers()
203 dev->reg.init_reg(0x1c, 0x20); // SENSOR_DEF in gl843_init_registers()
204 dev->reg.init_reg(0x1d, 0x04); // SENSOR_DEF in gl843_init_registers()
206 dev->reg.init_reg(0x1e, 0x10); in gl843_init_registers()
207 if (dev->model->model_id == ModelId::CANON_4400F || in gl843_init_registers()
208 dev->model->model_id == ModelId::CANON_8600F) in gl843_init_registers()
210 dev->reg.init_reg(0x1e, 0x20); in gl843_init_registers()
212 if (dev->model->model_id == ModelId::CANON_8400F) { in gl843_init_registers()
213 dev->reg.init_reg(0x1e, 0xa0); in gl843_init_registers()
216 dev->reg.init_reg(0x1f, 0x01); in gl843_init_registers()
217 if (dev->model->model_id == ModelId::CANON_8600F) { in gl843_init_registers()
218 dev->reg.init_reg(0x1f, 0xff); in gl843_init_registers()
221 dev->reg.init_reg(0x20, 0x10); in gl843_init_registers()
222 dev->reg.init_reg(0x21, 0x04); in gl843_init_registers()
224 dev->reg.init_reg(0x22, 0x10); in gl843_init_registers()
225 dev->reg.init_reg(0x23, 0x10); in gl843_init_registers()
226 if (dev->model->model_id == ModelId::CANON_8600F) { in gl843_init_registers()
227 dev->reg.init_reg(0x22, 0xc8); in gl843_init_registers()
228 dev->reg.init_reg(0x23, 0xc8); in gl843_init_registers()
230 if (dev->model->model_id == ModelId::CANON_8400F) { in gl843_init_registers()
231 dev->reg.init_reg(0x22, 0x50); in gl843_init_registers()
232 dev->reg.init_reg(0x23, 0x50); in gl843_init_registers()
235 dev->reg.init_reg(0x24, 0x04); in gl843_init_registers()
236 dev->reg.init_reg(0x25, 0x00); in gl843_init_registers()
237 dev->reg.init_reg(0x26, 0x00); in gl843_init_registers()
238 dev->reg.init_reg(0x27, 0x00); in gl843_init_registers()
239 dev->reg.init_reg(0x2c, 0x02); in gl843_init_registers()
240 dev->reg.init_reg(0x2d, 0x58); in gl843_init_registers()
242 dev->reg.init_reg(0x2e, 0x80); in gl843_init_registers()
244 dev->reg.init_reg(0x2f, 0x80); in gl843_init_registers()
245 dev->reg.init_reg(0x30, 0x00); in gl843_init_registers()
246 dev->reg.init_reg(0x31, 0x14); in gl843_init_registers()
247 dev->reg.init_reg(0x32, 0x27); in gl843_init_registers()
248 dev->reg.init_reg(0x33, 0xec); in gl843_init_registers()
251 dev->reg.init_reg(0x34, 0x24); in gl843_init_registers()
252 if (dev->model->model_id == ModelId::CANON_8600F) { in gl843_init_registers()
253 dev->reg.init_reg(0x34, 0x14); in gl843_init_registers()
255 if (dev->model->model_id == ModelId::PLUSTEK_OPTICFILM_7300 || in gl843_init_registers()
256 dev->model->model_id == ModelId::PLUSTEK_OPTICFILM_7500I) in gl843_init_registers()
258 dev->reg.init_reg(0x34, 0x3c); in gl843_init_registers()
263 dev->reg.init_reg(0x35, 0x00); in gl843_init_registers()
264 dev->reg.init_reg(0x36, 0xff); in gl843_init_registers()
265 dev->reg.init_reg(0x37, 0xff); in gl843_init_registers()
268 dev->reg.init_reg(0x38, 0x55); // SENSOR_DEF in gl843_init_registers()
269 dev->reg.init_reg(0x39, 0xf0); // SENSOR_DEF in gl843_init_registers()
272 dev->reg.init_reg(0x3d, 0x00); in gl843_init_registers()
273 dev->reg.init_reg(0x3e, 0x00); in gl843_init_registers()
274 dev->reg.init_reg(0x3f, 0x01); in gl843_init_registers()
285 dev->reg.init_reg(0x52, 0x01); // SENSOR_DEF in gl843_init_registers()
286 dev->reg.init_reg(0x53, 0x04); // SENSOR_DEF in gl843_init_registers()
287 dev->reg.init_reg(0x54, 0x07); // SENSOR_DEF in gl843_init_registers()
288 dev->reg.init_reg(0x55, 0x0a); // SENSOR_DEF in gl843_init_registers()
289 dev->reg.init_reg(0x56, 0x0d); // SENSOR_DEF in gl843_init_registers()
290 dev->reg.init_reg(0x57, 0x10); // SENSOR_DEF in gl843_init_registers()
294 dev->reg.init_reg(0x58, 0x1b); // SENSOR_DEF in gl843_init_registers()
296 dev->reg.init_reg(0x59, 0x00); // SENSOR_DEF in gl843_init_registers()
297 dev->reg.init_reg(0x5a, 0x40); // SENSOR_DEF in gl843_init_registers()
305 dev->reg.init_reg(0x5e, 0x23); in gl843_init_registers()
306 if (dev->model->model_id == ModelId::CANON_4400F) { in gl843_init_registers()
307 dev->reg.init_reg(0x5e, 0x3f); in gl843_init_registers()
309 if (dev->model->model_id == ModelId::CANON_8400F) { in gl843_init_registers()
310 dev->reg.init_reg(0x5e, 0x85); in gl843_init_registers()
312 if (dev->model->model_id == ModelId::CANON_8600F) { in gl843_init_registers()
313 dev->reg.init_reg(0x5e, 0x1f); in gl843_init_registers()
315 if (dev->model->model_id == ModelId::PLUSTEK_OPTICFILM_7300 || in gl843_init_registers()
316 dev->model->model_id == ModelId::PLUSTEK_OPTICFILM_7500I) in gl843_init_registers()
318 dev->reg.init_reg(0x5e, 0x01); in gl843_init_registers()
322 dev->reg.init_reg(0x5f, 0x01); in gl843_init_registers()
323 if (dev->model->model_id == ModelId::CANON_4400F) { in gl843_init_registers()
324 dev->reg.init_reg(0x5f, 0xf0); in gl843_init_registers()
326 if (dev->model->model_id == ModelId::CANON_8600F) { in gl843_init_registers()
327 dev->reg.init_reg(0x5f, 0xf0); in gl843_init_registers()
329 if (dev->model->model_id == ModelId::PLUSTEK_OPTICFILM_7300 || in gl843_init_registers()
330 dev->model->model_id == ModelId::PLUSTEK_OPTICFILM_7500I) in gl843_init_registers()
332 dev->reg.init_reg(0x5f, 0x01); in gl843_init_registers()
336 dev->reg.init_reg(0x60, 0x00); in gl843_init_registers()
337 dev->reg.init_reg(0x61, 0x00); in gl843_init_registers()
338 dev->reg.init_reg(0x62, 0x00); in gl843_init_registers()
341 dev->reg.init_reg(0x63, 0x00); in gl843_init_registers()
342 dev->reg.init_reg(0x64, 0x00); in gl843_init_registers()
343 dev->reg.init_reg(0x65, 0x00); in gl843_init_registers()
348 dev->reg.init_reg(0x67, 0x7f); // MOTOR_PROFILE in gl843_init_registers()
352 dev->reg.init_reg(0x68, 0x7f); // MOTOR_PROFILE in gl843_init_registers()
354 if (dev->model->model_id == ModelId::PLUSTEK_OPTICFILM_7300) { in gl843_init_registers()
355 dev->reg.init_reg(0x67, 0x80); in gl843_init_registers()
356 dev->reg.init_reg(0x68, 0x80); in gl843_init_registers()
361 dev->reg.init_reg(0x69, 0x01); // MOTOR_PROFILE in gl843_init_registers()
365 dev->reg.init_reg(0x6a, 0x04); // MOTOR_PROFILE in gl843_init_registers()
368 dev->reg.init_reg(0x6b, 0x30); in gl843_init_registers()
369 if (dev->model->model_id == ModelId::CANON_4400F || in gl843_init_registers()
370 dev->model->model_id == ModelId::CANON_8600F) in gl843_init_registers()
372 dev->reg.init_reg(0x6b, 0x72); in gl843_init_registers()
374 if (dev->model->model_id == ModelId::CANON_8400F) { in gl843_init_registers()
375 dev->reg.init_reg(0x6b, 0xb1); in gl843_init_registers()
377 if (dev->model->model_id == ModelId::HP_SCANJET_G4010 || in gl843_init_registers()
378 dev->model->model_id == ModelId::HP_SCANJET_G4050 || in gl843_init_registers()
379 dev->model->model_id == ModelId::HP_SCANJET_4850C) in gl843_init_registers()
381 dev->reg.init_reg(0x6b, 0xf4); in gl843_init_registers()
383 if (dev->model->model_id == ModelId::PLUSTEK_OPTICFILM_7200I || in gl843_init_registers()
384 dev->model->model_id == ModelId::PLUSTEK_OPTICFILM_7300 || in gl843_init_registers()
385 dev->model->model_id == ModelId::PLUSTEK_OPTICFILM_7500I) in gl843_init_registers()
387 dev->reg.init_reg(0x6b, 0x31); in gl843_init_registers()
397 dev->reg.init_reg(0x70, 0x01); // SENSOR_DEF in gl843_init_registers()
398 dev->reg.init_reg(0x71, 0x03); // SENSOR_DEF in gl843_init_registers()
399 dev->reg.init_reg(0x72, 0x04); // SENSOR_DEF in gl843_init_registers()
400 dev->reg.init_reg(0x73, 0x05); // SENSOR_DEF in gl843_init_registers()
402 if (dev->model->model_id == ModelId::CANON_4400F) { in gl843_init_registers()
403 dev->reg.init_reg(0x70, 0x01); in gl843_init_registers()
404 dev->reg.init_reg(0x71, 0x03); in gl843_init_registers()
405 dev->reg.init_reg(0x72, 0x01); in gl843_init_registers()
406 dev->reg.init_reg(0x73, 0x03); in gl843_init_registers()
408 if (dev->model->model_id == ModelId::CANON_8400F) { in gl843_init_registers()
409 dev->reg.init_reg(0x70, 0x01); in gl843_init_registers()
410 dev->reg.init_reg(0x71, 0x03); in gl843_init_registers()
411 dev->reg.init_reg(0x72, 0x03); in gl843_init_registers()
412 dev->reg.init_reg(0x73, 0x04); in gl843_init_registers()
414 if (dev->model->model_id == ModelId::CANON_8600F) { in gl843_init_registers()
415 dev->reg.init_reg(0x70, 0x00); in gl843_init_registers()
416 dev->reg.init_reg(0x71, 0x02); in gl843_init_registers()
417 dev->reg.init_reg(0x72, 0x02); in gl843_init_registers()
418 dev->reg.init_reg(0x73, 0x04); in gl843_init_registers()
420 if (dev->model->model_id == ModelId::HP_SCANJET_G4010 || in gl843_init_registers()
421 dev->model->model_id == ModelId::HP_SCANJET_G4050 || in gl843_init_registers()
422 dev->model->model_id == ModelId::HP_SCANJET_4850C) in gl843_init_registers()
424 dev->reg.init_reg(0x70, 0x00); in gl843_init_registers()
425 dev->reg.init_reg(0x71, 0x02); in gl843_init_registers()
426 dev->reg.init_reg(0x72, 0x00); in gl843_init_registers()
427 dev->reg.init_reg(0x73, 0x00); in gl843_init_registers()
431 dev->reg.init_reg(0x74, 0x00); // SENSOR_DEF in gl843_init_registers()
432 dev->reg.init_reg(0x75, 0x00); // SENSOR_DEF in gl843_init_registers()
433 dev->reg.init_reg(0x76, 0x3c); // SENSOR_DEF in gl843_init_registers()
434 dev->reg.init_reg(0x77, 0x00); // SENSOR_DEF in gl843_init_registers()
435 dev->reg.init_reg(0x78, 0x00); // SENSOR_DEF in gl843_init_registers()
436 dev->reg.init_reg(0x79, 0x9f); // SENSOR_DEF in gl843_init_registers()
437 dev->reg.init_reg(0x7a, 0x00); // SENSOR_DEF in gl843_init_registers()
438 dev->reg.init_reg(0x7b, 0x00); // SENSOR_DEF in gl843_init_registers()
439 dev->reg.init_reg(0x7c, 0x55); // SENSOR_DEF in gl843_init_registers()
442 dev->reg.init_reg(0x7d, 0x00); in gl843_init_registers()
443 if (dev->model->model_id == ModelId::CANON_8400F) { in gl843_init_registers()
444 dev->reg.init_reg(0x7d, 0x20); in gl843_init_registers()
448 dev->reg.init_reg(0x7e, 0x00); in gl843_init_registers()
452 dev->reg.init_reg(0x7f, 0x00); in gl843_init_registers()
456 dev->reg.init_reg(0x80, 0x00); // MOTOR_PROFILE in gl843_init_registers()
457 if (dev->model->model_id == ModelId::CANON_4400F) { in gl843_init_registers()
458 dev->reg.init_reg(0x80, 0x0c); in gl843_init_registers()
460 if (dev->model->model_id == ModelId::CANON_8400F) { in gl843_init_registers()
461 dev->reg.init_reg(0x80, 0x28); in gl843_init_registers()
463 if (dev->model->model_id == ModelId::HP_SCANJET_G4010 || in gl843_init_registers()
464 dev->model->model_id == ModelId::HP_SCANJET_G4050 || in gl843_init_registers()
465 dev->model->model_id == ModelId::HP_SCANJET_4850C) in gl843_init_registers()
467 dev->reg.init_reg(0x80, 0x50); in gl843_init_registers()
469 if (dev->model->model_id == ModelId::PLUSTEK_OPTICFILM_7300 || in gl843_init_registers()
470 dev->model->model_id == ModelId::PLUSTEK_OPTICFILM_7500I) in gl843_init_registers()
472 dev->reg.init_reg(0x80, 0x0f); in gl843_init_registers()
475 if (dev->model->model_id != ModelId::CANON_4400F) { in gl843_init_registers()
476 dev->reg.init_reg(0x81, 0x00); in gl843_init_registers()
477 dev->reg.init_reg(0x82, 0x00); in gl843_init_registers()
478 dev->reg.init_reg(0x83, 0x00); in gl843_init_registers()
479 dev->reg.init_reg(0x84, 0x00); in gl843_init_registers()
480 dev->reg.init_reg(0x85, 0x00); in gl843_init_registers()
481 dev->reg.init_reg(0x86, 0x00); in gl843_init_registers()
484 dev->reg.init_reg(0x87, 0x00); in gl843_init_registers()
485 if (dev->model->model_id == ModelId::CANON_4400F || in gl843_init_registers()
486 dev->model->model_id == ModelId::CANON_8400F || in gl843_init_registers()
487 dev->model->model_id == ModelId::CANON_8600F) in gl843_init_registers()
489 dev->reg.init_reg(0x87, 0x02); in gl843_init_registers()
493 if (dev->model->model_id != ModelId::CANON_8400F && in gl843_init_registers()
494 dev->model->model_id != ModelId::PLUSTEK_OPTICFILM_7200I && in gl843_init_registers()
495 dev->model->model_id != ModelId::PLUSTEK_OPTICFILM_7300) in gl843_init_registers()
497 dev->reg.init_reg(0x94, 0xff); in gl843_init_registers()
506 if (dev->model->model_id == ModelId::CANON_8600F) { in gl843_init_registers()
507 dev->reg.init_reg(0x98, 0x00); in gl843_init_registers()
508 dev->reg.init_reg(0x99, 0x00); in gl843_init_registers()
509 dev->reg.init_reg(0x9a, 0x00); in gl843_init_registers()
510 dev->reg.init_reg(0x9b, 0x00); in gl843_init_registers()
512 if (dev->model->model_id == ModelId::HP_SCANJET_G4010 || in gl843_init_registers()
513 dev->model->model_id == ModelId::HP_SCANJET_G4050 || in gl843_init_registers()
514 dev->model->model_id == ModelId::HP_SCANJET_4850C) in gl843_init_registers()
517 dev->reg.init_reg(0x98, 0x03); in gl843_init_registers()
518 dev->reg.init_reg(0x99, 0x30); in gl843_init_registers()
519 dev->reg.init_reg(0x9a, 0x01); in gl843_init_registers()
520 dev->reg.init_reg(0x9b, 0x80); in gl843_init_registers()
524 dev->reg.init_reg(0x9d, 0x04); in gl843_init_registers()
525 if (dev->model->model_id == ModelId::PLUSTEK_OPTICFILM_7300 || in gl843_init_registers()
526 dev->model->model_id == ModelId::PLUSTEK_OPTICFILM_7500I) in gl843_init_registers()
528 dev->reg.init_reg(0x9d, 0x00); in gl843_init_registers()
530 if (dev->model->model_id == ModelId::CANON_4400F || in gl843_init_registers()
531 dev->model->model_id == ModelId::CANON_8400F || in gl843_init_registers()
532 dev->model->model_id == ModelId::CANON_8600F || in gl843_init_registers()
533 dev->model->model_id == ModelId::PLUSTEK_OPTICFILM_7200I || in gl843_init_registers()
534 dev->model->model_id == ModelId::HP_SCANJET_G4010 || in gl843_init_registers()
535 dev->model->model_id == ModelId::HP_SCANJET_G4050 || in gl843_init_registers()
536 dev->model->model_id == ModelId::HP_SCANJET_4850C) in gl843_init_registers()
538 dev->reg.init_reg(0x9d, 0x08); // sets the multiplier for slope tables in gl843_init_registers()
543 if (dev->model->model_id != ModelId::CANON_8400F && in gl843_init_registers()
544 dev->model->model_id != ModelId::PLUSTEK_OPTICFILM_7200I && in gl843_init_registers()
545 dev->model->model_id != ModelId::PLUSTEK_OPTICFILM_7300) in gl843_init_registers()
547 dev->reg.init_reg(0x9e, 0x00); // SENSOR_DEF in gl843_init_registers()
550 if (dev->model->model_id != ModelId::PLUSTEK_OPTICFILM_7300) { in gl843_init_registers()
551 dev->reg.init_reg(0xa2, 0x0f); in gl843_init_registers()
555 if (dev->model->model_id == ModelId::CANON_4400F || in gl843_init_registers()
556 dev->model->model_id == ModelId::CANON_8600F) in gl843_init_registers()
558 dev->reg.init_reg(0xa2, 0x1f); in gl843_init_registers()
564 if (dev->model->model_id != ModelId::CANON_4400F && in gl843_init_registers()
565 dev->model->model_id != ModelId::CANON_8400F && in gl843_init_registers()
566 dev->model->model_id != ModelId::PLUSTEK_OPTICFILM_7200I && in gl843_init_registers()
567 dev->model->model_id != ModelId::PLUSTEK_OPTICFILM_7300) in gl843_init_registers()
569 dev->reg.init_reg(0xaa, 0x00); in gl843_init_registers()
573 if (dev->model->model_id != ModelId::CANON_8400F && in gl843_init_registers()
574 dev->model->model_id != ModelId::PLUSTEK_OPTICFILM_7200I && in gl843_init_registers()
575 dev->model->model_id != ModelId::PLUSTEK_OPTICFILM_7300) { in gl843_init_registers()
576 dev->reg.init_reg(0xab, 0x50); in gl843_init_registers()
578 if (dev->model->model_id == ModelId::CANON_4400F) { in gl843_init_registers()
579 dev->reg.init_reg(0xab, 0x00); in gl843_init_registers()
581 if (dev->model->model_id == ModelId::HP_SCANJET_G4010 || in gl843_init_registers()
582 dev->model->model_id == ModelId::HP_SCANJET_G4050 || in gl843_init_registers()
583 dev->model->model_id == ModelId::CANON_8600F || in gl843_init_registers()
584 dev->model->model_id == ModelId::HP_SCANJET_4850C) in gl843_init_registers()
586 dev->reg.init_reg(0xab, 0x40); in gl843_init_registers()
591 if (dev->model->model_id == ModelId::CANON_8600F || in gl843_init_registers()
592 dev->model->model_id == ModelId::HP_SCANJET_G4010 || in gl843_init_registers()
593 dev->model->model_id == ModelId::HP_SCANJET_G4050 || in gl843_init_registers()
594 dev->model->model_id == ModelId::HP_SCANJET_4850C) in gl843_init_registers()
596 dev->reg.init_reg(0xac, 0x00); in gl843_init_registers()
599 if (dev->model->model_id == ModelId::PLUSTEK_OPTICFILM_7200I) { in gl843_init_registers()
607 dev->interface->write_buffer(0x3c, 0x3ff000, data, 32); in gl843_init_registers()
611 static void gl843_set_ad_fe(Genesys_Device* dev) in gl843_set_ad_fe() argument
613 for (const auto& reg : dev->frontend.regs) { in gl843_set_ad_fe()
614 dev->interface->write_fe_register(reg.address, reg.value); in gl843_set_ad_fe()
619 void CommandSetGl843::set_fe(Genesys_Device* dev, const Genesys_Sensor& sensor, in set_fe() argument
628 dev->frontend = dev->frontend_initial; in set_fe()
633 std::uint8_t fe_type = dev->interface->read_register(REG_0x04) & REG_0x04_FESET; in set_fe()
635 gl843_set_ad_fe(dev); in set_fe()
643 dev->interface->write_fe_register(i, dev->frontend.regs.get_value(0x00 + i)); in set_fe()
646 dev->interface->write_fe_register(reg.address, reg.value); in set_fe()
650 dev->interface->write_fe_register(0x20 + i, dev->frontend.get_offset(i)); in set_fe()
653 if (dev->model->sensor_id == SensorId::CCD_KVSS080) { in set_fe()
655 dev->interface->write_fe_register(0x24 + i, dev->frontend.regs.get_value(0x24 + i)); in set_fe()
660 dev->interface->write_fe_register(0x28 + i, dev->frontend.get_gain(i)); in set_fe()
664 static void gl843_init_motor_regs_scan(Genesys_Device* dev, in gl843_init_motor_regs_scan() argument
691 if (has_flag(dev->model->flags, ModelFlag::DISABLE_FAST_FEEDING)) { in gl843_init_motor_regs_scan()
714 (scan_yres>=2400 && dev->model->model_id != ModelId::CANON_4400F) || in gl843_init_motor_regs_scan()
728 auto scan_table = create_slope_table(dev->model->asic_type, dev->motor, scan_yres, exposure, in gl843_init_motor_regs_scan()
731 scanner_send_slope_table(dev, sensor, SCAN_TABLE, scan_table.table); in gl843_init_motor_regs_scan()
732 scanner_send_slope_table(dev, sensor, BACKTRACK_TABLE, scan_table.table); in gl843_init_motor_regs_scan()
733 scanner_send_slope_table(dev, sensor, STOP_TABLE, scan_table.table); in gl843_init_motor_regs_scan()
740 const auto* fast_profile = get_motor_profile_ptr(dev->motor.fast_profiles, 0, session); in gl843_init_motor_regs_scan()
745 auto fast_table = create_slope_table_fastest(dev->model->asic_type, step_multiplier, in gl843_init_motor_regs_scan()
748 scanner_send_slope_table(dev, sensor, FAST_TABLE, fast_table.table); in gl843_init_motor_regs_scan()
749 scanner_send_slope_table(dev, sensor, HOME_TABLE, fast_table.table); in gl843_init_motor_regs_scan()
809 if (dev->model->model_id == ModelId::PANASONIC_KV_SS080 || in gl843_init_motor_regs_scan()
810 dev->model->model_id == ModelId::HP_SCANJET_4850C || in gl843_init_motor_regs_scan()
811 dev->model->model_id == ModelId::HP_SCANJET_G4010 || in gl843_init_motor_regs_scan()
812 dev->model->model_id == ModelId::HP_SCANJET_G4050 || in gl843_init_motor_regs_scan()
813 dev->model->model_id == ModelId::PLUSTEK_OPTICFILM_7200I || in gl843_init_motor_regs_scan()
814 dev->model->model_id == ModelId::PLUSTEK_OPTICFILM_7300 || in gl843_init_motor_regs_scan()
815 dev->model->model_id == ModelId::PLUSTEK_OPTICFILM_7500I) in gl843_init_motor_regs_scan()
821 if (dev->model->motor_id == MotorId::KVSS080) { in gl843_init_motor_regs_scan()
846 * @param dev device to use
858 static void gl843_init_optical_regs_scan(Genesys_Device* dev, const Genesys_Sensor& sensor, in gl843_init_optical_regs_scan() argument
870 scanner_setup_sensor(*dev, sensor, *reg); in gl843_init_optical_regs_scan()
872 dev->cmd_set->set_fe(dev, sensor, AFE_SET); in gl843_init_optical_regs_scan()
875 regs_set_optical_off(dev->model->asic_type, *reg); in gl843_init_optical_regs_scan()
877 has_flag(dev->model->flags, ModelFlag::DISABLE_SHADING_CALIBRATION) || in gl843_init_optical_regs_scan()
887 if (dev->model->model_id == ModelId::CANON_4400F) { in gl843_init_optical_regs_scan()
889 } else if (dev->model->model_id == ModelId::CANON_8400F) { in gl843_init_optical_regs_scan()
891 } else if (dev->model->model_id == ModelId::CANON_8600F || in gl843_init_optical_regs_scan()
892 dev->model->model_id == ModelId::PLUSTEK_OPTICFILM_7200I || in gl843_init_optical_regs_scan()
893 dev->model->model_id == ModelId::PLUSTEK_OPTICFILM_7300 || in gl843_init_optical_regs_scan()
894 dev->model->model_id == ModelId::PLUSTEK_OPTICFILM_7500I) in gl843_init_optical_regs_scan()
907 if (dev->model->model_id == ModelId::CANON_8600F) { in gl843_init_optical_regs_scan()
915 sanei_genesys_set_lamp_power(dev, sensor, *reg, in gl843_init_optical_regs_scan()
958 switch (dev->frontend.layout.type) { in gl843_init_optical_regs_scan()
967 static_cast<unsigned>(dev->frontend.layout.type)); in gl843_init_optical_regs_scan()
971 const auto& dpihw_sensor = sanei_genesys_find_sensor(dev, session.output_resolution, in gl843_init_optical_regs_scan()
996 void CommandSetGl843::init_regs_for_scan_session(Genesys_Device* dev, const Genesys_Sensor& sensor, in init_regs_for_scan_session() argument
1013 if (dev->model->model_id == ModelId::CANON_4400F && session.params.yres == 1200) { in init_regs_for_scan_session()
1019 if (dev->model->is_cis) in init_regs_for_scan_session()
1030 const auto& motor_profile = get_motor_profile(dev->motor.profiles, exposure, session); in init_regs_for_scan_session()
1033 gl843_init_optical_regs_scan(dev, sensor, reg, exposure, session); in init_regs_for_scan_session()
1034 gl843_init_motor_regs_scan(dev, sensor, session, reg, motor_profile, exposure, slope_dpi, in init_regs_for_scan_session()
1038 setup_image_pipeline(*dev, session); in init_regs_for_scan_session()
1040 dev->read_active = true; in init_regs_for_scan_session()
1042 dev->session = session; in init_regs_for_scan_session()
1044 dev->total_bytes_read = 0; in init_regs_for_scan_session()
1045 …dev->total_bytes_to_read = (size_t)session.output_line_bytes_requested * (size_t)session.params.li… in init_regs_for_scan_session()
1047 DBG(DBG_info, "%s: total bytes to send = %zu\n", __func__, dev->total_bytes_to_read); in init_regs_for_scan_session()
1050 ScanSession CommandSetGl843::calculate_scan_session(const Genesys_Device* dev, in calculate_scan_session() argument
1065 if (!dev->ignore_offsets) { in calculate_scan_session()
1066 move = dev->model->y_offset_ta - dev->model->y_offset_sensor_to_ta; in calculate_scan_session()
1070 if (!dev->ignore_offsets) { in calculate_scan_session()
1071 move = dev->model->y_offset; in calculate_scan_session()
1077 int move_dpi = dev->motor.base_ydpi; in calculate_scan_session()
1084 start = dev->model->x_offset_ta; in calculate_scan_session()
1086 start = dev->model->x_offset; in calculate_scan_session()
1108 compute_session(dev, session, sensor); in calculate_scan_session()
1115 * @param dev device to use
1118 void CommandSetGl843::save_power(Genesys_Device* dev, bool enable) const in save_power() argument
1123 if (dev->model->gpio_id == GpioId::KVSS080) { in save_power()
1124 std::uint8_t val = dev->interface->read_register(REG_0x6C); in save_power()
1130 dev->interface->write_register(REG_0x6C, val); in save_power()
1134 void CommandSetGl843::set_powersaving(Genesys_Device* dev, int delay /* in minutes */) const in set_powersaving() argument
1136 (void) dev; in set_powersaving()
1140 static bool gl843_get_paper_sensor(Genesys_Device* dev) in gl843_get_paper_sensor() argument
1144 std::uint8_t val = dev->interface->read_register(REG_0x6D); in gl843_get_paper_sensor()
1149 void CommandSetGl843::eject_document(Genesys_Device* dev) const in eject_document()
1151 (void) dev; in eject_document()
1156 void CommandSetGl843::load_document(Genesys_Device* dev) const in load_document()
1159 (void) dev; in load_document()
1167 void CommandSetGl843::detect_document_end(Genesys_Device* dev) const in detect_document_end()
1170 bool paper_loaded = gl843_get_paper_sensor(dev); in detect_document_end()
1173 if (dev->document && !paper_loaded) { in detect_document_end()
1175 dev->document = false; in detect_document_end()
1178 catch_all_exceptions(__func__, [&](){ sanei_genesys_read_scancnt(dev, &scanned_lines); }); in detect_document_end()
1180 std::size_t output_lines = dev->session.output_line_count; in detect_document_end()
1183 (dev->model->post_scan * dev->session.params.yres) / MM_PER_INCH); in detect_document_end()
1187 std::size_t remaining_lines = dev->get_pipeline_source().remaining_bytes() / in detect_document_end()
1188 dev->session.output_line_bytes_raw; in detect_document_end()
1200 dev->get_pipeline_source().set_remaining_bytes(remaining_lines * in detect_document_end()
1201 dev->session.output_line_bytes_raw); in detect_document_end()
1202 dev->total_bytes_to_read -= skip_lines * dev->session.output_line_bytes_requested; in detect_document_end()
1209 void CommandSetGl843::begin_scan(Genesys_Device* dev, const Genesys_Sensor& sensor, in begin_scan() argument
1216 switch(dev->model->gpio_id) { in begin_scan()
1219 dev->interface->write_register(REG_0xA9, 0x00); in begin_scan()
1220 dev->interface->write_register(REG_0xA6, 0xf6); in begin_scan()
1222 dev->interface->write_register(0x7e, 0x04); in begin_scan()
1226 dev->interface->write_register(REG_0xA7, 0xfe); in begin_scan()
1227 dev->interface->write_register(REG_0xA8, 0x3e); in begin_scan()
1228 dev->interface->write_register(REG_0xA9, 0x06); in begin_scan()
1230 dev->interface->write_register(REG_0x6C, 0x20); in begin_scan()
1231 dev->interface->write_register(REG_0xA6, 0x44); in begin_scan()
1233 dev->interface->write_register(REG_0x6C, 0x60); in begin_scan()
1234 dev->interface->write_register(REG_0xA6, 0x46); in begin_scan()
1238 dev->cmd_set->set_xpa_lamp_power(*dev, true); in begin_scan()
1242 dev->cmd_set->set_motor_mode(*dev, *reg, MotorMode::PRIMARY_AND_SECONDARY); in begin_scan()
1246 dev->interface->write_register(REG_0x7E, 0x01); in begin_scan()
1249 if (dev->session.params.xres == 3200) in begin_scan()
1254 apply_reg_settings_to_device(*dev, reg_settings); in begin_scan()
1257 dev->cmd_set->set_xpa_lamp_power(*dev, true); in begin_scan()
1260 dev->cmd_set->set_motor_mode(*dev, *reg, MotorMode::PRIMARY_AND_SECONDARY); in begin_scan()
1265 dev->cmd_set->set_xpa_lamp_power(*dev, true); in begin_scan()
1268 dev->cmd_set->set_motor_mode(*dev, *reg, MotorMode::PRIMARY_AND_SECONDARY); in begin_scan()
1275 dev->cmd_set->set_xpa_lamp_power(*dev, true); in begin_scan()
1284 scanner_clear_scan_and_feed_counts(*dev); in begin_scan()
1287 std::uint8_t val = dev->interface->read_register(REG_0x01); in begin_scan()
1289 dev->interface->write_register(REG_0x01, val); in begin_scan()
1291 scanner_start_action(*dev, start_motor); in begin_scan()
1296 dev->advance_head_pos_by_session(ScanHeadId::PRIMARY); in begin_scan()
1302 dev->advance_head_pos_by_session(ScanHeadId::PRIMARY); in begin_scan()
1303 dev->advance_head_pos_by_session(ScanHeadId::SECONDARY); in begin_scan()
1309 dev->advance_head_pos_by_session(ScanHeadId::SECONDARY); in begin_scan()
1318 void CommandSetGl843::end_scan(Genesys_Device* dev, Genesys_Register_Set* reg, in end_scan() argument
1324 dev->interface->write_register(0x7e, 0x00); in end_scan()
1327 dev->cmd_set->set_xpa_lamp_power(*dev, false); in end_scan()
1330 if (!dev->model->is_sheetfed) { in end_scan()
1331 scanner_stop_action(*dev); in end_scan()
1337 void CommandSetGl843::move_back_home(Genesys_Device* dev, bool wait_until_home) const in move_back_home() argument
1339 scanner_move_back_home(*dev, wait_until_home); in move_back_home()
1343 void CommandSetGl843::init_regs_for_shading(Genesys_Device* dev, const Genesys_Sensor& sensor, in init_regs_for_shading() argument
1350 if (dev->settings.scan_method == ScanMethod::TRANSPARENCY || in init_regs_for_shading()
1351 dev->settings.scan_method == ScanMethod::TRANSPARENCY_INFRARED) in init_regs_for_shading()
1353 calib_size_mm = dev->model->y_size_calib_ta_mm; in init_regs_for_shading()
1355 calib_size_mm = dev->model->y_size_calib_mm; in init_regs_for_shading()
1361 const auto& calib_sensor = sanei_genesys_find_sensor(dev, resolution, channels, in init_regs_for_shading()
1362 dev->settings.scan_method); in init_regs_for_shading()
1367 if (should_calibrate_only_active_area(*dev, dev->settings)) { in init_regs_for_shading()
1368 float offset = dev->model->x_offset_ta; in init_regs_for_shading()
1370 offset = static_cast<float>((offset * dev->settings.xres) / MM_PER_INCH); in init_regs_for_shading()
1372 float size = dev->model->x_size_ta; in init_regs_for_shading()
1373 size = static_cast<float>((size * dev->settings.xres) / MM_PER_INCH); in init_regs_for_shading()
1379 calib_pixels = dev->model->x_size_calib_mm * resolution / MM_PER_INCH; in init_regs_for_shading()
1386 if (dev->settings.scan_method == ScanMethod::TRANSPARENCY || in init_regs_for_shading()
1387 dev->settings.scan_method == ScanMethod::TRANSPARENCY_INFRARED) in init_regs_for_shading()
1391 … move = static_cast<int>(dev->model->y_offset_calib_white_ta - dev->model->y_offset_sensor_to_ta); in init_regs_for_shading()
1392 if (dev->model->model_id == ModelId::CANON_8600F && resolution == 2400) { in init_regs_for_shading()
1395 if (dev->model->model_id == ModelId::CANON_8600F && resolution == 4800) { in init_regs_for_shading()
1400 move = static_cast<int>(dev->model->y_offset_calib_white); in init_regs_for_shading()
1415 session.params.scan_method = dev->settings.scan_method; in init_regs_for_shading()
1416 session.params.scan_mode = dev->settings.scan_mode; in init_regs_for_shading()
1417 session.params.color_filter = dev->settings.color_filter; in init_regs_for_shading()
1418 session.params.contrast_adjustment = dev->settings.contrast; in init_regs_for_shading()
1419 session.params.brightness_adjustment = dev->settings.brightness; in init_regs_for_shading()
1421 compute_session(dev, session, calib_sensor); in init_regs_for_shading()
1423 init_regs_for_scan_session(dev, calib_sensor, ®s, session); in init_regs_for_shading()
1425 dev->calib_session = session; in init_regs_for_shading()
1431 void CommandSetGl843::send_gamma_table(Genesys_Device* dev, const Genesys_Sensor& sensor) const in send_gamma_table() argument
1442 std::vector<std::uint16_t> rgamma = get_gamma_table(dev, sensor, GENESYS_RED); in send_gamma_table()
1443 std::vector<std::uint16_t> ggamma = get_gamma_table(dev, sensor, GENESYS_GREEN); in send_gamma_table()
1444 std::vector<std::uint16_t> bgamma = get_gamma_table(dev, sensor, GENESYS_BLUE); in send_gamma_table()
1456 dev->interface->write_gamma(0x28, 0x0000, gamma.data(), size * 2 * 3); in send_gamma_table()
1464 SensorExposure CommandSetGl843::led_calibration(Genesys_Device* dev, const Genesys_Sensor& sensor, in led_calibration() argument
1467 return scanner_led_calibration(*dev, sensor, regs); in led_calibration()
1470 void CommandSetGl843::offset_calibration(Genesys_Device* dev, const Genesys_Sensor& sensor, in offset_calibration() argument
1473 scanner_offset_calibration(*dev, sensor, regs); in offset_calibration()
1476 void CommandSetGl843::coarse_gain_calibration(Genesys_Device* dev, const Genesys_Sensor& sensor, in coarse_gain_calibration() argument
1479 scanner_coarse_gain_calibration(*dev, sensor, regs, dpi); in coarse_gain_calibration()
1484 void CommandSetGl843::init_regs_for_warmup(Genesys_Device* dev, const Genesys_Sensor& sensor, in init_regs_for_warmup() argument
1491 unsigned resolution = dev->model->get_resolution_settings(dev->settings.scan_method) in init_regs_for_warmup()
1494 const auto& calib_sensor = sanei_genesys_find_sensor(dev, resolution, channels, in init_regs_for_warmup()
1495 dev->settings.scan_method); in init_regs_for_warmup()
1496 unsigned num_pixels = dev->model->x_size_calib_mm * resolution / MM_PER_INCH / 2; in init_regs_for_warmup()
1498 *reg = dev->reg; in init_regs_for_warmup()
1505 if (dev->settings.scan_method == ScanMethod::TRANSPARENCY || in init_regs_for_warmup()
1506 dev->settings.scan_method == ScanMethod::TRANSPARENCY_INFRARED) in init_regs_for_warmup()
1518 session.params.depth = dev->model->bpp_color_values.front(); in init_regs_for_warmup()
1520 session.params.scan_method = dev->settings.scan_method; in init_regs_for_warmup()
1522 session.params.color_filter = dev->settings.color_filter; in init_regs_for_warmup()
1527 compute_session(dev, session, calib_sensor); in init_regs_for_warmup()
1529 init_regs_for_scan_session(dev, calib_sensor, reg, session); in init_regs_for_warmup()
1541 static void gl843_init_gpio(Genesys_Device* dev) in gl843_init_gpio() argument
1544 apply_registers_ordered(dev->gpo.regs, { 0x6e, 0x6f }, [&](const GenesysRegisterSetting& reg) in gl843_init_gpio()
1546 dev->interface->write_register(reg.address, reg.value); in gl843_init_gpio()
1554 void CommandSetGl843::asic_boot(Genesys_Device* dev, bool cold) const in asic_boot() argument
1560 dev->interface->write_register(0x0e, 0x01); in asic_boot()
1561 dev->interface->write_register(0x0e, 0x00); in asic_boot()
1564 if(dev->usb_mode == 1) in asic_boot()
1572 dev->interface->write_0x8c(0x0f, val); in asic_boot()
1575 val = dev->interface->read_register(REG_0x40); in asic_boot()
1577 val = dev->interface->read_register(0x00); in asic_boot()
1582 gl843_init_registers (dev); in asic_boot()
1584 if (dev->model->model_id == ModelId::CANON_8600F) { in asic_boot()
1586 dev->interface->write_register(REG_0x6B, 0x72); in asic_boot()
1588 dev->interface->write_register(REG_0x6B, 0x02); in asic_boot()
1592 dev->interface->write_registers(dev->reg); in asic_boot()
1595 val = dev->reg.find_reg(0x0b).value & REG_0x0B_DRAMSEL; in asic_boot()
1597 dev->interface->write_register(REG_0x0B, val); in asic_boot()
1598 dev->reg.find_reg(0x0b).value = val; in asic_boot()
1600 if (dev->model->model_id == ModelId::CANON_8400F) { in asic_boot()
1601 dev->interface->write_0x8c(0x1e, 0x01); in asic_boot()
1602 dev->interface->write_0x8c(0x10, 0xb4); in asic_boot()
1603 dev->interface->write_0x8c(0x0f, 0x02); in asic_boot()
1605 else if (dev->model->model_id == ModelId::CANON_8600F) { in asic_boot()
1606 dev->interface->write_0x8c(0x10, 0xc8); in asic_boot()
1607 } else if (dev->model->model_id == ModelId::PLUSTEK_OPTICFILM_7300 || in asic_boot()
1608 dev->model->model_id == ModelId::PLUSTEK_OPTICFILM_7500I) in asic_boot()
1610 dev->interface->write_0x8c(0x10, 0xd4); in asic_boot()
1612 dev->interface->write_0x8c(0x10, 0xb4); in asic_boot()
1617 switch (dev->model->model_id) { in asic_boot()
1632 val = (dev->reg.find_reg(0x0b).value & ~REG_0x0B_CLKSET) | clock_freq; in asic_boot()
1634 dev->interface->write_register(REG_0x0B, val); in asic_boot()
1635 dev->reg.find_reg(0x0b).value = val; in asic_boot()
1638 dev->reg.remove_reg(0x0b); in asic_boot()
1641 dev->interface->write_register(REG_0x29, 0x00); in asic_boot()
1642 dev->interface->write_register(REG_0x2A, 0x00); in asic_boot()
1643 dev->interface->write_register(REG_0x2B, 0x00); in asic_boot()
1646 gl843_init_gpio(dev); in asic_boot()
1647 dev->interface->sleep_ms(100); in asic_boot()
1654 void CommandSetGl843::init(Genesys_Device* dev) const in init()
1659 sanei_genesys_asic_init(dev); in init()
1669 std::uint8_t val = s->dev->interface->read_register(REG_0x6D); in update_hardware_sensors()
1672 switch (s->dev->model->gpio_id) in update_hardware_sensors()
1709 void CommandSetGl843::update_home_sensor_gpio(Genesys_Device& dev) const in update_home_sensor_gpio()
1712 (void) dev; in update_home_sensor_gpio()
1719 void CommandSetGl843::send_shading_data(Genesys_Device* dev, const Genesys_Sensor& sensor, in send_shading_data() argument
1729 if (dev->reg.get8(REG_0x01) & REG_0x01_SHDAREA) { in send_shading_data()
1730 offset = dev->session.params.startx * sensor.shading_resolution / in send_shading_data()
1731 dev->session.params.xres; in send_shading_data()
1733 length = dev->session.output_pixels * sensor.shading_resolution / in send_shading_data()
1734 dev->session.params.xres; in send_shading_data()
1745 dev->interface->record_key_value("shading_offset", std::to_string(offset)); in send_shading_data()
1746 dev->interface->record_key_value("shading_length", std::to_string(length)); in send_shading_data()
1776 dev->interface->write_buffer(0x3c, 0, final_data.data(), count); in send_shading_data()
1779 bool CommandSetGl843::needs_home_before_init_regs_for_scan(Genesys_Device* dev) const in needs_home_before_init_regs_for_scan()
1781 (void) dev; in needs_home_before_init_regs_for_scan()
1785 void CommandSetGl843::wait_for_motor_stop(Genesys_Device* dev) const in wait_for_motor_stop()
1787 (void) dev; in wait_for_motor_stop()