From 2316b35a6060c8fa75e5c5ca0060a2fa778df7c9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?St=C3=A9phane=20Voltz?= Date: Mon, 25 Jan 2010 06:39:23 +0100 Subject: [PATCH] working version of AFE setting for HP3670 like scanners --- backend/genesys_devices.c | 7 ++++--- backend/genesys_gl646.c | 16 ++++++++-------- 2 files changed, 12 insertions(+), 11 deletions(-) diff --git a/backend/genesys_devices.c b/backend/genesys_devices.c index dce1d2f3a..cc405988c 100644 --- a/backend/genesys_devices.c +++ b/backend/genesys_devices.c @@ -120,10 +120,11 @@ static Genesys_Frontend Wolfson[] = { } , /* 8: HP3670 */ {DAC_WOLFSON_HP3670, /* uses one write for offset or gain like hp2300/2400 */ + /* reg0 reg1 reg2 reg3 */ {0x00, 0x03, 0x04, 0x02} - , {0x00, 0x00, 0x00} - , {0xb4, 0xb4, 0xb4} - , {0x08, 0x08, 0x08} + , {0x00, 0x00, 0x00} /* sign */ + , {0x20, 0x20, 0x20} /* offset */ + , {0x20, 0x20, 0x20} /* gain */ , {0x00, 0x00, 0x00} } , diff --git a/backend/genesys_gl646.c b/backend/genesys_gl646.c index 4693b6834..ffc9c259c 100644 --- a/backend/genesys_gl646.c +++ b/backend/genesys_gl646.c @@ -1002,7 +1002,7 @@ gl646_setup_registers (Genesys_Device * dev, /* in fact, wpl _gives_ the actual scan resolution */ wpl = (((endx - - startx) * sensor->xdpi) / dev->sensor.optical_res) * sensor->cksel; + startx) * sensor->xdpi * sensor->cksel) / dev->sensor.optical_res); if (depth == 16) wpl *= 2; if (dev->model->is_cis == SANE_FALSE) @@ -1726,7 +1726,7 @@ gl646_wm_hp3670 (Genesys_Device * dev, uint8_t set) sane_strstatus (status)); return status; } - status = sanei_genesys_fe_write_data (dev, 0x01, 0x03); + 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", @@ -1734,7 +1734,7 @@ gl646_wm_hp3670 (Genesys_Device * dev, uint8_t set) return status; } /* b2 INVOP : set positive polarity output */ - status = sanei_genesys_fe_write_data (dev, 0x02, 0x04); + status = sanei_genesys_fe_write_data (dev, 0x02, dev->frontend.reg[2]); if (status != SANE_STATUS_GOOD) { DBG (DBG_error, "gl646_wm_hp3670: writing reg2 failed: %s\n", @@ -1755,8 +1755,8 @@ gl646_wm_hp3670 (Genesys_Device * dev, uint8_t set) break; default: /* AFE_SET */ /* mode setup */ - /* bit 3:0 RLCV ? */ - status = sanei_genesys_fe_write_data (dev, 0x03, 0x02); + /* bit 3:0 RLCV */ + status = sanei_genesys_fe_write_data (dev, 0x03, dev->frontend.reg[3]); if (status != SANE_STATUS_GOOD) { DBG (DBG_error, "gl646_wm_hp3670: writing reg3 failed: %s\n", @@ -1764,7 +1764,7 @@ gl646_wm_hp3670 (Genesys_Device * dev, uint8_t set) return status; } /* offset 30 ~ */ - status = sanei_genesys_fe_write_data (dev, 0x23, 0x28); + status = sanei_genesys_fe_write_data (dev, 0x23, dev->frontend.offset[0]); if (status != SANE_STATUS_GOOD) { DBG (DBG_error, "gl646_wm_hp3670: writing offset failed: %s\n", @@ -1772,7 +1772,7 @@ gl646_wm_hp3670 (Genesys_Device * dev, uint8_t set) return status; } /* gain */ - status = sanei_genesys_fe_write_data (dev, 0x28, 0x08); + status = sanei_genesys_fe_write_data (dev, 0x28, dev->frontend.gain[0]); if (status != SANE_STATUS_GOOD) { DBG (DBG_error, "gl646_wm_hp3670: writing gain failed: %s\n", @@ -1780,7 +1780,7 @@ gl646_wm_hp3670 (Genesys_Device * dev, uint8_t set) return status; } /* mode setup */ - status = sanei_genesys_fe_write_data (dev, 0x01, 0x03); + 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",