kopia lustrzana https://gitlab.com/sane-project/backends
genesys: Cache the initial frontend values in the device
rodzic
ba778a7d84
commit
6305433210
|
|
@ -218,6 +218,7 @@ void
|
||||||
sanei_genesys_init_structs (Genesys_Device * dev)
|
sanei_genesys_init_structs (Genesys_Device * dev)
|
||||||
{
|
{
|
||||||
unsigned int i, gpo_ok = 0, motor_ok = 0;
|
unsigned int i, gpo_ok = 0, motor_ok = 0;
|
||||||
|
bool fe_ok = false;
|
||||||
|
|
||||||
/* initialize the GPO data stuff */
|
/* initialize the GPO data stuff */
|
||||||
for (i = 0; i < sizeof (Gpo) / sizeof (Genesys_Gpo); i++)
|
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 */
|
/* 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);
|
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;
|
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 */
|
/* main function for slope creation */
|
||||||
/**
|
/**
|
||||||
* This function generates a slope table using the given slope
|
* This function generates a slope table using the given slope
|
||||||
|
|
|
||||||
|
|
@ -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);
|
DBG (DBG_proc, "%s: setting DAC %u\n", __func__, dev->model->dac_type);
|
||||||
|
|
||||||
/* sets to default values */
|
dev->frontend = dev->frontend_initial;
|
||||||
sanei_genesys_init_fe (dev);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* start writing to DAC */
|
/* 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)
|
if (set == AFE_INIT)
|
||||||
{
|
{
|
||||||
DBG(DBG_proc, "%s(): setting DAC %u\n", __func__, dev->model->dac_type);
|
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));
|
RIE (sanei_genesys_read_register (dev, REG0A, &val));
|
||||||
|
|
|
||||||
|
|
@ -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);
|
DBG(DBG_proc, "%s(): setting DAC %u\n", __func__, dev->model->dac_type);
|
||||||
|
|
||||||
/* sets to default values */
|
dev->frontend = dev->frontend_initial;
|
||||||
sanei_genesys_init_fe (dev);
|
|
||||||
|
|
||||||
/* write them to analog frontend */
|
/* write them to analog frontend */
|
||||||
val = dev->frontend.reg[0];
|
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);
|
sanei_genesys_sleep_ms(200);
|
||||||
RIE (sanei_genesys_write_register (dev, 0x50, 0x00));
|
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]);
|
status = sanei_genesys_fe_write_data (dev, 0x01, dev->frontend.reg[1]);
|
||||||
if (status != SANE_STATUS_GOOD)
|
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)
|
if (set == AFE_INIT)
|
||||||
{
|
{
|
||||||
DBG(DBG_proc, "%s(): setting DAC %u\n", __func__, dev->model->dac_type);
|
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 */
|
/* reset only done on init */
|
||||||
status = sanei_genesys_fe_write_data (dev, 0x04, 0x80);
|
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__);
|
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);
|
resolution = get_closest_resolution (dev->model->ccd_type, 300, SANE_FALSE);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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);
|
DBG(DBG_proc, "%s(): setting DAC %u\n", __func__, dev->model->dac_type);
|
||||||
|
|
||||||
/* sets to default values */
|
dev->frontend = dev->frontend_initial;
|
||||||
sanei_genesys_init_fe (dev);
|
|
||||||
|
|
||||||
/* write them to analog frontend */
|
/* write them to analog frontend */
|
||||||
status = sanei_genesys_fe_write_data (dev, 0x00, dev->frontend.reg[0]);
|
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);
|
DBG(DBG_proc, "%s(): setting DAC %u\n", __func__, dev->model->dac_type);
|
||||||
|
|
||||||
/* sets to default values */
|
dev->frontend = dev->frontend_initial;
|
||||||
sanei_genesys_init_fe (dev);
|
|
||||||
|
|
||||||
/* write them to analog frontend */
|
/* write them to analog frontend */
|
||||||
status = sanei_genesys_fe_write_data (dev, 0x00, dev->frontend.reg[0]);
|
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)
|
if (set == AFE_INIT)
|
||||||
{
|
{
|
||||||
DBG(DBG_proc, "%s(): setting DAC %u\n", __func__, dev->model->dac_type);
|
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 */
|
/* reset only done on init */
|
||||||
status = sanei_genesys_fe_write_data (dev, 0x04, 0x80);
|
status = sanei_genesys_fe_write_data (dev, 0x04, 0x80);
|
||||||
|
|
|
||||||
|
|
@ -768,7 +768,7 @@ gl843_set_fe (Genesys_Device * dev, const Genesys_Sensor& sensor, uint8_t set)
|
||||||
if (set == AFE_INIT)
|
if (set == AFE_INIT)
|
||||||
{
|
{
|
||||||
DBG(DBG_proc, "%s(): setting DAC %u\n", __func__, dev->model->dac_type);
|
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 */
|
/* check analog frontend type */
|
||||||
|
|
|
||||||
|
|
@ -497,9 +497,7 @@ gl846_set_adi_fe (Genesys_Device * dev, uint8_t set)
|
||||||
if (set == AFE_INIT)
|
if (set == AFE_INIT)
|
||||||
{
|
{
|
||||||
DBG (DBG_proc, "%s(): setting DAC %u\n", __func__, dev->model->dac_type);
|
DBG (DBG_proc, "%s(): setting DAC %u\n", __func__, dev->model->dac_type);
|
||||||
|
dev->frontend = dev->frontend_initial;
|
||||||
/* sets to default values */
|
|
||||||
sanei_genesys_init_fe (dev);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* write them to analog frontend */
|
/* write them to analog frontend */
|
||||||
|
|
|
||||||
|
|
@ -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);
|
DBG(DBG_proc, "%s(): setting DAC %u\n", __func__, dev->model->dac_type);
|
||||||
|
|
||||||
/* sets to default values */
|
dev->frontend = dev->frontend_initial;
|
||||||
sanei_genesys_init_fe (dev);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* reset DAC */
|
/* reset DAC */
|
||||||
|
|
|
||||||
|
|
@ -1292,7 +1292,7 @@ struct Genesys_Device
|
||||||
Genesys_Register_Set reg;
|
Genesys_Register_Set reg;
|
||||||
Genesys_Register_Set calib_reg;
|
Genesys_Register_Set calib_reg;
|
||||||
Genesys_Settings settings;
|
Genesys_Settings settings;
|
||||||
Genesys_Frontend frontend;
|
Genesys_Frontend frontend, frontend_initial;
|
||||||
Genesys_Gpo gpo;
|
Genesys_Gpo gpo;
|
||||||
Genesys_Motor motor;
|
Genesys_Motor motor;
|
||||||
uint16_t slope_table0[256] = {};
|
uint16_t slope_table0[256] = {};
|
||||||
|
|
@ -1522,8 +1522,6 @@ extern void sanei_genesys_print_status (uint8_t val);
|
||||||
extern SANE_Status
|
extern SANE_Status
|
||||||
sanei_genesys_write_ahb(Genesys_Device* dev, uint32_t addr, uint32_t size, uint8_t * data);
|
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);
|
extern void sanei_genesys_init_structs (Genesys_Device * dev);
|
||||||
|
|
||||||
const Genesys_Sensor& sanei_genesys_find_sensor_any(Genesys_Device* dev);
|
const Genesys_Sensor& sanei_genesys_find_sensor_any(Genesys_Device* dev);
|
||||||
|
|
|
||||||
Ładowanie…
Reference in New Issue