Lines Matching full:dev
3 Copyright (C) 2010-2016 Stéphane Voltz <stef.dev@free.fr>
69 * @param dev device structure holding register set to initialize
72 gl124_init_registers (Genesys_Device * dev) in gl124_init_registers() argument
76 dev->reg.clear(); in gl124_init_registers()
79 dev->reg.init_reg(0x01, 0xa2); // + REG_0x01_SHDAREA in gl124_init_registers()
80 dev->reg.init_reg(0x02, 0x90); in gl124_init_registers()
81 dev->reg.init_reg(0x03, 0x50); in gl124_init_registers()
82 dev->reg.init_reg(0x04, 0x03); in gl124_init_registers()
83 dev->reg.init_reg(0x05, 0x00); in gl124_init_registers()
85 if(dev->model->sensor_id == SensorId::CIS_CANON_LIDE_120) { in gl124_init_registers()
86 dev->reg.init_reg(0x06, 0x50); in gl124_init_registers()
87 dev->reg.init_reg(0x07, 0x00); in gl124_init_registers()
89 dev->reg.init_reg(0x03, 0x50 & ~REG_0x03_AVEENB); in gl124_init_registers()
90 dev->reg.init_reg(0x06, 0x50 | REG_0x06_GAIN4); in gl124_init_registers()
92 dev->reg.init_reg(0x09, 0x00); in gl124_init_registers()
93 dev->reg.init_reg(0x0a, 0xc0); in gl124_init_registers()
94 dev->reg.init_reg(0x0b, 0x2a); in gl124_init_registers()
95 dev->reg.init_reg(0x0c, 0x12); // SENSOR_DEF in gl124_init_registers()
96 dev->reg.init_reg(0x11, 0x00); in gl124_init_registers()
97 dev->reg.init_reg(0x12, 0x00); in gl124_init_registers()
98 dev->reg.init_reg(0x13, 0x0f); in gl124_init_registers()
99 dev->reg.init_reg(0x14, 0x00); in gl124_init_registers()
100 dev->reg.init_reg(0x15, 0x80); in gl124_init_registers()
101 dev->reg.init_reg(0x16, 0x10); // SENSOR_DEF in gl124_init_registers()
102 dev->reg.init_reg(0x17, 0x04); // SENSOR_DEF in gl124_init_registers()
103 dev->reg.init_reg(0x18, 0x00); // SENSOR_DEF in gl124_init_registers()
104 dev->reg.init_reg(0x19, 0x01); // SENSOR_DEF in gl124_init_registers()
105 dev->reg.init_reg(0x1a, 0x30); // SENSOR_DEF in gl124_init_registers()
106 dev->reg.init_reg(0x1b, 0x00); // SENSOR_DEF in gl124_init_registers()
107 dev->reg.init_reg(0x1c, 0x00); // SENSOR_DEF in gl124_init_registers()
108 dev->reg.init_reg(0x1d, 0x01); // SENSOR_DEF in gl124_init_registers()
109 dev->reg.init_reg(0x1e, 0x10); in gl124_init_registers()
110 dev->reg.init_reg(0x1f, 0x00); in gl124_init_registers()
111 dev->reg.init_reg(0x20, 0x15); // SENSOR_DEF in gl124_init_registers()
112 dev->reg.init_reg(0x21, 0x00); in gl124_init_registers()
113 if(dev->model->sensor_id != SensorId::CIS_CANON_LIDE_120) { in gl124_init_registers()
114 dev->reg.init_reg(0x22, 0x02); in gl124_init_registers()
116 dev->reg.init_reg(0x22, 0x14); in gl124_init_registers()
118 dev->reg.init_reg(0x23, 0x00); in gl124_init_registers()
119 dev->reg.init_reg(0x24, 0x00); in gl124_init_registers()
120 dev->reg.init_reg(0x25, 0x00); in gl124_init_registers()
121 dev->reg.init_reg(0x26, 0x0d); in gl124_init_registers()
122 dev->reg.init_reg(0x27, 0x48); in gl124_init_registers()
123 dev->reg.init_reg(0x28, 0x00); in gl124_init_registers()
124 dev->reg.init_reg(0x29, 0x56); in gl124_init_registers()
125 dev->reg.init_reg(0x2a, 0x5e); in gl124_init_registers()
126 dev->reg.init_reg(0x2b, 0x02); in gl124_init_registers()
127 dev->reg.init_reg(0x2c, 0x02); in gl124_init_registers()
128 dev->reg.init_reg(0x2d, 0x58); in gl124_init_registers()
129 dev->reg.init_reg(0x3b, 0x00); in gl124_init_registers()
130 dev->reg.init_reg(0x3c, 0x00); in gl124_init_registers()
131 dev->reg.init_reg(0x3d, 0x00); in gl124_init_registers()
132 dev->reg.init_reg(0x3e, 0x00); in gl124_init_registers()
133 dev->reg.init_reg(0x3f, 0x02); in gl124_init_registers()
134 dev->reg.init_reg(0x40, 0x00); in gl124_init_registers()
135 dev->reg.init_reg(0x41, 0x00); in gl124_init_registers()
136 dev->reg.init_reg(0x42, 0x00); in gl124_init_registers()
137 dev->reg.init_reg(0x43, 0x00); in gl124_init_registers()
138 dev->reg.init_reg(0x44, 0x00); in gl124_init_registers()
139 dev->reg.init_reg(0x45, 0x00); in gl124_init_registers()
140 dev->reg.init_reg(0x46, 0x00); in gl124_init_registers()
141 dev->reg.init_reg(0x47, 0x00); in gl124_init_registers()
142 dev->reg.init_reg(0x48, 0x00); in gl124_init_registers()
143 dev->reg.init_reg(0x49, 0x00); in gl124_init_registers()
144 dev->reg.init_reg(0x4f, 0x00); in gl124_init_registers()
145 dev->reg.init_reg(0x52, 0x00); // SENSOR_DEF in gl124_init_registers()
146 dev->reg.init_reg(0x53, 0x02); // SENSOR_DEF in gl124_init_registers()
147 dev->reg.init_reg(0x54, 0x04); // SENSOR_DEF in gl124_init_registers()
148 dev->reg.init_reg(0x55, 0x06); // SENSOR_DEF in gl124_init_registers()
149 dev->reg.init_reg(0x56, 0x04); // SENSOR_DEF in gl124_init_registers()
150 dev->reg.init_reg(0x57, 0x04); // SENSOR_DEF in gl124_init_registers()
151 dev->reg.init_reg(0x58, 0x04); // SENSOR_DEF in gl124_init_registers()
152 dev->reg.init_reg(0x59, 0x04); // SENSOR_DEF in gl124_init_registers()
153 dev->reg.init_reg(0x5a, 0x1a); // SENSOR_DEF in gl124_init_registers()
154 dev->reg.init_reg(0x5b, 0x00); // SENSOR_DEF in gl124_init_registers()
155 dev->reg.init_reg(0x5c, 0xc0); // SENSOR_DEF in gl124_init_registers()
156 dev->reg.init_reg(0x5f, 0x00); in gl124_init_registers()
157 dev->reg.init_reg(0x60, 0x02); in gl124_init_registers()
158 dev->reg.init_reg(0x61, 0x00); // SENSOR_DEF in gl124_init_registers()
159 dev->reg.init_reg(0x62, 0x00); in gl124_init_registers()
160 dev->reg.init_reg(0x63, 0x00); in gl124_init_registers()
161 dev->reg.init_reg(0x64, 0x00); in gl124_init_registers()
162 dev->reg.init_reg(0x65, 0x00); in gl124_init_registers()
163 dev->reg.init_reg(0x66, 0x00); in gl124_init_registers()
164 dev->reg.init_reg(0x67, 0x00); in gl124_init_registers()
165 dev->reg.init_reg(0x68, 0x00); in gl124_init_registers()
166 dev->reg.init_reg(0x69, 0x00); in gl124_init_registers()
167 dev->reg.init_reg(0x6a, 0x00); in gl124_init_registers()
168 dev->reg.init_reg(0x6b, 0x00); in gl124_init_registers()
169 dev->reg.init_reg(0x6c, 0x00); in gl124_init_registers()
170 dev->reg.init_reg(0x6e, 0x00); in gl124_init_registers()
171 dev->reg.init_reg(0x6f, 0x00); in gl124_init_registers()
173 if (dev->model->sensor_id != SensorId::CIS_CANON_LIDE_120) { in gl124_init_registers()
174 dev->reg.init_reg(0x6d, 0xd0); in gl124_init_registers()
175 dev->reg.init_reg(0x71, 0x08); in gl124_init_registers()
177 dev->reg.init_reg(0x6d, 0x00); in gl124_init_registers()
178 dev->reg.init_reg(0x71, 0x1f); in gl124_init_registers()
180 dev->reg.init_reg(0x70, 0x00); // SENSOR_DEF in gl124_init_registers()
181 dev->reg.init_reg(0x71, 0x08); // SENSOR_DEF in gl124_init_registers()
182 dev->reg.init_reg(0x72, 0x08); // SENSOR_DEF in gl124_init_registers()
183 dev->reg.init_reg(0x73, 0x0a); // SENSOR_DEF in gl124_init_registers()
186 dev->reg.init_reg(0x74, 0x00); // SENSOR_DEF in gl124_init_registers()
187 dev->reg.init_reg(0x75, 0x00); // SENSOR_DEF in gl124_init_registers()
188 dev->reg.init_reg(0x76, 0x3c); // SENSOR_DEF in gl124_init_registers()
189 dev->reg.init_reg(0x77, 0x00); // SENSOR_DEF in gl124_init_registers()
190 dev->reg.init_reg(0x78, 0x00); // SENSOR_DEF in gl124_init_registers()
191 dev->reg.init_reg(0x79, 0x9f); // SENSOR_DEF in gl124_init_registers()
192 dev->reg.init_reg(0x7a, 0x00); // SENSOR_DEF in gl124_init_registers()
193 dev->reg.init_reg(0x7b, 0x00); // SENSOR_DEF in gl124_init_registers()
194 dev->reg.init_reg(0x7c, 0x55); // SENSOR_DEF in gl124_init_registers()
196 dev->reg.init_reg(0x7d, 0x00); in gl124_init_registers()
197 dev->reg.init_reg(0x7e, 0x08); in gl124_init_registers()
198 dev->reg.init_reg(0x7f, 0x58); in gl124_init_registers()
200 if (dev->model->sensor_id != SensorId::CIS_CANON_LIDE_120) { in gl124_init_registers()
201 dev->reg.init_reg(0x80, 0x00); in gl124_init_registers()
202 dev->reg.init_reg(0x81, 0x14); in gl124_init_registers()
204 dev->reg.init_reg(0x80, 0x00); in gl124_init_registers()
205 dev->reg.init_reg(0x81, 0x10); in gl124_init_registers()
209 dev->reg.init_reg(0x82, 0x00); in gl124_init_registers()
210 dev->reg.init_reg(0x83, 0x00); in gl124_init_registers()
211 dev->reg.init_reg(0x84, 0x00); in gl124_init_registers()
214 dev->reg.init_reg(0x85, 0x00); in gl124_init_registers()
215 dev->reg.init_reg(0x86, 0x00); in gl124_init_registers()
216 dev->reg.init_reg(0x87, 0x00); in gl124_init_registers()
218 dev->reg.init_reg(0x88, 0x00); // SENSOR_DEF in gl124_init_registers()
219 dev->reg.init_reg(0x89, 0x65); // SENSOR_DEF in gl124_init_registers()
220 dev->reg.init_reg(0x8a, 0x00); in gl124_init_registers()
221 dev->reg.init_reg(0x8b, 0x00); in gl124_init_registers()
222 dev->reg.init_reg(0x8c, 0x00); in gl124_init_registers()
223 dev->reg.init_reg(0x8d, 0x00); in gl124_init_registers()
224 dev->reg.init_reg(0x8e, 0x00); in gl124_init_registers()
225 dev->reg.init_reg(0x8f, 0x00); in gl124_init_registers()
226 dev->reg.init_reg(0x90, 0x00); in gl124_init_registers()
227 dev->reg.init_reg(0x91, 0x00); in gl124_init_registers()
228 dev->reg.init_reg(0x92, 0x00); in gl124_init_registers()
229 dev->reg.init_reg(0x93, 0x00); // SENSOR_DEF in gl124_init_registers()
230 dev->reg.init_reg(0x94, 0x14); // SENSOR_DEF in gl124_init_registers()
231 dev->reg.init_reg(0x95, 0x30); // SENSOR_DEF in gl124_init_registers()
232 dev->reg.init_reg(0x96, 0x00); // SENSOR_DEF in gl124_init_registers()
233 dev->reg.init_reg(0x97, 0x90); // SENSOR_DEF in gl124_init_registers()
234 dev->reg.init_reg(0x98, 0x01); // SENSOR_DEF in gl124_init_registers()
235 dev->reg.init_reg(0x99, 0x1f); in gl124_init_registers()
236 dev->reg.init_reg(0x9a, 0x00); in gl124_init_registers()
237 dev->reg.init_reg(0x9b, 0x80); in gl124_init_registers()
238 dev->reg.init_reg(0x9c, 0x80); in gl124_init_registers()
239 dev->reg.init_reg(0x9d, 0x3f); in gl124_init_registers()
240 dev->reg.init_reg(0x9e, 0x00); in gl124_init_registers()
241 dev->reg.init_reg(0x9f, 0x00); in gl124_init_registers()
242 dev->reg.init_reg(0xa0, 0x20); in gl124_init_registers()
243 dev->reg.init_reg(0xa1, 0x30); in gl124_init_registers()
244 dev->reg.init_reg(0xa2, 0x00); in gl124_init_registers()
245 dev->reg.init_reg(0xa3, 0x20); in gl124_init_registers()
246 dev->reg.init_reg(0xa4, 0x01); in gl124_init_registers()
247 dev->reg.init_reg(0xa5, 0x00); in gl124_init_registers()
248 dev->reg.init_reg(0xa6, 0x00); in gl124_init_registers()
249 dev->reg.init_reg(0xa7, 0x08); in gl124_init_registers()
250 dev->reg.init_reg(0xa8, 0x00); in gl124_init_registers()
251 dev->reg.init_reg(0xa9, 0x08); in gl124_init_registers()
252 dev->reg.init_reg(0xaa, 0x01); in gl124_init_registers()
253 dev->reg.init_reg(0xab, 0x00); in gl124_init_registers()
254 dev->reg.init_reg(0xac, 0x00); in gl124_init_registers()
255 dev->reg.init_reg(0xad, 0x40); in gl124_init_registers()
256 dev->reg.init_reg(0xae, 0x01); in gl124_init_registers()
257 dev->reg.init_reg(0xaf, 0x00); in gl124_init_registers()
258 dev->reg.init_reg(0xb0, 0x00); in gl124_init_registers()
259 dev->reg.init_reg(0xb1, 0x40); in gl124_init_registers()
260 dev->reg.init_reg(0xb2, 0x00); in gl124_init_registers()
261 dev->reg.init_reg(0xb3, 0x09); in gl124_init_registers()
262 dev->reg.init_reg(0xb4, 0x5b); in gl124_init_registers()
263 dev->reg.init_reg(0xb5, 0x00); in gl124_init_registers()
264 dev->reg.init_reg(0xb6, 0x10); in gl124_init_registers()
265 dev->reg.init_reg(0xb7, 0x3f); in gl124_init_registers()
266 dev->reg.init_reg(0xb8, 0x00); in gl124_init_registers()
267 dev->reg.init_reg(0xbb, 0x00); in gl124_init_registers()
268 dev->reg.init_reg(0xbc, 0xff); in gl124_init_registers()
269 dev->reg.init_reg(0xbd, 0x00); in gl124_init_registers()
270 dev->reg.init_reg(0xbe, 0x07); in gl124_init_registers()
271 dev->reg.init_reg(0xc3, 0x00); in gl124_init_registers()
272 dev->reg.init_reg(0xc4, 0x00); in gl124_init_registers()
275 dev->reg.init_reg(0xc5, 0x00); in gl124_init_registers()
276 dev->reg.init_reg(0xc6, 0x00); in gl124_init_registers()
277 dev->reg.init_reg(0xc7, 0x00); in gl124_init_registers()
278 dev->reg.init_reg(0xc8, 0x00); in gl124_init_registers()
279 dev->reg.init_reg(0xc9, 0x00); in gl124_init_registers()
280 dev->reg.init_reg(0xca, 0x00); in gl124_init_registers()
281 dev->reg.init_reg(0xcb, 0x00); in gl124_init_registers()
282 dev->reg.init_reg(0xcc, 0x00); in gl124_init_registers()
283 dev->reg.init_reg(0xcd, 0x00); in gl124_init_registers()
284 dev->reg.init_reg(0xce, 0x00); in gl124_init_registers()
287 if (dev->model->sensor_id == SensorId::CIS_CANON_LIDE_120) { in gl124_init_registers()
288 dev->reg.init_reg(0xc5, 0x20); in gl124_init_registers()
289 dev->reg.init_reg(0xc6, 0xeb); in gl124_init_registers()
290 dev->reg.init_reg(0xc7, 0x20); in gl124_init_registers()
291 dev->reg.init_reg(0xc8, 0xeb); in gl124_init_registers()
292 dev->reg.init_reg(0xc9, 0x20); in gl124_init_registers()
293 dev->reg.init_reg(0xca, 0xeb); in gl124_init_registers()
298 dev->reg.init_reg(0xd0, 0x0a); in gl124_init_registers()
299 dev->reg.init_reg(0xd1, 0x1f); in gl124_init_registers()
300 dev->reg.init_reg(0xd2, 0x34); in gl124_init_registers()
302 dev->reg.init_reg(0xd3, 0x00); in gl124_init_registers()
303 dev->reg.init_reg(0xd4, 0x00); in gl124_init_registers()
304 dev->reg.init_reg(0xd5, 0x00); in gl124_init_registers()
305 dev->reg.init_reg(0xd6, 0x00); in gl124_init_registers()
306 dev->reg.init_reg(0xd7, 0x00); in gl124_init_registers()
307 dev->reg.init_reg(0xd8, 0x00); in gl124_init_registers()
308 dev->reg.init_reg(0xd9, 0x00); in gl124_init_registers()
312 dev->reg.init_reg(0xe0, 0x00); in gl124_init_registers()
313 dev->reg.init_reg(0xe1, 0x48); in gl124_init_registers()
314 dev->reg.init_reg(0xe2, 0x15); in gl124_init_registers()
315 dev->reg.init_reg(0xe3, 0x90); in gl124_init_registers()
316 dev->reg.init_reg(0xe4, 0x15); in gl124_init_registers()
317 dev->reg.init_reg(0xe5, 0x91); in gl124_init_registers()
318 dev->reg.init_reg(0xe6, 0x2a); in gl124_init_registers()
319 dev->reg.init_reg(0xe7, 0xd9); in gl124_init_registers()
320 dev->reg.init_reg(0xe8, 0x2a); in gl124_init_registers()
321 dev->reg.init_reg(0xe9, 0xad); in gl124_init_registers()
322 dev->reg.init_reg(0xea, 0x40); in gl124_init_registers()
323 dev->reg.init_reg(0xeb, 0x22); in gl124_init_registers()
324 dev->reg.init_reg(0xec, 0x40); in gl124_init_registers()
325 dev->reg.init_reg(0xed, 0x23); in gl124_init_registers()
326 dev->reg.init_reg(0xee, 0x55); in gl124_init_registers()
327 dev->reg.init_reg(0xef, 0x6b); in gl124_init_registers()
328 dev->reg.init_reg(0xf0, 0x55); in gl124_init_registers()
329 dev->reg.init_reg(0xf1, 0x6c); in gl124_init_registers()
330 dev->reg.init_reg(0xf2, 0x6a); in gl124_init_registers()
331 dev->reg.init_reg(0xf3, 0xb4); in gl124_init_registers()
332 dev->reg.init_reg(0xf4, 0x6a); in gl124_init_registers()
333 dev->reg.init_reg(0xf5, 0xb5); in gl124_init_registers()
334 dev->reg.init_reg(0xf6, 0x7f); in gl124_init_registers()
335 dev->reg.init_reg(0xf7, 0xfd); in gl124_init_registers()
338 dev->reg.init_reg(0xf8, 0x01); // other value is 0x05 in gl124_init_registers()
339 dev->reg.init_reg(0xf9, 0x00); in gl124_init_registers()
340 dev->reg.init_reg(0xfa, 0x00); in gl124_init_registers()
341 dev->reg.init_reg(0xfb, 0x00); in gl124_init_registers()
342 dev->reg.init_reg(0xfc, 0x00); in gl124_init_registers()
343 dev->reg.init_reg(0xff, 0x00); in gl124_init_registers()
346 const auto& sensor = sanei_genesys_find_sensor_any(dev); in gl124_init_registers()
347 const auto& dpihw_sensor = sanei_genesys_find_sensor(dev, sensor.full_resolution, in gl124_init_registers()
349 sanei_genesys_set_dpihw(dev->reg, dpihw_sensor.register_dpihw); in gl124_init_registers()
355 * @param dev device owning the AFE
358 static void gl124_set_ti_fe(Genesys_Device* dev, std::uint8_t set) in gl124_set_ti_fe() argument
364 dev->frontend = dev->frontend_initial; in gl124_set_ti_fe()
368 dev->interface->write_fe_register(0x00, 0x80); in gl124_set_ti_fe()
372 dev->interface->write_fe_register(addr, dev->frontend.regs.get_value(addr)); in gl124_set_ti_fe()
375 dev->interface->write_fe_register(0x04, 0x00); in gl124_set_ti_fe()
380 dev->interface->write_fe_register(0x05 + i, dev->frontend.regs.get_value(0x24 + i)); in gl124_set_ti_fe()
383 if (dev->model->adc_id == AdcId::CANON_LIDE_120) { in gl124_set_ti_fe()
384 dev->interface->write_fe_register(0x00, 0x01); in gl124_set_ti_fe()
388 dev->interface->write_fe_register(0x00, 0x11); in gl124_set_ti_fe()
394 void CommandSetGl124::set_fe(Genesys_Device* dev, const Genesys_Sensor& sensor, in set_fe() argument
404 dev->frontend = dev->frontend_initial; in set_fe()
407 val = dev->interface->read_register(REG_0x0A); in set_fe()
412 gl124_set_ti_fe(dev, set); in set_fe()
422 static void gl124_init_motor_regs_scan(Genesys_Device* dev, in gl124_init_motor_regs_scan() argument
456 switch(dev->model->motor_id) in gl124_init_motor_regs_scan()
512 auto scan_table = create_slope_table(dev->model->asic_type, dev->motor, yres, in gl124_init_motor_regs_scan()
514 scanner_send_slope_table(dev, sensor, SCAN_TABLE, scan_table.table); in gl124_init_motor_regs_scan()
515 scanner_send_slope_table(dev, sensor, BACKTRACK_TABLE, scan_table.table); in gl124_init_motor_regs_scan()
528 auto fast_table = create_slope_table(dev->model->asic_type, dev->motor, fast_dpi, in gl124_init_motor_regs_scan()
530 scanner_send_slope_table(dev, sensor, STOP_TABLE, fast_table.table); in gl124_init_motor_regs_scan()
531 scanner_send_slope_table(dev, sensor, FAST_TABLE, fast_table.table); in gl124_init_motor_regs_scan()
576 static void gl124_init_optical_regs_scan(Genesys_Device* dev, const Genesys_Sensor& sensor, in gl124_init_optical_regs_scan() argument
582 scanner_setup_sensor(*dev, sensor, *reg); in gl124_init_optical_regs_scan()
584 dev->cmd_set->set_fe(dev, sensor, AFE_SET); in gl124_init_optical_regs_scan()
587 regs_set_optical_off(dev->model->asic_type, *reg); in gl124_init_optical_regs_scan()
589 has_flag(dev->model->flags, ModelFlag::DISABLE_SHADING_CALIBRATION)) in gl124_init_optical_regs_scan()
596 if ((dev->model->sensor_id != SensorId::CIS_CANON_LIDE_120) && (session.params.xres>=600)) { in gl124_init_optical_regs_scan()
603 sanei_genesys_set_lamp_power(dev, sensor, *reg, in gl124_init_optical_regs_scan()
607 dev->interface->write_register(REG_0x114, 0x7f); in gl124_init_optical_regs_scan()
608 dev->interface->write_register(REG_0x115, 0x7f); in gl124_init_optical_regs_scan()
640 const auto& dpihw_sensor = sanei_genesys_find_sensor(dev, session.output_resolution, in gl124_init_optical_regs_scan()
657 if (dev->model->is_cis) { in gl124_init_optical_regs_scan()
665 dev->reg.set24(REG_EXPR, expmax); in gl124_init_optical_regs_scan()
666 dev->reg.set24(REG_EXPG, expmax); in gl124_init_optical_regs_scan()
667 dev->reg.set24(REG_EXPB, expmax); in gl124_init_optical_regs_scan()
673 dev->interface->write_register(REG_TRUER, 0x80); in gl124_init_optical_regs_scan()
674 dev->interface->write_register(REG_TRUEG, 0x80); in gl124_init_optical_regs_scan()
675 dev->interface->write_register(REG_TRUEB, 0x80); in gl124_init_optical_regs_scan()
686 dev->line_count = 0; in gl124_init_optical_regs_scan()
688 setup_image_pipeline(*dev, session); in gl124_init_optical_regs_scan()
699 void CommandSetGl124::init_regs_for_scan_session(Genesys_Device* dev, const Genesys_Sensor& sensor, in init_regs_for_scan_session() argument
712 if (dev->model->is_cis) { in init_regs_for_scan_session()
723 const auto& motor_profile = get_motor_profile(dev->motor.profiles, exposure_time, session); in init_regs_for_scan_session()
733 gl124_init_optical_regs_scan(dev, sensor, reg, exposure_time, session); in init_regs_for_scan_session()
735 gl124_init_motor_regs_scan(dev, sensor, reg, motor_profile, exposure_time, slope_dpi, in init_regs_for_scan_session()
742 dev->read_active = true; in init_regs_for_scan_session()
744 dev->session = session; in init_regs_for_scan_session()
746 dev->total_bytes_read = 0; in init_regs_for_scan_session()
747 …dev->total_bytes_to_read = (size_t)session.output_line_bytes_requested * (size_t)session.params.li… in init_regs_for_scan_session()
750 dev->total_bytes_to_read); in init_regs_for_scan_session()
753 ScanSession CommandSetGl124::calculate_scan_session(const Genesys_Device* dev, in calculate_scan_session() argument
760 unsigned move_dpi = dev->motor.base_ydpi / 4; in calculate_scan_session()
761 float move = dev->model->y_offset; in calculate_scan_session()
762 move += dev->settings.tl_y; in calculate_scan_session()
765 float start = dev->model->x_offset; in calculate_scan_session()
783 session.params.contrast_adjustment = dev->settings.contrast; in calculate_scan_session()
784 session.params.brightness_adjustment = dev->settings.brightness; in calculate_scan_session()
787 compute_session(dev, session, sensor); in calculate_scan_session()
794 * @param dev device to use
797 void CommandSetGl124::save_power(Genesys_Device* dev, bool enable) const in save_power() argument
799 (void) dev; in save_power()
803 void CommandSetGl124::set_powersaving(Genesys_Device* dev, int delay /* in minutes */) const in set_powersaving() argument
807 dev->reg.find_reg(REG_0x03).value &= ~0xf0; in set_powersaving()
810 dev->reg.find_reg(REG_0x03).value |= delay; in set_powersaving()
814 dev->reg.find_reg(REG_0x03).value |= 0x0f; in set_powersaving()
821 * @param *dev device to set up
824 void gl124_setup_scan_gpio(Genesys_Device* dev, int resolution) in gl124_setup_scan_gpio() argument
828 std::uint8_t val = dev->interface->read_register(REG_0x32); in gl124_setup_scan_gpio()
831 if(dev->model->gpio_id != GpioId::CANON_LIDE_120) { in gl124_setup_scan_gpio()
832 if(resolution>=dev->motor.base_ydpi/2) in gl124_setup_scan_gpio()
836 else if(resolution>=dev->motor.base_ydpi/4) in gl124_setup_scan_gpio()
867 dev->interface->write_register(REG_0x32, val); in gl124_setup_scan_gpio()
872 void CommandSetGl124::begin_scan(Genesys_Device* dev, const Genesys_Sensor& sensor, in begin_scan() argument
880 gl124_setup_scan_gpio(dev,dev->settings.yres); in begin_scan()
882 scanner_clear_scan_and_feed_counts(*dev); in begin_scan()
885 std::uint8_t val = dev->interface->read_register(REG_0x01); in begin_scan()
887 dev->interface->write_register(REG_0x01, val); in begin_scan()
889 scanner_start_action(*dev, start_motor); in begin_scan()
891 dev->advance_head_pos_by_session(ScanHeadId::PRIMARY); in begin_scan()
896 void CommandSetGl124::end_scan(Genesys_Device* dev, Genesys_Register_Set* reg, in end_scan() argument
902 if (!dev->model->is_sheetfed) { in end_scan()
903 scanner_stop_action(*dev); in end_scan()
910 * @param dev device to park
914 void CommandSetGl124::move_back_home(Genesys_Device* dev, bool wait_until_home) const in move_back_home() argument
916 scanner_move_back_home(*dev, wait_until_home); in move_back_home()
920 void CommandSetGl124::init_regs_for_shading(Genesys_Device* dev, const Genesys_Sensor& sensor, in init_regs_for_shading() argument
929 static_cast<unsigned>(dev->model->y_size_calib_mm * resolution / MM_PER_INCH); in init_regs_for_shading()
931 const auto& calib_sensor = sanei_genesys_find_sensor(dev, resolution, channels, in init_regs_for_shading()
932 dev->settings.scan_method); in init_regs_for_shading()
936 if (dev->settings.yres >= 1200) { in init_regs_for_shading()
937 move = static_cast<int>(dev->model->y_offset_calib_white); in init_regs_for_shading()
938 move = static_cast<int>((move * (dev->motor.base_ydpi/4)) / MM_PER_INCH); in init_regs_for_shading()
946 session.params.pixels = dev->model->x_size_calib_mm * resolution / MM_PER_INCH; in init_regs_for_shading()
950 session.params.scan_method = dev->settings.scan_method; in init_regs_for_shading()
953 session.params.contrast_adjustment = dev->settings.contrast; in init_regs_for_shading()
954 session.params.brightness_adjustment = dev->settings.brightness; in init_regs_for_shading()
958 compute_session(dev, session, calib_sensor); in init_regs_for_shading()
961 init_regs_for_scan_session(dev, calib_sensor, ®s, session); in init_regs_for_shading()
968 dev->calib_session = session; in init_regs_for_shading()
971 void CommandSetGl124::wait_for_motor_stop(Genesys_Device* dev) const in wait_for_motor_stop()
975 auto status = scanner_read_status(*dev); in wait_for_motor_stop()
976 std::uint8_t val40 = dev->interface->read_register(REG_0x100); in wait_for_motor_stop()
983 dev->interface->sleep_ms(10); in wait_for_motor_stop()
984 status = scanner_read_status(*dev); in wait_for_motor_stop()
985 val40 = dev->interface->read_register(REG_0x100); in wait_for_motor_stop()
987 dev->interface->sleep_ms(50); in wait_for_motor_stop()
994 void CommandSetGl124::send_shading_data(Genesys_Device* dev, const Genesys_Sensor& sensor, in send_shading_data() argument
1003 std::uint32_t strpixel = dev->session.pixel_startx; in send_shading_data()
1004 std::uint32_t endpixel = dev->session.pixel_endx; in send_shading_data()
1005 segcnt = dev->reg.get24(REG_SEGCNT); in send_shading_data()
1013 dev->interface->record_key_value("shading_start_pixel", std::to_string(strpixel)); in send_shading_data()
1014 dev->interface->record_key_value("shading_pixels", std::to_string(pixels)); in send_shading_data()
1015 dev->interface->record_key_value("shading_length", std::to_string(length)); in send_shading_data()
1016 dev->interface->record_key_value("shading_factor", std::to_string(sensor.shading_factor)); in send_shading_data()
1017 dev->interface->record_key_value("shading_segcnt", std::to_string(segcnt)); in send_shading_data()
1018 dev->interface->record_key_value("shading_segment_count", in send_shading_data()
1019 std::to_string(dev->session.segment_count)); in send_shading_data()
1022 std::vector<std::uint8_t> buffer(pixels * dev->session.segment_count, 0); in send_shading_data()
1037 for (unsigned s = 0; s < dev->session.segment_count; s++) in send_shading_data()
1039 unsigned segnum = dev->session.segment_count > 1 ? sensor.segment_order[s] : 0; in send_shading_data()
1049 std::uint8_t val = dev->interface->read_register(0xd0+i); in send_shading_data()
1051 dev->interface->write_ahb(addr, pixels * dev->session.segment_count, buffer.data()); in send_shading_data()
1059 * @param dev scanner device
1061 void move_to_calibration_area(Genesys_Device* dev, const Genesys_Sensor& sensor, in move_to_calibration_area() argument
1070 const auto& move_sensor = sanei_genesys_find_sensor(dev, resolution, channels, in move_to_calibration_area()
1071 dev->settings.scan_method); in move_to_calibration_area()
1074 regs = dev->reg; in move_to_calibration_area()
1081 session.params.pixels = dev->model->x_size_calib_mm * resolution / MM_PER_INCH; in move_to_calibration_area()
1085 session.params.scan_method = dev->settings.scan_method; in move_to_calibration_area()
1087 session.params.color_filter = dev->settings.color_filter; in move_to_calibration_area()
1088 session.params.contrast_adjustment = dev->settings.contrast; in move_to_calibration_area()
1089 session.params.brightness_adjustment = dev->settings.brightness; in move_to_calibration_area()
1095 compute_session(dev, session, move_sensor); in move_to_calibration_area()
1097 dev->cmd_set->init_regs_for_scan_session(dev, move_sensor, ®s, session); in move_to_calibration_area()
1100 dev->interface->write_registers(regs); in move_to_calibration_area()
1103 dev->cmd_set->begin_scan(dev, move_sensor, ®s, true); in move_to_calibration_area()
1106 dev->interface->test_checkpoint("move_to_calibration_area"); in move_to_calibration_area()
1107 scanner_stop_action(*dev); in move_to_calibration_area()
1111 auto image = read_unshuffled_image_from_scanner(dev, session, session.output_line_bytes); in move_to_calibration_area()
1114 scanner_stop_action(*dev); in move_to_calibration_area()
1126 SensorExposure CommandSetGl124::led_calibration(Genesys_Device* dev, const Genesys_Sensor& sensor, in led_calibration() argument
1129 return scanner_led_calibration(*dev, sensor, regs); in led_calibration()
1132 void CommandSetGl124::offset_calibration(Genesys_Device* dev, const Genesys_Sensor& sensor, in offset_calibration() argument
1135 scanner_offset_calibration(*dev, sensor, regs); in offset_calibration()
1138 void CommandSetGl124::coarse_gain_calibration(Genesys_Device* dev, const Genesys_Sensor& sensor, in coarse_gain_calibration() argument
1141 scanner_coarse_gain_calibration(*dev, sensor, regs, dpi); in coarse_gain_calibration()
1146 void CommandSetGl124::init_regs_for_warmup(Genesys_Device* dev, const Genesys_Sensor& sensor, in init_regs_for_warmup() argument
1151 *reg = dev->reg; in init_regs_for_warmup()
1158 if (dev->settings.scan_method == ScanMethod::TRANSPARENCY || in init_regs_for_warmup()
1159 dev->settings.scan_method == ScanMethod::TRANSPARENCY_INFRARED) in init_regs_for_warmup()
1166 session.params.yres = dev->motor.base_ydpi; in init_regs_for_warmup()
1167 session.params.startx = dev->model->x_size_calib_mm * sensor.full_resolution / MM_PER_INCH / 4; in init_regs_for_warmup()
1169 session.params.pixels = dev->model->x_size_calib_mm * sensor.full_resolution / MM_PER_INCH / 2; in init_regs_for_warmup()
1171 session.params.depth = dev->model->bpp_color_values.front(); in init_regs_for_warmup()
1173 session.params.scan_method = dev->settings.scan_method; in init_regs_for_warmup()
1175 session.params.color_filter = dev->settings.color_filter; in init_regs_for_warmup()
1176 session.params.contrast_adjustment = dev->settings.contrast; in init_regs_for_warmup()
1177 session.params.brightness_adjustment = dev->settings.brightness; in init_regs_for_warmup()
1180 compute_session(dev, session, sensor); in init_regs_for_warmup()
1182 init_regs_for_scan_session(dev, sensor, reg, session); in init_regs_for_warmup()
1189 * @param dev device to set up
1191 static void gl124_init_gpio(Genesys_Device* dev) in gl124_init_gpio() argument
1197 if (dev->model->model_id == ModelId::CANON_LIDE_110) { in gl124_init_gpio()
1199 } else if (dev->model->model_id == ModelId::CANON_LIDE_120) { in gl124_init_gpio()
1207 dev->interface->write_register(REG_0x31, gpios[idx].r31); in gl124_init_gpio()
1208 dev->interface->write_register(REG_0x32, gpios[idx].r32); in gl124_init_gpio()
1209 dev->interface->write_register(REG_0x33, gpios[idx].r33); in gl124_init_gpio()
1210 dev->interface->write_register(REG_0x34, gpios[idx].r34); in gl124_init_gpio()
1211 dev->interface->write_register(REG_0x35, gpios[idx].r35); in gl124_init_gpio()
1212 dev->interface->write_register(REG_0x36, gpios[idx].r36); in gl124_init_gpio()
1213 dev->interface->write_register(REG_0x38, gpios[idx].r38); in gl124_init_gpio()
1219 static void gl124_init_memory_layout(Genesys_Device* dev) in gl124_init_memory_layout() argument
1223 apply_reg_settings_to_device_write_only(*dev, dev->memory_layout.regs); in gl124_init_memory_layout()
1230 void CommandSetGl124::init(Genesys_Device* dev) const in init()
1235 sanei_genesys_asic_init(dev); in init()
1242 void CommandSetGl124::asic_boot(Genesys_Device* dev, bool cold) const in asic_boot() argument
1248 dev->interface->write_register(0x0e, 0x01); in asic_boot()
1249 dev->interface->write_register(0x0e, 0x00); in asic_boot()
1253 dev->interface->write_register(0x36, 0x01); in asic_boot()
1256 std::uint8_t val = dev->interface->read_register(0x33); in asic_boot()
1258 dev->interface->write_register(0x33, val); in asic_boot()
1261 val = dev->interface->read_register(REG_0x100); in asic_boot()
1263 val = dev->interface->read_register(0x00); in asic_boot()
1268 gl124_init_registers (dev); in asic_boot()
1271 dev->interface->write_registers(dev->reg); in asic_boot()
1274 dev->interface->write_register(REG_0x0B, REG_0x0B_30MHZ | REG_0x0B_ENBDRAM | REG_0x0B_64M); in asic_boot()
1275 dev->reg.remove_reg(0x0b); in asic_boot()
1278 dev->interface->write_0x8c(0x10, 0x0b); in asic_boot()
1279 dev->interface->write_0x8c(0x13, 0x0e); in asic_boot()
1282 dev->reg.init_reg(0x08, REG_0x08_CIS_LINE); in asic_boot()
1283 dev->interface->write_register(0x08, dev->reg.find_reg(0x08).value); in asic_boot()
1286 gl124_init_gpio(dev); in asic_boot()
1289 gl124_init_memory_layout(dev); in asic_boot()
1299 std::uint8_t val = s->dev->interface->read_register(REG_0x31); in update_hardware_sensors()
1305 if ((s->dev->model->gpio_id == GpioId::CANON_LIDE_110) || in update_hardware_sensors()
1306 (s->dev->model->gpio_id == GpioId::CANON_LIDE_120)) in update_hardware_sensors()
1323 void CommandSetGl124::update_home_sensor_gpio(Genesys_Device& dev) const in update_home_sensor_gpio()
1327 std::uint8_t val = dev.interface->read_register(REG_0x32); in update_home_sensor_gpio()
1329 dev.interface->write_register(REG_0x32, val); in update_home_sensor_gpio()
1332 bool CommandSetGl124::needs_home_before_init_regs_for_scan(Genesys_Device* dev) const in needs_home_before_init_regs_for_scan()
1334 (void) dev; in needs_home_before_init_regs_for_scan()
1338 void CommandSetGl124::send_gamma_table(Genesys_Device* dev, const Genesys_Sensor& sensor) const in send_gamma_table() argument
1340 sanei_genesys_send_gamma_table(dev, sensor); in send_gamma_table()
1343 void CommandSetGl124::load_document(Genesys_Device* dev) const in load_document()
1345 (void) dev; in load_document()
1349 void CommandSetGl124::detect_document_end(Genesys_Device* dev) const in detect_document_end()
1351 (void) dev; in detect_document_end()
1355 void CommandSetGl124::eject_document(Genesys_Device* dev) const in eject_document()
1357 (void) dev; in eject_document()