kopia lustrzana https://gitlab.com/sane-project/backends
HP2400 support from Alexey Osipov <simba@lerlan.ru>
- applied and tweaked a patch from Alexey Osipov to complete HP2400 supportmerge-requests/1/head
rodzic
b750f1715c
commit
245db82a37
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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}
|
||||
},
|
||||
|
|
|
@ -55,7 +55,7 @@
|
|||
:model "ScanJet 2400C"
|
||||
:interface "USB"
|
||||
:usbid "0x03f0" "0x0a01"
|
||||
:status :untested
|
||||
:status :complete
|
||||
:comment "1200x1200 dpi max"
|
||||
|
||||
:model "ScanJet G2410"
|
||||
|
|
|
@ -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"
|
||||
|
||||
|
|
Ładowanie…
Reference in New Issue