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_GL646_REGISTERS_H
43 #define BACKEND_GENESYS_GL646_REGISTERS_H
44 
45 #include <cstdint>
46 
47 namespace genesys {
48 namespace gl646 {
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_FASTMOD = 0x10;
59 static constexpr RegMask REG_0x01_COMPENB = 0x08;
60 static constexpr RegMask REG_0x01_DRAMSEL = 0x04;
61 static constexpr RegMask REG_0x01_SHDAREA = 0x02;
62 static constexpr RegMask REG_0x01_SCAN = 0x01;
63 
64 static constexpr RegMask REG_0x02_NOTHOME = 0x80;
65 static constexpr RegMask REG_0x02_ACDCDIS = 0x40;
66 static constexpr RegMask REG_0x02_AGOHOME = 0x20;
67 static constexpr RegMask REG_0x02_MTRPWR = 0x10;
68 static constexpr RegMask REG_0x02_FASTFED = 0x08;
69 static constexpr RegMask REG_0x02_MTRREV = 0x04;
70 static constexpr RegMask REG_0x02_STEPSEL = 0x03;
71 
72 static constexpr RegMask REG_0x02_FULLSTEP = 0x00;
73 static constexpr RegMask REG_0x02_HALFSTEP = 0x01;
74 static constexpr RegMask REG_0x02_QUATERSTEP = 0x02;
75 
76 static constexpr RegMask REG_0x03_TG3 = 0x80;
77 static constexpr RegMask REG_0x03_AVEENB = 0x40;
78 static constexpr RegMask REG_0x03_XPASEL = 0x20;
79 static constexpr RegMask REG_0x03_LAMPPWR = 0x10;
80 static constexpr RegMask REG_0x03_LAMPDOG = 0x08;
81 static constexpr RegMask REG_0x03_LAMPTIM = 0x07;
82 
83 static constexpr RegMask REG_0x04_LINEART = 0x80;
84 static constexpr RegMask REG_0x04_BITSET = 0x40;
85 static constexpr RegMask REG_0x04_ADTYPE = 0x30;
86 static constexpr RegMask REG_0x04_FILTER = 0x0c;
87 static constexpr RegMask REG_0x04_FESET = 0x03;
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_GMMTYPE = 0x30;
96 static constexpr RegMask REG_0x05_GMM14BIT = 0x10;
97 static constexpr RegMask REG_0x05_GMMENB = 0x08;
98 static constexpr RegMask REG_0x05_LEDADD = 0x04;
99 static constexpr RegMask REG_0x05_BASESEL = 0x03;
100 
101 static constexpr RegAddr REG_0x06 = 0x06;
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_DMASEL = 0x02;
107 static constexpr RegMask REG_0x07_DMARDWR = 0x01;
108 
109 static constexpr RegMask REG_0x16_CTRLHI = 0x80;
110 static constexpr RegMask REG_0x16_SELINV = 0x40;
111 static constexpr RegMask REG_0x16_TGINV = 0x20;
112 static constexpr RegMask REG_0x16_CK1INV = 0x10;
113 static constexpr RegMask REG_0x16_CK2INV = 0x08;
114 static constexpr RegMask REG_0x16_CTRLINV = 0x04;
115 static constexpr RegMask REG_0x16_CKDIS = 0x02;
116 static constexpr RegMask REG_0x16_CTRLDIS = 0x01;
117 
118 static constexpr RegMask REG_0x17_TGMODE = 0xc0;
119 static constexpr RegMask REG_0x17_TGMODE_NO_DUMMY = 0x00;
120 static constexpr RegMask REG_0x17_TGMODE_REF = 0x40;
121 static constexpr RegMask REG_0x17_TGMODE_XPA = 0x80;
122 static constexpr RegMask REG_0x17_TGW = 0x3f;
123 
124 static constexpr RegMask REG_0x18_CNSET = 0x80;
125 static constexpr RegMask REG_0x18_DCKSEL = 0x60;
126 static constexpr RegMask REG_0x18_CKTOGGLE = 0x10;
127 static constexpr RegMask REG_0x18_CKDELAY = 0x0c;
128 static constexpr RegMask REG_0x18_CKSEL = 0x03;
129 
130 static constexpr RegMask REG_0x1D_CKMANUAL = 0x80;
131 
132 static constexpr RegMask REG_0x1E_WDTIME = 0xf0;
133 static constexpr RegMask REG_0x1E_LINESEL = 0x0f;
134 
135 static constexpr RegMask REG_0x41_PWRBIT = 0x80;
136 static constexpr RegMask REG_0x41_BUFEMPTY = 0x40;
137 static constexpr RegMask REG_0x41_FEEDFSH = 0x20;
138 static constexpr RegMask REG_0x41_SCANFSH = 0x10;
139 static constexpr RegMask REG_0x41_HOMESNR = 0x08;
140 static constexpr RegMask REG_0x41_LAMPSTS = 0x04;
141 static constexpr RegMask REG_0x41_FEBUSY = 0x02;
142 static constexpr RegMask REG_0x41_MOTMFLG = 0x01;
143 
144 static constexpr RegMask REG_0x66_LOW_CURRENT = 0x10;
145 
146 static constexpr RegMask REG_0x6A_FSTPSEL = 0xc0;
147 static constexpr RegMask REG_0x6A_FASTPWM = 0x3f;
148 
149 static constexpr RegMask REG_0x6C_TGTIME = 0xc0;
150 static constexpr RegMask REG_0x6C_Z1MOD = 0x38;
151 static constexpr RegMask REG_0x6C_Z2MOD = 0x07;
152 
153 static constexpr RegAddr REG_EXPR = 0x10;
154 static constexpr RegAddr REG_EXPG = 0x12;
155 static constexpr RegAddr REG_EXPB = 0x14;
156 static constexpr RegAddr REG_SCANFED = 0x1f;
157 static constexpr RegAddr REG_BUFSEL = 0x20;
158 static constexpr RegAddr REG_LINCNT = 0x25;
159 static constexpr RegAddr REG_DPISET = 0x2c;
160 static constexpr RegAddr REG_STRPIXEL = 0x30;
161 static constexpr RegAddr REG_ENDPIXEL = 0x32;
162 static constexpr RegAddr REG_DUMMY = 0x34;
163 static constexpr RegAddr REG_MAXWD = 0x35;
164 static constexpr RegAddr REG_LPERIOD = 0x38;
165 static constexpr RegAddr REG_FEEDL = 0x3d;
166 static constexpr RegAddr REG_VALIDWORD = 0x42;
167 static constexpr RegAddr REG_FEDCNT = 0x48;
168 static constexpr RegAddr REG_SCANCNT = 0x4b;
169 static constexpr RegAddr REG_Z1MOD = 0x60;
170 static constexpr RegAddr REG_Z2MOD = 0x62;
171 
172 } // namespace gl646
173 } // namespace genesys
174 
175 #endif // BACKEND_GENESYS_GL646_REGISTERS_H
176