From 2df86f551f128248550485ec26dbe07f6fdb64dc Mon Sep 17 00:00:00 2001 From: Povilas Kanapickas Date: Sun, 4 Aug 2019 13:17:51 +0300 Subject: [PATCH] genesys: Fix incorrect dpi computation for G4050 --- backend/genesys_gl843.cc | 25 ++++++++----------------- 1 file changed, 8 insertions(+), 17 deletions(-) diff --git a/backend/genesys_gl843.cc b/backend/genesys_gl843.cc index 97e10bb32..b75051c93 100644 --- a/backend/genesys_gl843.cc +++ b/backend/genesys_gl843.cc @@ -1975,11 +1975,7 @@ static void gl843_begin_scan(Genesys_Device* dev, const Genesys_Sensor& sensor, Genesys_Register_Set* reg, SANE_Bool start_motor) { DBG_HELPER(dbg); - uint16_t dpiset, dpihw; - - // get back the target dpihw - dpiset = reg->get16(REG_DPISET); - dpihw = sensor.get_register_hwdpi(dpiset); + (void) sensor; /* set up GPIO for scan */ switch(dev->model->gpo_type) @@ -1995,18 +1991,13 @@ static void gl843_begin_scan(Genesys_Device* dev, const Genesys_Sensor& sensor, dev->write_register(REGA7, 0xfe); dev->write_register(REGA8, 0x3e); dev->write_register(REGA9, 0x06); - switch (dpihw) - { - case 1200: - case 2400: - case 4800: - dev->write_register(REG6C, 0x60); - dev->write_register(REGA6, 0x46); - break; - default: /* 600 dpi case */ - dev->write_register(REG6C, 0x20); - dev->write_register(REGA6, 0x44); - } + if ((reg->get8(0x05) & REG05_DPIHW) == REG05_DPIHW_600) { + dev->write_register(REG6C, 0x20); + dev->write_register(REGA6, 0x44); + } else { + dev->write_register(REG6C, 0x60); + dev->write_register(REGA6, 0x46); + } if (reg->state.is_xpa_on && reg->state.is_lamp_on) { gl843_set_xpa_lamp_power(dev, true);