diff --git a/backend/genesys.c b/backend/genesys.c index ceecdea9e..7f5fc1592 100644 --- a/backend/genesys.c +++ b/backend/genesys.c @@ -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; diff --git a/backend/genesys_devices.c b/backend/genesys_devices.c index a2d1b6e7a..759f643fa 100644 --- a/backend/genesys_devices.c +++ b/backend/genesys_devices.c @@ -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? */ diff --git a/backend/genesys_gl646.c b/backend/genesys_gl646.c index e5c288a1f..6c99b07a8 100644 --- a/backend/genesys_gl646.c +++ b/backend/genesys_gl646.c @@ -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, diff --git a/backend/genesys_gl646.h b/backend/genesys_gl646.h index d0eb2e505..98929659b 100644 --- a/backend/genesys_gl646.h +++ b/backend/genesys_gl646.h @@ -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},