fix shading coefficients corruption

merge-requests/1/head
Stphane Voltz 2010-06-03 06:56:12 +02:00
rodzic db3f605a11
commit 70bd6e6470
2 zmienionych plików z 15 dodań i 7 usunięć

Wyświetl plik

@ -3071,11 +3071,11 @@ compute_averaged_planar (Genesys_Device * dev,
else
val = (dk * target_bright - br * target_dark) / (target_bright
- target_dark);
shading_data[(x/avgpixels) * 2 * 2 + words_per_color * 2 * j] = val & 0xff;
shading_data[(x/avgpixels) * 2 * 2 + words_per_color * 2 * j + 1] = val >> 8;
val = br - dk;
if (65535 * val > (target_bright - target_dark) * coeff)
val = (coeff * (target_bright - target_dark)) / val;
else
@ -3447,7 +3447,7 @@ genesys_send_shading_coefficient (Genesys_Device * dev)
3,
4,
coeff,
0xea00,
0xfa00,
0x0a00,
SANE_TRUE);
break;
@ -6925,6 +6925,7 @@ sane_open (SANE_String_Const devicename, SANE_Handle * handle)
{
sprintf (tmp_str, "%s/.sane/%s.cal", ptr, s->dev->model->name);
}
FREE_IFNOT_NULL (s->dev->calib_file);
s->dev->calib_file = strdup (tmp_str);
DBG (DBG_info, "Calibration filename set to:\n");
DBG (DBG_info, ">%s<\n", s->dev->calib_file);

Wyświetl plik

@ -126,6 +126,7 @@ write_ahb (SANE_Int dn, uint32_t addr, uint32_t size, uint8_t * data)
{
sprintf (msg, "%s 0x%02x", msg, outdata[i]);
}
DBG (DBG_io, "%s: write(0x%08x,0x%08x)\n", __FUNCTION__, addr,size);
DBG (DBG_io, "%s: %s\n", __FUNCTION__, msg);
}
@ -935,6 +936,9 @@ HOME_FREE: 3
r->value &= ~REG02_AGOHOME;
r->value &= ~REG02_ACDCDIS;
if (flags & MOTOR_FLAG_DISABLE_BUFFER_FULL_MOVE)
r->value |= REG02_ACDCDIS;
r->value |= REG02_MTRPWR;
if (action == MOTOR_ACTION_GO_HOME)
@ -957,11 +961,11 @@ HOME_FREE: 3
val |= REG6C_GPIO12;
RIE (sanei_genesys_write_register (dev, REG6C, val));
status = gl847_send_slope_table (dev, 0, fast_slope_table, 256);
status = gl847_send_slope_table (dev, 1, fast_slope_table, 256);
status = gl847_send_slope_table (dev, 2, fast_slope_table, 256);
status = gl847_send_slope_table (dev, 3, fast_slope_table, 256);
status = gl847_send_slope_table (dev, 4, fast_slope_table, 256);
status = gl847_send_slope_table (dev, 5, fast_slope_table, 256);
if (status != SANE_STATUS_GOOD)
return status;
@ -993,7 +997,6 @@ HOME_FREE: 3
r = sanei_genesys_get_address (reg, 0x5f);
r->value = fast_slope_steps;
DBG (DBG_proc, "gl847_init_motor_regs : completed. \n");
return SANE_STATUS_GOOD;
@ -1213,7 +1216,6 @@ gl847_init_motor_regs_scan (Genesys_Device * dev,
if (flags & MOTOR_FLAG_DISABLE_BUFFER_FULL_MOVE)
r->value |= REG02_ACDCDIS;
r->value &= ~REG02_ACDCDIS;
/* hi res motor speed */
RIE (sanei_genesys_read_register (dev, REG6C, &effective));
@ -3433,6 +3435,11 @@ gl847_init_regs_for_scan (Genesys_Device * dev)
DBG (DBG_error, "%s: failed to move to scan area\n",__FUNCTION__);
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;
@ -3464,7 +3471,7 @@ gl847_init_regs_for_scan (Genesys_Device * dev)
dev->settings.xres,
dev->settings.yres,
start,
4,
0,
dev->settings.pixels,
dev->settings.lines,
depth,
@ -3831,7 +3838,7 @@ gl847_led_calibration (Genesys_Device * dev)
/* cleanup before return */
free (line);
gl847_slow_back_home (dev, SANE_TRUE);
DBG (DBG_proc, "gl847_led_calibration: completed\n");