genesys: Cache physical register state in the device on bulk writes

merge-requests/111/head
Povilas Kanapickas 2019-08-02 22:39:00 +03:00
rodzic 7836ea5778
commit faab7b02e0
11 zmienionych plików z 117 dodań i 107 usunięć

Wyświetl plik

@ -1671,7 +1671,7 @@ static void genesys_dark_shading_calibration(Genesys_Device* dev, const Genesys_
sanei_genesys_set_motor_power(dev->calib_reg, motor); sanei_genesys_set_motor_power(dev->calib_reg, motor);
} }
sanei_genesys_bulk_write_register(dev, dev->calib_reg); dev->write_registers(dev->calib_reg);
// wait some time to let lamp to get dark // wait some time to let lamp to get dark
sanei_genesys_sleep_ms(200); sanei_genesys_sleep_ms(200);
@ -1846,7 +1846,7 @@ static void genesys_white_shading_calibration(Genesys_Device* dev, const Genesys
sanei_genesys_set_lamp_power(dev, sensor, dev->calib_reg, true); sanei_genesys_set_lamp_power(dev, sensor, dev->calib_reg, true);
sanei_genesys_set_motor_power(dev->calib_reg, motor); sanei_genesys_set_motor_power(dev->calib_reg, motor);
sanei_genesys_bulk_write_register(dev, dev->calib_reg); dev->write_registers(dev->calib_reg);
if (dev->model->flags & GENESYS_FLAG_DARK_CALIBRATION) { if (dev->model->flags & GENESYS_FLAG_DARK_CALIBRATION) {
sanei_genesys_sleep_ms(500); // make sure lamp is bright again sanei_genesys_sleep_ms(500); // make sure lamp is bright again
@ -1932,7 +1932,7 @@ static void genesys_dark_white_shading_calibration(Genesys_Device* dev,
sanei_genesys_set_lamp_power(dev, sensor, dev->calib_reg, true); sanei_genesys_set_lamp_power(dev, sensor, dev->calib_reg, true);
sanei_genesys_set_motor_power(dev->calib_reg, motor); sanei_genesys_set_motor_power(dev->calib_reg, motor);
sanei_genesys_bulk_write_register(dev, dev->calib_reg); dev->write_registers(dev->calib_reg);
dev->model->cmd_set->begin_scan(dev, sensor, &dev->calib_reg, SANE_FALSE); dev->model->cmd_set->begin_scan(dev, sensor, &dev->calib_reg, SANE_FALSE);
@ -3427,7 +3427,7 @@ static void genesys_start_scan(Genesys_Device* dev, SANE_Bool lamp_off)
} }
// now send registers for scan // now send registers for scan
sanei_genesys_bulk_write_register(dev, dev->reg); dev->write_registers(dev->reg);
// start effective scan // start effective scan
dev->model->cmd_set->begin_scan(dev, sensor, &dev->reg, SANE_TRUE); dev->model->cmd_set->begin_scan(dev, sensor, &dev->reg, SANE_TRUE);

Wyświetl plik

@ -80,6 +80,14 @@ uint8_t Genesys_Device::read_register(uint16_t address)
return value; return value;
} }
void Genesys_Device::write_registers(Genesys_Register_Set& regs)
{
sanei_genesys_bulk_write_register(this, regs);
for (const auto& reg : regs) {
update_register_state(reg.address, reg.value);
}
}
void Genesys_Device::update_register_state(uint16_t address, uint8_t value) void Genesys_Device::update_register_state(uint16_t address, uint8_t value)
{ {
if (physical_regs.has_reg(address)) { if (physical_regs.has_reg(address)) {
@ -92,8 +100,7 @@ void Genesys_Device::update_register_state(uint16_t address, uint8_t value)
void apply_reg_settings_to_device(Genesys_Device& dev, const GenesysRegisterSettingSet& regs) void apply_reg_settings_to_device(Genesys_Device& dev, const GenesysRegisterSettingSet& regs)
{ {
for (const auto& reg : regs) { for (const auto& reg : regs) {
uint8_t val; uint8_t val = dev.read_register(reg.address);
sanei_genesys_read_register(&dev, reg.address, &val);
val = (val & ~reg.mask) | (reg.value & reg.mask); val = (val & ~reg.mask) | (reg.value & reg.mask);
sanei_genesys_write_register(&dev, reg.address, val); sanei_genesys_write_register(&dev, reg.address, val);
} }

Wyświetl plik

@ -337,6 +337,8 @@ struct Genesys_Device
Genesys_Register_Set physical_regs; Genesys_Register_Set physical_regs;
uint8_t read_register(uint16_t address); uint8_t read_register(uint16_t address);
void write_registers(Genesys_Register_Set& regs);
private: private:
void update_register_state(uint16_t address, uint8_t value); void update_register_state(uint16_t address, uint8_t value);
}; };

Wyświetl plik

@ -1775,7 +1775,7 @@ static void gl124_slow_back_home(Genesys_Device* dev, SANE_Bool wait_until_home)
r = sanei_genesys_get_address(&local_reg, REG02); r = sanei_genesys_get_address(&local_reg, REG02);
r->value |= REG02_MTRREV; r->value |= REG02_MTRREV;
sanei_genesys_bulk_write_register(dev, local_reg); dev->write_registers(local_reg);
gl124_setup_scan_gpio(dev,resolution); gl124_setup_scan_gpio(dev,resolution);
@ -1786,7 +1786,7 @@ static void gl124_slow_back_home(Genesys_Device* dev, SANE_Bool wait_until_home)
// restore original registers // restore original registers
catch_all_exceptions(__func__, [&]() catch_all_exceptions(__func__, [&]()
{ {
sanei_genesys_bulk_write_register(dev, dev->reg); dev->write_registers(dev->reg);
}); });
throw; throw;
} }
@ -1879,7 +1879,7 @@ static void gl124_feed(Genesys_Device* dev, unsigned int steps, int reverse)
} }
// send registers // send registers
sanei_genesys_bulk_write_register(dev, local_reg); dev->write_registers(local_reg);
try { try {
gl124_start_action(dev); gl124_start_action(dev);
@ -1889,7 +1889,7 @@ static void gl124_feed(Genesys_Device* dev, unsigned int steps, int reverse)
// restore original registers // restore original registers
catch_all_exceptions(__func__, [&]() catch_all_exceptions(__func__, [&]()
{ {
sanei_genesys_bulk_write_register(dev, dev->reg); dev->write_registers(dev->reg);
}); });
throw; throw;
} }
@ -1943,7 +1943,7 @@ static void gl124_search_start_position(Genesys_Device* dev)
gl124_init_scan_regs(dev, sensor, &local_reg, params); gl124_init_scan_regs(dev, sensor, &local_reg, params);
// send to scanner // send to scanner
sanei_genesys_bulk_write_register(dev, local_reg); dev->write_registers(local_reg);
size = pixels * dev->model->search_lines; size = pixels * dev->model->search_lines;
@ -2014,7 +2014,7 @@ static void gl124_init_regs_for_coarse_calibration(Genesys_Device* dev,
DBG(DBG_info, "%s: optical sensor res: %d dpi, actual res: %d\n", __func__, DBG(DBG_info, "%s: optical sensor res: %d dpi, actual res: %d\n", __func__,
sensor.optical_res / sensor.ccd_pixels_per_system_pixel(), dev->settings.xres); sensor.optical_res / sensor.ccd_pixels_per_system_pixel(), dev->settings.xres);
sanei_genesys_bulk_write_register(dev, regs); dev->write_registers(regs);
} }
@ -2084,7 +2084,7 @@ static void gl124_init_regs_for_shading(Genesys_Device* dev, const Genesys_Senso
dev->scanhead_position_in_steps += dev->calib_lines + move; dev->scanhead_position_in_steps += dev->calib_lines + move;
sanei_genesys_bulk_write_register(dev, regs); dev->write_registers(regs);
} }
static void gl124_wait_for_motor_stop(Genesys_Device* dev) static void gl124_wait_for_motor_stop(Genesys_Device* dev)
@ -2333,7 +2333,7 @@ static void move_to_calibration_area(Genesys_Device* dev, const Genesys_Sensor&
std::vector<uint8_t> line(size); std::vector<uint8_t> line(size);
// write registers and scan data // write registers and scan data
sanei_genesys_bulk_write_register(dev, regs); dev->write_registers(regs);
DBG (DBG_info, "%s: starting line reading\n", __func__); DBG (DBG_info, "%s: starting line reading\n", __func__);
gl124_begin_scan (dev, sensor, &regs, SANE_TRUE); gl124_begin_scan (dev, sensor, &regs, SANE_TRUE);
@ -2432,7 +2432,7 @@ static void gl124_led_calibration(Genesys_Device* dev, Genesys_Sensor& sensor,
sanei_genesys_set_triple(&regs,REG_EXPB,exp[2]); sanei_genesys_set_triple(&regs,REG_EXPB,exp[2]);
// write registers and scan data // write registers and scan data
sanei_genesys_bulk_write_register(dev, regs); dev->write_registers(regs);
DBG(DBG_info, "%s: starting line reading\n", __func__); DBG(DBG_info, "%s: starting line reading\n", __func__);
gl124_begin_scan (dev, sensor, &regs, SANE_TRUE); gl124_begin_scan (dev, sensor, &regs, SANE_TRUE);
@ -2602,7 +2602,7 @@ static void gl124_offset_calibration(Genesys_Device* dev, const Genesys_Sensor&
dev->frontend.set_offset(2, bottom); dev->frontend.set_offset(2, bottom);
gl124_set_fe(dev, sensor, AFE_SET); gl124_set_fe(dev, sensor, AFE_SET);
sanei_genesys_bulk_write_register(dev, regs); dev->write_registers(regs);
DBG(DBG_info, "%s: starting first line reading\n", __func__); DBG(DBG_info, "%s: starting first line reading\n", __func__);
gl124_begin_scan(dev, sensor, &regs, SANE_TRUE); gl124_begin_scan(dev, sensor, &regs, SANE_TRUE);
sanei_genesys_read_data_from_scanner(dev, first_line.data(), total_size); sanei_genesys_read_data_from_scanner(dev, first_line.data(), total_size);
@ -2622,7 +2622,7 @@ static void gl124_offset_calibration(Genesys_Device* dev, const Genesys_Sensor&
dev->frontend.set_offset(1, top); dev->frontend.set_offset(1, top);
dev->frontend.set_offset(2, top); dev->frontend.set_offset(2, top);
gl124_set_fe(dev, sensor, AFE_SET); gl124_set_fe(dev, sensor, AFE_SET);
sanei_genesys_bulk_write_register(dev, regs); dev->write_registers(regs);
DBG(DBG_info, "%s: starting second line reading\n", __func__); DBG(DBG_info, "%s: starting second line reading\n", __func__);
gl124_begin_scan(dev, sensor, &regs, SANE_TRUE); gl124_begin_scan(dev, sensor, &regs, SANE_TRUE);
sanei_genesys_read_data_from_scanner(dev, second_line.data(), total_size); sanei_genesys_read_data_from_scanner(dev, second_line.data(), total_size);
@ -2642,7 +2642,7 @@ static void gl124_offset_calibration(Genesys_Device* dev, const Genesys_Sensor&
// scan with no move // scan with no move
gl124_set_fe(dev, sensor, AFE_SET); gl124_set_fe(dev, sensor, AFE_SET);
sanei_genesys_bulk_write_register(dev, regs); dev->write_registers(regs);
DBG(DBG_info, "%s: starting second line reading\n", __func__); DBG(DBG_info, "%s: starting second line reading\n", __func__);
gl124_begin_scan(dev, sensor, &regs, SANE_TRUE); gl124_begin_scan(dev, sensor, &regs, SANE_TRUE);
sanei_genesys_read_data_from_scanner(dev, second_line.data(), total_size); sanei_genesys_read_data_from_scanner(dev, second_line.data(), total_size);
@ -2749,7 +2749,7 @@ static void gl124_coarse_gain_calibration(Genesys_Device* dev, const Genesys_Sen
sanei_genesys_set_motor_power(regs, false); sanei_genesys_set_motor_power(regs, false);
sanei_genesys_bulk_write_register(dev, regs); dev->write_registers(regs);
total_size = pixels * channels * (16/bpp) * lines; total_size = pixels * channels * (16/bpp) * lines;
@ -2864,7 +2864,7 @@ static void gl124_init_regs_for_warmup(Genesys_Device* dev, const Genesys_Sensor
*total_size = num_pixels * 3 * 1; /* colors * bytes_per_color * scan lines */ *total_size = num_pixels * 3 * 1; /* colors * bytes_per_color * scan lines */
sanei_genesys_set_motor_power(*reg, false); sanei_genesys_set_motor_power(*reg, false);
sanei_genesys_bulk_write_register(dev, *reg); dev->write_registers(*reg);
} }
/** @brief default GPIO values /** @brief default GPIO values
@ -3009,7 +3009,7 @@ static void gl124_boot(Genesys_Device* dev, SANE_Bool cold)
gl124_init_registers (dev); gl124_init_registers (dev);
// Write initial registers // Write initial registers
sanei_genesys_bulk_write_register(dev, dev->reg); dev->write_registers(dev->reg);
/* tune reg 0B */ /* tune reg 0B */
val = REG0B_30MHZ | REG0B_ENBDRAM | REG0B_64M; val = REG0B_30MHZ | REG0B_ENBDRAM | REG0B_64M;

Wyświetl plik

@ -1579,7 +1579,7 @@ static void gl646_set_powersaving(Genesys_Device* dev, int delay /* in minutes *
local_reg.find_reg(0x38).value = exposure_time / 256; local_reg.find_reg(0x38).value = exposure_time / 256;
local_reg.find_reg(0x39).value = exposure_time & 255; local_reg.find_reg(0x39).value = exposure_time & 255;
sanei_genesys_bulk_write_register(dev, local_reg); dev->write_registers(local_reg);
} }
@ -1673,7 +1673,7 @@ static void gl646_load_document(Genesys_Device* dev)
// wait e1 status to become e0 // wait e1 status to become e0
gl646_send_slope_table(dev, 1, slope_table, 50); gl646_send_slope_table(dev, 1, slope_table, 50);
sanei_genesys_bulk_write_register(dev, regs); dev->write_registers(regs);
gl646_start_motor(dev); gl646_start_motor(dev);
@ -1698,7 +1698,7 @@ static void gl646_load_document(Genesys_Device* dev)
regs.set8(0x02, 0x71); regs.set8(0x02, 0x71);
regs.set8(0x3f, 1); regs.set8(0x3f, 1);
regs.set8(0x6b, 8); regs.set8(0x6b, 8);
sanei_genesys_bulk_write_register(dev, regs); dev->write_registers(regs);
} }
/** /**
@ -1854,7 +1854,7 @@ static void gl646_eject_document(Genesys_Device* dev)
// wait c1 status to become c8 : HOMESNR and ~MOTFLAG // wait c1 status to become c8 : HOMESNR and ~MOTFLAG
gl646_send_slope_table(dev, 1, slope_table, 60); gl646_send_slope_table(dev, 1, slope_table, 60);
sanei_genesys_bulk_write_register(dev, regs); dev->write_registers(regs);
gl646_start_motor(dev); gl646_start_motor(dev);
@ -1895,7 +1895,7 @@ static void gl646_begin_scan(Genesys_Device* dev, const Genesys_Sensor& sensor,
local_reg.init_reg(0x0f, 0x00); // do not start motor yet local_reg.init_reg(0x0f, 0x00); // do not start motor yet
} }
sanei_genesys_bulk_write_register(dev, local_reg); dev->write_registers(local_reg);
} }
@ -2082,7 +2082,7 @@ static void gl646_slow_back_home(Genesys_Device* dev, SANE_Bool wait_until_home)
/* write scan registers */ /* write scan registers */
try { try {
sanei_genesys_bulk_write_register(dev, dev->reg); dev->write_registers(dev->reg);
} catch (...) { } catch (...) {
DBG(DBG_error, "%s: failed to bulk write registers\n", __func__); DBG(DBG_error, "%s: failed to bulk write registers\n", __func__);
} }
@ -3224,7 +3224,7 @@ static void gl646_init_regs_for_warmup(Genesys_Device* dev, const Genesys_Sensor
// now registers are ok, write them to scanner // now registers are ok, write them to scanner
gl646_set_fe(dev, sensor, AFE_SET, settings.xres); gl646_set_fe(dev, sensor, AFE_SET, settings.xres);
sanei_genesys_bulk_write_register(dev, *local_reg); dev->write_registers(*local_reg);
} }
@ -3261,7 +3261,7 @@ static void gl646_repark_head(Genesys_Device* dev)
/* TODO seems wrong ... no effective scan */ /* TODO seems wrong ... no effective scan */
dev->reg.find_reg(0x01).value &= ~REG01_SCAN; dev->reg.find_reg(0x01).value &= ~REG01_SCAN;
sanei_genesys_bulk_write_register(dev, dev->reg); dev->write_registers(dev->reg);
// start scan // start scan
gl646_begin_scan(dev, sensor, &dev->reg, SANE_TRUE); gl646_begin_scan(dev, sensor, &dev->reg, SANE_TRUE);
@ -3341,7 +3341,7 @@ static void gl646_init(Genesys_Device* dev)
sanei_genesys_sleep_ms(100); sanei_genesys_sleep_ms(100);
// Write initial registers // Write initial registers
sanei_genesys_bulk_write_register(dev, dev->reg); dev->write_registers(dev->reg);
/* Test ASIC and RAM */ /* Test ASIC and RAM */
if (!(dev->model->flags & GENESYS_FLAG_LAZY_INIT)) if (!(dev->model->flags & GENESYS_FLAG_LAZY_INIT))
@ -3556,7 +3556,7 @@ static void simple_scan(Genesys_Device* dev, const Genesys_Sensor& sensor,
} }
// write scan registers // write scan registers
sanei_genesys_bulk_write_register(dev, dev->reg); dev->write_registers(dev->reg);
// starts scan // starts scan
gl646_begin_scan(dev, sensor, &dev->reg, move); gl646_begin_scan(dev, sensor, &dev->reg, move);

Wyświetl plik

@ -2444,7 +2444,7 @@ static void gl841_set_powersaving(Genesys_Device* dev, int delay /* in minutes *
local_reg.set8(0x38, exposure_time >> 8); local_reg.set8(0x38, exposure_time >> 8);
local_reg.set8(0x39, exposure_time & 255); /* lowbyte */ local_reg.set8(0x39, exposure_time & 255); /* lowbyte */
sanei_genesys_bulk_write_register(dev, local_reg); dev->write_registers(local_reg);
} }
static void gl841_start_action(Genesys_Device* dev) static void gl841_start_action(Genesys_Device* dev)
@ -2480,7 +2480,7 @@ static void gl841_stop_action(Genesys_Device* dev)
gl841_init_optical_regs_off(&local_reg); gl841_init_optical_regs_off(&local_reg);
gl841_init_motor_regs_off(&local_reg,0); gl841_init_motor_regs_off(&local_reg,0);
sanei_genesys_bulk_write_register(dev, local_reg); dev->write_registers(local_reg);
/* looks like writing the right registers to zero is enough to get the chip /* looks like writing the right registers to zero is enough to get the chip
out of scan mode into command mode, actually triggering(writing to out of scan mode into command mode, actually triggering(writing to
@ -2548,7 +2548,7 @@ static void gl841_eject_document(Genesys_Device* dev)
gl841_init_motor_regs(dev, sensor, &local_reg, gl841_init_motor_regs(dev, sensor, &local_reg,
65536,MOTOR_ACTION_FEED,0); 65536,MOTOR_ACTION_FEED,0);
sanei_genesys_bulk_write_register(dev, local_reg); dev->write_registers(local_reg);
try { try {
gl841_start_action(dev); gl841_start_action(dev);
@ -2557,7 +2557,7 @@ static void gl841_eject_document(Genesys_Device* dev)
// restore original registers // restore original registers
catch_all_exceptions(__func__, [&]() catch_all_exceptions(__func__, [&]()
{ {
sanei_genesys_bulk_write_register(dev, dev->reg); dev->write_registers(dev->reg);
}); });
throw; throw;
} }
@ -2761,7 +2761,7 @@ static void gl841_begin_scan(Genesys_Device* dev, const Genesys_Sensor& sensor,
local_reg.init_reg(0x0f, 0x00); local_reg.init_reg(0x0f, 0x00);
} }
sanei_genesys_bulk_write_register(dev, local_reg); dev->write_registers(local_reg);
} }
@ -2795,7 +2795,7 @@ static void gl841_feed(Genesys_Device* dev, int steps)
gl841_init_motor_regs(dev, sensor, &local_reg, steps,MOTOR_ACTION_FEED,0); gl841_init_motor_regs(dev, sensor, &local_reg, steps,MOTOR_ACTION_FEED,0);
sanei_genesys_bulk_write_register(dev, local_reg); dev->write_registers(local_reg);
try { try {
gl841_start_action(dev); gl841_start_action(dev);
@ -2804,7 +2804,7 @@ static void gl841_feed(Genesys_Device* dev, int steps)
// restore original registers // restore original registers
catch_all_exceptions(__func__, [&]() catch_all_exceptions(__func__, [&]()
{ {
sanei_genesys_bulk_write_register(dev, dev->reg); dev->write_registers(dev->reg);
}); });
throw; throw;
} }
@ -2908,7 +2908,7 @@ static void gl841_slow_back_home(Genesys_Device* dev, SANE_Bool wait_until_home)
r = sanei_genesys_get_address(&local_reg, REG01); r = sanei_genesys_get_address(&local_reg, REG01);
r->value &= ~REG01_SCAN; r->value &= ~REG01_SCAN;
sanei_genesys_bulk_write_register(dev, local_reg); dev->write_registers(local_reg);
try { try {
gl841_start_action(dev); gl841_start_action(dev);
@ -2917,7 +2917,7 @@ static void gl841_slow_back_home(Genesys_Device* dev, SANE_Bool wait_until_home)
// restore original registers // restore original registers
catch_all_exceptions(__func__, [&]() catch_all_exceptions(__func__, [&]()
{ {
sanei_genesys_bulk_write_register(dev, dev->reg); dev->write_registers(dev->reg);
}); });
throw; throw;
} }
@ -2988,7 +2988,7 @@ static void gl841_search_start_position(Genesys_Device* dev)
gl841_init_scan_regs(dev, sensor, &local_reg, params); gl841_init_scan_regs(dev, sensor, &local_reg, params);
// send to scanner // send to scanner
sanei_genesys_bulk_write_register(dev, local_reg); dev->write_registers(local_reg);
size = pixels * dev->model->search_lines; size = pixels * dev->model->search_lines;
@ -3058,7 +3058,7 @@ static void gl841_init_regs_for_coarse_calibration(Genesys_Device* dev,
DBG(DBG_info, "%s: optical sensor res: %d dpi, actual res: %d\n", __func__, DBG(DBG_info, "%s: optical sensor res: %d dpi, actual res: %d\n", __func__,
sensor.optical_res / sensor.ccd_pixels_per_system_pixel(), dev->settings.xres); sensor.optical_res / sensor.ccd_pixels_per_system_pixel(), dev->settings.xres);
sanei_genesys_bulk_write_register(dev, regs); dev->write_registers(regs);
/* if (DBG_LEVEL >= DBG_info) /* if (DBG_LEVEL >= DBG_info)
sanei_gl841_print_registers (regs);*/ sanei_gl841_print_registers (regs);*/
@ -3123,7 +3123,7 @@ static void gl841_init_regs_for_shading(Genesys_Device* dev, const Genesys_Senso
dev->calib_pixels = dev->current_setup.pixels; dev->calib_pixels = dev->current_setup.pixels;
dev->scanhead_position_in_steps += dev->calib_lines + starty; dev->scanhead_position_in_steps += dev->calib_lines + starty;
sanei_genesys_bulk_write_register(dev, regs); dev->write_registers(regs);
} }
// set up registers for the actual scan // set up registers for the actual scan
@ -3315,7 +3315,7 @@ static void gl841_led_calibration(Genesys_Device* dev, Genesys_Sensor& sensor,
gl841_init_scan_regs(dev, sensor, &regs, params); gl841_init_scan_regs(dev, sensor, &regs, params);
sanei_genesys_bulk_write_register(dev, regs); dev->write_registers(regs);
num_pixels = dev->current_setup.pixels; num_pixels = dev->current_setup.pixels;
@ -3354,7 +3354,7 @@ static void gl841_led_calibration(Genesys_Device* dev, Genesys_Sensor& sensor,
sanei_genesys_write_register(dev, 0x14, (sensor.exposure.blue >> 8) & 0xff); sanei_genesys_write_register(dev, 0x14, (sensor.exposure.blue >> 8) & 0xff);
sanei_genesys_write_register(dev, 0x15, sensor.exposure.blue & 0xff); sanei_genesys_write_register(dev, 0x15, sensor.exposure.blue & 0xff);
sanei_genesys_bulk_write_register(dev, regs); dev->write_registers(regs);
DBG(DBG_info, "%s: starting line reading\n", __func__); DBG(DBG_info, "%s: starting line reading\n", __func__);
gl841_begin_scan(dev, sensor, &regs, SANE_TRUE); gl841_begin_scan(dev, sensor, &regs, SANE_TRUE);
@ -3530,7 +3530,7 @@ static void ad_fe_offset_calibration(Genesys_Device* dev, const Genesys_Sensor&
/* scan line */ /* scan line */
DBG(DBG_info, "%s: starting line reading\n", __func__); DBG(DBG_info, "%s: starting line reading\n", __func__);
sanei_genesys_bulk_write_register(dev, regs); dev->write_registers(regs);
gl841_set_fe(dev, sensor, AFE_SET); gl841_set_fe(dev, sensor, AFE_SET);
gl841_begin_scan(dev, sensor, &regs, SANE_TRUE); gl841_begin_scan(dev, sensor, &regs, SANE_TRUE);
sanei_genesys_read_data_from_scanner(dev, line.data(), total_size); sanei_genesys_read_data_from_scanner(dev, line.data(), total_size);
@ -3665,7 +3665,7 @@ static void gl841_offset_calibration(Genesys_Device* dev, const Genesys_Sensor&
do { do {
sanei_genesys_bulk_write_register(dev, regs); dev->write_registers(regs);
for (j=0; j < channels; j++) { for (j=0; j < channels; j++) {
off[j] = (offh[j]+offl[j])/2; off[j] = (offh[j]+offl[j])/2;
@ -3782,7 +3782,7 @@ static void gl841_offset_calibration(Genesys_Device* dev, const Genesys_Sensor&
gl841_set_fe(dev, sensor, AFE_SET); gl841_set_fe(dev, sensor, AFE_SET);
DBG(DBG_info, "%s: starting second line reading\n", __func__); DBG(DBG_info, "%s: starting second line reading\n", __func__);
sanei_genesys_bulk_write_register(dev, regs); dev->write_registers(regs);
gl841_begin_scan(dev, sensor, &regs, SANE_TRUE); gl841_begin_scan(dev, sensor, &regs, SANE_TRUE);
sanei_genesys_read_data_from_scanner(dev, second_line.data(), total_size); sanei_genesys_read_data_from_scanner(dev, second_line.data(), total_size);
@ -3985,7 +3985,7 @@ static void gl841_coarse_gain_calibration(Genesys_Device* dev, const Genesys_Sen
gl841_init_scan_regs(dev, sensor, &regs, params); gl841_init_scan_regs(dev, sensor, &regs, params);
sanei_genesys_bulk_write_register(dev, regs); dev->write_registers(regs);
num_pixels = dev->current_setup.pixels; num_pixels = dev->current_setup.pixels;
@ -4138,7 +4138,7 @@ static void gl841_init_regs_for_warmup(Genesys_Device* dev, const Genesys_Sensor
*total_size = num_pixels * 3 * 2 * 1; /* colors * bytes_per_color * scan lines */ *total_size = num_pixels * 3 * 2 * 1; /* colors * bytes_per_color * scan lines */
sanei_genesys_bulk_write_register(dev, *local_reg); dev->write_registers(*local_reg);
} }
@ -4234,7 +4234,7 @@ static void gl841_init(Genesys_Device* dev)
gl841_init_registers (dev); gl841_init_registers (dev);
// Write initial registers // Write initial registers
sanei_genesys_bulk_write_register(dev, dev->reg); dev->write_registers(dev->reg);
/* Test ASIC and RAM */ /* Test ASIC and RAM */
if (!(dev->model->flags & GENESYS_FLAG_LAZY_INIT)) if (!(dev->model->flags & GENESYS_FLAG_LAZY_INIT))
@ -4288,7 +4288,7 @@ static void gl841_init(Genesys_Device* dev)
gl841_init_scan_regs(dev, sensor, &regs, params); gl841_init_scan_regs(dev, sensor, &regs, params);
sanei_genesys_bulk_write_register(dev, regs); dev->write_registers(regs);
size = dev->current_setup.pixels * 3 * 2 * 1; /* colors * bytes_per_color * scan lines */ size = dev->current_setup.pixels * 3 * 2 * 1; /* colors * bytes_per_color * scan lines */
@ -4421,7 +4421,7 @@ static void gl841_search_strip(Genesys_Device* dev, const Genesys_Sensor& sensor
r->value |= 4; r->value |= 4;
} }
sanei_genesys_bulk_write_register(dev, local_reg); dev->write_registers(local_reg);
gl841_begin_scan(dev, sensor, &local_reg, SANE_TRUE); gl841_begin_scan(dev, sensor, &local_reg, SANE_TRUE);
@ -4447,7 +4447,7 @@ static void gl841_search_strip(Genesys_Device* dev, const Genesys_Sensor& sensor
found = 0; found = 0;
while (pass < length && !found) while (pass < length && !found)
{ {
sanei_genesys_bulk_write_register(dev, local_reg); dev->write_registers(local_reg);
//now start scan //now start scan
gl841_begin_scan(dev, sensor, &local_reg, SANE_TRUE); gl841_begin_scan(dev, sensor, &local_reg, SANE_TRUE);

Wyświetl plik

@ -2201,7 +2201,7 @@ static void gl843_park_xpa_lamp(Genesys_Device* dev)
r->value &= ~REG01_SCAN; r->value &= ~REG01_SCAN;
// write to scanner and start action // write to scanner and start action
sanei_genesys_bulk_write_register(dev, local_reg); dev->write_registers(local_reg);
gl843_set_xpa_motor_power(dev, true); gl843_set_xpa_motor_power(dev, true);
try { try {
gl843_start_action(dev); gl843_start_action(dev);
@ -2210,7 +2210,7 @@ static void gl843_park_xpa_lamp(Genesys_Device* dev)
// restore original registers // restore original registers
catch_all_exceptions(__func__, [&]() catch_all_exceptions(__func__, [&]()
{ {
sanei_genesys_bulk_write_register(dev, dev->reg); dev->write_registers(dev->reg);
}); });
throw; throw;
} }
@ -2311,7 +2311,7 @@ static void gl843_slow_back_home(Genesys_Device* dev, SANE_Bool wait_until_home)
r = sanei_genesys_get_address(&local_reg, REG01); r = sanei_genesys_get_address(&local_reg, REG01);
r->value &= ~REG01_SCAN; r->value &= ~REG01_SCAN;
sanei_genesys_bulk_write_register(dev, local_reg); dev->write_registers(local_reg);
try { try {
gl843_start_action(dev); gl843_start_action(dev);
@ -2320,7 +2320,7 @@ static void gl843_slow_back_home(Genesys_Device* dev, SANE_Bool wait_until_home)
// restore original registers // restore original registers
catch_all_exceptions(__func__, [&]() catch_all_exceptions(__func__, [&]()
{ {
sanei_genesys_bulk_write_register(dev, dev->reg); dev->write_registers(dev->reg);
}); });
throw; throw;
} }
@ -2398,7 +2398,7 @@ static void gl843_search_start_position(Genesys_Device* dev)
gl843_init_scan_regs(dev, sensor, &local_reg, session); gl843_init_scan_regs(dev, sensor, &local_reg, session);
// send to scanner // send to scanner
sanei_genesys_bulk_write_register(dev, local_reg); dev->write_registers(local_reg);
size = dev->read_bytes_left; size = dev->read_bytes_left;
@ -2477,7 +2477,7 @@ static void gl843_init_regs_for_coarse_calibration(Genesys_Device* dev,
DBG(DBG_info, "%s: optical sensor res: %d dpi, actual res: %d\n", __func__, DBG(DBG_info, "%s: optical sensor res: %d dpi, actual res: %d\n", __func__,
sensor.optical_res / sensor.ccd_pixels_per_system_pixel(), dev->settings.xres); sensor.optical_res / sensor.ccd_pixels_per_system_pixel(), dev->settings.xres);
sanei_genesys_bulk_write_register(dev, regs); dev->write_registers(regs);
} }
/** @brief moves the slider to steps at motor base dpi /** @brief moves the slider to steps at motor base dpi
@ -2528,7 +2528,7 @@ static void gl843_feed(Genesys_Device* dev, unsigned int steps)
r->value &= ~REG01_SCAN; r->value &= ~REG01_SCAN;
// send registers // send registers
sanei_genesys_bulk_write_register(dev, local_reg); dev->write_registers(local_reg);
try { try {
gl843_start_action(dev); gl843_start_action(dev);
@ -2537,7 +2537,7 @@ static void gl843_feed(Genesys_Device* dev, unsigned int steps)
// restore original registers // restore original registers
catch_all_exceptions(__func__, [&]() catch_all_exceptions(__func__, [&]()
{ {
sanei_genesys_bulk_write_register(dev, dev->reg); dev->write_registers(dev->reg);
}); });
throw; throw;
} }
@ -2650,7 +2650,7 @@ static void gl843_init_regs_for_shading(Genesys_Device* dev, const Genesys_Senso
sanei_genesys_get_double(&regs,REG_STRPIXEL,&strpixel); sanei_genesys_get_double(&regs,REG_STRPIXEL,&strpixel);
DBG(DBG_info, "%s: STRPIXEL=%d\n", __func__, strpixel); DBG(DBG_info, "%s: STRPIXEL=%d\n", __func__, strpixel);
sanei_genesys_bulk_write_register(dev, regs); dev->write_registers(regs);
} }
/** @brief set up registers for the actual scan /** @brief set up registers for the actual scan
@ -2839,7 +2839,7 @@ static void gl843_led_calibration(Genesys_Device* dev, Genesys_Sensor& sensor,
gl843_init_scan_regs(dev, calib_sensor, &regs, session); gl843_init_scan_regs(dev, calib_sensor, &regs, session);
sanei_genesys_bulk_write_register(dev, regs); dev->write_registers(regs);
total_size = dev->read_bytes_left; total_size = dev->read_bytes_left;
@ -2868,7 +2868,7 @@ static void gl843_led_calibration(Genesys_Device* dev, Genesys_Sensor& sensor,
sanei_genesys_set_exposure(regs, calib_sensor.exposure); sanei_genesys_set_exposure(regs, calib_sensor.exposure);
sanei_genesys_bulk_write_register(dev, regs); dev->write_registers(regs);
DBG(DBG_info, "%s: starting first line reading\n", __func__); DBG(DBG_info, "%s: starting first line reading\n", __func__);
gl843_begin_scan(dev, calib_sensor, &regs, SANE_TRUE); gl843_begin_scan(dev, calib_sensor, &regs, SANE_TRUE);
@ -3091,7 +3091,7 @@ static void gl843_offset_calibration(Genesys_Device* dev, const Genesys_Sensor&
gl843_set_fe(dev, calib_sensor, AFE_SET); gl843_set_fe(dev, calib_sensor, AFE_SET);
// scan with obttom AFE settings // scan with obttom AFE settings
sanei_genesys_bulk_write_register(dev, regs); dev->write_registers(regs);
DBG(DBG_info, "%s: starting first line reading\n", __func__); DBG(DBG_info, "%s: starting first line reading\n", __func__);
gl843_begin_scan(dev, calib_sensor, &regs, SANE_TRUE); gl843_begin_scan(dev, calib_sensor, &regs, SANE_TRUE);
sanei_genesys_read_data_from_scanner(dev, first_line.data(), total_size); sanei_genesys_read_data_from_scanner(dev, first_line.data(), total_size);
@ -3120,7 +3120,7 @@ static void gl843_offset_calibration(Genesys_Device* dev, const Genesys_Sensor&
gl843_set_fe(dev, calib_sensor, AFE_SET); gl843_set_fe(dev, calib_sensor, AFE_SET);
// scan with top AFE values // scan with top AFE values
sanei_genesys_bulk_write_register(dev, regs); dev->write_registers(regs);
DBG(DBG_info, "%s: starting second line reading\n", __func__); DBG(DBG_info, "%s: starting second line reading\n", __func__);
gl843_begin_scan(dev, calib_sensor, &regs, SANE_TRUE); gl843_begin_scan(dev, calib_sensor, &regs, SANE_TRUE);
sanei_genesys_read_data_from_scanner(dev, second_line.data(), total_size); sanei_genesys_read_data_from_scanner(dev, second_line.data(), total_size);
@ -3156,7 +3156,7 @@ static void gl843_offset_calibration(Genesys_Device* dev, const Genesys_Sensor&
gl843_set_fe(dev, calib_sensor, AFE_SET); gl843_set_fe(dev, calib_sensor, AFE_SET);
// scan with no move // scan with no move
sanei_genesys_bulk_write_register(dev, regs); dev->write_registers(regs);
DBG(DBG_info, "%s: starting second line reading\n", __func__); DBG(DBG_info, "%s: starting second line reading\n", __func__);
gl843_begin_scan(dev, calib_sensor, &regs, SANE_TRUE); gl843_begin_scan(dev, calib_sensor, &regs, SANE_TRUE);
sanei_genesys_read_data_from_scanner(dev, second_line.data(), total_size); sanei_genesys_read_data_from_scanner(dev, second_line.data(), total_size);
@ -3300,7 +3300,7 @@ static void gl843_coarse_gain_calibration(Genesys_Device* dev, const Genesys_Sen
sanei_genesys_set_motor_power(regs, false); sanei_genesys_set_motor_power(regs, false);
sanei_genesys_bulk_write_register(dev, regs); dev->write_registers(regs);
total_size = dev->read_bytes_left; total_size = dev->read_bytes_left;
@ -3452,7 +3452,7 @@ static void gl843_init_regs_for_warmup(Genesys_Device* dev, const Genesys_Sensor
gl843_init_scan_regs(dev, calib_sensor, reg, session); gl843_init_scan_regs(dev, calib_sensor, reg, session);
sanei_genesys_set_motor_power(*reg, false); sanei_genesys_set_motor_power(*reg, false);
sanei_genesys_bulk_write_register(dev, *reg); dev->write_registers(*reg);
} }
/** /**
@ -3531,7 +3531,7 @@ static void gl843_boot(Genesys_Device* dev, SANE_Bool cold)
} }
// Write initial registers // Write initial registers
sanei_genesys_bulk_write_register(dev, dev->reg); dev->write_registers(dev->reg);
// Enable DRAM by setting a rising edge on bit 3 of reg 0x0b // Enable DRAM by setting a rising edge on bit 3 of reg 0x0b
val = dev->reg.find_reg(0x0b).value & REG0B_DRAMSEL; val = dev->reg.find_reg(0x0b).value & REG0B_DRAMSEL;
@ -3705,7 +3705,7 @@ static void gl843_search_strip(Genesys_Device* dev, const Genesys_Sensor& sensor
r->value |= REG02_MTRREV; r->value |= REG02_MTRREV;
} }
sanei_genesys_bulk_write_register(dev, local_reg); dev->write_registers(local_reg);
gl843_begin_scan(dev, calib_sensor, &local_reg, SANE_TRUE); gl843_begin_scan(dev, calib_sensor, &local_reg, SANE_TRUE);
@ -3732,7 +3732,7 @@ static void gl843_search_strip(Genesys_Device* dev, const Genesys_Sensor& sensor
found = 0; found = 0;
while (pass < 20 && !found) while (pass < 20 && !found)
{ {
sanei_genesys_bulk_write_register(dev, local_reg); dev->write_registers(local_reg);
// now start scan // now start scan
gl843_begin_scan(dev, calib_sensor, &local_reg, SANE_TRUE); gl843_begin_scan(dev, calib_sensor, &local_reg, SANE_TRUE);

Wyświetl plik

@ -1531,7 +1531,7 @@ static void gl846_slow_back_home(Genesys_Device* dev, SANE_Bool wait_until_home
r = sanei_genesys_get_address(&local_reg, REG02); r = sanei_genesys_get_address(&local_reg, REG02);
r->value |= REG02_MTRREV; r->value |= REG02_MTRREV;
sanei_genesys_bulk_write_register(dev, local_reg); dev->write_registers(local_reg);
try { try {
gl846_start_action(dev); gl846_start_action(dev);
@ -1542,7 +1542,7 @@ static void gl846_slow_back_home(Genesys_Device* dev, SANE_Bool wait_until_home
// restore original registers // restore original registers
catch_all_exceptions(__func__, [&]() catch_all_exceptions(__func__, [&]()
{ {
sanei_genesys_bulk_write_register(dev, dev->reg); dev->write_registers(dev->reg);
}); });
throw; throw;
} }
@ -1616,7 +1616,7 @@ static void gl846_search_start_position(Genesys_Device* dev)
gl846_init_scan_regs(dev, sensor, &local_reg, params); gl846_init_scan_regs(dev, sensor, &local_reg, params);
// send to scanner // send to scanner
sanei_genesys_bulk_write_register(dev, local_reg); dev->write_registers(local_reg);
size = pixels * dev->model->search_lines; size = pixels * dev->model->search_lines;
@ -1686,7 +1686,7 @@ static void gl846_init_regs_for_coarse_calibration(Genesys_Device* dev,
DBG(DBG_info, "%s: optical sensor res: %d dpi, actual res: %d\n", __func__, DBG(DBG_info, "%s: optical sensor res: %d dpi, actual res: %d\n", __func__,
sensor.optical_res / sensor.ccd_pixels_per_system_pixel(), dev->settings.xres); sensor.optical_res / sensor.ccd_pixels_per_system_pixel(), dev->settings.xres);
sanei_genesys_bulk_write_register(dev, regs); dev->write_registers(regs);
} }
/** @brief moves the slider to steps at motor base dpi /** @brief moves the slider to steps at motor base dpi
@ -1740,7 +1740,7 @@ static void gl846_feed(Genesys_Device* dev, unsigned int steps)
r->value &= ~REG01_SCAN; r->value &= ~REG01_SCAN;
// send registers // send registers
sanei_genesys_bulk_write_register(dev, local_reg); dev->write_registers(local_reg);
try { try {
gl846_start_action(dev); gl846_start_action(dev);
@ -1751,7 +1751,7 @@ static void gl846_feed(Genesys_Device* dev, unsigned int steps)
// restore original registers // restore original registers
catch_all_exceptions(__func__, [&]() catch_all_exceptions(__func__, [&]()
{ {
sanei_genesys_bulk_write_register(dev, dev->reg); dev->write_registers(dev->reg);
}); });
throw; throw;
} }
@ -1814,7 +1814,7 @@ static void gl846_init_regs_for_shading(Genesys_Device* dev, const Genesys_Senso
gl846_init_scan_regs(dev, sensor, &regs, params); gl846_init_scan_regs(dev, sensor, &regs, params);
sanei_genesys_bulk_write_register(dev, regs); dev->write_registers(regs);
/* we use GENESYS_FLAG_SHADING_REPARK */ /* we use GENESYS_FLAG_SHADING_REPARK */
dev->scanhead_position_in_steps = 0; dev->scanhead_position_in_steps = 0;
@ -2099,7 +2099,7 @@ static void gl846_led_calibration(Genesys_Device* dev, Genesys_Sensor& sensor,
sanei_genesys_set_double(&regs,REG_EXPB,exp[2]); sanei_genesys_set_double(&regs,REG_EXPB,exp[2]);
// write registers and scan data // write registers and scan data
sanei_genesys_bulk_write_register(dev, regs); dev->write_registers(regs);
DBG(DBG_info, "%s: starting line reading\n", __func__); DBG(DBG_info, "%s: starting line reading\n", __func__);
gl846_begin_scan(dev, sensor, &regs, SANE_TRUE); gl846_begin_scan(dev, sensor, &regs, SANE_TRUE);
@ -2278,7 +2278,7 @@ static void gl846_boot(Genesys_Device* dev, SANE_Bool cold)
gl846_init_registers (dev); gl846_init_registers (dev);
// Write initial registers // Write initial registers
sanei_genesys_bulk_write_register(dev, dev->reg); dev->write_registers(dev->reg);
/* Enable DRAM by setting a rising edge on bit 3 of reg 0x0b */ /* Enable DRAM by setting a rising edge on bit 3 of reg 0x0b */
val = dev->reg.find_reg(0x0b).value & REG0B_DRAMSEL; val = dev->reg.find_reg(0x0b).value & REG0B_DRAMSEL;
@ -2408,7 +2408,7 @@ static void gl846_search_strip(Genesys_Device* dev, const Genesys_Sensor& sensor
r->value |= REG02_MTRREV; r->value |= REG02_MTRREV;
} }
sanei_genesys_bulk_write_register(dev, local_reg); dev->write_registers(local_reg);
gl846_begin_scan(dev, sensor, &local_reg, SANE_TRUE); gl846_begin_scan(dev, sensor, &local_reg, SANE_TRUE);
@ -2434,7 +2434,7 @@ static void gl846_search_strip(Genesys_Device* dev, const Genesys_Sensor& sensor
found = 0; found = 0;
while (pass < 20 && !found) while (pass < 20 && !found)
{ {
sanei_genesys_bulk_write_register(dev, local_reg); dev->write_registers(local_reg);
// now start scan // now start scan
gl846_begin_scan(dev, sensor, &local_reg, SANE_TRUE); gl846_begin_scan(dev, sensor, &local_reg, SANE_TRUE);
@ -2646,7 +2646,7 @@ static void gl846_offset_calibration(Genesys_Device* dev, const Genesys_Sensor&
dev->frontend.set_offset(2, bottom); dev->frontend.set_offset(2, bottom);
gl846_set_fe(dev, sensor, AFE_SET); gl846_set_fe(dev, sensor, AFE_SET);
sanei_genesys_bulk_write_register(dev, regs); dev->write_registers(regs);
DBG(DBG_info, "%s: starting first line reading\n", __func__); DBG(DBG_info, "%s: starting first line reading\n", __func__);
gl846_begin_scan(dev, sensor, &regs, SANE_TRUE); gl846_begin_scan(dev, sensor, &regs, SANE_TRUE);
sanei_genesys_read_data_from_scanner(dev, first_line.data(), total_size); sanei_genesys_read_data_from_scanner(dev, first_line.data(), total_size);
@ -2666,7 +2666,7 @@ static void gl846_offset_calibration(Genesys_Device* dev, const Genesys_Sensor&
dev->frontend.set_offset(1, top); dev->frontend.set_offset(1, top);
dev->frontend.set_offset(2, top); dev->frontend.set_offset(2, top);
gl846_set_fe(dev, sensor, AFE_SET); gl846_set_fe(dev, sensor, AFE_SET);
sanei_genesys_bulk_write_register(dev, regs); dev->write_registers(regs);
DBG(DBG_info, "%s: starting second line reading\n", __func__); DBG(DBG_info, "%s: starting second line reading\n", __func__);
gl846_begin_scan(dev, sensor, &regs, SANE_TRUE); gl846_begin_scan(dev, sensor, &regs, SANE_TRUE);
sanei_genesys_read_data_from_scanner(dev, second_line.data(), total_size); sanei_genesys_read_data_from_scanner(dev, second_line.data(), total_size);
@ -2686,7 +2686,7 @@ static void gl846_offset_calibration(Genesys_Device* dev, const Genesys_Sensor&
// scan with no move // scan with no move
gl846_set_fe(dev, sensor, AFE_SET); gl846_set_fe(dev, sensor, AFE_SET);
sanei_genesys_bulk_write_register(dev, regs); dev->write_registers(regs);
DBG(DBG_info, "%s: starting second line reading\n", __func__); DBG(DBG_info, "%s: starting second line reading\n", __func__);
gl846_begin_scan(dev, sensor, &regs, SANE_TRUE); gl846_begin_scan(dev, sensor, &regs, SANE_TRUE);
sanei_genesys_read_data_from_scanner(dev, second_line.data(), total_size); sanei_genesys_read_data_from_scanner(dev, second_line.data(), total_size);
@ -2786,7 +2786,7 @@ static void gl846_coarse_gain_calibration(Genesys_Device* dev, const Genesys_Sen
sanei_genesys_set_motor_power(regs, false); sanei_genesys_set_motor_power(regs, false);
sanei_genesys_bulk_write_register(dev, regs); dev->write_registers(regs);
total_size = pixels * channels * (16/bpp) * lines; total_size = pixels * channels * (16/bpp) * lines;

Wyświetl plik

@ -1588,7 +1588,7 @@ static void gl847_slow_back_home(Genesys_Device* dev, SANE_Bool wait_until_home)
r = sanei_genesys_get_address (&local_reg, REG02); r = sanei_genesys_get_address (&local_reg, REG02);
r->value |= REG02_MTRREV; r->value |= REG02_MTRREV;
sanei_genesys_bulk_write_register(dev, local_reg); dev->write_registers(local_reg);
try { try {
gl847_start_action(dev); gl847_start_action(dev);
@ -1597,7 +1597,7 @@ static void gl847_slow_back_home(Genesys_Device* dev, SANE_Bool wait_until_home)
// restore original registers // restore original registers
catch_all_exceptions(__func__, [&]() catch_all_exceptions(__func__, [&]()
{ {
sanei_genesys_bulk_write_register(dev, dev->reg); dev->write_registers(dev->reg);
}); });
throw; throw;
} }
@ -1671,7 +1671,7 @@ static void gl847_search_start_position(Genesys_Device* dev)
gl847_init_scan_regs(dev, sensor, &local_reg, params); gl847_init_scan_regs(dev, sensor, &local_reg, params);
// send to scanner // send to scanner
sanei_genesys_bulk_write_register(dev, local_reg); dev->write_registers(local_reg);
size = pixels * dev->model->search_lines; size = pixels * dev->model->search_lines;
@ -1741,7 +1741,7 @@ static void gl847_init_regs_for_coarse_calibration(Genesys_Device* dev,
DBG(DBG_info, "%s: optical sensor res: %d dpi, actual res: %d\n", __func__, DBG(DBG_info, "%s: optical sensor res: %d dpi, actual res: %d\n", __func__,
sensor.optical_res / sensor.ccd_pixels_per_system_pixel(), dev->settings.xres); sensor.optical_res / sensor.ccd_pixels_per_system_pixel(), dev->settings.xres);
sanei_genesys_bulk_write_register(dev, regs); dev->write_registers(regs);
} }
/** @brief moves the slider to steps at motor base dpi /** @brief moves the slider to steps at motor base dpi
@ -1794,7 +1794,7 @@ static void gl847_feed(Genesys_Device* dev, unsigned int steps)
r->value &= ~REG01_SCAN; r->value &= ~REG01_SCAN;
// send registers // send registers
sanei_genesys_bulk_write_register(dev, local_reg); dev->write_registers(local_reg);
try { try {
gl847_start_action(dev); gl847_start_action(dev);
@ -1803,7 +1803,7 @@ static void gl847_feed(Genesys_Device* dev, unsigned int steps)
// restore original registers // restore original registers
catch_all_exceptions(__func__, [&]() catch_all_exceptions(__func__, [&]()
{ {
sanei_genesys_bulk_write_register(dev, dev->reg); dev->write_registers(dev->reg);
}); });
throw; throw;
} }
@ -1867,7 +1867,7 @@ static void gl847_init_regs_for_shading(Genesys_Device* dev, const Genesys_Senso
gl847_init_scan_regs(dev, sensor, &regs, params); gl847_init_scan_regs(dev, sensor, &regs, params);
sanei_genesys_bulk_write_register(dev, regs); dev->write_registers(regs);
/* we use GENESYS_FLAG_SHADING_REPARK */ /* we use GENESYS_FLAG_SHADING_REPARK */
dev->scanhead_position_in_steps = 0; dev->scanhead_position_in_steps = 0;
@ -2152,7 +2152,7 @@ static void gl847_led_calibration(Genesys_Device* dev, Genesys_Sensor& sensor,
sanei_genesys_set_double(&regs,REG_EXPB,exp[2]); sanei_genesys_set_double(&regs,REG_EXPB,exp[2]);
// write registers and scan data // write registers and scan data
sanei_genesys_bulk_write_register(dev, regs); dev->write_registers(regs);
DBG(DBG_info, "%s: starting line reading\n", __func__); DBG(DBG_info, "%s: starting line reading\n", __func__);
gl847_begin_scan(dev, sensor, &regs, SANE_TRUE); gl847_begin_scan(dev, sensor, &regs, SANE_TRUE);
@ -2369,7 +2369,7 @@ static void gl847_boot(Genesys_Device* dev, SANE_Bool cold)
gl847_init_registers (dev); gl847_init_registers (dev);
// Write initial registers // Write initial registers
sanei_genesys_bulk_write_register(dev, dev->reg); dev->write_registers(dev->reg);
/* Enable DRAM by setting a rising edge on bit 3 of reg 0x0b */ /* Enable DRAM by setting a rising edge on bit 3 of reg 0x0b */
val = dev->reg.find_reg(0x0b).value & REG0B_DRAMSEL; val = dev->reg.find_reg(0x0b).value & REG0B_DRAMSEL;
@ -2501,7 +2501,7 @@ static void gl847_search_strip(Genesys_Device* dev, const Genesys_Sensor& sensor
r->value |= REG02_MTRREV; r->value |= REG02_MTRREV;
} }
sanei_genesys_bulk_write_register(dev, local_reg); dev->write_registers(local_reg);
gl847_begin_scan(dev, sensor, &local_reg, SANE_TRUE); gl847_begin_scan(dev, sensor, &local_reg, SANE_TRUE);
@ -2527,7 +2527,7 @@ static void gl847_search_strip(Genesys_Device* dev, const Genesys_Sensor& sensor
found = 0; found = 0;
while (pass < 20 && !found) while (pass < 20 && !found)
{ {
sanei_genesys_bulk_write_register(dev, local_reg); dev->write_registers(local_reg);
// now start scan // now start scan
gl847_begin_scan(dev, sensor, &local_reg, SANE_TRUE); gl847_begin_scan(dev, sensor, &local_reg, SANE_TRUE);
@ -2739,7 +2739,7 @@ static void gl847_offset_calibration(Genesys_Device* dev, const Genesys_Sensor&
dev->frontend.set_offset(2, bottom); dev->frontend.set_offset(2, bottom);
gl847_set_fe(dev, sensor, AFE_SET); gl847_set_fe(dev, sensor, AFE_SET);
sanei_genesys_bulk_write_register(dev, regs); dev->write_registers(regs);
DBG(DBG_info, "%s: starting first line reading\n", __func__); DBG(DBG_info, "%s: starting first line reading\n", __func__);
gl847_begin_scan(dev, sensor, &regs, SANE_TRUE); gl847_begin_scan(dev, sensor, &regs, SANE_TRUE);
sanei_genesys_read_data_from_scanner(dev, first_line.data(), total_size); sanei_genesys_read_data_from_scanner(dev, first_line.data(), total_size);
@ -2759,7 +2759,7 @@ static void gl847_offset_calibration(Genesys_Device* dev, const Genesys_Sensor&
dev->frontend.set_offset(1, top); dev->frontend.set_offset(1, top);
dev->frontend.set_offset(2, top); dev->frontend.set_offset(2, top);
gl847_set_fe(dev, sensor, AFE_SET); gl847_set_fe(dev, sensor, AFE_SET);
sanei_genesys_bulk_write_register(dev, regs); dev->write_registers(regs);
DBG(DBG_info, "%s: starting second line reading\n", __func__); DBG(DBG_info, "%s: starting second line reading\n", __func__);
gl847_begin_scan(dev, sensor, &regs, SANE_TRUE); gl847_begin_scan(dev, sensor, &regs, SANE_TRUE);
sanei_genesys_read_data_from_scanner(dev, second_line.data(), total_size); sanei_genesys_read_data_from_scanner(dev, second_line.data(), total_size);
@ -2779,7 +2779,7 @@ static void gl847_offset_calibration(Genesys_Device* dev, const Genesys_Sensor&
// scan with no move // scan with no move
gl847_set_fe(dev, sensor, AFE_SET); gl847_set_fe(dev, sensor, AFE_SET);
sanei_genesys_bulk_write_register(dev, regs); dev->write_registers(regs);
DBG(DBG_info, "%s: starting second line reading\n", __func__); DBG(DBG_info, "%s: starting second line reading\n", __func__);
gl847_begin_scan(dev, sensor, &regs, SANE_TRUE); gl847_begin_scan(dev, sensor, &regs, SANE_TRUE);
sanei_genesys_read_data_from_scanner(dev, second_line.data(), total_size); sanei_genesys_read_data_from_scanner(dev, second_line.data(), total_size);
@ -2877,7 +2877,7 @@ static void gl847_coarse_gain_calibration(Genesys_Device* dev, const Genesys_Sen
sanei_genesys_set_motor_power(regs, false); sanei_genesys_set_motor_power(regs, false);
sanei_genesys_bulk_write_register(dev, regs); dev->write_registers(regs);
total_size = pixels * channels * (16/bpp) * lines; total_size = pixels * channels * (16/bpp) * lines;

Wyświetl plik

@ -542,7 +542,7 @@ void sanei_genesys_fe_read_data (Genesys_Device* dev, uint8_t addr, uint16_t* da
reg.init_reg(0x50, addr); reg.init_reg(0x50, addr);
// set up read address // set up read address
sanei_genesys_bulk_write_register(dev, reg); dev->write_registers(reg);
// read data // read data
uint8_t value = dev->read_register(0x46); uint8_t value = dev->read_register(0x46);
@ -574,7 +574,7 @@ void sanei_genesys_fe_write_data(Genesys_Device* dev, uint8_t addr, uint16_t dat
reg.init_reg(0x3b, data & 0xff); reg.init_reg(0x3b, data & 0xff);
} }
sanei_genesys_bulk_write_register(dev, reg); dev->write_registers(reg);
} }
/* ------------------------------------------------------------------------ */ /* ------------------------------------------------------------------------ */
@ -869,7 +869,7 @@ void sanei_genesys_set_motor_power(Genesys_Register_Set& regs, bool set)
* @param reg pointer to an array of registers * @param reg pointer to an array of registers
* @param elems size of the array * @param elems size of the array
*/ */
void sanei_genesys_bulk_write_register(Genesys_Device * dev, Genesys_Register_Set& reg) void sanei_genesys_bulk_write_register(Genesys_Device* dev, const Genesys_Register_Set& reg)
{ {
DBG_HELPER(dbg); DBG_HELPER(dbg);

Wyświetl plik

@ -438,7 +438,8 @@ extern void sanei_genesys_read_hregister(Genesys_Device* dev, uint16_t reg, uint
extern void sanei_genesys_write_hregister(Genesys_Device* dev, uint16_t reg, uint8_t val); extern void sanei_genesys_write_hregister(Genesys_Device* dev, uint16_t reg, uint8_t val);
extern void sanei_genesys_bulk_write_register(Genesys_Device* dev, Genesys_Register_Set& regs); extern void sanei_genesys_bulk_write_register(Genesys_Device* dev,
const Genesys_Register_Set& regs);
extern void sanei_genesys_write_0x8c(Genesys_Device* dev, uint8_t index, uint8_t val); extern void sanei_genesys_write_0x8c(Genesys_Device* dev, uint8_t index, uint8_t val);