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