last minute fix for hang after feeding to scan position

merge-requests/1/head
Stphane Voltz 2010-06-03 22:16:43 +02:00
rodzic 3ad7a8cf09
commit b2a0344885
4 zmienionych plików z 25 dodań i 97 usunięć

Wyświetl plik

@ -1,5 +1,6 @@
2010-06-03 Stéphane Voltz <stef.dev@free.fr>
* backend/genesys.c backend/genesys_devices.c backend/genesys_gl847.c:
* backend/genesys.c backend/genesys_devices.c backend/genesys_gl847.c
doc/descriptions/genesys.desc:
final bits for full LiDE 100 support
2010-05-31 Stéphane Voltz <stef.dev@free.fr>

Wyświetl plik

@ -4731,27 +4731,30 @@ genesys_start_scan (Genesys_Device * dev)
/*do we really need this? the valid data check should be sufficent -- pierre*/
/* waits for head to reach scanning position */
expected =
sanei_genesys_read_reg_from_set (dev->reg,
0x3d) * 65536 +
sanei_genesys_read_reg_from_set (dev->reg,
0x3e) * 256 +
sanei_genesys_read_reg_from_set (dev->reg, 0x3f);
do
if (!(dev->model->flags & GENESYS_FLAG_ODD_EVEN_CIS))
{
/* wait 1/10th of second between each test to avoid
overloading USB and CPU */
usleep (100 * 1000);
status = sanei_genesys_read_feed_steps (dev, &steps);
if (status != SANE_STATUS_GOOD)
{
DBG (DBG_error,
"genesys_start_scan: Failed to read feed steps: %s\n",
sane_strstatus (status));
return status;
}
expected =
sanei_genesys_read_reg_from_set (dev->reg,
0x3d) * 65536 +
sanei_genesys_read_reg_from_set (dev->reg,
0x3e) * 256 +
sanei_genesys_read_reg_from_set (dev->reg, 0x3f);
do
{
/* wait 1/10th of second between each test to avoid
overloading USB and CPU */
usleep (100 * 1000);
status = sanei_genesys_read_feed_steps (dev, &steps);
if (status != SANE_STATUS_GOOD)
{
DBG (DBG_error,
"genesys_start_scan: Failed to read feed steps: %s\n",
sane_strstatus (status));
return status;
}
}
while (steps < expected);
}
while (steps < expected);
/* wait for buffers to be filled */
do

Wyświetl plik

@ -786,7 +786,7 @@ static Genesys_Motor Motor[] = {
1, /* maximum power modes count */
{ /* motor slopes */
{ /* power mode 0 */
{ 2343, 1017, 64, 0.80}, /* full step */
{ 2034, 1017, 64, 0.10}, /* full step */
{ 4678, 2034, 64, 0.80}, /* half step */
{ 3*2712, 3*2712, 64, 0.80}, /* quarter step 0.75*2712 */
/*{ 4*2034, 4*2034, 32, 0.80}, quarter step */

Wyświetl plik

@ -770,7 +770,6 @@ HOME_FREE: 3
* Z1
* Z2
*/
r = sanei_genesys_get_address (reg, 0x3d);
r->value = (feedl >> 16) & 0xf;
r = sanei_genesys_get_address (reg, 0x3e);
@ -1122,9 +1121,6 @@ gl847_init_motor_regs_scan (Genesys_Device * dev,
fast_slope_steps = (feed_steps - (slow_slope_steps >> scan_step_type)) / 2;
}
if(fast_slope_steps<64)
fast_slope_steps=64;
DBG (DBG_info,
"gl847_init_motor_regs_scan: Maximum allowed slope steps for fast slope: %d\n",
fast_slope_steps);
@ -3436,11 +3432,6 @@ gl847_init_regs_for_scan (Genesys_Device * dev)
return status;
}
/* XXX STEF XXX */
RIE (sanei_genesys_read_register (dev, REG6C, &val));
val = val & ~REG6C_GPIO13;
RIE (sanei_genesys_write_register (dev, REG6C, val));
/* clear scancnt and fedcnt */
val = REG0D_CLRLNCNT;
RIE (sanei_genesys_write_register (dev, REG0D, val));
@ -4107,73 +4098,6 @@ gl847_init_memory_layout (Genesys_Device * dev)
return status;
}
#if 0
/** @brief dummy scan to reset scanner
*
* */
static SANE_Status
gl847_dummy_scan (Genesys_Device * dev)
{
SANE_Status status;
size_t size;
uint8_t *line;
float pixels;
int dpi = 300;
DBGSTART;
/* initial calibration reg values */
memcpy (dev->calib_reg, dev->reg,
GENESYS_GL847_MAX_REGS * sizeof (Genesys_Register_Set));
pixels = (16 * 300) / dev->sensor.optical_res;
status = gl847_init_scan_regs (dev,
dev->calib_reg,
dpi,
dpi,
0,
0,
pixels,
1,
16,
3,
0,
SCAN_FLAG_DISABLE_SHADING |
SCAN_FLAG_DISABLE_GAMMA |
SCAN_FLAG_SINGLE_LINE |
SCAN_FLAG_IGNORE_LINE_DISTANCE |
SCAN_FLAG_USE_OPTICAL_RES);
RIE (gl847_bulk_write_register
(dev, dev->calib_reg, GENESYS_GL847_MAX_REGS));
/* colors * bytes_per_color * scan lines */
size = ((int) pixels) * 3 * 2 * 1;
line = malloc (size);
if (!line)
return SANE_STATUS_NO_MEM;
DBG (DBG_info, "%s: starting dummy data reading\n", __FUNCTION__);
RIE (gl847_begin_scan (dev, dev->calib_reg, SANE_TRUE));
sanei_usb_set_timeout (1000); /* 1 second */
/*ignore errors. next read will succeed */
sanei_genesys_read_data_from_scanner (dev, line, size);
sanei_usb_set_timeout (30 * 1000); /* 30 seconds */
RIE (gl847_end_scan (dev, dev->calib_reg, SANE_TRUE));
free (line);
DBGCOMPLETED;
return SANE_STATUS_GOOD;
}
#endif
#if 0
/**
* reads a register from device and set up corresponding shadow register