HP2400 support from Alexey Osipov <simba@lerlan.ru>

- applied and tweaked a patch from Alexey Osipov to complete
HP2400 support
merge-requests/1/head
Stphane Voltz 2011-06-13 21:52:05 +02:00
rodzic b750f1715c
commit 245db82a37
6 zmienionych plików z 82 dodań i 25 usunięć

Wyświetl plik

@ -1,3 +1,9 @@
2011-06-13 Stéphane Voltz <stef.dev@free.fr>
* backend/genesys_devices.c backend/genesys_gl646.c
backend/genesys_gl646.h doc/descriptions/genesys.desc
doc/sane-genesys.man: add full HP2400 support thanks a patch from
Alexey Osipov <simba@lerlan.ru>
2011-06-13 Stéphane Voltz <stef.dev@free.fr>
* backend/genesys*.[ch] : rework of gl847 to reach 2400 dpi for
LiDE 100 and 4800 dpi for LiDE 200

Wyświetl plik

@ -87,7 +87,8 @@ static Genesys_Frontend Wolfson[] = {
}
, /* 3: MD6228/MD6471 */
{DAC_WOLFSON_HP2400,
{0x00, 0x03, 0x05, 0x02}
/* reg0 reg1 reg2 reg3 */
{0x00, 0x03, 0x05, 0x02} /* reg3=0x02 for 50-600 dpi, 0x32 (0x12 also works well) at 1200 */
, {0x00, 0x00, 0x00}
, {0xb4, 0xb6, 0xbc}
, {0x06, 0x09, 0x08}
@ -768,7 +769,7 @@ static Genesys_Motor Motor[] = {
},
{MOTOR_HP2400, /* HP 2400c */
1200,
2400,
1200,
1,
1,
{{{
@ -1692,9 +1693,9 @@ Genesys_Model hp2400c_model = {
{16, 8, 0}, /* possible depths in gray mode */
{16, 8, 0}, /* possible depths in color mode */
SANE_FIX (3.5), /* Start of scan area in mm (x) */
SANE_FIX (7.5), /* Start of scan area in mm (y) */
SANE_FIX (215.9), /* Size of scan area in mm (x) */
SANE_FIX (6.5), /* Start of scan area in mm (x) */
SANE_FIX (2.5), /* Start of scan area in mm (y) */
SANE_FIX (220.0), /* Size of scan area in mm (x) */
SANE_FIX (297.2), /* Size of scan area in mm (y) */
SANE_FIX (0.0), /* Start of white strip in mm (y) */
@ -1722,10 +1723,8 @@ Genesys_Model hp2400c_model = {
DAC_WOLFSON_HP2400,
GPO_HP2400,
MOTOR_HP2400,
GENESYS_FLAG_UNTESTED /* not fully working yet */
| GENESYS_FLAG_LAZY_INIT
GENESYS_FLAG_LAZY_INIT
| GENESYS_FLAG_14BIT_GAMMA
| GENESYS_FLAG_XPA
| GENESYS_FLAG_DARK_CALIBRATION
| GENESYS_FLAG_OFFSET_CALIBRATION
| GENESYS_FLAG_SKIP_WARMUP

Wyświetl plik

@ -3,9 +3,11 @@
Copyright (C) 2003 Oliver Rauch
Copyright (C) 2003, 2004 Henning Meier-Geinitz <henning@meier-geinitz.de>
Copyright (C) 2004 Gerhard Jaeger <gerhard@gjaeger.de>
Copyright (C) 2004-2009 Stéphane Voltz <stef.dev@free.fr>
Copyright (C) 2004-2011 Stéphane Voltz <stef.dev@free.fr>
Copyright (C) 2005-2009 Pierre Willenbrock <pierre@pirsoft.dnsalias.org>
Copyright (C) 2007 Luke <iceyfor@gmail.com>
Copyright (C) 2011 Alexey Osipov <simba@lerlan.ru> for HP2400 description
and tuning
This file is part of the SANE package.
@ -994,6 +996,27 @@ gl646_setup_registers (Genesys_Device * dev,
/* manual CCD/2 clock programming => half_ccd for hp2300 */
regs[reg_0x1d].value = sensor->reg_0x1d;
/* HP2400 1200dpi mode tuning */
if (dev->model->ccd_type == CCD_HP2400)
{
/* reset count of dummy lines to zero */
regs[reg_0x1e].value &= ~REG1E_LINESEL;
if (scan_settings.xres >= 1200)
{
/* there must be one dummy line */
regs[reg_0x1e].value |= 1 & REG1E_LINESEL;
/* GPO12 need to be set to zero */
regs[reg_0x66].value &= ~0x20;
}
else
{
/* set GPO12 back to one */
regs[reg_0x66].value |= 0x20;
}
}
/* motor steps used */
regs[reg_0x21].value = motor->steps1;
regs[reg_0x22].value = motor->fwdbwd;
@ -1155,6 +1178,31 @@ gl646_setup_registers (Genesys_Device * dev,
break;
}
break;
case MOTOR_HP2400:
switch (motor->ydpi)
{
case 150:
feedl += 150;
break;
case 300:
feedl += 220;
break;
case 600:
feedl += 260;
break;
case 1200:
feedl += 280; /* 300 */
break;
case 50:
feedl += 0;
break;
case 100:
feedl += 100;
break;
default:
break;
}
break;
/* theorical value */
default:
@ -1882,7 +1930,10 @@ gl646_wm_hp3670 (Genesys_Device * dev, uint8_t set, int dpi)
i = dev->frontend.reg[3];
if (dpi > dev->sensor.optical_res / 2)
{
i = i & 0x1f;
/* fe_reg_0x03 must be 0x12 for 1200 dpi in DAC_WOLFSON_HP3670.
* DAC_WOLFSON_HP2400 in 1200 dpi mode works well with
* fe_reg_0x03 set to 0x32 or 0x12 but not to 0x02 */
i = 0x12;
}
status = sanei_genesys_fe_write_data (dev, 0x03, i);
if (status != SANE_STATUS_GOOD)

Wyświetl plik

@ -470,18 +470,18 @@ static Sensor_Master sensor_master[] = {
{CCD_HP3670,2400, SANE_FALSE, 1200, 12750, 1200, 1, 42, NULL, SANE_FALSE, 0x30, 0x43},
/* HP 2400 master settings */
{CCD_HP2400, 50, SANE_TRUE , 50, 675, 200, 4, 42, NULL, SANE_FALSE, 0x3f, 0x02},
{CCD_HP2400, 50, SANE_TRUE , 50, 7211, 200, 4, 42, NULL, SANE_FALSE, 0x3f, 0x02},
{CCD_HP2400, 100, SANE_TRUE , 100, 7211, 400, 4, 42, NULL, SANE_FALSE, 0x3f, 0x02},
{CCD_HP2400, 150, SANE_TRUE , 150, 7211, 600, 4, 42, NULL, SANE_FALSE, 0x3f, 0x02},
{CCD_HP2400, 300, SANE_TRUE , 300, 8751, 1200, 4, 42, NULL, SANE_FALSE, 0x3f, 0x02},
{CCD_HP2400, 600, SANE_TRUE , 1200, 18760, 1200, 2, 42, NULL, SANE_FALSE, 0x3f, 0x02},
{CCD_HP2400,1200, SANE_TRUE , 1200, 18760, 1200, 1, 42, NULL, SANE_FALSE, 0x3f, 0x02},
{CCD_HP2400, 50, SANE_FALSE, 50, 675, 200, 4, 42, NULL, SANE_FALSE, 0x3f, 0x02},
{CCD_HP2400, 600, SANE_TRUE , 600, 18760, 1200, 2, 42, NULL, SANE_FALSE, 0x31, 0x02},
{CCD_HP2400,1200, SANE_TRUE , 1200, 21749, 1200, 1, 42, NULL, SANE_FALSE, 0x30, 0x42},
{CCD_HP2400, 50, SANE_FALSE, 50, 7211, 200, 4, 42, NULL, SANE_FALSE, 0x3f, 0x02},
{CCD_HP2400, 100, SANE_FALSE, 100, 7211, 400, 4, 42, NULL, SANE_FALSE, 0x3f, 0x02},
{CCD_HP2400, 150, SANE_FALSE, 150, 7211, 600, 4, 42, NULL, SANE_FALSE, 0x3f, 0x02},
{CCD_HP2400, 300, SANE_FALSE, 300, 8751, 1200, 4, 42, NULL, SANE_FALSE, 0x3f, 0x02},
{CCD_HP2400, 600, SANE_FALSE, 1200, 18760, 1200, 2, 42, NULL, SANE_FALSE, 0x3f, 0x02},
{CCD_HP2400,1200, SANE_FALSE, 1200, 18760, 1200, 1, 42, NULL, SANE_FALSE, 0x3f, 0x02},
{CCD_HP2400, 600, SANE_FALSE, 600, 18760, 1200, 2, 42, NULL, SANE_FALSE, 0x31, 0x02},
{CCD_HP2400,1200, SANE_FALSE, 1200, 21749, 1200, 1, 42, NULL, SANE_FALSE, 0x30, 0x42},
/* XP 200 master settings */
{CIS_XP200 , 75, SANE_TRUE , 75, 5700, 75, 1, 42, xp200_color, SANE_FALSE, 0x00, 0x11},
@ -558,18 +558,18 @@ static Motor_Master motor_master[] = {
{MOTOR_HP3670,2400, SANE_TRUE ,2400, HALF_STEP, SANE_FALSE, SANE_TRUE , 0, 3, 15937, 12750, 192, 3399, 337, 0.3, 0.4, 192},
/* HP2400/G2410 motor settings base motor dpi = 600 */
{MOTOR_HP2400, 50, SANE_TRUE , 50, HALF_STEP, SANE_FALSE, SANE_FALSE, 63, 4, 1382, 800, 192, 4905, 337, 0.30, 0.4, 192},
{MOTOR_HP2400, 50, SANE_TRUE , 50, FULL_STEP, SANE_FALSE, SANE_TRUE , 63, 120, 8736, 601, 192, 4905, 337, 0.30, 0.4, 192},
{MOTOR_HP2400, 100, SANE_TRUE , 100, HALF_STEP, SANE_FALSE, SANE_TRUE, 63, 120, 8736, 601, 192, 4905, 337, 0.30, 0.4, 192},
{MOTOR_HP2400, 150, SANE_TRUE , 150, HALF_STEP, SANE_FALSE, SANE_TRUE, 63, 120, 8736, 601, 192, 4905, 337, 0.30, 0.4, 192},
{MOTOR_HP2400, 150, SANE_TRUE , 150, HALF_STEP, SANE_FALSE, SANE_TRUE , 63, 67, 15902, 902, 192, 4905, 337, 0.30, 0.4, 192},
{MOTOR_HP2400, 300, SANE_TRUE , 300, HALF_STEP, SANE_FALSE, SANE_TRUE , 63, 32, 16703, 2188, 192, 4905, 337, 0.30, 0.4, 192},
{MOTOR_HP2400, 600, SANE_TRUE , 600, FULL_STEP, SANE_FALSE, SANE_TRUE , 63, 3, 18761, 18761, 192, 4905, 627, 0.30, 0.4, 192},
{MOTOR_HP2400,1200, SANE_TRUE ,1200, HALF_STEP, SANE_FALSE, SANE_TRUE , 63, 3, 18761, 18761, 192, 4905, 627, 0.30, 0.4, 192},
{MOTOR_HP2400, 50, SANE_FALSE, 50, HALF_STEP, SANE_FALSE, SANE_FALSE, 63, 4, 1382, 800, 192, 4905, 337, 0.30, 0.4, 192},
{MOTOR_HP2400,1200, SANE_TRUE ,1200, HALF_STEP, SANE_FALSE, SANE_TRUE , 63, 3, 43501, 43501, 192, 4905, 627, 0.30, 0.4, 192},
{MOTOR_HP2400, 50, SANE_FALSE, 50, FULL_STEP, SANE_FALSE, SANE_TRUE , 63, 120, 8736, 601, 192, 4905, 337, 0.30, 0.4, 192},
{MOTOR_HP2400, 100, SANE_FALSE, 100, HALF_STEP, SANE_FALSE, SANE_TRUE, 63, 120, 8736, 601, 192, 4905, 337, 0.30, 0.4, 192},
{MOTOR_HP2400, 150, SANE_FALSE, 150, HALF_STEP, SANE_FALSE, SANE_TRUE, 63, 120, 8736, 601, 192, 4905, 337, 0.30, 0.4, 192},
{MOTOR_HP2400, 150, SANE_FALSE, 150, HALF_STEP, SANE_FALSE, SANE_TRUE , 63, 67, 15902, 902, 192, 4905, 337, 0.30, 0.4, 192},
{MOTOR_HP2400, 300, SANE_FALSE, 300, HALF_STEP, SANE_FALSE, SANE_TRUE , 63, 32, 16703, 2188, 192, 4905, 337, 0.30, 0.4, 192},
{MOTOR_HP2400, 600, SANE_FALSE, 600, FULL_STEP, SANE_FALSE, SANE_TRUE , 63, 3, 18761, 18761, 192, 4905, 337, 0.30, 0.4, 192},
{MOTOR_HP2400,1200, SANE_FALSE,1200, HALF_STEP, SANE_FALSE, SANE_TRUE , 63, 3, 18761, 18761, 192, 4905, 337, 0.30, 0.4, 192},
{MOTOR_HP2400,1200, SANE_FALSE,1200, HALF_STEP, SANE_FALSE, SANE_TRUE , 63, 3, 43501, 43501, 192, 4905, 337, 0.30, 0.4, 192},
/* XP 200 motor settings */
{MOTOR_XP200, 75, SANE_TRUE, 75, HALF_STEP, SANE_TRUE , SANE_FALSE, 0, 4, 6000, 2136, 8, 12000, 1200, 0.3, 0.5, 1},
@ -663,7 +663,7 @@ static Sensor_Settings sensor_settings[] = {
{CCD_HP2400, 2,
{14, 15, 0, 0},
{14, 15, 0, 0},
{0xbf, 0x08, 0x3f, 0x2a, 0, 0, 0, 0x02},
{0xbf, 0x08, 0x31, 0x2a, 0, 0, 0, 0x02},
{3, 7, 11, 15, 19, 23, 0x23, 0, 0xc1, 0, 0, 0, 0},
{3, 7, 11, 15, 19, 23, 0x23}
},

Wyświetl plik

@ -55,7 +55,7 @@
:model "ScanJet 2400C"
:interface "USB"
:usbid "0x03f0" "0x0a01"
:status :untested
:status :complete
:comment "1200x1200 dpi max"
:model "ScanJet G2410"

Wyświetl plik

@ -12,7 +12,7 @@ At present, the following scanners are known to work with this backend:
.RS
Canon LiDE 35/40/50/60/100/110/200/210
.br
Hewlett-Packard HP2300C/HP3670/HP3690
Hewlett-Packard HP2300C/HP2400/HP3670/HP3690
.br
Medion MD5345/MD6228/MD6274
.br
@ -249,6 +249,7 @@ Philipp Schmid <philipp8288@web.de>
.br
Pierre Willenbrock <pierre@pirsoft.dnsalias.org>
.br
Alexey Osipov <simba@lerlan.ru> for HP2400 final support
.SH "LIMITATIONS"