diff --git a/backend/genesys.c b/backend/genesys.c index 8f0f92210..51ae61534 100644 --- a/backend/genesys.c +++ b/backend/genesys.c @@ -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); diff --git a/backend/genesys_gl847.c b/backend/genesys_gl847.c index 733e6617c..afa7ab80d 100644 --- a/backend/genesys_gl847.c +++ b/backend/genesys_gl847.c @@ -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");