From acc563e707255cfad71034b53a773aeb96a622a8 Mon Sep 17 00:00:00 2001 From: Pierre Willenbrock Date: Sun, 18 Jan 2009 14:20:55 +0000 Subject: [PATCH] Make half-ccd mode optional --- ChangeLog | 7 +++++-- backend/genesys_devices.c | 32 +++++++++++++++++++++++--------- backend/genesys_gl841.c | 3 ++- backend/genesys_low.h | 2 ++ 4 files changed, 32 insertions(+), 12 deletions(-) diff --git a/ChangeLog b/ChangeLog index 12db245c5..c9a99f694 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,8 +1,11 @@ 2009-01-18 Pierre Willenbrock - * backend/genesys_low.h: Fix prototype of update_hardware_sensors + * backend/genesys_low.h: Fix prototype of update_hardware_sensors. + Make half-ccd mode optional. * backend/genesys_gl841.c: Make dpihw depend on sensor pixel count instead of sensor resolution. Make some Canon LiDE 35 specific - gpio handling conditional, add missing SCANMOD shift. + gpio handling conditional, add missing SCANMOD shift. Make + half-ccd mode optional. + * backend/genesys_devices.c: Make half-ccd mode optional. 2009-01-16 Chris Bagwell * .cvsignore, Makefile.in, aclocal.m4, config.sub, configure, diff --git a/backend/genesys_devices.c b/backend/genesys_devices.c index b50d414d8..b077a64c3 100644 --- a/backend/genesys_devices.c +++ b/backend/genesys_devices.c @@ -433,7 +433,8 @@ static Genesys_Model umax_astra_4500_model = { DAC_WOLFSON_UMAX, GPO_UMAX, MOTOR_UMAX, - GENESYS_FLAG_UNTESTED, /* Which flags are needed for this scanner? */ + GENESYS_FLAG_UNTESTED /* Which flags are needed for this scanner? */ + | GENESYS_FLAG_HALF_CCD_MODE, /* untested, values set by hmg */ 20, 200 @@ -482,7 +483,8 @@ static Genesys_Model canon_lide_50_model = { GENESYS_FLAG_SCAN_SW | GENESYS_FLAG_FILE_SW | GENESYS_FLAG_EMAIL_SW | - GENESYS_FLAG_COPY_SW, + GENESYS_FLAG_COPY_SW | + GENESYS_FLAG_HALF_CCD_MODE, 280, 400 }; @@ -523,7 +525,11 @@ static Genesys_Model canon_lide_60_model = { DAC_CANONLIDE35, GPO_CANONLIDE35, MOTOR_CANONLIDE35, - GENESYS_FLAG_LAZY_INIT | GENESYS_FLAG_SKIP_WARMUP | GENESYS_FLAG_OFFSET_CALIBRATION | GENESYS_FLAG_DARK_WHITE_CALIBRATION, /* Which flags are needed for this scanner? */ + GENESYS_FLAG_LAZY_INIT /* Which flags are needed for this scanner? */ + | GENESYS_FLAG_SKIP_WARMUP + | GENESYS_FLAG_OFFSET_CALIBRATION + | GENESYS_FLAG_DARK_WHITE_CALIBRATION + | GENESYS_FLAG_HALF_CCD_MODE, 300, 400 }; /* this is completely untested -- hmg */ @@ -570,7 +576,8 @@ static Genesys_Model hp2300c_model = { | GENESYS_FLAG_MUST_WAIT | GENESYS_FLAG_DARK_CALIBRATION | GENESYS_FLAG_OFFSET_CALIBRATION - | GENESYS_FLAG_CUSTOM_GAMMA, + | GENESYS_FLAG_CUSTOM_GAMMA + | GENESYS_FLAG_HALF_CCD_MODE, 9, 132 }; @@ -617,7 +624,8 @@ static Genesys_Model hp2400c_model = { | GENESYS_FLAG_MUST_WAIT | GENESYS_FLAG_DARK_CALIBRATION | GENESYS_FLAG_OFFSET_CALIBRATION - | GENESYS_FLAG_CUSTOM_GAMMA, + | GENESYS_FLAG_CUSTOM_GAMMA + | GENESYS_FLAG_HALF_CCD_MODE, 20, 132 }; @@ -658,7 +666,8 @@ static Genesys_Model hp3670c_model = { DAC_WOLFSON_UMAX, GPO_UMAX, MOTOR_UMAX, - GENESYS_FLAG_UNTESTED, /* Which flags are needed for this scanner? */ + GENESYS_FLAG_UNTESTED /* Which flags are needed for this scanner? */ + | GENESYS_FLAG_HALF_CCD_MODE, /* untested, values set by mike p. according to vendor's datasheet. */ 20, 200 @@ -700,7 +709,9 @@ static Genesys_Model plustek_st12_model = { DAC_WOLFSON_ST12, GPO_ST12, MOTOR_UMAX, - GENESYS_FLAG_UNTESTED | GENESYS_FLAG_14BIT_GAMMA, /* Which flags are needed for this scanner? */ + GENESYS_FLAG_UNTESTED /* Which flags are needed for this scanner? */ + | GENESYS_FLAG_14BIT_GAMMA + | GENESYS_FLAG_HALF_CCD_MODE, 20, 200 }; @@ -746,7 +757,9 @@ static Genesys_Model plustek_st24_model = { | GENESYS_FLAG_LAZY_INIT | GENESYS_FLAG_USE_PARK | GENESYS_FLAG_SKIP_WARMUP - | GENESYS_FLAG_SEARCH_START | GENESYS_FLAG_OFFSET_CALIBRATION, + | GENESYS_FLAG_SEARCH_START + | GENESYS_FLAG_OFFSET_CALIBRATION + | GENESYS_FLAG_HALF_CCD_MODE, 20, 200 }; @@ -795,7 +808,8 @@ static Genesys_Model medion_md5345_model = { | GENESYS_FLAG_DARK_CALIBRATION | GENESYS_FLAG_STAGGERED_LINE | GENESYS_FLAG_OFFSET_CALIBRATION - | GENESYS_FLAG_CUSTOM_GAMMA, + | GENESYS_FLAG_CUSTOM_GAMMA + | GENESYS_FLAG_HALF_CCD_MODE, 32, 200 }; diff --git a/backend/genesys_gl841.c b/backend/genesys_gl841.c index e863fc44c..d9af5ab5b 100644 --- a/backend/genesys_gl841.c +++ b/backend/genesys_gl841.c @@ -2733,7 +2733,8 @@ independent of our calculated values: /* half_ccd */ /* we have 2 domains for ccd: xres below or above half ccd max dpi */ - if (dev->sensor.optical_res < 2 * xres) { + if (dev->sensor.optical_res < 2 * xres || + !(dev->model->flags & GENESYS_FLAG_HALF_CCD_MODE)) { half_ccd = SANE_FALSE; } else { half_ccd = SANE_TRUE; diff --git a/backend/genesys_low.h b/backend/genesys_low.h index 4c8a87925..2d3db9ba6 100644 --- a/backend/genesys_low.h +++ b/backend/genesys_low.h @@ -103,6 +103,8 @@ #define GENESYS_FLAG_EMAIL_SW (1 << 17) /* scanner has EMAIL button */ #define GENESYS_FLAG_PAGE_LOADED_SW (1 << 18) /* scanner has paper in detection */ +#define GENESYS_FLAG_HALF_CCD_MODE (1 << 19) /* scanner has setting for half ccd mode */ + /* USB control message values */ #define REQUEST_TYPE_IN (USB_TYPE_VENDOR | USB_DIR_IN) #define REQUEST_TYPE_OUT (USB_TYPE_VENDOR | USB_DIR_OUT)