From afa96a227df1d44da1bfe6e41e49b997b059f00e Mon Sep 17 00:00:00 2001 From: Povilas Kanapickas Date: Fri, 17 Apr 2020 05:38:45 +0300 Subject: [PATCH] genesys: Reduce duplication of sensor setup functionality --- backend/genesys/genesys.cpp | 24 ++++++++++++++ backend/genesys/gl124.cpp | 31 +---------------- backend/genesys/gl646.cpp | 27 +-------------- backend/genesys/gl841.cpp | 55 +++++++++++++------------------ backend/genesys/gl843.cpp | 30 +++-------------- backend/genesys/gl846.cpp | 21 +----------- backend/genesys/gl847.cpp | 21 +----------- backend/genesys/low.h | 3 ++ backend/genesys/tables_sensor.cpp | 23 ++++++------- 9 files changed, 71 insertions(+), 164 deletions(-) diff --git a/backend/genesys/genesys.cpp b/backend/genesys/genesys.cpp index d2ef82ccc..f663e5655 100644 --- a/backend/genesys/genesys.cpp +++ b/backend/genesys/genesys.cpp @@ -632,6 +632,30 @@ bool scanner_is_motor_stopped(Genesys_Device& dev) } } +void scanner_setup_sensor(Genesys_Device& dev, const Genesys_Sensor& sensor, + Genesys_Register_Set& regs) +{ + DBG_HELPER(dbg); + + if (dev.model->asic_type == AsicType::GL646) { + for (const auto& custom_reg : sensor.custom_base_regs) { + regs.set8(custom_reg.address, custom_reg.value); + } + } else { + for (const auto& custom_reg : sensor.custom_regs) { + regs.set8(custom_reg.address, custom_reg.value); + } + } + + if (dev.model->asic_type != AsicType::GL841 && + dev.model->asic_type != AsicType::GL843) + { + regs_set_exposure(dev.model->asic_type, regs, sensor.exposure); + } + + dev.segment_order = sensor.segment_order; +} + void scanner_stop_action(Genesys_Device& dev) { DBG_HELPER(dbg); diff --git a/backend/genesys/gl124.cpp b/backend/genesys/gl124.cpp index 567e5bb1e..cefaf66e2 100644 --- a/backend/genesys/gl124.cpp +++ b/backend/genesys/gl124.cpp @@ -640,35 +640,6 @@ static void gl124_init_motor_regs_scan(Genesys_Device* dev, reg->set16(REG_FMOVDEC, fast_table.steps_count); } - -/** @brief copy sensor specific settings - * Set up register set for the given sensor resolution. Values are from the device table - * in genesys_devices.c for registers: - * [0x16 ... 0x1d] - * [0x52 ... 0x5e] - * Other come from the specific device sensor table in genesys_gl124.h: - * 0x18, 0x20, 0x61, 0x98 and - * @param dev device to set up - * @param regs register set to modify - * @param dpi resolution of the sensor during scan - * @param ccd_size_divisor flag for half ccd mode - * */ -static void gl124_setup_sensor(Genesys_Device* dev, const Genesys_Sensor& sensor, - Genesys_Register_Set* regs) -{ - DBG_HELPER(dbg); - - for (const auto& reg : sensor.custom_regs) { - regs->set8(reg.address, reg.value); - } - - regs->set24(REG_EXPR, sensor.exposure.red); - regs->set24(REG_EXPG, sensor.exposure.green); - regs->set24(REG_EXPB, sensor.exposure.blue); - - dev->segment_order = sensor.segment_order; -} - /** @brief setup optical related registers * start and pixels are expressed in optical sensor resolution coordinate * space. @@ -692,7 +663,7 @@ static void gl124_init_optical_regs_scan(Genesys_Device* dev, const Genesys_Sens DBG_HELPER_ARGS(dbg, "exposure_time=%d", exposure_time); uint32_t expmax; - gl124_setup_sensor(dev, sensor, reg); + scanner_setup_sensor(*dev, sensor, *reg); dev->cmd_set->set_fe(dev, sensor, AFE_SET); diff --git a/backend/genesys/gl646.cpp b/backend/genesys/gl646.cpp index e8a822dae..6cd227aed 100644 --- a/backend/genesys/gl646.cpp +++ b/backend/genesys/gl646.cpp @@ -546,30 +546,6 @@ void CommandSetGl646::init_regs_for_scan_session(Genesys_Device* dev, const Gene gl646_send_slope_table(dev, 1, slope_table2.table, regs->get8(0x6b)); } - -/** copy sensor specific settings */ -/* *dev : device infos - *regs : regiters to be set - extended : do extended set up - ccd_size_divisor: set up for half ccd resolution - all registers 08-0B, 10-1D, 52-5E are set up. They shouldn't - appear anywhere else but in register init -*/ -static void -gl646_setup_sensor (Genesys_Device * dev, const Genesys_Sensor& sensor, Genesys_Register_Set * regs) -{ - (void) dev; - DBG(DBG_proc, "%s: start\n", __func__); - - for (const auto& reg_setting : sensor.custom_base_regs) { - regs->set8(reg_setting.address, reg_setting.value); - } - // FIXME: all other drivers don't set exposure here - regs_set_exposure(AsicType::GL646, *regs, sensor.exposure); - - DBG(DBG_proc, "%s: end\n", __func__); -} - /** * Set all registers to default values after init * @param dev scannerr's device to set @@ -643,8 +619,7 @@ gl646_init_regs (Genesys_Device * dev) dev->reg.find_reg(0x06).value = 0x18; // PWRBIT on, shading gain=8, normal AFE image capture } - - gl646_setup_sensor(dev, sensor, &dev->reg); + scanner_setup_sensor(*dev, sensor, dev->reg); dev->reg.find_reg(0x1e).value = 0xf0; /* watch-dog time */ diff --git a/backend/genesys/gl841.cpp b/backend/genesys/gl841.cpp index 49fd7370d..bbced7a95 100644 --- a/backend/genesys/gl841.cpp +++ b/backend/genesys/gl841.cpp @@ -68,15 +68,6 @@ static int gl841_exposure_time(Genesys_Device *dev, const Genesys_Sensor& sensor int start, int used_pixels); -static void sanei_gl841_setup_sensor(const Genesys_Sensor& sensor, Genesys_Register_Set* regs) -{ - DBG_HELPER(dbg); - - for (const auto& custom_reg : sensor.custom_regs) { - regs->set8(custom_reg.address, custom_reg.value); - } -} - /* * Set all registers to default values * (function called only once at the beginning) @@ -169,14 +160,14 @@ gl841_init_registers (Genesys_Device * dev) dev->reg.init_reg(0x15, 0x00); } - dev->reg.init_reg(0x16, 0x00); // SENSOR_DEF, overwritten in sanei_gl841_setup_sensor() below - dev->reg.init_reg(0x17, 0x00); // SENSOR_DEF, overwritten in sanei_gl841_setup_sensor() below - dev->reg.init_reg(0x18, 0x00); // SENSOR_DEF, overwritten in sanei_gl841_setup_sensor() below - dev->reg.init_reg(0x19, 0x00); // SENSOR_DEF, overwritten in sanei_gl841_setup_sensor() below - dev->reg.init_reg(0x1a, 0x00); // SENSOR_DEF, overwritten in sanei_gl841_setup_sensor() below - dev->reg.init_reg(0x1b, 0x00); // SENSOR_DEF, overwritten in sanei_gl841_setup_sensor() below - dev->reg.init_reg(0x1c, 0x00); // SENSOR_DEF, overwritten in sanei_gl841_setup_sensor() below - dev->reg.init_reg(0x1d, 0x01); // SENSOR_DEF, overwritten in sanei_gl841_setup_sensor() below + dev->reg.init_reg(0x16, 0x00); // SENSOR_DEF, overwritten in scanner_setup_sensor() below + dev->reg.init_reg(0x17, 0x00); // SENSOR_DEF, overwritten in scanner_setup_sensor() below + dev->reg.init_reg(0x18, 0x00); // SENSOR_DEF, overwritten in scanner_setup_sensor() below + dev->reg.init_reg(0x19, 0x00); // SENSOR_DEF, overwritten in scanner_setup_sensor() below + dev->reg.init_reg(0x1a, 0x00); // SENSOR_DEF, overwritten in scanner_setup_sensor() below + dev->reg.init_reg(0x1b, 0x00); // SENSOR_DEF, overwritten in scanner_setup_sensor() below + dev->reg.init_reg(0x1c, 0x00); // SENSOR_DEF, overwritten in scanner_setup_sensor() below + dev->reg.init_reg(0x1d, 0x01); // SENSOR_DEF, overwritten in scanner_setup_sensor() below dev->reg.init_reg(0x1e, 0xf0); if (dev->model->model_id == ModelId::CANON_LIDE_80) { dev->reg.init_reg(0x1e, 0x10); @@ -237,15 +228,15 @@ gl841_init_registers (Genesys_Device * dev) dev->reg.init_reg(0x3e, 0x00); dev->reg.init_reg(0x3f, 0x00); - dev->reg.init_reg(0x52, 0x00); // SENSOR_DEF, overwritten in sanei_gl841_setup_sensor() below - dev->reg.init_reg(0x53, 0x00); // SENSOR_DEF, overwritten in sanei_gl841_setup_sensor() below - dev->reg.init_reg(0x54, 0x00); // SENSOR_DEF, overwritten in sanei_gl841_setup_sensor() below - dev->reg.init_reg(0x55, 0x00); // SENSOR_DEF, overwritten in sanei_gl841_setup_sensor() below - dev->reg.init_reg(0x56, 0x00); // SENSOR_DEF, overwritten in sanei_gl841_setup_sensor() below - dev->reg.init_reg(0x57, 0x00); // SENSOR_DEF, overwritten in sanei_gl841_setup_sensor() below - dev->reg.init_reg(0x58, 0x00); // SENSOR_DEF, overwritten in sanei_gl841_setup_sensor() below - dev->reg.init_reg(0x59, 0x00); // SENSOR_DEF, overwritten in sanei_gl841_setup_sensor() below - dev->reg.init_reg(0x5a, 0x00); // SENSOR_DEF, overwritten in sanei_gl841_setup_sensor() below + dev->reg.init_reg(0x52, 0x00); // SENSOR_DEF, overwritten in scanner_setup_sensor() below + dev->reg.init_reg(0x53, 0x00); // SENSOR_DEF, overwritten in scanner_setup_sensor() below + dev->reg.init_reg(0x54, 0x00); // SENSOR_DEF, overwritten in scanner_setup_sensor() below + dev->reg.init_reg(0x55, 0x00); // SENSOR_DEF, overwritten in scanner_setup_sensor() below + dev->reg.init_reg(0x56, 0x00); // SENSOR_DEF, overwritten in scanner_setup_sensor() below + dev->reg.init_reg(0x57, 0x00); // SENSOR_DEF, overwritten in scanner_setup_sensor() below + dev->reg.init_reg(0x58, 0x00); // SENSOR_DEF, overwritten in scanner_setup_sensor() below + dev->reg.init_reg(0x59, 0x00); // SENSOR_DEF, overwritten in scanner_setup_sensor() below + dev->reg.init_reg(0x5a, 0x00); // SENSOR_DEF, overwritten in scanner_setup_sensor() below if (dev->model->model_id == ModelId::CANON_LIDE_80) { dev->reg.init_reg(0x5d, 0x20); @@ -273,10 +264,10 @@ gl841_init_registers (Genesys_Device * dev) dev->reg.init_reg(0x5e, 0x02); } - dev->reg.init_reg(0x70, 0x00); // SENSOR_DEF, overwritten in sanei_gl841_setup_sensor() below - dev->reg.init_reg(0x71, 0x00); // SENSOR_DEF, overwritten in sanei_gl841_setup_sensor() below - dev->reg.init_reg(0x72, 0x00); // SENSOR_DEF, overwritten in sanei_gl841_setup_sensor() below - dev->reg.init_reg(0x73, 0x00); // SENSOR_DEF, overwritten in sanei_gl841_setup_sensor() below + dev->reg.init_reg(0x70, 0x00); // SENSOR_DEF, overwritten in scanner_setup_sensor() below + dev->reg.init_reg(0x71, 0x00); // SENSOR_DEF, overwritten in scanner_setup_sensor() below + dev->reg.init_reg(0x72, 0x00); // SENSOR_DEF, overwritten in scanner_setup_sensor() below + dev->reg.init_reg(0x73, 0x00); // SENSOR_DEF, overwritten in scanner_setup_sensor() below if (dev->model->model_id == ModelId::CANON_LIDE_80) { dev->reg.init_reg(0x74, 0x00); @@ -307,7 +298,7 @@ gl841_init_registers (Genesys_Device * dev) } } - sanei_gl841_setup_sensor(sensor, &dev->reg); + scanner_setup_sensor(*dev, sensor, dev->reg); // set up GPIO for (const auto& reg : dev->gpo.regs) { @@ -1066,7 +1057,7 @@ static void gl841_init_optical_regs_scan(Genesys_Device* dev, const Genesys_Sens } /* sensor parameters */ - sanei_gl841_setup_sensor(sensor, &dev->reg); + scanner_setup_sensor(*dev, sensor, dev->reg); reg->set8(0x29, 255); /*<<<"magic" number, only suitable for cis*/ reg->set16(REG_DPISET, sensor.register_dpiset); reg->set16(REG_STRPIXEL, session.pixel_startx); diff --git a/backend/genesys/gl843.cpp b/backend/genesys/gl843.cpp index 6b58319b2..fb58de8f5 100644 --- a/backend/genesys/gl843.cpp +++ b/backend/genesys/gl843.cpp @@ -66,26 +66,6 @@ static int gl843_get_step_multiplier(Genesys_Register_Set* regs) } } -/** copy sensor specific settings */ -static void gl843_setup_sensor(Genesys_Device* dev, const Genesys_Sensor& sensor, - Genesys_Register_Set* regs) -{ - DBG_HELPER(dbg); - for (const auto& custom_reg : sensor.custom_regs) { - regs->set8(custom_reg.address, custom_reg.value); - } - if (dev->model->model_id == ModelId::PANASONIC_KV_SS080 || - dev->model->model_id == ModelId::HP_SCANJET_4850C || - dev->model->model_id == ModelId::HP_SCANJET_G4010 || - dev->model->model_id == ModelId::HP_SCANJET_G4050) - { - regs->set8(0x7d, 0x90); - } - - dev->segment_order = sensor.segment_order; -} - - /** @brief set all registers to default values . * This function is called only once at the beginning and * fills register startup values for registers reused across scans. @@ -96,9 +76,9 @@ static void gl843_setup_sensor(Genesys_Device* dev, const Genesys_Sensor& sensor static void gl843_init_registers (Genesys_Device * dev) { - // Within this function SENSOR_DEF marker documents that a register is part - // of the sensors definition and the actual value is set in - // gl843_setup_sensor(). + // Within this function SENSOR_DEF marker documents that a register is part + // of the sensors definition and the actual value is set in + // scanner_setup_sensor(). // 0x6c, 0x6d, 0x6e, 0x6f, 0xa6, 0xa7, 0xa8, 0xa9 are defined in the Gpo sensor struct @@ -943,8 +923,8 @@ static void gl843_init_optical_regs_scan(Genesys_Device* dev, const Genesys_Sens tgtime = exposure / 65536 + 1; DBG(DBG_io2, "%s: tgtime=%d\n", __func__, tgtime); - /* sensor parameters */ - gl843_setup_sensor(dev, sensor, reg); + // sensor parameters + scanner_setup_sensor(*dev, sensor, *reg); dev->cmd_set->set_fe(dev, sensor, AFE_SET); diff --git a/backend/genesys/gl846.cpp b/backend/genesys/gl846.cpp index ee239eff4..8e05e045c 100644 --- a/backend/genesys/gl846.cpp +++ b/backend/genesys/gl846.cpp @@ -67,25 +67,6 @@ static int gl846_get_step_multiplier (Genesys_Register_Set * regs) return 1 << value; } -/** @brief sensor specific settings -*/ -static void gl846_setup_sensor(Genesys_Device * dev, const Genesys_Sensor& sensor, - Genesys_Register_Set* regs) -{ - DBG_HELPER(dbg); - - for (const auto& reg : sensor.custom_regs) { - regs->set8(reg.address, reg.value); - } - - regs->set16(REG_EXPR, sensor.exposure.red); - regs->set16(REG_EXPG, sensor.exposure.green); - regs->set16(REG_EXPB, sensor.exposure.blue); - - dev->segment_order = sensor.segment_order; -} - - /** @brief set all registers to default values . * This function is called only once at the beginning and * fills register startup values for registers reused across scans. @@ -619,7 +600,7 @@ static void gl846_init_optical_regs_scan(Genesys_Device* dev, const Genesys_Sens { DBG_HELPER_ARGS(dbg, "exposure_time=%d", exposure_time); - gl846_setup_sensor(dev, sensor, reg); + scanner_setup_sensor(*dev, sensor, *reg); dev->cmd_set->set_fe(dev, sensor, AFE_SET); diff --git a/backend/genesys/gl847.cpp b/backend/genesys/gl847.cpp index ab2879bc4..77776a85f 100644 --- a/backend/genesys/gl847.cpp +++ b/backend/genesys/gl847.cpp @@ -62,25 +62,6 @@ static unsigned gl847_get_step_multiplier (Genesys_Register_Set * regs) return 1 << value; } -/** @brief sensor specific settings -*/ -static void gl847_setup_sensor(Genesys_Device * dev, const Genesys_Sensor& sensor, - Genesys_Register_Set* regs) -{ - DBG_HELPER(dbg); - - for (const auto& reg : sensor.custom_regs) { - regs->set8(reg.address, reg.value); - } - - regs->set16(REG_EXPR, sensor.exposure.red); - regs->set16(REG_EXPG, sensor.exposure.green); - regs->set16(REG_EXPB, sensor.exposure.blue); - - dev->segment_order = sensor.segment_order; -} - - /** @brief set all registers to default values . * This function is called only once at the beginning and * fills register startup values for registers reused across scans. @@ -519,7 +500,7 @@ static void gl847_init_optical_regs_scan(Genesys_Device* dev, const Genesys_Sens { DBG_HELPER_ARGS(dbg, "exposure_time=%d", exposure_time); - gl847_setup_sensor(dev, sensor, reg); + scanner_setup_sensor(*dev, sensor, *reg); dev->cmd_set->set_fe(dev, sensor, AFE_SET); diff --git a/backend/genesys/low.h b/backend/genesys/low.h index 2533f42d8..10f211ea4 100644 --- a/backend/genesys/low.h +++ b/backend/genesys/low.h @@ -372,6 +372,9 @@ void scanner_stop_action_no_move(Genesys_Device& dev, Genesys_Register_Set& regs bool scanner_is_motor_stopped(Genesys_Device& dev); +void scanner_setup_sensor(Genesys_Device& dev, const Genesys_Sensor& sensor, + Genesys_Register_Set& regs); + const MotorProfile* get_motor_profile_ptr(const std::vector& profiles, unsigned exposure, const ScanSession& session); diff --git a/backend/genesys/tables_sensor.cpp b/backend/genesys/tables_sensor.cpp index bafe558ee..7602bee23 100644 --- a/backend/genesys/tables_sensor.cpp +++ b/backend/genesys/tables_sensor.cpp @@ -1489,6 +1489,7 @@ void genesys_init_sensor_tables() { 0x58, 0x6b }, { 0x59, 0x00 }, { 0x5a, 0xc0 }, + { 0x7d, 0x90 }, }; sensor.gamma = { 1.0f, 1.0f, 1.0f }; sensor.get_ccd_size_divisor_fun = default_get_ccd_size_divisor_for_dpi; @@ -1554,7 +1555,7 @@ void genesys_init_sensor_tables() { 0x70, 0x00 }, { 0x71, 0x02 }, { 0x74, 0x00 }, { 0x75, 0x01 }, { 0x76, 0xff }, { 0x77, 0x03 }, { 0x78, 0xff }, { 0x79, 0xff }, - { 0x7a, 0x03 }, { 0x7b, 0xff }, { 0x7c, 0xff }, + { 0x7a, 0x03 }, { 0x7b, 0xff }, { 0x7c, 0xff }, { 0x7d, 0x90 }, { 0x9e, 0x00 }, { 0xaa, 0x00 }, }; @@ -1568,7 +1569,7 @@ void genesys_init_sensor_tables() { 0x70, 0x08 }, { 0x71, 0x0c }, { 0x74, 0x0f }, { 0x75, 0xff }, { 0x76, 0xff }, { 0x77, 0x00 }, { 0x78, 0x01 }, { 0x79, 0xff }, - { 0x7a, 0x00 }, { 0x7b, 0x01 }, { 0x7c, 0xff }, + { 0x7a, 0x00 }, { 0x7b, 0x01 }, { 0x7c, 0xff }, { 0x7d, 0x90 }, { 0x9e, 0xc0 }, { 0xaa, 0x05 }, }; @@ -1582,7 +1583,7 @@ void genesys_init_sensor_tables() { 0x70, 0x08 }, { 0x71, 0x0a }, { 0x74, 0x0f }, { 0x75, 0xff }, { 0x76, 0xff }, { 0x77, 0x00 }, { 0x78, 0x00 }, { 0x79, 0x00 }, - { 0x7a, 0x00 }, { 0x7b, 0x00 }, { 0x7c, 0x00 }, + { 0x7a, 0x00 }, { 0x7b, 0x00 }, { 0x7c, 0x00 }, { 0x7d, 0x90 }, { 0x9e, 0xc0 }, { 0xaa, 0x05 }, }; @@ -1593,10 +1594,10 @@ void genesys_init_sensor_tables() { 0x1a, 0x38 }, { 0x1b, 0x10 }, { 0x1c, 0xc1 }, { 0x1d, 0x08 }, { 0x52, 0x02 }, { 0x53, 0x05 }, { 0x54, 0x08 }, { 0x55, 0x0b }, { 0x56, 0x0e }, { 0x57, 0x11 }, { 0x58, 0x1b }, { 0x59, 0x00 }, { 0x5a, 0x40 }, + { 0x70, 0x08 }, { 0x71, 0x0a }, { 0x74, 0x0f }, { 0x75, 0xff }, { 0x76, 0xff }, { 0x77, 0x00 }, { 0x78, 0x00 }, { 0x79, 0x00 }, - { 0x7a, 0x00 }, { 0x7b, 0x00 }, { 0x7c, 0x00 }, - { 0x70, 0x08 }, { 0x71, 0x0a }, + { 0x7a, 0x00 }, { 0x7b, 0x00 }, { 0x7c, 0x00 }, { 0x7d, 0x90 }, { 0x9e, 0xc0 }, { 0xaa, 0x07 }, }; @@ -1610,7 +1611,7 @@ void genesys_init_sensor_tables() { 0x70, 0x00 }, { 0x71, 0x02 }, { 0x74, 0x00 }, { 0x75, 0x1c }, { 0x76, 0x7f }, { 0x77, 0x03 }, { 0x78, 0xff }, { 0x79, 0xff }, - { 0x7a, 0x03 }, { 0x7b, 0xff }, { 0x7c, 0xff }, + { 0x7a, 0x03 }, { 0x7b, 0xff }, { 0x7c, 0xff }, { 0x7d, 0x90 }, { 0x9e, 0x00 }, { 0xaa, 0x00 }, }; @@ -1682,7 +1683,7 @@ void genesys_init_sensor_tables() { 0x70, 0x00 }, { 0x71, 0x02 }, { 0x74, 0x00 }, { 0x75, 0x01 }, { 0x76, 0xff }, { 0x77, 0x03 }, { 0x78, 0xff }, { 0x79, 0xff }, - { 0x7a, 0x03 }, { 0x7b, 0xff }, { 0x7c, 0xff }, + { 0x7a, 0x03 }, { 0x7b, 0xff }, { 0x7c, 0xff }, { 0x7d, 0x90 }, { 0x9e, 0x00 }, { 0xaa, 0x00 }, }; @@ -1695,7 +1696,7 @@ void genesys_init_sensor_tables() { 0x70, 0x08 }, { 0x71, 0x0c }, { 0x74, 0x0f }, { 0x75, 0xff }, { 0x76, 0xff }, { 0x77, 0x00 }, { 0x78, 0x01 }, { 0x79, 0xff }, - { 0x7a, 0x00 }, { 0x7b, 0x01 }, { 0x7c, 0xff }, + { 0x7a, 0x00 }, { 0x7b, 0x01 }, { 0x7c, 0xff }, { 0x7d, 0x90 }, { 0x9e, 0xc0 }, { 0xaa, 0x05 }, }; @@ -1708,7 +1709,7 @@ void genesys_init_sensor_tables() { 0x70, 0x08 }, { 0x71, 0x0a }, { 0x74, 0x0f }, { 0x75, 0xff }, { 0x76, 0xff }, { 0x77, 0x00 }, { 0x78, 0x00 }, { 0x79, 0x00 }, - { 0x7a, 0x00 }, { 0x7b, 0x00 }, { 0x7c, 0x00 }, + { 0x7a, 0x00 }, { 0x7b, 0x00 }, { 0x7c, 0x00 }, { 0x7d, 0x90 }, { 0x9e, 0xc0 }, { 0xaa, 0x05 }, }; @@ -1721,7 +1722,7 @@ void genesys_init_sensor_tables() { 0x70, 0x08 }, { 0x71, 0x0a }, { 0x74, 0x0f }, { 0x75, 0xff }, { 0x76, 0xff }, { 0x77, 0x00 }, { 0x78, 0x00 }, { 0x79, 0x00 }, - { 0x7a, 0x00 }, { 0x7b, 0x00 }, { 0x7c, 0x00 }, + { 0x7a, 0x00 }, { 0x7b, 0x00 }, { 0x7c, 0x00 }, { 0x7d, 0x90 }, { 0x9e, 0xc0 }, { 0xaa, 0x07 }, }; @@ -1734,7 +1735,7 @@ void genesys_init_sensor_tables() { 0x70, 0x00 }, { 0x71, 0x02 }, { 0x74, 0x00 }, { 0x75, 0x1c }, { 0x76, 0x7f }, { 0x77, 0x03 }, { 0x78, 0xff }, { 0x79, 0xff }, - { 0x7a, 0x03 }, { 0x7b, 0xff }, { 0x7c, 0xff }, + { 0x7a, 0x03 }, { 0x7b, 0xff }, { 0x7c, 0xff }, { 0x7d, 0x90 }, { 0x9e, 0x00 }, { 0xaa, 0x00 }, };