genesys: Cache the initial frontend values in the device

merge-requests/81/head
Povilas Kanapickas 2019-06-02 11:48:02 +03:00
rodzic ba778a7d84
commit 6305433210
8 zmienionych plików z 24 dodań i 44 usunięć

Wyświetl plik

@ -218,6 +218,7 @@ void
sanei_genesys_init_structs (Genesys_Device * dev)
{
unsigned int i, gpo_ok = 0, motor_ok = 0;
bool fe_ok = false;
/* initialize the GPO data stuff */
for (i = 0; i < sizeof (Gpo) / sizeof (Genesys_Gpo); i++)
@ -239,10 +240,18 @@ sanei_genesys_init_structs (Genesys_Device * dev)
}
}
for (i = 0; i < sizeof (Wolfson) / sizeof (Genesys_Frontend); i++) {
if (dev->model->dac_type == Wolfson[i].fe_id) {
dev->frontend_initial = Wolfson[i];
fe_ok = true;
break;
}
}
/* sanity check */
if (motor_ok == 0 || gpo_ok == 0)
if (motor_ok == 0 || gpo_ok == 0 || !fe_ok)
{
DBG(DBG_error0, "%s: bad description(s) for ccd/gpo/motor=%d/%d/%d\n", __func__,
DBG(DBG_error0, "%s: bad description(s) for fe/gpo/motor=%d/%d/%d\n", __func__,
dev->model->ccd_type, dev->model->gpo_type, dev->model->motor_type);
}
@ -252,26 +261,6 @@ sanei_genesys_init_structs (Genesys_Device * dev)
dev->ld_shift_b = dev->model->ld_shift_b;
}
void
sanei_genesys_init_fe (Genesys_Device * dev)
{
unsigned int i;
DBGSTART;
for (i = 0; i < sizeof (Wolfson) / sizeof (Genesys_Frontend); i++)
{
if (dev->model->dac_type == Wolfson[i].fe_id)
{
dev->frontend = Wolfson[i];
return;
}
}
DBG(DBG_error0, "%s: failed to find description for dac_type %d\n", __func__,
dev->model->dac_type);
DBG(DBG_info, "%s: dac_type %d set up\n", __func__, dev->model->dac_type);
DBGCOMPLETED;
}
/* main function for slope creation */
/**
* This function generates a slope table using the given slope

Wyświetl plik

@ -559,8 +559,7 @@ gl124_set_ti_fe (Genesys_Device * dev, uint8_t set)
{
DBG (DBG_proc, "%s: setting DAC %u\n", __func__, dev->model->dac_type);
/* sets to default values */
sanei_genesys_init_fe (dev);
dev->frontend = dev->frontend_initial;
}
/* start writing to DAC */
@ -642,7 +641,7 @@ gl124_set_fe(Genesys_Device * dev, const Genesys_Sensor& sensor, uint8_t set)
if (set == AFE_INIT)
{
DBG(DBG_proc, "%s(): setting DAC %u\n", __func__, dev->model->dac_type);
sanei_genesys_init_fe (dev);
dev->frontend = dev->frontend_initial;
}
RIE (sanei_genesys_read_register (dev, REG0A, &val));

Wyświetl plik

