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