From 107374b4fecfcaf9e3afabb3f0bdd62b8496277d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?St=C3=A9phane=20Voltz?= Date: Tue, 28 Dec 2010 21:01:46 +0100 Subject: [PATCH] misc genesys updates - add or tune entry for 5600f/700f - fix HP2300 warming up problem --- backend/genesys.conf.in | 6 ++++ backend/genesys_devices.c | 59 ++++++++++++++++++++++++++++++++++++++- backend/genesys_gl646.c | 10 ++++--- backend/genesys_gl847.c | 15 ++++++++-- backend/genesys_gl847.h | 10 +++++++ 5 files changed, 92 insertions(+), 8 deletions(-) diff --git a/backend/genesys.conf.in b/backend/genesys.conf.in index 2902d0006..fd2cd6825 100644 --- a/backend/genesys.conf.in +++ b/backend/genesys.conf.in @@ -45,6 +45,12 @@ usb 0x04a9 0x1909 # Canon LiDE 200 usb 0x04a9 0x1905 +# Canon 5600F +usb 0x04a9 0x1906 + +# Canon LiDE 700F +usb 0x04a9 0x1907 + # Canon LiDE 210 usb 0x04a9 0x190a diff --git a/backend/genesys_devices.c b/backend/genesys_devices.c index 83a81a9b9..c85d9aa1a 100644 --- a/backend/genesys_devices.c +++ b/backend/genesys_devices.c @@ -1447,7 +1447,8 @@ static Genesys_Model canon_5600f_model = { DAC_CANONLIDE200, GPO_CANONLIDE200, MOTOR_CANONLIDE200, - GENESYS_FLAG_SKIP_WARMUP + GENESYS_FLAG_UNTESTED /* not working yet */ + | GENESYS_FLAG_SKIP_WARMUP | GENESYS_FLAG_ODD_EVEN_CIS | GENESYS_FLAG_OFFSET_CALIBRATION | GENESYS_FLAG_DARK_CALIBRATION @@ -1457,6 +1458,60 @@ static Genesys_Model canon_5600f_model = { 400 }; +static Genesys_Model canon_lide_700f_model = { + "canon-lide-700f", /* Name */ + "Canon", /* Device vendor string */ + "LiDE 700F", /* Device model name */ + GENESYS_GL847, + NULL, + + {1200, 600, 400, 300, 200, 150, 100, 75, 0}, /* possible x-resolutions */ + {1200, 600, 400, 300, 200, 150, 100, 75, 0}, /* possible y-resolutions */ + {16, 8, 0}, /* possible depths in gray mode */ + {16, 8, 0}, /* possible depths in color mode */ + + SANE_FIX (1.1), /* Start of scan area in mm (x) */ + SANE_FIX (8.3), /* Start of scan area in mm (y) */ + SANE_FIX (216.07), /* Size of scan area in mm (x) */ + SANE_FIX (299.0), /* Size of scan area in mm (y) */ + + SANE_FIX (3.0), /* Start of white strip in mm (y) */ + SANE_FIX (0.0), /* Start of black mark in mm (x) */ + + SANE_FIX (0.0), /* Start of scan area in TA mode in mm (x) */ + SANE_FIX (0.0), /* Start of scan area in TA mode in mm (y) */ + SANE_FIX (100.0), /* Size of scan area in TA mode in mm (x) */ + SANE_FIX (100.0), /* Size of scan area in TA mode in mm (y) */ + + SANE_FIX (0.0), /* Start of white strip in TA mode in mm (y) */ + + SANE_FIX (0.0), /* Size of scan area after paper sensor stops + sensing document in mm */ + SANE_FIX (0.0), /* Amount of feeding needed to eject document + after finishing scanning in mm */ + + 0, 0, 0, /* RGB CCD Line-distance correction in pixel */ + + COLOR_ORDER_RGB, /* Order of the CCD/CIS colors */ + + SANE_TRUE, /* Is this a CIS scanner? */ + SANE_FALSE, /* Is this a sheetfed scanner? */ + CIS_CANONLIDE200, + DAC_CANONLIDE200, + GPO_CANONLIDE200, + MOTOR_CANONLIDE200, + GENESYS_FLAG_UNTESTED /* not working yet */ + | GENESYS_FLAG_SKIP_WARMUP + | GENESYS_FLAG_ODD_EVEN_CIS + | GENESYS_FLAG_OFFSET_CALIBRATION + | GENESYS_FLAG_DARK_CALIBRATION + | GENESYS_FLAG_CUSTOM_GAMMA, + GENESYS_HAS_SCAN_SW | GENESYS_HAS_COPY_SW | GENESYS_HAS_EMAIL_SW | GENESYS_HAS_FILE_SW, + 60, + 400 +}; + + static Genesys_Model canon_lide_200_model = { "canon-lide-200", /* Name */ @@ -1608,6 +1663,7 @@ static Genesys_Model hp2300c_model = { GPO_HP2300, MOTOR_HP2300, GENESYS_FLAG_14BIT_GAMMA + | GENESYS_FLAG_SKIP_WARMUP | GENESYS_FLAG_LAZY_INIT | GENESYS_FLAG_SEARCH_START | GENESYS_FLAG_DARK_CALIBRATION @@ -2658,6 +2714,7 @@ static Genesys_USB_Device_Entry genesys_usb_device_list[] = { {0x04a9, 0x1904, &canon_lide_100_model}, {0x04a9, 0x1905, &canon_lide_200_model}, {0x04a9, 0x1906, &canon_5600f_model}, + {0x04a9, 0x1907, &canon_lide_700f_model}, /* GL843 devices */ {0x04da, 0x100f, &panasonic_kvss080_model}, {0x03f0, 0x4505, &hpg4010_model}, diff --git a/backend/genesys_gl646.c b/backend/genesys_gl646.c index c56ebd7fe..ba31f9f58 100644 --- a/backend/genesys_gl646.c +++ b/backend/genesys_gl646.c @@ -4497,13 +4497,16 @@ gl646_init_regs_for_warmup (Genesys_Device * dev, dev->reg[reg_0x01].value &= ~REG01_DVDSET; /* XXX STEF XXX dev->reg[reg_0x05].value &= ~REG05_GMMENB; */ + + /* copy to local_reg */ + memcpy (local_reg, dev->reg, (GENESYS_GL646_MAX_REGS + 1) * sizeof (Genesys_Register_Set)); /* turn off motor during this scan */ gl646_set_motor_power (local_reg, SANE_FALSE); /* returned value to higher level warmup function */ *channels = 1; - lines = gl646_get_triple_reg (dev->reg, REG_LINCNT) + 1; + lines = gl646_get_triple_reg (local_reg, REG_LINCNT) + 1; *total_size = lines * settings.pixels; /* now registers are ok, write them to scanner */ @@ -5512,12 +5515,11 @@ gl646_is_compatible_calibration (Genesys_Device * dev, return SANE_STATUS_UNSUPPORTED; } - /* a cache entry expires after 30 minutes for non CIS scanners */ + /* a cache entry expires after 30 minutes for non sheetfed scanners */ #ifdef HAVE_SYS_TIME_H gettimeofday (&time, NULL); if ((time.tv_sec - cache->last_calibration > 30 * 60) - && (dev->model->is_cis == SANE_FALSE) - && (dev->settings.scan_method == SCAN_METHOD_FLATBED)) + && (dev->model->is_sheetfed == SANE_FALSE)) { DBG (DBG_proc, "gl646_is_compatible_calibration: expired entry, non compatible cache\n"); diff --git a/backend/genesys_gl847.c b/backend/genesys_gl847.c index ca2219239..2ba6bb542 100644 --- a/backend/genesys_gl847.c +++ b/backend/genesys_gl847.c @@ -3975,15 +3975,24 @@ gl847_init_memory_layout (Genesys_Device * dev) DBG (DBG_proc, "gl847_init_memory_layout\n"); - /* point ot per model meory layout */ + /* point to per model memory layout */ + idx = 0; if (strcmp (dev->model->name, "canon-lide-100") == 0) { idx = 0; } - else - { /* canon LiDE 200 case */ + if (strcmp (dev->model->name, "canon-lide-200") == 0) + { idx = 1; } + if (strcmp (dev->model->name, "canon-5600f") == 0) + { + idx = 2; + } + if (strcmp (dev->model->name, "canon-lide-700f") == 0) + { + idx = 3; + } /* setup base address for shading data. */ /* values must be multiplied by 8192=0x4000 to give address on AHB */ diff --git a/backend/genesys_gl847.h b/backend/genesys_gl847.h index b54ebcc8a..451c90ec2 100644 --- a/backend/genesys_gl847.h +++ b/backend/genesys_gl847.h @@ -487,6 +487,16 @@ static Memory_layout layouts[]={ 0x00, 0xac, 0x02, 0x55, 0x02, 0x56, 0x03, 0xff }, /* LIDE 200 */ + { + 0x0a, 0x1f, 0x34, + 0x01, 0x24, 0x02, 0x91, 0x02, 0x92, 0x03, 0xff + }, + /* 5600F */ + { + 0x0a, 0x1f, 0x34, + 0x01, 0x24, 0x02, 0x91, 0x02, 0x92, 0x03, 0xff + }, + /* LIDE 700F */ { 0x0a, 0x1f, 0x34, 0x01, 0x24, 0x02, 0x91, 0x02, 0x92, 0x03, 0xff