@ -1376,8 +1376,7 @@ gl646_set_ad_fe (Genesys_Device * dev, uint8_t set)
{
DBG(DBG_proc, "%s(): setting DAC %u\n", __func__, dev->model->dac_type);
/* sets to default values */
sanei_genesys_init_fe (dev);
dev->frontend = dev->frontend_initial;
/* write them to analog frontend */
val = dev->frontend.reg[0];
@ -1461,7 +1460,7 @@ gl646_wm_hp3670(Genesys_Device * dev, const Genesys_Sensor& sensor, uint8_t set,
}
sanei_genesys_sleep_ms(200);
RIE (sanei_genesys_write_register (dev, 0x50, 0x00));
sanei_genesys_init_fe (dev);
dev->frontend = dev->frontend_initial;
status = sanei_genesys_fe_write_data (dev, 0x01, dev->frontend.reg[1]);
if (status != SANE_STATUS_GOOD)
{
@ -1595,7 +1594,7 @@ gl646_set_fe(Genesys_Device * dev, const Genesys_Sensor& sensor, uint8_t set, in
if (set == AFE_INIT)
{
DBG(DBG_proc, "%s(): setting DAC %u\n", __func__, dev->model->dac_type);
sanei_genesys_init_fe (dev);
dev->frontend = dev->frontend_initial;
/* reset only done on init */
status = sanei_genesys_fe_write_data (dev, 0x04, 0x80);
@ -3890,7 +3889,7 @@ gl646_init_regs_for_warmup (Genesys_Device * dev,
DBG(DBG_proc, "%s: start\n", __func__);
sanei_genesys_init_fe (dev);
dev->frontend = dev->frontend_initial;
resolution = get_closest_resolution (dev->model->ccd_type, 300, SANE_FALSE);

Wyświetl plik

@ -826,8 +826,7 @@ gl841_set_lide80_fe (Genesys_Device * dev, uint8_t set)
{
DBG(DBG_proc, "%s(): setting DAC %u\n", __func__, dev->model->dac_type);
/* sets to default values */
sanei_genesys_init_fe (dev);
dev->frontend = dev->frontend_initial;
/* write them to analog frontend */
status = sanei_genesys_fe_write_data (dev, 0x00, dev->frontend.reg[0]);
@ -894,8 +893,7 @@ gl841_set_ad_fe (Genesys_Device * dev, uint8_t set)
{
DBG(DBG_proc, "%s(): setting DAC %u\n", __func__, dev->model->dac_type);
/* sets to default values */
sanei_genesys_init_fe (dev);
dev->frontend = dev->frontend_initial;
/* write them to analog frontend */
status = sanei_genesys_fe_write_data (dev, 0x00, dev->frontend.reg[0]);
@ -1025,7 +1023,7 @@ gl841_set_fe(Genesys_Device * dev, const Genesys_Sensor& sensor, uint8_t set)
if (set == AFE_INIT)
{
DBG(DBG_proc, "%s(): setting DAC %u\n", __func__, dev->model->dac_type);
sanei_genesys_init_fe (dev);
dev->frontend = dev->frontend_initial;
/* reset only done on init */
status = sanei_genesys_fe_write_data (dev, 0x04, 0x80);

Wyświetl plik

@ -768,7 +768,7 @@ gl843_set_fe (Genesys_Device * dev, const Genesys_Sensor& sensor, uint8_t set)
if (set == AFE_INIT)
{
DBG(DBG_proc, "%s(): setting DAC %u\n", __func__, dev->model->dac_type);
sanei_genesys_init_fe (dev);
dev->frontend = dev->frontend_initial;
}
/* check analog frontend type */

Wyświetl plik

@ -497,9 +497,7 @@ gl846_set_adi_fe (Genesys_Device * dev, uint8_t set)
if (set == AFE_INIT)
{
DBG (DBG_proc, "%s(): setting DAC %u\n", __func__, dev->model->dac_type);
/* sets to default values */
sanei_genesys_init_fe (dev);
dev->frontend = dev->frontend_initial;
}
/* write them to analog frontend */

Wyświetl plik

@ -518,8 +518,7 @@ gl847_set_ad_fe (Genesys_Device * dev, uint8_t set)
{
DBG(DBG_proc, "%s(): setting DAC %u\n", __func__, dev->model->dac_type);
/* sets to default values */
sanei_genesys_init_fe (dev);
dev->frontend = dev->frontend_initial;
}
/* reset DAC */

Wyświetl plik

@ -1292,7 +1292,7 @@ struct Genesys_Device
Genesys_Register_Set reg;
Genesys_Register_Set calib_reg;
Genesys_Settings settings;
Genesys_Frontend frontend;
Genesys_Frontend frontend, frontend_initial;
Genesys_Gpo gpo;
Genesys_Motor motor;
uint16_t slope_table0[256] = {};
@ -1522,8 +1522,6 @@ extern void sanei_genesys_print_status (uint8_t val);
extern SANE_Status
sanei_genesys_write_ahb(Genesys_Device* dev, uint32_t addr, uint32_t size, uint8_t * data);
extern void sanei_genesys_init_fe (Genesys_Device * dev);
extern void sanei_genesys_init_structs (Genesys_Device * dev);
const Genesys_Sensor& sanei_genesys_find_sensor_any(Genesys_Device* dev);