1 /* sane - Scanner Access Now Easy.
2 
3    Copyright (C) 2019 Povilas Kanapickas <povilas@radix.lt>
4 
5    This file is part of the SANE package.
6 
7    This program is free software; you can redistribute it and/or
8    modify it under the terms of the GNU General Public License as
9    published by the Free Software Foundation; either version 2 of the
10    License, or (at your option) any later version.
11 
12    This program is distributed in the hope that it will be useful, but
13    WITHOUT ANY WARRANTY; without even the implied warranty of
14    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
15    General Public License for more details.
16 
17    You should have received a copy of the GNU General Public License
18    along with this program.  If not, see <https://www.gnu.org/licenses/>.
19 
20    As a special exception, the authors of SANE give permission for
21    additional uses of the libraries contained in this release of SANE.
22 
23    The exception is that, if you link a SANE library with other files
24    to produce an executable, this does not by itself cause the
25    resulting executable to be covered by the GNU General Public
26    License.  Your use of that executable is in no way restricted on
27    account of linking the SANE library code into it.
28 
29    This exception does not, however, invalidate any other reasons why
30    the executable file might be covered by the GNU General Public
31    License.
32 
33    If you submit changes to SANE to the maintainers to be included in
34    a subsequent release, you agree by submitting the changes that
35    those changes may be distributed with this exception intact.
36 
37    If you write modifications of your own for SANE, it is your choice
38    whether to permit this exception to apply to your modifications.
39    If you do not wish that, delete this exception notice.
40 */
41 
42 #ifndef BACKEND_GENESYS_GL847_REGISTERS_H
43 #define BACKEND_GENESYS_GL847_REGISTERS_H
44 
45 #include <cstdint>
46 
47 namespace genesys {
48 namespace gl847 {
49 
50 using RegAddr = std::uint16_t;
51 using RegMask = std::uint8_t;
52 using RegShift = unsigned;
53 
54 static constexpr RegAddr REG_0x01 = 0x01;
55 static constexpr RegMask REG_0x01_CISSET = 0x80;
56 static constexpr RegMask REG_0x01_DOGENB = 0x40;
57 static constexpr RegMask REG_0x01_DVDSET = 0x20;
58 static constexpr RegMask REG_0x01_STAGGER = 0x10;
59 static constexpr RegMask REG_0x01_COMPENB = 0x08;
60 static constexpr RegMask REG_0x01_TRUEGRAY = 0x04;
61 static constexpr RegMask REG_0x01_SHDAREA = 0x02;
62 static constexpr RegMask REG_0x01_SCAN = 0x01;
63 
64 static constexpr RegAddr REG_0x02 = 0x02;
65 static constexpr RegMask REG_0x02_NOTHOME = 0x80;
66 static constexpr RegMask REG_0x02_ACDCDIS = 0x40;
67 static constexpr RegMask REG_0x02_AGOHOME = 0x20;
68 static constexpr RegMask REG_0x02_MTRPWR = 0x10;
69 static constexpr RegMask REG_0x02_FASTFED = 0x08;
70 static constexpr RegMask REG_0x02_MTRREV = 0x04;
71 static constexpr RegMask REG_0x02_HOMENEG = 0x02;
72 static constexpr RegMask REG_0x02_LONGCURV = 0x01;
73 
74 static constexpr RegAddr REG_0x03 = 0x03;
75 static constexpr RegMask REG_0x03_LAMPDOG = 0x80;
76 static constexpr RegMask REG_0x03_AVEENB = 0x40;
77 static constexpr RegMask REG_0x03_XPASEL = 0x20;
78 static constexpr RegMask REG_0x03_LAMPPWR = 0x10;
79 static constexpr RegMask REG_0x03_LAMPTIM = 0x0f;
80 
81 static constexpr RegAddr REG_0x04 = 0x04;
82 static constexpr RegMask REG_0x04_LINEART = 0x80;
83 static constexpr RegMask REG_0x04_BITSET = 0x40;
84 static constexpr RegMask REG_0x04_AFEMOD = 0x30;
85 static constexpr RegMask REG_0x04_FILTER = 0x0c;
86 static constexpr RegMask REG_0x04_FESET = 0x03;
87 static constexpr RegShift REG_0x04S_AFEMOD = 4;
88 
89 static constexpr RegAddr REG_0x05 = 0x05;
90 static constexpr RegMask REG_0x05_DPIHW = 0xc0;
91 static constexpr RegMask REG_0x05_DPIHW_600 = 0x00;
92 static constexpr RegMask REG_0x05_DPIHW_1200 = 0x40;
93 static constexpr RegMask REG_0x05_DPIHW_2400 = 0x80;
94 static constexpr RegMask REG_0x05_DPIHW_4800 = 0xc0;
95 static constexpr RegMask REG_0x05_MTLLAMP = 0x30;
96 static constexpr RegMask REG_0x05_GMMENB = 0x08;
97 static constexpr RegMask REG_0x05_MTLBASE = 0x03;
98 
99 static constexpr RegAddr REG_0x06 = 0x06;
100 static constexpr RegMask REG_0x06_SCANMOD = 0xe0;
101 static constexpr RegMask REG_0x06S_SCANMOD = 5;
102 static constexpr RegMask REG_0x06_PWRBIT = 0x10;
103 static constexpr RegMask REG_0x06_GAIN4 = 0x08;
104 static constexpr RegMask REG_0x06_OPTEST = 0x07;
105 
106 static constexpr RegMask REG_0x07_LAMPSIM = 0x80;
107 
108 static constexpr RegMask REG_0x08_DRAM2X = 0x80;
109 static constexpr RegMask REG_0x08_MPENB = 0x20;
110 static constexpr RegMask REG_0x08_CIS_LINE = 0x10;
111 static constexpr RegMask REG_0x08_IR1ENB = 0x08;
112 static constexpr RegMask REG_0x08_IR2ENB = 0x04;
113 static constexpr RegMask REG_0x08_ENB24M = 0x01;
114 
115 static constexpr RegMask REG_0x09_MCNTSET = 0xc0;
116 static constexpr RegMask REG_0x09_EVEN1ST = 0x20;
117 static constexpr RegMask REG_0x09_BLINE1ST = 0x10;
118 static constexpr RegMask REG_0x09_BACKSCAN = 0x08;
119 static constexpr RegMask REG_0x09_ENHANCE = 0x04;
120 static constexpr RegMask REG_0x09_SHORTTG = 0x02;
121 static constexpr RegMask REG_0x09_NWAIT = 0x01;
122 
123 static constexpr RegShift REG_0x09S_MCNTSET = 6;
124 static constexpr RegShift REG_0x09S_CLKSET = 4;
125 
126 static constexpr RegMask REG_0x0A_LPWMEN = 0x10;
127 
128 static constexpr RegAddr REG_0x0B = 0x0b;
129 static constexpr RegMask REG_0x0B_DRAMSEL = 0x07;
130 static constexpr RegMask REG_0x0B_ENBDRAM = 0x08;
131 static constexpr RegMask REG_0x0B_RFHDIS = 0x10;
132 static constexpr RegMask REG_0x0B_CLKSET = 0xe0;
133 static constexpr RegMask REG_0x0B_24MHZ = 0x00;
134 static constexpr RegMask REG_0x0B_30MHZ = 0x20;
135 static constexpr RegMask REG_0x0B_40MHZ = 0x40;
136 static constexpr RegMask REG_0x0B_48MHZ = 0x60;
137 static constexpr RegMask REG_0x0B_60MHZ = 0x80;
138 
139 static constexpr RegAddr REG_0x0C = 0x0c;
140 static constexpr RegMask REG_0x0C_CCDLMT = 0x0f;
141 
142 static constexpr RegAddr REG_0x0D = 0x0d;
143 static constexpr RegMask REG_0x0D_FULLSTP = 0x10;
144 static constexpr RegMask REG_0x0D_SEND = 0x80;
145 static constexpr RegMask REG_0x0D_CLRMCNT = 0x04;
146 static constexpr RegMask REG_0x0D_CLRDOCJM = 0x02;
147 static constexpr RegMask REG_0x0D_CLRLNCNT = 0x01;
148 
149 static constexpr RegAddr REG_0x0F = 0x0f;
150 
151 static constexpr RegMask REG_0x16_CTRLHI = 0x80;
152 static constexpr RegMask REG_0x16_TOSHIBA = 0x40;
153 static constexpr RegMask REG_0x16_TGINV = 0x20;
154 static constexpr RegMask REG_0x16_CK1INV = 0x10;
155 static constexpr RegMask REG_0x16_CK2INV = 0x08;
156 static constexpr RegMask REG_0x16_CTRLINV = 0x04;
157 static constexpr RegMask REG_0x16_CKDIS = 0x02;
158 static constexpr RegMask REG_0x16_CTRLDIS = 0x01;
159 
160 static constexpr RegMask REG_0x17_TGMODE = 0xc0;
161 static constexpr RegMask REG_0x17_TGMODE_NO_DUMMY = 0x00;
162 static constexpr RegMask REG_0x17_TGMODE_REF = 0x40;
163 static constexpr RegMask REG_0x17_TGMODE_XPA = 0x80;
164 static constexpr RegMask REG_0x17_TGW = 0x3f;
165 static constexpr RegMask REG_0x17S_TGW = 0;
166 
167 static constexpr RegAddr REG_0x18 = 0x18;
168 static constexpr RegMask REG_0x18_CNSET = 0x80;
169 static constexpr RegMask REG_0x18_DCKSEL = 0x60;
170 static constexpr RegMask REG_0x18_CKTOGGLE = 0x10;
171 static constexpr RegMask REG_0x18_CKDELAY = 0x0c;
172 static constexpr RegMask REG_0x18_CKSEL = 0x03;
173 
174 static constexpr RegMask REG_0x1A_SW2SET = 0x80;
175 static constexpr RegMask REG_0x1A_SW1SET = 0x40;
176 static constexpr RegMask REG_0x1A_MANUAL3 = 0x02;
177 static constexpr RegMask REG_0x1A_MANUAL1 = 0x01;
178 static constexpr RegMask REG_0x1A_CK4INV = 0x08;
179 static constexpr RegMask REG_0x1A_CK3INV = 0x04;
180 static constexpr RegMask REG_0x1A_LINECLP = 0x02;
181 
182 static constexpr RegAddr REG_0x1C = 0x1c;
183 static constexpr RegMask REG_0x1C_TGTIME = 0x07;
184 
185 static constexpr RegMask REG_0x1D_CK4LOW = 0x80;
186 static constexpr RegMask REG_0x1D_CK3LOW = 0x40;
187 static constexpr RegMask REG_0x1D_CK1LOW = 0x20;
188 static constexpr RegMask REG_0x1D_TGSHLD = 0x1f;
189 static constexpr RegMask REG_0x1DS_TGSHLD = 0;
190 
191 static constexpr RegAddr REG_0x1E = 0x1e;
192 static constexpr RegMask REG_0x1E_WDTIME = 0xf0;
193 static constexpr RegMask REG_0x1ES_WDTIME = 4;
194 static constexpr RegMask REG_0x1E_LINESEL = 0x0f;
195 static constexpr RegMask REG_0x1ES_LINESEL = 0;
196 
197 static constexpr RegAddr REG_FEDCNT = 0x1f;
198 
199 static constexpr RegAddr REG_0x24 = 0x1c;
200 static constexpr RegAddr REG_0x40 = 0x40;
201 static constexpr RegMask REG_0x40_CHKVER = 0x10;
202 static constexpr RegMask REG_0x40_HISPDFLG = 0x04;
203 static constexpr RegMask REG_0x40_MOTMFLG = 0x02;
204 static constexpr RegMask REG_0x40_DATAENB = 0x01;
205 
206 static constexpr RegMask REG_0x41_PWRBIT = 0x80;
207 static constexpr RegMask REG_0x41_BUFEMPTY = 0x40;
208 static constexpr RegMask REG_0x41_FEEDFSH = 0x20;
209 static constexpr RegMask REG_0x41_SCANFSH = 0x10;
210 static constexpr RegMask REG_0x41_HOMESNR = 0x08;
211 static constexpr RegMask REG_0x41_LAMPSTS = 0x04;
212 static constexpr RegMask REG_0x41_FEBUSY = 0x02;
213 static constexpr RegMask REG_0x41_MOTORENB = 0x01;
214 
215 static constexpr RegMask REG_0x58_VSMP = 0xf8;
216 static constexpr RegShift REG_0x58S_VSMP = 3;
217 static constexpr RegMask REG_0x58_VSMPW = 0x07;
218 static constexpr RegShift REG_0x58S_VSMPW = 0;
219 
220 static constexpr RegMask REG_0x59_BSMP = 0xf8;
221 static constexpr RegShift REG_0x59S_BSMP = 3;
222 static constexpr RegMask REG_0x59_BSMPW = 0x07;
223 static constexpr RegShift REG_0x59S_BSMPW = 0;
224 
225 static constexpr RegMask REG_0x5A_ADCLKINV = 0x80;
226 static constexpr RegMask REG_0x5A_RLCSEL = 0x40;
227 static constexpr RegMask REG_0x5A_CDSREF = 0x30;
228 static constexpr RegShift REG_0x5AS_CDSREF = 4;
229 static constexpr RegMask REG_0x5A_RLC = 0x0f;
230 static constexpr RegShift REG_0x5AS_RLC = 0;
231 
232 static constexpr RegMask REG_0x5E_DECSEL = 0xe0;
233 static constexpr RegShift REG_0x5ES_DECSEL = 5;
234 static constexpr RegMask REG_0x5E_STOPTIM = 0x1f;
235 static constexpr RegShift REG_0x5ES_STOPTIM = 0;
236 
237 static constexpr RegAddr REG_0x60 = 0x60;
238 static constexpr RegMask REG_0x60_Z1MOD = 0x1f;
239 static constexpr RegAddr REG_0x61 = 0x61;
240 static constexpr RegMask REG_0x61_Z1MOD = 0xff;
241 static constexpr RegAddr REG_0x62 = 0x62;
242 static constexpr RegMask REG_0x62_Z1MOD = 0xff;
243 
244 static constexpr RegAddr REG_0x63 = 0x63;
245 static constexpr RegMask REG_0x63_Z2MOD = 0x1f;
246 static constexpr RegAddr REG_0x64 = 0x64;
247 static constexpr RegMask REG_0x64_Z2MOD = 0xff;
248 static constexpr RegAddr REG_0x65 = 0x65;
249 static constexpr RegMask REG_0x65_Z2MOD = 0xff;
250 
251 static constexpr RegShift REG_0x60S_STEPSEL = 5;
252 static constexpr RegMask REG_0x60_STEPSEL = 0xe0;
253 static constexpr RegMask REG_0x60_FULLSTEP = 0x00;
254 static constexpr RegMask REG_0x60_HALFSTEP = 0x20;
255 static constexpr RegMask REG_0x60_EIGHTHSTEP = 0x60;
256 static constexpr RegMask REG_0x60_16THSTEP = 0x80;
257 
258 static constexpr RegShift REG_0x63S_FSTPSEL = 5;
259 static constexpr RegMask REG_0x63_FSTPSEL = 0xe0;
260 static constexpr RegMask REG_0x63_FULLSTEP = 0x00;
261 static constexpr RegMask REG_0x63_HALFSTEP = 0x20;
262 static constexpr RegMask REG_0x63_EIGHTHSTEP = 0x60;
263 static constexpr RegMask REG_0x63_16THSTEP = 0x80;
264 
265 static constexpr RegAddr REG_0x67 = 0x67;
266 static constexpr RegMask REG_0x67_MTRPWM = 0x80;
267 
268 static constexpr RegAddr REG_0x68 = 0x68;
269 static constexpr RegMask REG_0x68_FASTPWM = 0x80;
270 
271 static constexpr RegAddr REG_0x6B = 0x6b;
272 static constexpr RegMask REG_0x6B_MULTFILM = 0x80;
273 static constexpr RegMask REG_0x6B_GPOM13 = 0x40;
274 static constexpr RegMask REG_0x6B_GPOM12 = 0x20;
275 static constexpr RegMask REG_0x6B_GPOM11 = 0x10;
276 static constexpr RegMask REG_0x6B_GPO18 = 0x02;
277 static constexpr RegMask REG_0x6B_GPO17 = 0x01;
278 
279 static constexpr RegShift REG_0x6C = 0x6c;
280 static constexpr RegMask REG_0x6C_GPIO16 = 0x80;
281 static constexpr RegMask REG_0x6C_GPIO15 = 0x40;
282 static constexpr RegMask REG_0x6C_GPIO14 = 0x20;
283 static constexpr RegMask REG_0x6C_GPIO13 = 0x10;
284 static constexpr RegMask REG_0x6C_GPIO12 = 0x08;
285 static constexpr RegMask REG_0x6C_GPIO11 = 0x04;
286 static constexpr RegMask REG_0x6C_GPIO10 = 0x02;
287 static constexpr RegMask REG_0x6C_GPIO9 = 0x01;
288 static constexpr RegMask REG_0x6C_GPIOH = 0xff;
289 static constexpr RegMask REG_0x6C_GPIOL = 0xff;
290 
291 static constexpr RegAddr REG_0x6D = 0x6d;
292 static constexpr RegAddr REG_0x6E = 0x6e;
293 static constexpr RegAddr REG_0x6F = 0x6f;
294 static constexpr RegAddr REG_0x7E = 0x7e;
295 
296 static constexpr RegMask REG_0x87_LEDADD = 0x04;
297 
298 static constexpr RegAddr REG_0x9E = 0x9e;
299 static constexpr RegAddr REG_0x9F = 0x9f;
300 
301 static constexpr RegAddr REG_0xA6 = 0xa6;
302 static constexpr RegAddr REG_0xA7 = 0xa7;
303 static constexpr RegAddr REG_0xA8 = 0xa8;
304 static constexpr RegAddr REG_0xA9 = 0xa9;
305 static constexpr RegAddr REG_0xAB = 0xab;
306 
307 static constexpr RegAddr REG_EXPR = 0x10;
308 static constexpr RegAddr REG_EXPG = 0x12;
309 static constexpr RegAddr REG_EXPB = 0x14;
310 static constexpr RegAddr REG_EXPDMY = 0x19;
311 static constexpr RegAddr REG_STEPNO = 0x21;
312 static constexpr RegAddr REG_FWDSTEP = 0x22;
313 static constexpr RegAddr REG_BWDSTEP = 0x23;
314 static constexpr RegAddr REG_FASTNO = 0x24;
315 static constexpr RegAddr REG_DPISET = 0x2c;
316 static constexpr RegAddr REG_STRPIXEL = 0x30;
317 static constexpr RegAddr REG_ENDPIXEL = 0x32;
318 static constexpr RegAddr REG_LINCNT = 0x25;
319 static constexpr RegAddr REG_MAXWD = 0x35;
320 static constexpr RegAddr REG_LPERIOD = 0x38;
321 static constexpr RegAddr REG_FEEDL = 0x3d;
322 static constexpr RegAddr REG_FMOVDEC = 0x5f;
323 static constexpr RegAddr REG_FSHDEC = 0x69;
324 static constexpr RegAddr REG_FMOVNO = 0x6a;
325 static constexpr RegAddr REG_CK1MAP = 0x74;
326 static constexpr RegAddr REG_CK3MAP = 0x77;
327 static constexpr RegAddr REG_CK4MAP = 0x7a;
328 
329 } // namespace gl847
330 } // namespace genesys
331 
332 #endif // BACKEND_GENESYS_GL847_REGISTERS_H
333