1141cc406Sopenharmony_ci/* sane - Scanner Access Now Easy. 2141cc406Sopenharmony_ci 3141cc406Sopenharmony_ci Copyright (C) 2019 Povilas Kanapickas <povilas@radix.lt> 4141cc406Sopenharmony_ci 5141cc406Sopenharmony_ci This file is part of the SANE package. 6141cc406Sopenharmony_ci 7141cc406Sopenharmony_ci This program is free software; you can redistribute it and/or 8141cc406Sopenharmony_ci modify it under the terms of the GNU General Public License as 9141cc406Sopenharmony_ci published by the Free Software Foundation; either version 2 of the 10141cc406Sopenharmony_ci License, or (at your option) any later version. 11141cc406Sopenharmony_ci 12141cc406Sopenharmony_ci This program is distributed in the hope that it will be useful, but 13141cc406Sopenharmony_ci WITHOUT ANY WARRANTY; without even the implied warranty of 14141cc406Sopenharmony_ci MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 15141cc406Sopenharmony_ci General Public License for more details. 16141cc406Sopenharmony_ci 17141cc406Sopenharmony_ci You should have received a copy of the GNU General Public License 18141cc406Sopenharmony_ci along with this program. If not, see <https://www.gnu.org/licenses/>. 19141cc406Sopenharmony_ci*/ 20141cc406Sopenharmony_ci 21141cc406Sopenharmony_ci#define DEBUG_DECLARE_ONLY 22141cc406Sopenharmony_ci 23141cc406Sopenharmony_ci#include "low.h" 24141cc406Sopenharmony_ci 25141cc406Sopenharmony_cinamespace genesys { 26141cc406Sopenharmony_ci 27141cc406Sopenharmony_ciStaticInit<std::vector<Genesys_Frontend>> s_frontends; 28141cc406Sopenharmony_ci 29141cc406Sopenharmony_civoid genesys_init_frontend_tables() 30141cc406Sopenharmony_ci{ 31141cc406Sopenharmony_ci s_frontends.init(); 32141cc406Sopenharmony_ci 33141cc406Sopenharmony_ci GenesysFrontendLayout wolfson_layout; 34141cc406Sopenharmony_ci wolfson_layout.type = FrontendType::WOLFSON; 35141cc406Sopenharmony_ci wolfson_layout.offset_addr = { 0x20, 0x21, 0x22 }; 36141cc406Sopenharmony_ci wolfson_layout.gain_addr = { 0x28, 0x29, 0x2a }; 37141cc406Sopenharmony_ci 38141cc406Sopenharmony_ci GenesysFrontendLayout analog_devices; 39141cc406Sopenharmony_ci analog_devices.type = FrontendType::ANALOG_DEVICES; 40141cc406Sopenharmony_ci analog_devices.offset_addr = { 0x05, 0x06, 0x07 }; 41141cc406Sopenharmony_ci analog_devices.gain_addr = { 0x02, 0x03, 0x04 }; 42141cc406Sopenharmony_ci 43141cc406Sopenharmony_ci Genesys_Frontend fe; 44141cc406Sopenharmony_ci fe.id = AdcId::WOLFSON_UMAX; 45141cc406Sopenharmony_ci fe.layout = wolfson_layout; 46141cc406Sopenharmony_ci fe.regs = { 47141cc406Sopenharmony_ci { 0x00, 0x00 }, 48141cc406Sopenharmony_ci { 0x01, 0x03 }, 49141cc406Sopenharmony_ci { 0x02, 0x05 }, 50141cc406Sopenharmony_ci { 0x03, 0x11 }, 51141cc406Sopenharmony_ci { 0x20, 0x80 }, 52141cc406Sopenharmony_ci { 0x21, 0x80 }, 53141cc406Sopenharmony_ci { 0x22, 0x80 }, 54141cc406Sopenharmony_ci { 0x24, 0x00 }, 55141cc406Sopenharmony_ci { 0x25, 0x00 }, 56141cc406Sopenharmony_ci { 0x26, 0x00 }, 57141cc406Sopenharmony_ci { 0x28, 0x02 }, 58141cc406Sopenharmony_ci { 0x29, 0x02 }, 59141cc406Sopenharmony_ci { 0x2a, 0x02 }, 60141cc406Sopenharmony_ci }; 61141cc406Sopenharmony_ci fe.reg2 = {0x00, 0x00, 0x00}; 62141cc406Sopenharmony_ci s_frontends->push_back(fe); 63141cc406Sopenharmony_ci 64141cc406Sopenharmony_ci 65141cc406Sopenharmony_ci fe = Genesys_Frontend(); 66141cc406Sopenharmony_ci fe.id = AdcId::WOLFSON_ST12; 67141cc406Sopenharmony_ci fe.layout = wolfson_layout; 68141cc406Sopenharmony_ci fe.regs = { 69141cc406Sopenharmony_ci { 0x00, 0x00 }, 70141cc406Sopenharmony_ci { 0x01, 0x03 }, 71141cc406Sopenharmony_ci { 0x02, 0x05 }, 72141cc406Sopenharmony_ci { 0x03, 0x03 }, 73141cc406Sopenharmony_ci { 0x20, 0xc8 }, 74141cc406Sopenharmony_ci { 0x21, 0xc8 }, 75141cc406Sopenharmony_ci { 0x22, 0xc8 }, 76141cc406Sopenharmony_ci { 0x24, 0x00 }, 77141cc406Sopenharmony_ci { 0x25, 0x00 }, 78141cc406Sopenharmony_ci { 0x26, 0x00 }, 79141cc406Sopenharmony_ci { 0x28, 0x04 }, 80141cc406Sopenharmony_ci { 0x29, 0x04 }, 81141cc406Sopenharmony_ci { 0x2a, 0x04 }, 82141cc406Sopenharmony_ci }; 83141cc406Sopenharmony_ci fe.reg2 = {0x00, 0x00, 0x00}; 84141cc406Sopenharmony_ci s_frontends->push_back(fe); 85141cc406Sopenharmony_ci 86141cc406Sopenharmony_ci 87141cc406Sopenharmony_ci fe = Genesys_Frontend(); 88141cc406Sopenharmony_ci fe.id = AdcId::WOLFSON_ST24; 89141cc406Sopenharmony_ci fe.layout = wolfson_layout; 90141cc406Sopenharmony_ci fe.regs = { 91141cc406Sopenharmony_ci { 0x00, 0x00 }, 92141cc406Sopenharmony_ci { 0x01, 0x03 }, 93141cc406Sopenharmony_ci { 0x02, 0x05 }, 94141cc406Sopenharmony_ci { 0x03, 0x21 }, 95141cc406Sopenharmony_ci { 0x20, 0xc8 }, 96141cc406Sopenharmony_ci { 0x21, 0xc8 }, 97141cc406Sopenharmony_ci { 0x22, 0xc8 }, 98141cc406Sopenharmony_ci { 0x24, 0x00 }, 99141cc406Sopenharmony_ci { 0x25, 0x00 }, 100141cc406Sopenharmony_ci { 0x26, 0x00 }, 101141cc406Sopenharmony_ci { 0x28, 0x06 }, 102141cc406Sopenharmony_ci { 0x29, 0x06 }, 103141cc406Sopenharmony_ci { 0x2a, 0x06 }, 104141cc406Sopenharmony_ci }; 105141cc406Sopenharmony_ci fe.reg2 = {0x00, 0x00, 0x00}; 106141cc406Sopenharmony_ci s_frontends->push_back(fe); 107141cc406Sopenharmony_ci 108141cc406Sopenharmony_ci 109141cc406Sopenharmony_ci fe = Genesys_Frontend(); 110141cc406Sopenharmony_ci fe.id = AdcId::WOLFSON_5345; 111141cc406Sopenharmony_ci fe.layout = wolfson_layout; 112141cc406Sopenharmony_ci fe.regs = { 113141cc406Sopenharmony_ci { 0x00, 0x00 }, 114141cc406Sopenharmony_ci { 0x01, 0x03 }, 115141cc406Sopenharmony_ci { 0x02, 0x05 }, 116141cc406Sopenharmony_ci { 0x03, 0x12 }, 117141cc406Sopenharmony_ci { 0x20, 0xb8 }, 118141cc406Sopenharmony_ci { 0x21, 0xb8 }, 119141cc406Sopenharmony_ci { 0x22, 0xb8 }, 120141cc406Sopenharmony_ci { 0x24, 0x00 }, 121141cc406Sopenharmony_ci { 0x25, 0x00 }, 122141cc406Sopenharmony_ci { 0x26, 0x00 }, 123141cc406Sopenharmony_ci { 0x28, 0x04 }, 124141cc406Sopenharmony_ci { 0x29, 0x04 }, 125141cc406Sopenharmony_ci { 0x2a, 0x04 }, 126141cc406Sopenharmony_ci }; 127141cc406Sopenharmony_ci fe.reg2 = {0x00, 0x00, 0x00}; 128141cc406Sopenharmony_ci s_frontends->push_back(fe); 129141cc406Sopenharmony_ci 130141cc406Sopenharmony_ci 131141cc406Sopenharmony_ci // reg3=0x02 for 50-600 dpi, 0x32 (0x12 also works well) at 1200 132141cc406Sopenharmony_ci fe = Genesys_Frontend(); 133141cc406Sopenharmony_ci fe.id = AdcId::WOLFSON_HP2400; 134141cc406Sopenharmony_ci fe.layout = wolfson_layout; 135141cc406Sopenharmony_ci fe.regs = { 136141cc406Sopenharmony_ci { 0x00, 0x00 }, 137141cc406Sopenharmony_ci { 0x01, 0x03 }, 138141cc406Sopenharmony_ci { 0x02, 0x05 }, 139141cc406Sopenharmony_ci { 0x03, 0x02 }, 140141cc406Sopenharmony_ci { 0x20, 0xb4 }, 141141cc406Sopenharmony_ci { 0x21, 0xb6 }, 142141cc406Sopenharmony_ci { 0x22, 0xbc }, 143141cc406Sopenharmony_ci { 0x24, 0x00 }, 144141cc406Sopenharmony_ci { 0x25, 0x00 }, 145141cc406Sopenharmony_ci { 0x26, 0x00 }, 146141cc406Sopenharmony_ci { 0x28, 0x06 }, 147141cc406Sopenharmony_ci { 0x29, 0x09 }, 148141cc406Sopenharmony_ci { 0x2a, 0x08 }, 149141cc406Sopenharmony_ci }; 150141cc406Sopenharmony_ci fe.reg2 = {0x00, 0x00, 0x00}; 151141cc406Sopenharmony_ci s_frontends->push_back(fe); 152141cc406Sopenharmony_ci 153141cc406Sopenharmony_ci 154141cc406Sopenharmony_ci fe = Genesys_Frontend(); 155141cc406Sopenharmony_ci fe.id = AdcId::WOLFSON_HP2300; 156141cc406Sopenharmony_ci fe.layout = wolfson_layout; 157141cc406Sopenharmony_ci fe.regs = { 158141cc406Sopenharmony_ci { 0x00, 0x00 }, 159141cc406Sopenharmony_ci { 0x01, 0x03 }, 160141cc406Sopenharmony_ci { 0x02, 0x04 }, 161141cc406Sopenharmony_ci { 0x03, 0x02 }, 162141cc406Sopenharmony_ci { 0x20, 0xbe }, 163141cc406Sopenharmony_ci { 0x21, 0xbe }, 164141cc406Sopenharmony_ci { 0x22, 0xbe }, 165141cc406Sopenharmony_ci { 0x24, 0x00 }, 166141cc406Sopenharmony_ci { 0x25, 0x00 }, 167141cc406Sopenharmony_ci { 0x26, 0x00 }, 168141cc406Sopenharmony_ci { 0x28, 0x04 }, 169141cc406Sopenharmony_ci { 0x29, 0x04 }, 170141cc406Sopenharmony_ci { 0x2a, 0x04 }, 171141cc406Sopenharmony_ci }; 172141cc406Sopenharmony_ci fe.reg2 = {0x00, 0x00, 0x00}; 173141cc406Sopenharmony_ci s_frontends->push_back(fe); 174141cc406Sopenharmony_ci 175141cc406Sopenharmony_ci 176141cc406Sopenharmony_ci fe = Genesys_Frontend(); 177141cc406Sopenharmony_ci fe.id = AdcId::CANON_LIDE_35; 178141cc406Sopenharmony_ci fe.layout = wolfson_layout; 179141cc406Sopenharmony_ci fe.layout.type = FrontendType::WOLFSON_GL841; 180141cc406Sopenharmony_ci fe.regs = { 181141cc406Sopenharmony_ci { 0x00, 0x00 }, 182141cc406Sopenharmony_ci { 0x01, 0x3d }, 183141cc406Sopenharmony_ci { 0x02, 0x08 }, 184141cc406Sopenharmony_ci { 0x03, 0x00 }, 185141cc406Sopenharmony_ci { 0x20, 0xe1 }, 186141cc406Sopenharmony_ci { 0x21, 0xe1 }, 187141cc406Sopenharmony_ci { 0x22, 0xe1 }, 188141cc406Sopenharmony_ci { 0x24, 0x00 }, 189141cc406Sopenharmony_ci { 0x25, 0x00 }, 190141cc406Sopenharmony_ci { 0x26, 0x00 }, 191141cc406Sopenharmony_ci { 0x28, 0x93 }, 192141cc406Sopenharmony_ci { 0x29, 0x93 }, 193141cc406Sopenharmony_ci { 0x2a, 0x93 }, 194141cc406Sopenharmony_ci }; 195141cc406Sopenharmony_ci fe.reg2 = {0x00, 0x19, 0x06}; 196141cc406Sopenharmony_ci s_frontends->push_back(fe); 197141cc406Sopenharmony_ci 198141cc406Sopenharmony_ci 199141cc406Sopenharmony_ci fe = Genesys_Frontend(); 200141cc406Sopenharmony_ci fe.id = AdcId::CANON_LIDE_90; 201141cc406Sopenharmony_ci fe.layout = wolfson_layout; 202141cc406Sopenharmony_ci fe.layout.type = FrontendType::WOLFSON; 203141cc406Sopenharmony_ci fe.regs = { 204141cc406Sopenharmony_ci { 0x01, 0x23 }, 205141cc406Sopenharmony_ci { 0x02, 0x07 }, 206141cc406Sopenharmony_ci { 0x03, 0x29 }, 207141cc406Sopenharmony_ci { 0x06, 0x0d }, 208141cc406Sopenharmony_ci { 0x08, 0x00 }, 209141cc406Sopenharmony_ci { 0x09, 0x16 }, 210141cc406Sopenharmony_ci { 0x20, 0x4d }, 211141cc406Sopenharmony_ci { 0x21, 0x4d }, 212141cc406Sopenharmony_ci { 0x22, 0x4d }, 213141cc406Sopenharmony_ci { 0x23, 0x4d }, 214141cc406Sopenharmony_ci { 0x28, 0x14 }, 215141cc406Sopenharmony_ci { 0x29, 0x14 }, 216141cc406Sopenharmony_ci { 0x2a, 0x14 }, 217141cc406Sopenharmony_ci { 0x2b, 0x14 }, 218141cc406Sopenharmony_ci }; 219141cc406Sopenharmony_ci fe.reg2 = {0x00, 0x00, 0x00}; 220141cc406Sopenharmony_ci s_frontends->push_back(fe); 221141cc406Sopenharmony_ci 222141cc406Sopenharmony_ci 223141cc406Sopenharmony_ci fe = Genesys_Frontend(); 224141cc406Sopenharmony_ci fe.id = AdcId::AD_XP200; 225141cc406Sopenharmony_ci fe.layout = wolfson_layout; 226141cc406Sopenharmony_ci fe.regs = { 227141cc406Sopenharmony_ci { 0x00, 0x58 }, 228141cc406Sopenharmony_ci { 0x01, 0x80 }, 229141cc406Sopenharmony_ci { 0x02, 0x00 }, 230141cc406Sopenharmony_ci { 0x03, 0x00 }, 231141cc406Sopenharmony_ci { 0x20, 0x09 }, 232141cc406Sopenharmony_ci { 0x21, 0x09 }, 233141cc406Sopenharmony_ci { 0x22, 0x09 }, 234141cc406Sopenharmony_ci { 0x24, 0x00 }, 235141cc406Sopenharmony_ci { 0x25, 0x00 }, 236141cc406Sopenharmony_ci { 0x26, 0x00 }, 237141cc406Sopenharmony_ci { 0x28, 0x09 }, 238141cc406Sopenharmony_ci { 0x29, 0x09 }, 239141cc406Sopenharmony_ci { 0x2a, 0x09 }, 240141cc406Sopenharmony_ci }; 241141cc406Sopenharmony_ci fe.reg2 = {0x00, 0x00, 0x00}; 242141cc406Sopenharmony_ci s_frontends->push_back(fe); 243141cc406Sopenharmony_ci 244141cc406Sopenharmony_ci 245141cc406Sopenharmony_ci fe = Genesys_Frontend(); 246141cc406Sopenharmony_ci fe.id = AdcId::WOLFSON_XP300; 247141cc406Sopenharmony_ci fe.layout = wolfson_layout; 248141cc406Sopenharmony_ci fe.layout.type = FrontendType::WOLFSON_GL841; 249141cc406Sopenharmony_ci fe.regs = { 250141cc406Sopenharmony_ci { 0x00, 0x00 }, 251141cc406Sopenharmony_ci { 0x01, 0x35 }, 252141cc406Sopenharmony_ci { 0x02, 0x20 }, 253141cc406Sopenharmony_ci { 0x03, 0x14 }, 254141cc406Sopenharmony_ci { 0x20, 0xe1 }, 255141cc406Sopenharmony_ci { 0x21, 0xe1 }, 256141cc406Sopenharmony_ci { 0x22, 0xe1 }, 257141cc406Sopenharmony_ci { 0x24, 0x00 }, 258141cc406Sopenharmony_ci { 0x25, 0x00 }, 259141cc406Sopenharmony_ci { 0x26, 0x00 }, 260141cc406Sopenharmony_ci { 0x28, 0x93 }, 261141cc406Sopenharmony_ci { 0x29, 0x93 }, 262141cc406Sopenharmony_ci { 0x2a, 0x93 }, 263141cc406Sopenharmony_ci }; 264141cc406Sopenharmony_ci fe.reg2 = {0x07, 0x00, 0x00}; 265141cc406Sopenharmony_ci s_frontends->push_back(fe); 266141cc406Sopenharmony_ci 267141cc406Sopenharmony_ci 268141cc406Sopenharmony_ci fe = Genesys_Frontend(); 269141cc406Sopenharmony_ci fe.id = AdcId::WOLFSON_HP3670; 270141cc406Sopenharmony_ci fe.layout = wolfson_layout; 271141cc406Sopenharmony_ci fe.regs = { 272141cc406Sopenharmony_ci { 0x00, 0x00 }, 273141cc406Sopenharmony_ci { 0x01, 0x03 }, 274141cc406Sopenharmony_ci { 0x02, 0x05 }, 275141cc406Sopenharmony_ci { 0x03, 0x32 }, 276141cc406Sopenharmony_ci { 0x20, 0xba }, 277141cc406Sopenharmony_ci { 0x21, 0xb8 }, 278141cc406Sopenharmony_ci { 0x22, 0xb8 }, 279141cc406Sopenharmony_ci { 0x24, 0x00 }, 280141cc406Sopenharmony_ci { 0x25, 0x00 }, 281141cc406Sopenharmony_ci { 0x26, 0x00 }, 282141cc406Sopenharmony_ci { 0x28, 0x06 }, 283141cc406Sopenharmony_ci { 0x29, 0x05 }, 284141cc406Sopenharmony_ci { 0x2a, 0x04 }, 285141cc406Sopenharmony_ci }; 286141cc406Sopenharmony_ci fe.reg2 = {0x00, 0x00, 0x00}; 287141cc406Sopenharmony_ci s_frontends->push_back(fe); 288141cc406Sopenharmony_ci 289141cc406Sopenharmony_ci 290141cc406Sopenharmony_ci fe = Genesys_Frontend(); 291141cc406Sopenharmony_ci fe.id = AdcId::WOLFSON_DSM600; 292141cc406Sopenharmony_ci fe.layout = wolfson_layout; 293141cc406Sopenharmony_ci fe.layout.type = FrontendType::WOLFSON_GL841; 294141cc406Sopenharmony_ci fe.regs = { 295141cc406Sopenharmony_ci { 0x00, 0x00 }, 296141cc406Sopenharmony_ci { 0x01, 0x35 }, 297141cc406Sopenharmony_ci { 0x02, 0x20 }, 298141cc406Sopenharmony_ci { 0x03, 0x14 }, 299141cc406Sopenharmony_ci { 0x20, 0x85 }, 300141cc406Sopenharmony_ci { 0x21, 0x85 }, 301141cc406Sopenharmony_ci { 0x22, 0x85 }, 302141cc406Sopenharmony_ci { 0x24, 0x00 }, 303141cc406Sopenharmony_ci { 0x25, 0x00 }, 304141cc406Sopenharmony_ci { 0x26, 0x00 }, 305141cc406Sopenharmony_ci { 0x28, 0xa0 }, 306141cc406Sopenharmony_ci { 0x29, 0xa0 }, 307141cc406Sopenharmony_ci { 0x2a, 0xa0 }, 308141cc406Sopenharmony_ci }; 309141cc406Sopenharmony_ci fe.reg2 = {0x07, 0x00, 0x00}; 310141cc406Sopenharmony_ci s_frontends->push_back(fe); 311141cc406Sopenharmony_ci 312141cc406Sopenharmony_ci 313141cc406Sopenharmony_ci fe = Genesys_Frontend(); 314141cc406Sopenharmony_ci fe.id = AdcId::CANON_LIDE_200; 315141cc406Sopenharmony_ci fe.layout = analog_devices; 316141cc406Sopenharmony_ci fe.layout.type = FrontendType::ANALOG_DEVICES_GL847; 317141cc406Sopenharmony_ci fe.regs = { 318141cc406Sopenharmony_ci { 0x00, 0x9d }, 319141cc406Sopenharmony_ci { 0x01, 0x91 }, 320141cc406Sopenharmony_ci { 0x02, 0x32 }, 321141cc406Sopenharmony_ci { 0x03, 0x04 }, 322141cc406Sopenharmony_ci { 0x04, 0x00 }, 323141cc406Sopenharmony_ci { 0x05, 0x00 }, 324141cc406Sopenharmony_ci { 0x06, 0x3f }, 325141cc406Sopenharmony_ci { 0x07, 0x00 }, 326141cc406Sopenharmony_ci }; 327141cc406Sopenharmony_ci s_frontends->push_back(fe); 328141cc406Sopenharmony_ci 329141cc406Sopenharmony_ci 330141cc406Sopenharmony_ci fe = Genesys_Frontend(); 331141cc406Sopenharmony_ci fe.id = AdcId::CANON_LIDE_700F; 332141cc406Sopenharmony_ci fe.layout = analog_devices; 333141cc406Sopenharmony_ci fe.layout.type = FrontendType::ANALOG_DEVICES_GL847; 334141cc406Sopenharmony_ci fe.regs = { 335141cc406Sopenharmony_ci { 0x00, 0x9d }, 336141cc406Sopenharmony_ci { 0x01, 0x9e }, 337141cc406Sopenharmony_ci { 0x02, 0x2f }, 338141cc406Sopenharmony_ci { 0x03, 0x04 }, 339141cc406Sopenharmony_ci { 0x04, 0x00 }, 340141cc406Sopenharmony_ci { 0x05, 0x00 }, 341141cc406Sopenharmony_ci { 0x06, 0x3f }, 342141cc406Sopenharmony_ci { 0x07, 0x00 }, 343141cc406Sopenharmony_ci }; 344141cc406Sopenharmony_ci s_frontends->push_back(fe); 345141cc406Sopenharmony_ci 346141cc406Sopenharmony_ci 347141cc406Sopenharmony_ci fe = Genesys_Frontend(); 348141cc406Sopenharmony_ci fe.id = AdcId::KVSS080; 349141cc406Sopenharmony_ci fe.layout = wolfson_layout; 350141cc406Sopenharmony_ci fe.regs = { 351141cc406Sopenharmony_ci { 0x00, 0x00 }, 352141cc406Sopenharmony_ci { 0x01, 0x23 }, 353141cc406Sopenharmony_ci { 0x02, 0x24 }, 354141cc406Sopenharmony_ci { 0x03, 0x0f }, 355141cc406Sopenharmony_ci { 0x20, 0x80 }, 356141cc406Sopenharmony_ci { 0x21, 0x80 }, 357141cc406Sopenharmony_ci { 0x22, 0x80 }, 358141cc406Sopenharmony_ci { 0x24, 0x00 }, 359141cc406Sopenharmony_ci { 0x25, 0x00 }, 360141cc406Sopenharmony_ci { 0x26, 0x00 }, 361141cc406Sopenharmony_ci { 0x28, 0x4b }, 362141cc406Sopenharmony_ci { 0x29, 0x4b }, 363141cc406Sopenharmony_ci { 0x2a, 0x4b }, 364141cc406Sopenharmony_ci }; 365141cc406Sopenharmony_ci fe.reg2 = {0x00,0x00,0x00}; 366141cc406Sopenharmony_ci s_frontends->push_back(fe); 367141cc406Sopenharmony_ci 368141cc406Sopenharmony_ci 369141cc406Sopenharmony_ci fe = Genesys_Frontend(); 370141cc406Sopenharmony_ci fe.id = AdcId::G4050; 371141cc406Sopenharmony_ci fe.layout = wolfson_layout; 372141cc406Sopenharmony_ci fe.regs = { 373141cc406Sopenharmony_ci { 0x00, 0x00 }, 374141cc406Sopenharmony_ci { 0x01, 0x23 }, 375141cc406Sopenharmony_ci { 0x02, 0x24 }, 376141cc406Sopenharmony_ci { 0x03, 0x1f }, 377141cc406Sopenharmony_ci { 0x20, 0x45 }, 378141cc406Sopenharmony_ci { 0x21, 0x45 }, 379141cc406Sopenharmony_ci { 0x22, 0x45 }, 380141cc406Sopenharmony_ci { 0x24, 0x00 }, 381141cc406Sopenharmony_ci { 0x25, 0x00 }, 382141cc406Sopenharmony_ci { 0x26, 0x00 }, 383141cc406Sopenharmony_ci { 0x28, 0x4b }, 384141cc406Sopenharmony_ci { 0x29, 0x4b }, 385141cc406Sopenharmony_ci { 0x2a, 0x4b }, 386141cc406Sopenharmony_ci }; 387141cc406Sopenharmony_ci fe.reg2 = {0x00,0x00,0x00}; 388141cc406Sopenharmony_ci s_frontends->push_back(fe); 389141cc406Sopenharmony_ci 390141cc406Sopenharmony_ci 391141cc406Sopenharmony_ci fe = Genesys_Frontend(); 392141cc406Sopenharmony_ci fe.id = AdcId::CANON_LIDE_110; 393141cc406Sopenharmony_ci fe.layout = wolfson_layout; 394141cc406Sopenharmony_ci fe.layout.type = FrontendType::WOLFSON_GL124; 395141cc406Sopenharmony_ci fe.regs = { 396141cc406Sopenharmony_ci { 0x00, 0x80 }, 397141cc406Sopenharmony_ci { 0x01, 0x8a }, 398141cc406Sopenharmony_ci { 0x02, 0x23 }, 399141cc406Sopenharmony_ci { 0x03, 0x4c }, 400141cc406Sopenharmony_ci { 0x20, 0x00 }, 401141cc406Sopenharmony_ci { 0x21, 0x00 }, 402141cc406Sopenharmony_ci { 0x22, 0x00 }, 403141cc406Sopenharmony_ci { 0x24, 0x00 }, 404141cc406Sopenharmony_ci { 0x25, 0xca }, 405141cc406Sopenharmony_ci { 0x26, 0x94 }, 406141cc406Sopenharmony_ci { 0x28, 0x00 }, 407141cc406Sopenharmony_ci { 0x29, 0x00 }, 408141cc406Sopenharmony_ci { 0x2a, 0x00 }, 409141cc406Sopenharmony_ci }; 410141cc406Sopenharmony_ci fe.reg2 = {0x00, 0x00, 0x00}; 411141cc406Sopenharmony_ci s_frontends->push_back(fe); 412141cc406Sopenharmony_ci 413141cc406Sopenharmony_ci /** @brief GL124 special case 414141cc406Sopenharmony_ci * for GL124 based scanners, this struct is "abused" 415141cc406Sopenharmony_ci * in fact the fields are map like below to AFE registers 416141cc406Sopenharmony_ci * (from Texas Instrument or alike ?) 417141cc406Sopenharmony_ci */ 418141cc406Sopenharmony_ci fe = Genesys_Frontend(); 419141cc406Sopenharmony_ci fe.id = AdcId::CANON_LIDE_120; 420141cc406Sopenharmony_ci fe.layout = wolfson_layout; 421141cc406Sopenharmony_ci fe.layout.type = FrontendType::WOLFSON_GL124; 422141cc406Sopenharmony_ci fe.regs = { 423141cc406Sopenharmony_ci { 0x00, 0x80 }, 424141cc406Sopenharmony_ci { 0x01, 0xa3 }, 425141cc406Sopenharmony_ci { 0x02, 0x2b }, 426141cc406Sopenharmony_ci { 0x03, 0x4c }, 427141cc406Sopenharmony_ci { 0x20, 0x00 }, 428141cc406Sopenharmony_ci { 0x21, 0x00 }, 429141cc406Sopenharmony_ci { 0x22, 0x00 }, 430141cc406Sopenharmony_ci { 0x24, 0x00 }, // actual address 0x05 431141cc406Sopenharmony_ci { 0x25, 0xca }, // actual address 0x06 432141cc406Sopenharmony_ci { 0x26, 0x95 }, // actual address 0x07 433141cc406Sopenharmony_ci { 0x28, 0x00 }, 434141cc406Sopenharmony_ci { 0x29, 0x00 }, 435141cc406Sopenharmony_ci { 0x2a, 0x00 }, 436141cc406Sopenharmony_ci }; 437141cc406Sopenharmony_ci fe.reg2 = {0x00, 0x00, 0x00}; 438141cc406Sopenharmony_ci s_frontends->push_back(fe); 439141cc406Sopenharmony_ci 440141cc406Sopenharmony_ci 441141cc406Sopenharmony_ci fe = Genesys_Frontend(); 442141cc406Sopenharmony_ci fe.id = AdcId::PLUSTEK_OPTICPRO_3600; 443141cc406Sopenharmony_ci fe.layout = wolfson_layout; 444141cc406Sopenharmony_ci fe.regs = { 445141cc406Sopenharmony_ci { 0x00, 0x70 }, 446141cc406Sopenharmony_ci { 0x01, 0x80 }, 447141cc406Sopenharmony_ci { 0x02, 0x00 }, 448141cc406Sopenharmony_ci { 0x03, 0x00 }, 449141cc406Sopenharmony_ci { 0x20, 0x00 }, 450141cc406Sopenharmony_ci { 0x21, 0x00 }, 451141cc406Sopenharmony_ci { 0x22, 0x00 }, 452141cc406Sopenharmony_ci { 0x24, 0x00 }, 453141cc406Sopenharmony_ci { 0x25, 0x00 }, 454141cc406Sopenharmony_ci { 0x26, 0x00 }, 455141cc406Sopenharmony_ci { 0x28, 0x3f }, 456141cc406Sopenharmony_ci { 0x29, 0x3d }, 457141cc406Sopenharmony_ci { 0x2a, 0x3d }, 458141cc406Sopenharmony_ci }; 459141cc406Sopenharmony_ci fe.reg2 = {0x00, 0x00, 0x00}; 460141cc406Sopenharmony_ci s_frontends->push_back(fe); 461141cc406Sopenharmony_ci 462141cc406Sopenharmony_ci 463141cc406Sopenharmony_ci fe = Genesys_Frontend(); 464141cc406Sopenharmony_ci fe.id = AdcId::PLUSTEK_OPTICFILM_7200; 465141cc406Sopenharmony_ci fe.layout = analog_devices; 466141cc406Sopenharmony_ci fe.regs = { 467141cc406Sopenharmony_ci { 0x00, 0xf8 }, 468141cc406Sopenharmony_ci { 0x01, 0x80 }, 469141cc406Sopenharmony_ci { 0x02, 0x2e }, 470141cc406Sopenharmony_ci { 0x03, 0x17 }, 471141cc406Sopenharmony_ci { 0x04, 0x20 }, 472141cc406Sopenharmony_ci { 0x05, 0x0109 }, 473141cc406Sopenharmony_ci { 0x06, 0x01 }, 474141cc406Sopenharmony_ci { 0x07, 0x0104 }, 475141cc406Sopenharmony_ci }; 476141cc406Sopenharmony_ci fe.reg2 = {0x00, 0x00, 0x00}; 477141cc406Sopenharmony_ci s_frontends->push_back(fe); 478141cc406Sopenharmony_ci 479141cc406Sopenharmony_ci 480141cc406Sopenharmony_ci fe = Genesys_Frontend(); 481141cc406Sopenharmony_ci fe.id = AdcId::PLUSTEK_OPTICFILM_7200I; 482141cc406Sopenharmony_ci fe.layout = analog_devices; 483141cc406Sopenharmony_ci fe.regs = { 484141cc406Sopenharmony_ci { 0x00, 0xf8 }, 485141cc406Sopenharmony_ci { 0x01, 0x80 }, 486141cc406Sopenharmony_ci { 0x02, 0x0a }, 487141cc406Sopenharmony_ci { 0x03, 0x06 }, 488141cc406Sopenharmony_ci { 0x04, 0x0f }, 489141cc406Sopenharmony_ci { 0x05, 0x56 }, 490141cc406Sopenharmony_ci { 0x06, 0x64 }, 491141cc406Sopenharmony_ci { 0x07, 0x56 }, 492141cc406Sopenharmony_ci }; 493141cc406Sopenharmony_ci fe.reg2 = {0x00, 0x00, 0x00}; 494141cc406Sopenharmony_ci s_frontends->push_back(fe); 495141cc406Sopenharmony_ci 496141cc406Sopenharmony_ci 497141cc406Sopenharmony_ci fe = Genesys_Frontend(); 498141cc406Sopenharmony_ci fe.id = AdcId::PLUSTEK_OPTICFILM_7300; 499141cc406Sopenharmony_ci fe.layout = analog_devices; 500141cc406Sopenharmony_ci fe.regs = { 501141cc406Sopenharmony_ci { 0x00, 0xf8 }, 502141cc406Sopenharmony_ci { 0x01, 0x80 }, 503141cc406Sopenharmony_ci { 0x02, 0x10 }, 504141cc406Sopenharmony_ci { 0x03, 0x06 }, 505141cc406Sopenharmony_ci { 0x04, 0x06 }, 506141cc406Sopenharmony_ci { 0x05, 0x09 }, 507141cc406Sopenharmony_ci { 0x06, 0x0a }, 508141cc406Sopenharmony_ci { 0x07, 0x0102 }, 509141cc406Sopenharmony_ci }; 510141cc406Sopenharmony_ci fe.reg2 = {0x00, 0x00, 0x00}; 511141cc406Sopenharmony_ci s_frontends->push_back(fe); 512141cc406Sopenharmony_ci 513141cc406Sopenharmony_ci 514141cc406Sopenharmony_ci fe = Genesys_Frontend(); 515141cc406Sopenharmony_ci fe.id = AdcId::PLUSTEK_OPTICFILM_7400; 516141cc406Sopenharmony_ci fe.layout = analog_devices; 517141cc406Sopenharmony_ci fe.regs = { 518141cc406Sopenharmony_ci { 0x00, 0xf8 }, 519141cc406Sopenharmony_ci { 0x01, 0x80 }, 520141cc406Sopenharmony_ci { 0x02, 0x1f }, 521141cc406Sopenharmony_ci { 0x03, 0x14 }, 522141cc406Sopenharmony_ci { 0x04, 0x19 }, 523141cc406Sopenharmony_ci { 0x05, 0x1b }, 524141cc406Sopenharmony_ci { 0x06, 0x1e }, 525141cc406Sopenharmony_ci { 0x07, 0x0e }, 526141cc406Sopenharmony_ci }; 527141cc406Sopenharmony_ci fe.reg2 = {0x00, 0x00, 0x00}; 528141cc406Sopenharmony_ci s_frontends->push_back(fe); 529141cc406Sopenharmony_ci 530141cc406Sopenharmony_ci 531141cc406Sopenharmony_ci fe = Genesys_Frontend(); 532141cc406Sopenharmony_ci fe.id = AdcId::PLUSTEK_OPTICFILM_7500I; 533141cc406Sopenharmony_ci fe.layout = analog_devices; 534141cc406Sopenharmony_ci fe.regs = { 535141cc406Sopenharmony_ci { 0x00, 0xf8 }, 536141cc406Sopenharmony_ci { 0x01, 0x80 }, 537141cc406Sopenharmony_ci { 0x02, 0x1d }, 538141cc406Sopenharmony_ci { 0x03, 0x17 }, 539141cc406Sopenharmony_ci { 0x04, 0x13 }, 540141cc406Sopenharmony_ci { 0x05, 0x00 }, 541141cc406Sopenharmony_ci { 0x06, 0x00 }, 542141cc406Sopenharmony_ci { 0x07, 0x0111 }, 543141cc406Sopenharmony_ci }; 544141cc406Sopenharmony_ci fe.reg2 = {0x00, 0x00, 0x00}; 545141cc406Sopenharmony_ci s_frontends->push_back(fe); 546141cc406Sopenharmony_ci 547141cc406Sopenharmony_ci 548141cc406Sopenharmony_ci fe = Genesys_Frontend(); 549141cc406Sopenharmony_ci fe.id = AdcId::PLUSTEK_OPTICFILM_8200I; 550141cc406Sopenharmony_ci fe.layout = analog_devices; 551141cc406Sopenharmony_ci fe.regs = { 552141cc406Sopenharmony_ci { 0x00, 0xf8 }, 553141cc406Sopenharmony_ci { 0x01, 0x80 }, 554141cc406Sopenharmony_ci { 0x02, 0x28 }, 555141cc406Sopenharmony_ci { 0x03, 0x20 }, 556141cc406Sopenharmony_ci { 0x04, 0x28 }, 557141cc406Sopenharmony_ci { 0x05, 0x2f }, 558141cc406Sopenharmony_ci { 0x06, 0x2d }, 559141cc406Sopenharmony_ci { 0x07, 0x23 }, 560141cc406Sopenharmony_ci }; 561141cc406Sopenharmony_ci fe.reg2 = {0x00, 0x00, 0x00}; 562141cc406Sopenharmony_ci s_frontends->push_back(fe); 563141cc406Sopenharmony_ci 564141cc406Sopenharmony_ci 565141cc406Sopenharmony_ci fe = Genesys_Frontend(); 566141cc406Sopenharmony_ci fe.id = AdcId::CANON_4400F; 567141cc406Sopenharmony_ci fe.layout = wolfson_layout; 568141cc406Sopenharmony_ci fe.regs = { 569141cc406Sopenharmony_ci { 0x00, 0x00 }, 570141cc406Sopenharmony_ci { 0x01, 0x23 }, 571141cc406Sopenharmony_ci { 0x02, 0x24 }, 572141cc406Sopenharmony_ci { 0x03, 0x2f }, 573141cc406Sopenharmony_ci { 0x20, 0x6d }, 574141cc406Sopenharmony_ci { 0x21, 0x67 }, 575141cc406Sopenharmony_ci { 0x22, 0x5b }, 576141cc406Sopenharmony_ci { 0x24, 0x00 }, 577141cc406Sopenharmony_ci { 0x25, 0x00 }, 578141cc406Sopenharmony_ci { 0x26, 0x00 }, 579141cc406Sopenharmony_ci { 0x28, 0xd8 }, 580141cc406Sopenharmony_ci { 0x29, 0xd1 }, 581141cc406Sopenharmony_ci { 0x2a, 0xb9 }, 582141cc406Sopenharmony_ci }; 583141cc406Sopenharmony_ci fe.reg2 = {0x00, 0x00, 0x00}; 584141cc406Sopenharmony_ci s_frontends->push_back(fe); 585141cc406Sopenharmony_ci 586141cc406Sopenharmony_ci 587141cc406Sopenharmony_ci fe = Genesys_Frontend(); 588141cc406Sopenharmony_ci fe.id = AdcId::CANON_5600F; 589141cc406Sopenharmony_ci fe.layout = wolfson_layout; 590141cc406Sopenharmony_ci fe.regs = { 591141cc406Sopenharmony_ci { 0x01, 0x23 }, 592141cc406Sopenharmony_ci { 0x02, 0x24 }, 593141cc406Sopenharmony_ci { 0x03, 0x2f }, 594141cc406Sopenharmony_ci { 0x06, 0x00 }, 595141cc406Sopenharmony_ci { 0x08, 0x00 }, 596141cc406Sopenharmony_ci { 0x09, 0x00 }, 597141cc406Sopenharmony_ci { 0x20, 0x60 }, 598141cc406Sopenharmony_ci { 0x21, 0x60 }, 599141cc406Sopenharmony_ci { 0x22, 0x60 }, 600141cc406Sopenharmony_ci { 0x28, 0x77 }, 601141cc406Sopenharmony_ci { 0x29, 0x77 }, 602141cc406Sopenharmony_ci { 0x2a, 0x77 }, 603141cc406Sopenharmony_ci }; 604141cc406Sopenharmony_ci s_frontends->push_back(fe); 605141cc406Sopenharmony_ci 606141cc406Sopenharmony_ci 607141cc406Sopenharmony_ci fe = Genesys_Frontend(); 608141cc406Sopenharmony_ci fe.id = AdcId::CANON_8400F; 609141cc406Sopenharmony_ci fe.layout = wolfson_layout; 610141cc406Sopenharmony_ci fe.regs = { 611141cc406Sopenharmony_ci { 0x00, 0x00 }, 612141cc406Sopenharmony_ci { 0x01, 0x23 }, 613141cc406Sopenharmony_ci { 0x02, 0x24 }, 614141cc406Sopenharmony_ci { 0x03, 0x0f }, 615141cc406Sopenharmony_ci { 0x20, 0x60 }, 616141cc406Sopenharmony_ci { 0x21, 0x5c }, 617141cc406Sopenharmony_ci { 0x22, 0x6c }, 618141cc406Sopenharmony_ci { 0x24, 0x00 }, 619141cc406Sopenharmony_ci { 0x25, 0x00 }, 620141cc406Sopenharmony_ci { 0x26, 0x00 }, 621141cc406Sopenharmony_ci { 0x28, 0x8a }, 622141cc406Sopenharmony_ci { 0x29, 0x9f }, 623141cc406Sopenharmony_ci { 0x2a, 0xc2 }, 624141cc406Sopenharmony_ci }; 625141cc406Sopenharmony_ci fe.reg2 = {0x00, 0x00, 0x00}; 626141cc406Sopenharmony_ci s_frontends->push_back(fe); 627141cc406Sopenharmony_ci 628141cc406Sopenharmony_ci 629141cc406Sopenharmony_ci fe = Genesys_Frontend(); 630141cc406Sopenharmony_ci fe.id = AdcId::CANON_8600F; 631141cc406Sopenharmony_ci fe.layout = wolfson_layout; 632141cc406Sopenharmony_ci fe.regs = { 633141cc406Sopenharmony_ci { 0x00, 0x00 }, 634141cc406Sopenharmony_ci { 0x01, 0x23 }, 635141cc406Sopenharmony_ci { 0x02, 0x24 }, 636141cc406Sopenharmony_ci { 0x03, 0x2f }, 637141cc406Sopenharmony_ci { 0x20, 0x67 }, 638141cc406Sopenharmony_ci { 0x21, 0x69 }, 639141cc406Sopenharmony_ci { 0x22, 0x68 }, 640141cc406Sopenharmony_ci { 0x24, 0x00 }, 641141cc406Sopenharmony_ci { 0x25, 0x00 }, 642141cc406Sopenharmony_ci { 0x26, 0x00 }, 643141cc406Sopenharmony_ci { 0x28, 0xdb }, 644141cc406Sopenharmony_ci { 0x29, 0xda }, 645141cc406Sopenharmony_ci { 0x2a, 0xd7 }, 646141cc406Sopenharmony_ci }; 647141cc406Sopenharmony_ci fe.reg2 = { 0x00, 0x00, 0x00 }; 648141cc406Sopenharmony_ci s_frontends->push_back(fe); 649141cc406Sopenharmony_ci 650141cc406Sopenharmony_ci 651141cc406Sopenharmony_ci fe = Genesys_Frontend(); 652141cc406Sopenharmony_ci fe.id = AdcId::IMG101; 653141cc406Sopenharmony_ci fe.layout = wolfson_layout; 654141cc406Sopenharmony_ci fe.layout.type = FrontendType::WOLFSON_GL846; 655141cc406Sopenharmony_ci fe.regs = { 656141cc406Sopenharmony_ci { 0x00, 0x78 }, 657141cc406Sopenharmony_ci { 0x01, 0xf0 }, 658141cc406Sopenharmony_ci { 0x02, 0x00 }, 659141cc406Sopenharmony_ci { 0x03, 0x00 }, 660141cc406Sopenharmony_ci { 0x20, 0x00 }, 661141cc406Sopenharmony_ci { 0x21, 0x00 }, 662141cc406Sopenharmony_ci { 0x22, 0x00 }, 663141cc406Sopenharmony_ci { 0x24, 0x00 }, 664141cc406Sopenharmony_ci { 0x25, 0x00 }, 665141cc406Sopenharmony_ci { 0x26, 0x00 }, 666141cc406Sopenharmony_ci { 0x28, 0x00 }, 667141cc406Sopenharmony_ci { 0x29, 0x00 }, 668141cc406Sopenharmony_ci { 0x2a, 0x00 }, 669141cc406Sopenharmony_ci }; 670141cc406Sopenharmony_ci fe.reg2 = {0x00, 0x00, 0x00}; 671141cc406Sopenharmony_ci s_frontends->push_back(fe); 672141cc406Sopenharmony_ci 673141cc406Sopenharmony_ci 674141cc406Sopenharmony_ci fe = Genesys_Frontend(); 675141cc406Sopenharmony_ci fe.id = AdcId::PLUSTEK_OPTICBOOK_3800; 676141cc406Sopenharmony_ci fe.layout = wolfson_layout; 677141cc406Sopenharmony_ci fe.layout.type = FrontendType::WOLFSON_GL846; 678141cc406Sopenharmony_ci fe.regs = { 679141cc406Sopenharmony_ci { 0x00, 0x78 }, 680141cc406Sopenharmony_ci { 0x01, 0xf0 }, 681141cc406Sopenharmony_ci { 0x02, 0x00 }, 682141cc406Sopenharmony_ci { 0x03, 0x00 }, 683141cc406Sopenharmony_ci { 0x20, 0x00 }, 684141cc406Sopenharmony_ci { 0x21, 0x00 }, 685141cc406Sopenharmony_ci { 0x22, 0x00 }, 686141cc406Sopenharmony_ci { 0x24, 0x00 }, 687141cc406Sopenharmony_ci { 0x25, 0x00 }, 688141cc406Sopenharmony_ci { 0x26, 0x00 }, 689141cc406Sopenharmony_ci { 0x28, 0x00 }, 690141cc406Sopenharmony_ci { 0x29, 0x00 }, 691141cc406Sopenharmony_ci { 0x2a, 0x00 }, 692141cc406Sopenharmony_ci }; 693141cc406Sopenharmony_ci fe.reg2 = {0x00, 0x00, 0x00}; 694141cc406Sopenharmony_ci s_frontends->push_back(fe); 695141cc406Sopenharmony_ci 696141cc406Sopenharmony_ci 697141cc406Sopenharmony_ci /* reg0: control 74 data, 70 no data 698141cc406Sopenharmony_ci * reg3: offset 699141cc406Sopenharmony_ci * reg6: gain 700141cc406Sopenharmony_ci * reg0 , reg3, reg6 */ 701141cc406Sopenharmony_ci fe = Genesys_Frontend(); 702141cc406Sopenharmony_ci fe.id = AdcId::CANON_LIDE_80; 703141cc406Sopenharmony_ci fe.layout = wolfson_layout; 704141cc406Sopenharmony_ci fe.layout.type = FrontendType::CANON_LIDE_80; 705141cc406Sopenharmony_ci fe.regs = { 706141cc406Sopenharmony_ci { 0x00, 0x70 }, 707141cc406Sopenharmony_ci { 0x01, 0x16 }, 708141cc406Sopenharmony_ci { 0x02, 0x60 }, 709141cc406Sopenharmony_ci { 0x03, 0x00 }, 710141cc406Sopenharmony_ci { 0x20, 0x00 }, 711141cc406Sopenharmony_ci { 0x21, 0x00 }, 712141cc406Sopenharmony_ci { 0x22, 0x00 }, 713141cc406Sopenharmony_ci { 0x24, 0x00 }, 714141cc406Sopenharmony_ci { 0x25, 0x00 }, 715141cc406Sopenharmony_ci { 0x26, 0x00 }, 716141cc406Sopenharmony_ci { 0x28, 0x00 }, 717141cc406Sopenharmony_ci { 0x29, 0x00 }, 718141cc406Sopenharmony_ci { 0x2a, 0x00 }, 719141cc406Sopenharmony_ci }; 720141cc406Sopenharmony_ci fe.reg2 = {0x00, 0x00, 0x00}; 721141cc406Sopenharmony_ci s_frontends->push_back(fe); 722141cc406Sopenharmony_ci} 723141cc406Sopenharmony_ci 724141cc406Sopenharmony_ci} // namespace genesys 725