diff --git a/backend/genesys/gl847.cpp b/backend/genesys/gl847.cpp index d440b96c8..3e00322a8 100644 --- a/backend/genesys/gl847.cpp +++ b/backend/genesys/gl847.cpp @@ -528,10 +528,6 @@ static void gl847_init_optical_regs_scan(Genesys_Device* dev, const Genesys_Sens DBG_HELPER_ARGS(dbg, "exposure_time=%d", exposure_time); GenesysRegister *r; - // resolution is divided according to ccd_pixels_per_system_pixel() - unsigned ccd_pixels_per_system_pixel = sensor.ccd_pixels_per_system_pixel(); - DBG(DBG_io2, "%s: ccd_pixels_per_system_pixel=%d\n", __func__, ccd_pixels_per_system_pixel); - gl847_setup_sensor(dev, sensor, reg); dev->cmd_set->set_fe(dev, sensor, AFE_SET); @@ -625,10 +621,7 @@ static void gl847_init_optical_regs_scan(Genesys_Device* dev, const Genesys_Sens */ } - unsigned dpiset = session.params.xres * ccd_pixels_per_system_pixel; - reg->set16(REG_DPISET, dpiset); - DBG (DBG_io2, "%s: dpiset used=%d\n", __func__, dpiset); - + reg->set16(REG_DPISET, sensor.dpiset_override); reg->set16(REG_STRPIXEL, session.pixel_startx); reg->set16(REG_ENDPIXEL, session.pixel_endx); diff --git a/backend/genesys/tables_sensor.cpp b/backend/genesys/tables_sensor.cpp index 0f9401900..53b32d0f1 100644 --- a/backend/genesys/tables_sensor.cpp +++ b/backend/genesys/tables_sensor.cpp @@ -1163,6 +1163,7 @@ void genesys_init_sensor_tables() for (const auto& setting : custom_settings) { sensor.resolutions = setting.resolutions; sensor.register_dpihw = setting.register_dpihw; + sensor.dpiset_override = setting.resolutions.values()[0]; sensor.shading_resolution = setting.register_dpihw; sensor.exposure_lperiod = setting.exposure_lperiod; sensor.exposure = setting.exposure; @@ -1298,6 +1299,7 @@ void genesys_init_sensor_tables() for (const auto& setting : custom_settings) { sensor.resolutions = setting.resolutions; sensor.register_dpihw = setting.register_dpihw; + sensor.dpiset_override = setting.resolutions.values()[0]; sensor.shading_resolution = setting.register_dpihw; sensor.exposure_lperiod = setting.exposure_lperiod; sensor.exposure = setting.exposure; @@ -1422,6 +1424,7 @@ void genesys_init_sensor_tables() for (const auto& setting : custom_settings) { sensor.resolutions = setting.resolutions; sensor.register_dpihw = setting.register_dpihw; + sensor.dpiset_override = setting.resolutions.values()[0]; sensor.shading_resolution = setting.register_dpihw; sensor.exposure_lperiod = setting.exposure_lperiod; sensor.exposure = setting.exposure; @@ -2254,6 +2257,7 @@ void genesys_init_sensor_tables() auto base_custom_regs = sensor.custom_regs; for (const CustomSensorSettings& setting : custom_settings) { sensor.resolutions = setting.resolutions; + sensor.dpiset_override = setting.resolutions.values()[0]; sensor.register_dpihw = setting.register_dpihw; sensor.shading_resolution = setting.register_dpihw; sensor.shading_factor = setting.shading_factor; @@ -3442,19 +3446,12 @@ void verify_sensor_tables() if (sensor.register_dpihw == 0) { throw SaneException("register_dpihw is not defined"); } - if (sensor.shading_resolution == 0) { - throw SaneException("shading_resolution is not defined"); - } - } - if (asic_type == AsicType::GL124 || - asic_type == AsicType::GL841 || - asic_type == AsicType::GL843 || - asic_type == AsicType::GL845 || - asic_type == AsicType::GL846) - { if (sensor.dpiset_override == 0) { throw SaneException("dpiset_override is not defined"); } + if (sensor.shading_resolution == 0) { + throw SaneException("shading_resolution is not defined"); + } } } }