Merge branch 'genesys'

merge-requests/1/head
Stphane Voltz 2010-02-12 14:18:23 +01:00
commit 1079cfdde9
4 zmienionych plików z 131 dodań i 86 usunięć

Wyświetl plik

@ -3170,8 +3170,6 @@ genesys_send_shading_coefficient (Genesys_Device * dev)
target_code);
break;
case CCD_5345:
case CCD_HP2400:
case CCD_HP3670:
target_code = 0xe000;
o = 4;
if(dev->settings.xres<=dev->sensor.optical_res/2)
@ -3190,6 +3188,23 @@ genesys_send_shading_coefficient (Genesys_Device * dev)
coeff,
target_code);
break;
case CCD_HP3670:
case CCD_HP2400:
target_code = 0xe000;
/* 0, 20 KO, -20 ~OK ?*/
o = -20;
cmat[0] = 0;
cmat[1] = 1;
cmat[2] = 2;
compute_coefficients (dev,
shading_data,
pixels_per_line,
3,
cmat,
o,
coeff,
target_code);
break;
case CCD_CANONLIDE35:
target_bright = 0xfa00;
target_dark = 0xa00;

Wyświetl plik

@ -85,10 +85,10 @@ static Genesys_Frontend Wolfson[] = {
}
, /* 3: MD6228/MD6471 */
{DAC_WOLFSON_HP2400,
{0x00, 0x03, 0x04, 0x02}
{0x00, 0x03, 0x05, 0x02}
, {0x00, 0x00, 0x00}
, {0xc0, 0xc0, 0xc0}
, {0x07, 0x07, 0x07}
, {0xb4, 0xb6, 0xbc}
, {0x06, 0x09, 0x08}
, {0x00, 0x00, 0x00}
}
, /* 4: HP2400c */
@ -121,12 +121,12 @@ static Genesys_Frontend Wolfson[] = {
, {0x07, 0x00, 0x00}
}
, /* 8: HP3670 */
{DAC_WOLFSON_HP3670, /* uses one write for offset or gain like hp2300/2400 */
{DAC_WOLFSON_HP3670,
/* reg0 reg1 reg2 reg3 */
{0x00, 0x03, 0x04, 0x02}
{0x00, 0x03, 0x05, 0x32} /* reg3=0x32 for 100-300 dpi, 0x12 at 1200 */
, {0x00, 0x00, 0x00} /* sign */
, {0xb0, 0xb0, 0xb0} /* offset */
, {0x07, 0x07, 0x07} /* gain */
, {0xba, 0xb8, 0xb8} /* offset */
, {0x06, 0x05, 0x04} /* gain 4,3,2 at 1200 ?*/
, {0x00, 0x00, 0x00}
}
,
@ -976,9 +976,7 @@ Genesys_Model hp2400c_model = {
| GENESYS_FLAG_14BIT_GAMMA
| GENESYS_FLAG_DARK_CALIBRATION
| GENESYS_FLAG_OFFSET_CALIBRATION
| GENESYS_FLAG_CUSTOM_GAMMA
| GENESYS_FLAG_SKIP_WARMUP
| GENESYS_FLAG_NO_CALIBRATION,
| GENESYS_FLAG_CUSTOM_GAMMA,
GENESYS_HAS_NO_BUTTONS, /* no buttons supported */
20,
132
@ -1044,15 +1042,16 @@ static Genesys_Model hp3670c_model = {
GENESYS_GL646,
NULL,
{1200, 600, 300, 150, 100, 50, 0}, /* possible x-resolutions */
{1200, 600, 300, 150, 100, 50, 0}, /* possible y-resolutions */
{1200, 600, 300, 150, 100, 75, 0}, /* possible x-resolutions */
{1200, 600, 300, 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 (0.0), /* Start of scan area in mm (x) */
SANE_FIX (7.5), /* Start of scan area in mm (y) */
SANE_FIX (8.5), /* Start of scan area in mm (x) */
SANE_FIX (0.0), /* Start of scan area in mm (y) */
/* SANE_FIX (14.0), Start of scan area in mm (y) */
SANE_FIX (215.9), /* Size of scan area in mm (x) */
SANE_FIX (310.0), /* Size of scan area in mm (y) */
SANE_FIX (300.0), /* Size of scan area in mm (y) */
SANE_FIX (0.0), /* Start of white strip in mm (y) */
SANE_FIX (1.0), /* Start of black mark in mm (x) */
@ -1083,6 +1082,7 @@ static Genesys_Model hp3670c_model = {
| GENESYS_FLAG_14BIT_GAMMA
| GENESYS_FLAG_DARK_CALIBRATION
| GENESYS_FLAG_OFFSET_CALIBRATION
| GENESYS_FLAG_SKIP_WARMUP
| GENESYS_FLAG_NO_CALIBRATION
| GENESYS_FLAG_CUSTOM_GAMMA,
GENESYS_HAS_NO_BUTTONS,
@ -1224,7 +1224,6 @@ static Genesys_Model medion_md5345_model = {
after finishing scanning in mm */
48, 24, 0, /* RGB CCD Line-distance correction in pixel */
/* 48, 24, 0, */
COLOR_ORDER_RGB, /* Order of the CCD/CIS colors */
SANE_FALSE, /* Is this a CIS scanner? */

Wyświetl plik

@ -1115,7 +1115,7 @@ gl646_setup_registers (Genesys_Device * dev,
RIE (write_control (dev, xresolution));
/* setup analog frontend */
RIE (gl646_set_fe (dev, AFE_SET));
RIE (gl646_set_fe (dev, AFE_SET, xresolution));
/* now we're done with registers setup values used by data transfer */
/* we setup values needed for the data transfer */
@ -1677,19 +1677,19 @@ gl646_set_ad_fe (Genesys_Device * dev, uint8_t set)
* set up analog frontend
* @param dev device to set up
* @param set action from AFE_SET, AFE_INIT and AFE_POWERSAVE
* @param dpi resolution of the scan since it affects settings
* @return SANE_STATUS_GOOD if evrithing OK
*/
static SANE_Status
gl646_wm_hp3670 (Genesys_Device * dev, uint8_t set)
gl646_wm_hp3670 (Genesys_Device * dev, uint8_t set, int dpi)
{
SANE_Status status = SANE_STATUS_GOOD;
int i;
DBG (DBG_proc, "gl646_wm_hp3670: start \n");
switch (set)
{
case AFE_INIT:
sanei_genesys_init_fe (dev);
RIE(sanei_genesys_write_register (dev, 0x50, 0x00));
status = sanei_genesys_fe_write_data (dev, 0x04, 0x80);
if (status != SANE_STATUS_GOOD)
{
@ -1698,6 +1698,8 @@ gl646_wm_hp3670 (Genesys_Device * dev, uint8_t set)
return status;
}
usleep (200000UL);
RIE (sanei_genesys_write_register (dev, 0x50, 0x00));
sanei_genesys_init_fe (dev);
status = sanei_genesys_fe_write_data (dev, 0x01, dev->frontend.reg[1]);
if (status != SANE_STATUS_GOOD)
{
@ -1705,7 +1707,6 @@ gl646_wm_hp3670 (Genesys_Device * dev, uint8_t set)
sane_strstatus (status));
return status;
}
/* b2 INVOP : set positive polarity output */
status = sanei_genesys_fe_write_data (dev, 0x02, dev->frontend.reg[2]);
if (status != SANE_STATUS_GOOD)
{
@ -1713,17 +1714,15 @@ gl646_wm_hp3670 (Genesys_Device * dev, uint8_t set)
sane_strstatus (status));
return status;
}
status = gl646_gpio_output_enable (dev->dn, 0x07);
if (status != SANE_STATUS_GOOD)
{
DBG (DBG_error,
"gl646_set_fe: failed to enable GPIO: %s\n",
sane_strstatus (status));
return status;
}
status = gl646_gpio_output_enable (dev->dn, 0x07);
if (status != SANE_STATUS_GOOD)
{
DBG (DBG_error, "gl646_wm_hp3670: failed to enable GPIO: %s\n",
sane_strstatus (status));
return status;
}
break;
case AFE_POWER_SAVE:
/*
status = sanei_genesys_fe_write_data (dev, 0x01, 0x06);
if (status != SANE_STATUS_GOOD)
{
@ -1737,42 +1736,57 @@ gl646_wm_hp3670 (Genesys_Device * dev, uint8_t set)
DBG (DBG_error, "gl646_wm_hp3670: writing reg6 failed: %s\n",
sane_strstatus (status));
return status;
} */
}
return status;
break;
default: /* AFE_SET */
/* mode setup */
/* bit 3:0 RLCV */
status = sanei_genesys_fe_write_data (dev, 0x03, dev->frontend.reg[3]);
i = dev->frontend.reg[3];
if (dpi > dev->sensor.optical_res / 2)
{
i = i & 0x1f;
}
status = sanei_genesys_fe_write_data (dev, 0x03, i);
if (status != SANE_STATUS_GOOD)
{
DBG (DBG_error, "gl646_wm_hp3670: writing reg3 failed: %s\n",
sane_strstatus (status));
return status;
}
/* offset 0x23 */
status = sanei_genesys_fe_write_data (dev, 0x28, dev->frontend.offset[0]);
if (status != SANE_STATUS_GOOD)
/* offset and sign (or msb/lsb ?) */
for (i = 0; i < 3; i++)
{
DBG (DBG_error, "gl646_wm_hp3670: writing offset failed: %s\n",
sane_strstatus (status));
return status;
status =
sanei_genesys_fe_write_data (dev, 0x20 + i,
dev->frontend.offset[i]);
if (status != SANE_STATUS_GOOD)
{
DBG (DBG_error,
"gl646_wm_hp3670: writing offset%d failed: %s\n", i,
sane_strstatus (status));
return status;
}
status = sanei_genesys_fe_write_data (dev, 0x24 + i, dev->frontend.sign[i]); /* MSB/LSB ? */
if (status != SANE_STATUS_GOOD)
{
DBG (DBG_error, "gl646_wm_hp3670: writing sign%d failed: %s\n",
i, sane_strstatus (status));
return status;
}
}
/* gain 0x28 */
status = sanei_genesys_fe_write_data (dev, 0x23, dev->frontend.gain[0]);
if (status != SANE_STATUS_GOOD)
/* gain */
for (i = 0; i < 3; i++)
{
DBG (DBG_error, "gl646_wm_hp3670: writing gain failed: %s\n",
sane_strstatus (status));
return status;
}
/* mode setup */
status = sanei_genesys_fe_write_data (dev, 0x01, dev->frontend.reg[1]);
if (status != SANE_STATUS_GOOD)
{
DBG (DBG_error, "gl646_wm_hp3670: writing reg1 failed: %s\n",
sane_strstatus (status));
return status;
status =
sanei_genesys_fe_write_data (dev, 0x28 + i,
dev->frontend.gain[i]);
if (status != SANE_STATUS_GOOD)
{
DBG (DBG_error, "gl646_wm_hp3670: writing gain%d failed: %s\n",
i, sane_strstatus (status));
return status;
}
}
}
@ -1780,17 +1794,24 @@ gl646_wm_hp3670 (Genesys_Device * dev, uint8_t set)
return status;
}
/* Set values of analog frontend */
/** Set values of analog frontend
* @param dev device to set
* @param set action to execute
* @param dpi dpi to setup the AFE
* @return error or SANE_STATUS_GOOD */
#ifndef UNIT_TESTING
static
#endif
SANE_Status
gl646_set_fe (Genesys_Device * dev, uint8_t set)
gl646_set_fe (Genesys_Device * dev, uint8_t set, int dpi)
{
SANE_Status status;
int i;
uint8_t val;
DBG (DBG_proc, "gl646_set_fe (%s)\n",
DBG (DBG_proc, "gl646_set_fe (%s,%d)\n",
set == AFE_INIT ? "init" : set == AFE_SET ? "set" : set ==
AFE_POWER_SAVE ? "powersave" : "huh?");
AFE_POWER_SAVE ? "powersave" : "huh?", dpi);
/* Analog Device type frontend */
if ((dev->reg[reg_0x04].value & REG04_FESET) == 0x02)
@ -1809,7 +1830,7 @@ gl646_set_fe (Genesys_Device * dev, uint8_t set)
{
case DAC_WOLFSON_HP3670:
case DAC_WOLFSON_HP2400:
return gl646_wm_hp3670 (dev, set);
return gl646_wm_hp3670 (dev, set, dpi);
break;
default:
DBG (DBG_proc, "gl646_set_fe(): using old method\n");
@ -1967,6 +1988,18 @@ gl646_set_fe (Genesys_Device * dev, uint8_t set)
return SANE_STATUS_GOOD;
}
/** Set values of analog frontend
* this this the public interface, the gl646 as to use one more
* parameter to work effectively, hence the redirection
* @param dev device to set
* @param set action to execute
* @return error or SANE_STATUS_GOOD */
SANE_Status
gl646_public_set_fe (Genesys_Device * dev, uint8_t set)
{
return gl646_set_fe(dev,set,dev->settings.yres);
}
static void
gl646_set_motor_power (Genesys_Register_Set * regs, SANE_Bool set)
{
@ -2009,6 +2042,7 @@ gl646_set_lamp_power (Genesys_Device * dev,
/**
* enters or leaves power saving mode
* limited to AFE for now.
* @param dev scanner's device
* @param SANE_TRUE to enable power saving, SANE_FALSE to leave it
* @return allways SANE_STATUS_GOOD
@ -2028,12 +2062,9 @@ SANE_Status gl646_save_power (Genesys_Device * dev, SANE_Bool enable)
}
else
{
/* gl646_set_fe (dev, AFE_INIT); */
gl646_set_fe (dev, AFE_INIT, 0);
}
/* to make compiler happy */
gl646_set_fe (dev, AFE_SET);
DBG (DBG_proc, "gl646_save_power: end\n");
return SANE_STATUS_GOOD;
}
@ -2798,8 +2829,8 @@ gl646_slow_back_home (Genesys_Device * dev, SANE_Bool wait_until_home)
/* setup for a backward scan of 65535 steps, with no actual data reading */
settings.scan_method = SCAN_METHOD_FLATBED;
settings.scan_mode = SCAN_MODE_COLOR;
settings.xres = 75;
settings.yres = 75;
settings.xres = get_closest_resolution (dev->model->ccd_type, 75, SANE_FALSE);
settings.yres = settings.xres;
settings.tl_x = 0;
settings.tl_y = 0;
settings.pixels = 600;
@ -2819,7 +2850,7 @@ gl646_slow_back_home (Genesys_Device * dev, SANE_Bool wait_until_home)
gl646_set_triple_reg (dev->reg, REG_FEEDL, 65535);
/* sets frontend */
status = gl646_set_fe (dev, AFE_SET);
status = gl646_set_fe (dev, AFE_SET, settings.xres);
if (status != SANE_STATUS_GOOD)
{
DBG (DBG_error,
@ -3984,6 +4015,7 @@ gl646_coarse_gain_calibration (Genesys_Device * dev, int dpi)
float average[3];
Genesys_Settings settings;
char title[32];
SANE_Bool half_ccd=dev->model->flags & GENESYS_FLAG_HALF_CCD_MODE;
if (dev->model->ccd_type == CIS_XP200)
{
@ -4000,12 +4032,12 @@ gl646_coarse_gain_calibration (Genesys_Device * dev, int dpi)
{
resolution =
get_closest_resolution (dev->model->ccd_type, dev->sensor.optical_res,
SANE_TRUE);
half_ccd);
}
else
{
resolution =
get_closest_resolution (dev->model->ccd_type, dpi, SANE_TRUE);
get_closest_resolution (dev->model->ccd_type, dpi, half_ccd);
}
settings.scan_method = SCAN_METHOD_FLATBED;
@ -4069,7 +4101,7 @@ gl646_coarse_gain_calibration (Genesys_Device * dev, int dpi)
/* log scanning data */
if (DBG_LEVEL >= DBG_data)
{
sprintf (title, "alternative_coarse%02d.pnm", pass);
sprintf (title, "coarse_gain%02d.pnm", pass);
sanei_genesys_write_pnm_file (title, line, 8,
channels, settings.pixels,
settings.lines);
@ -4199,7 +4231,7 @@ gl646_init_regs_for_warmup (Genesys_Device * dev,
*total_size = lines * settings.pixels;
/* now registers are ok, write them to scanner */
RIE (gl646_set_fe (dev, AFE_SET));
RIE (gl646_set_fe (dev, AFE_SET, settings.xres));
RIE (gl646_bulk_write_register (dev, local_reg, GENESYS_GL646_MAX_REGS));
DBG (DBG_proc, "gl646_init_regs_for_warmup: end\n");
@ -4223,8 +4255,8 @@ gl646_repark_head (Genesys_Device * dev)
settings.scan_method = SCAN_METHOD_FLATBED;
settings.scan_mode = SCAN_MODE_COLOR;
settings.xres = 75;
settings.yres = 75;
settings.xres = get_closest_resolution (dev->model->ccd_type, 75, SANE_FALSE);
settings.yres = settings.xres;
settings.tl_x = 0;
settings.tl_y = 5;
settings.pixels = 600;
@ -4441,7 +4473,7 @@ gl646_init (Genesys_Device * dev)
} /* end if cold */
/* Set analog frontend */
RIE (gl646_set_fe (dev, AFE_INIT));
RIE (gl646_set_fe (dev, AFE_INIT, 0));
/* GPO enabling for XP200 */
if (dev->model->ccd_type == CIS_XP200)
@ -4645,7 +4677,7 @@ simple_scan (Genesys_Device * dev, Genesys_Settings settings, SANE_Bool move,
settings.lines = lines;
/* initialize frontend */
status = gl646_set_fe (dev, AFE_SET);
status = gl646_set_fe (dev, AFE_SET, settings.xres);
if (status != SANE_STATUS_GOOD)
{
free (*data);
@ -5272,7 +5304,7 @@ static Genesys_Command_Set gl646_cmd_set = {
gl646_bulk_full_size,
gl646_set_fe,
gl646_public_set_fe,
gl646_set_powersaving,
gl646_save_power,
gl646_set_motor_power,

Wyświetl plik

@ -272,7 +272,7 @@ enum
#ifndef UNIT_TESTING
static
#endif
SANE_Status gl646_set_fe (Genesys_Device * dev, uint8_t set);
SANE_Status gl646_set_fe (Genesys_Device * dev, uint8_t set, int dpi);
/**
* sets up the scanner for a scan, registers, gamma tables, shading tables
@ -431,13 +431,13 @@ typedef struct
/* *INDENT-OFF* */
static Sensor_Master sensor_master[] = {
/* HP3670 master settings */
{CCD_HP3670, 50, SANE_TRUE , 50, 5758, 200, 4, 42, {0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, SANE_FALSE, 0x33, 0x43},
{CCD_HP3670, 75, SANE_TRUE , 75, 4879, 300, 4, 42, {0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, SANE_FALSE, 0x33, 0x43},
{CCD_HP3670, 100, SANE_TRUE , 100, 4487, 400, 4, 42, {0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, SANE_FALSE, 0x33, 0x43},
{CCD_HP3670, 150, SANE_TRUE , 150, 4879, 600, 4, 42, {0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, SANE_FALSE, 0x33, 0x43},
{CCD_HP3670, 300, SANE_TRUE , 300, 4503, 1200, 4, 42, {0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, SANE_FALSE, 0x33, 0x43},
{CCD_HP3670, 600, SANE_TRUE , 600, 10251, 1200, 2, 42, {0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, SANE_FALSE, 0x31, 0x43},
{CCD_HP3670,1200, SANE_TRUE , 1200, 12750, 1200, 1, 42, {0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, SANE_FALSE, 0x30, 0x43},
{CCD_HP3670, 50, SANE_FALSE, 50, 5758, 200, 4, 42, {0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, SANE_FALSE, 0x33, 0x43},
{CCD_HP3670, 75, SANE_FALSE, 75, 4879, 300, 4, 42, {0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, SANE_FALSE, 0x33, 0x43},
{CCD_HP3670, 100, SANE_FALSE, 100, 4487, 400, 4, 42, {0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, SANE_FALSE, 0x33, 0x43},
{CCD_HP3670, 150, SANE_FALSE, 150, 4879, 600, 4, 42, {0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, SANE_FALSE, 0x33, 0x43},
{CCD_HP3670, 300, SANE_FALSE, 300, 4503, 1200, 4, 42, {0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, SANE_FALSE, 0x33, 0x43},
@ -509,19 +509,18 @@ static Sensor_Master sensor_master[] = {
*/
static Motor_Master motor_master[] = {
/* HP3670 motor settings */
{MOTOR_HP3670, 50, SANE_TRUE , 50, HALF_STEP, SANE_FALSE, SANE_TRUE , 1, 229, 2329, 120, 200, 3399, 337, 0.3, 0.5, 192},
{MOTOR_HP3670, 100, SANE_TRUE , 100, HALF_STEP, SANE_FALSE, SANE_TRUE , 1, 143, 2905, 374, 192, 3399, 426, 0.3, 0.4, 192},
{MOTOR_HP3670, 75, SANE_TRUE , 75, FULL_STEP, SANE_FALSE, SANE_TRUE , 1, 73, 3429, 305, 192, 3399, 341, 0.3, 0.4, 192},
{MOTOR_HP3670, 100, SANE_TRUE , 100, HALF_STEP, SANE_FALSE, SANE_TRUE , 1, 143, 2905, 187, 200, 3399, 337, 0.3, 0.4, 96},
{MOTOR_HP3670, 150, SANE_TRUE , 150, HALF_STEP, SANE_FALSE, SANE_TRUE , 1, 73, 3429, 305, 192, 3399, 341, 0.3, 0.4, 192},
{MOTOR_HP3670, 300, SANE_TRUE , 300, HALF_STEP, SANE_FALSE, SANE_TRUE , 1, 11, 1055, 563, 192, 3399, 341, 0.3, 0.4, 192},
{MOTOR_HP3670, 600, SANE_TRUE , 600, FULL_STEP, SANE_FALSE, SANE_TRUE , 0, 3, 10687, 5126, 192, 3399, 341, 0.3, 0.4, 192},
{MOTOR_HP3670,1200, SANE_TRUE ,1200, HALF_STEP, SANE_FALSE, SANE_TRUE , 0, 3, 12751,12751, 192, 3399, 341, 0.3, 0.4, 192},
{MOTOR_HP3670, 50, SANE_FALSE, 50, HALF_STEP, SANE_FALSE, SANE_TRUE , 1, 229, 2329, 120, 192, 3399, 341, 0.3, 0.4, 192},
{MOTOR_HP3670, 100, SANE_FALSE, 100, HALF_STEP, SANE_FALSE, SANE_TRUE , 1, 143, 2905, 187, 192, 3399, 341, 0.3, 0.4, 192},
{MOTOR_HP3670,1200, SANE_TRUE ,1200, HALF_STEP, SANE_FALSE, SANE_TRUE , 0, 3, 15937, 7968, 200, 3399, 337, 0.3, 0.4, 8},
{MOTOR_HP3670, 75, SANE_FALSE, 75, FULL_STEP, SANE_FALSE, SANE_TRUE , 1, 73, 3429, 305, 192, 3399, 341, 0.3, 0.4, 192},
{MOTOR_HP3670, 100, SANE_FALSE, 100, HALF_STEP, SANE_FALSE, SANE_TRUE , 1, 143, 2905, 187, 200, 3399, 337, 0.3, 0.4, 96},
{MOTOR_HP3670, 150, SANE_FALSE, 150, HALF_STEP, SANE_FALSE, SANE_TRUE , 1, 73, 3429, 305, 192, 3399, 341, 0.3, 0.4, 192},
{MOTOR_HP3670, 300, SANE_FALSE, 300, HALF_STEP, SANE_FALSE, SANE_TRUE , 1, 11, 1055, 563, 192, 3399, 341, 0.3, 0.4, 192},
{MOTOR_HP3670, 600, SANE_FALSE, 600, FULL_STEP, SANE_FALSE, SANE_TRUE , 0, 3, 10687, 5126, 192, 3399, 341, 0.3, 0.4, 192},
/* {MOTOR_HP3670,1200, SANE_FALSE,1200, HALF_STEP, SANE_FALSE, SANE_TRUE , 0, 3, 12751,12751, 192, 3399, 341, 0.3, 0.4, 192}, */
{MOTOR_HP3670,1200, SANE_TRUE , 1200, HALF_STEP, SANE_FALSE, SANE_FALSE, 0, 2, 12750, 12750, 2, 5400, 5400, 0.3, 0.4, 8},
{MOTOR_HP3670,1200, SANE_FALSE,1200, HALF_STEP, SANE_FALSE, SANE_TRUE , 0, 3, 12751,12751, 192, 3399, 341, 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, 2, 5400, 5400, 0.25, 0.5, 16},