remove autogenerated file
[librfid] / src / rc632.h
1 /* Register definitions for Philips CL RC632 RFID Reader IC
2  *
3  * (C) 2005 Harald Welte <laforge@gnumonks.org>
4  *
5  * Licensed under GNU General Public License, Version 2
6  */
7
8 enum rc632_registers {
9         RC632_REG_PAGE0                 = 0x00,
10         RC632_REG_COMMAND               = 0x01,
11         RC632_REG_FIFO_DATA             = 0x02,
12         RC632_REG_PRIMARY_STATUS        = 0x03,
13         RC632_REG_FIFO_LENGTH           = 0x04,
14         RC632_REG_SECONDARY_STATUS      = 0x05,
15         RC632_REG_INTERRUPT_EN          = 0x06,
16         RC632_REG_INTERRUPT_RQ          = 0x07,
17
18         RC632_REG_PAGE1                 = 0x08,
19         RC632_REG_CONTROL               = 0x09,
20         RC632_REG_ERROR_FLAG            = 0x0a,
21         RC632_REG_COLL_POS              = 0x0b,
22         RC632_REG_TIMER_VALUE           = 0x0c,
23         RC632_REG_CRC_RESULT_LSB        = 0x0d,
24         RC632_REG_CRC_RESULT_MSB        = 0x0e,
25         RC632_REG_BIT_FRAMING           = 0x0f,
26
27         RC632_REG_PAGE2                 = 0x10,
28         RC632_REG_TX_CONTROL            = 0x11,
29         RC632_REG_CW_CONDUCTANCE        = 0x12,
30         RC632_REG_MOD_CONDUCTANCE       = 0x13,
31         RC632_REG_CODER_CONTROL         = 0x14,
32         RC632_REG_MOD_WIDTH             = 0x15,
33         RC632_REG_MOD_WIDTH_SOF         = 0x16,
34         RC632_REG_TYPE_B_FRAMING        = 0x17,
35
36         RC632_REG_PAGE3                 = 0x18,
37         RC632_REG_RX_CONTROL1           = 0x19,
38         RC632_REG_DECODER_CONTROL       = 0x1a,
39         RC632_REG_BIT_PHASE             = 0x1b,
40         RC632_REG_RX_THRESHOLD          = 0x1c,
41         RC632_REG_BPSK_DEM_CONTROL      = 0x1d,
42         RC632_REG_RX_CONTROL2           = 0x1e,
43         RC632_REG_CLOCK_Q_CONTROL       = 0x1f,
44
45         RC632_REG_PAGE4                 = 0x20,
46         RC632_REG_RX_WAIT               = 0x21,
47         RC632_REG_CHANNEL_REDUNDANCY    = 0x22,
48         RC632_REG_CRC_PRESET_LSB        = 0x23,
49         RC632_REG_CRC_PRESET_MSB        = 0x24,
50         RC632_REG_TIME_SLOT_PERIOD      = 0x25,
51         RC632_REG_MFOUT_SELECT          = 0x26,
52         RC632_REG_PRESET_27             = 0x27,
53
54         RC632_REG_PAGE5                 = 0x28,
55         RC632_REG_FIFO_LEVEL            = 0x29,
56         RC632_REG_TIMER_CLOCK           = 0x2a,
57         RC632_REG_TIMER_CONTROL         = 0x2b,
58         RC632_REG_TIMER_RELOAD          = 0x2c,
59         RC632_REG_IRQ_PIN_CONFIG        = 0x2d,
60         RC632_REG_PRESET_2E             = 0x2e,
61         RC632_REG_PRESET_2F             = 0x2f,
62
63         RC632_REG_PAGE6                 = 0x30,
64
65         RC632_REG_PAGE7                 = 0x38,
66         RC632_REG_TEST_ANA_SELECT       = 0x3a,
67         RC632_REG_TEST_DIGI_SELECT      = 0x3d,
68 };
69
70 enum rc632_reg_status {
71         RC632_STAT_LOALERT              = 0x01,
72         RC632_STAT_HIALERT              = 0x02,
73         RC632_STAT_ERR                  = 0x04,
74         RC632_STAT_IRQ                  = 0x08,
75 #define RC632_STAT_MODEM_MASK           0x70
76         RC632_STAT_MODEM_IDLE           = 0x00,
77         RC632_STAT_MODEM_TXSOF          = 0x10,
78         RC632_STAT_MODEM_TXDATA         = 0x20,
79         RC632_STAT_MODEM_TXEOF          = 0x30,
80         RC632_STAT_MODEM_GOTORX         = 0x40,
81         RC632_STAT_MODEM_PREPARERX      = 0x50,
82         RC632_STAT_MODEM_AWAITINGRX     = 0x60,
83         RC632_STAT_MODEM_RECV           = 0x70,
84 };
85
86 enum rc632_reg_command {
87         RC632_CMD_IDLE                  = 0x00,
88         RC632_CMD_WRITE_E2              = 0x01,
89         RC632_CMD_READ_E2               = 0x03,
90         RC632_CMD_LOAD_CONFIG           = 0x07,
91         RC632_CMD_LOAD_KEY_E2           = 0x0b,
92         RC632_CMD_AUTHENT1              = 0x0c,
93         RC632_CMD_CALC_CRC              = 0x12,
94         RC632_CMD_AUTHENT2              = 0x14,
95         RC632_CMD_RECEIVE               = 0x16,
96         RC632_CMD_LOAD_KEY              = 0x19,
97         RC632_CMD_TRANSMIT              = 0x1a,
98         RC632_CMD_TRANSCEIVE            = 0x1e,
99         RC632_CMD_STARTUP               = 0x3f,
100 };
101
102 enum rc632_reg_interrupt {
103         RC632_INT_LOALERT               = 0x01,
104         RC632_INT_HIALERT               = 0x02,
105         RC632_INT_IDLE                  = 0x04,
106         RC632_INT_RX                    = 0x08,
107         RC632_INT_TX                    = 0x10,
108         RC632_INT_TIMER                 = 0x20,
109         RC632_INT_SET                   = 0x80,
110 };
111
112 enum rc632_reg_control {
113         RC632_CONTROL_FIFO_FLUSH        = 0x01,
114         RC632_CONTROL_TIMER_START       = 0x02,
115         RC632_CONTROL_TIMER_STOP        = 0x04,
116         RC632_CONTROL_CRYPTO1_ON        = 0x08,
117         RC632_CONTROL_POWERDOWN         = 0x10,
118         RC632_CONTROL_STANDBY           = 0x20,
119 };
120
121 enum rc632_reg_error_flag {
122         RC632_ERR_FLAG_COL_ERR          = 0x01,
123         RC632_ERR_FLAG_PARITY_ERR       = 0x02,
124         RC632_ERR_FLAG_FRAMING_ERR      = 0x04,
125         RC632_ERR_FLAG_CRC_ERR          = 0x08,
126         RC632_ERR_FLAG_FIFO_OVERFLOW    = 0x10,
127         RC632_ERR_FLAG_ACCESS_ERR       = 0x20,
128         RC632_ERR_FLAG_KEY_ERR          = 0x40,
129 };
130
131 enum rc632_reg_tx_control {
132         RC632_TXCTRL_TX1_RF_EN          = 0x01,
133         RC632_TXCTRL_TX2_RF_EN          = 0x02,
134         RC632_TXCTRL_TX2_CW             = 0x04,
135         RC632_TXCTRL_TX2_INV            = 0x08,
136         RC632_TXCTRL_FORCE_100_ASK      = 0x10,
137
138         RC632_TXCTRL_MOD_SRC_LOW        = 0x00,
139         RC632_TXCTRL_MOD_SRC_HIGH       = 0x20,
140         RC632_TXCTRL_MOD_SRC_INT        = 0x40,
141         RC632_TXCTRL_MOD_SRC_MFIN       = 0x60,
142 };
143
144 enum rc632_reg_coder_control {
145          /* bit 2-0 TXCoding */
146 #define RC632_CDRCTRL_TXCD_MASK         0x07
147         RC632_CDRCTRL_TXCD_NRZ          = 0x00,
148         RC632_CDRCTRL_TXCD_14443A       = 0x01,
149         RC632_CDRCTRL_TXCD_ICODE_STD    = 0x04,
150         RC632_CDRCTRL_TXCD_ICODE_FAST   = 0x05,
151         RC632_CDRCTRL_TXCD_15693_STD    = 0x06,
152         RC632_CDRCTRL_TXCD_15693_FAST   = 0x07,
153
154         /* bit5-3 CoderRate*/
155 #define RC632_CDRCTRL_RATE_MASK         0x38
156         RC632_CDRCTRL_RATE_848K         = 0x00,
157         RC632_CDRCTRL_RATE_424K         = 0x08,
158         RC632_CDRCTRL_RATE_212K         = 0x10,
159         RC632_CDRCTRL_RATE_106K         = 0x18,
160         RC632_CDRCTRL_RATE_14443B       = 0x20,
161         RC632_CDRCTRL_RATE_15693        = 0x28,
162         RC632_CDRCTRL_RATE_ICODE_FAST   = 0x30,
163
164         /* bit 7 SendOnePuls */
165         RC632_CDRCTRL_15693_EOF_PULSE   = 0x80,
166 };
167
168 enum rc632_erg_type_b_framing {
169         RC632_TBFRAMING_SOF_10L_2H      = 0x00,
170         RC632_TBFRAMING_SOF_10L_3H      = 0x01,
171         RC632_TBFRAMING_SOF_11L_2H      = 0x02,
172         RC632_TBFRAMING_SOF_11L_3H      = 0x03,
173
174         RC632_TBFRAMING_EOF_10          = 0x00,
175         RC632_TBFRAMING_EOF_11          = 0x20,
176
177         RC632_TBFRAMING_NO_TX_SOF       = 0x80,
178         RC632_TBFRAMING_NO_TX_EOF       = 0x40,
179 };
180 #define RC632_TBFRAMING_SPACE_SHIFT     2
181 #define RC632_TBFRAMING_SPACE_MASK      7
182
183 enum rc632_reg_rx_control1 {
184         RC632_RXCTRL1_GAIN_20DB         = 0x00,
185         RC632_RXCTRL1_GAIN_24DB         = 0x01,
186         RC632_RXCTRL1_GAIN_31DB         = 0x02,
187         RC632_RXCTRL1_GAIN_35DB         = 0x03,
188
189         RC632_RXCTRL1_LP_OFF            = 0x04,
190         RC632_RXCTRL1_ISO15693          = 0x08,
191         RC632_RXCTRL1_ISO14443          = 0x10,
192
193 #define RC632_RXCTRL1_SUBCP_MASK        0xe0
194         RC632_RXCTRL1_SUBCP_1           = 0x00,
195         RC632_RXCTRL1_SUBCP_2           = 0x20,
196         RC632_RXCTRL1_SUBCP_4           = 0x40,
197         RC632_RXCTRL1_SUBCP_8           = 0x60,
198         RC632_RXCTRL1_SUBCP_16          = 0x80,
199 };
200
201 enum rc632_reg_decoder_control {
202         RC632_DECCTRL_MANCHESTER        = 0x00,
203         RC632_DECCTRL_BPSK              = 0x01,
204
205         RC632_DECCTRL_RX_INVERT         = 0x04,
206
207         RC632_DECCTRL_RXFR_ICODE        = 0x00,
208         RC632_DECCTRL_RXFR_14443A       = 0x08,
209         RC632_DECCTRL_RXFR_15693        = 0x10,
210         RC632_DECCTRL_RXFR_14443B       = 0x18,
211
212         RC632_DECCTRL_ZEROAFTERCOL      = 0x20,
213
214         RC632_DECCTRL_RX_MULTIPLE       = 0x40,
215 };
216
217 enum rc632_reg_bpsk_dem_control {
218         RC632_BPSKD_TAUB_SHIFT          = 0x00,
219         RC632_BPSKD_TAUB_MASK           = 0x03,
220         
221         RC632_BPSKD_TAUD_SHIFT          = 0x02,
222         RC632_BPSKD_TAUD_MASK           = 0x03,
223
224         RC632_BPSKD_FILTER_AMP_DETECT   = 0x10,
225         RC632_BPSKD_NO_RX_EOF           = 0x20,
226         RC632_BPSKD_NO_RX_EGT           = 0x40,
227         RC632_BPSKD_NO_RX_SOF           = 0x80,
228 };
229
230 enum rc632_reg_rx_control2 {
231         RC632_RXCTRL2_DECSRC_LOW        = 0x00,
232         RC632_RXCTRL2_DECSRC_INT        = 0x01,
233         RC632_RXCTRL2_DECSRC_SUBC_MFIN  = 0x10,
234         RC632_RXCTRL2_DECSRC_BASE_MFIN  = 0x11,
235
236         RC632_RXCTRL2_AUTO_PD           = 0x40,
237         RC632_RXCTRL2_CLK_I             = 0x80,
238         RC632_RXCTRL2_CLK_Q             = 0x00,
239 };
240
241 enum rc632_reg_channel_redundancy {
242         RC632_CR_PARITY_ENABLE          = 0x01,
243         RC632_CR_PARITY_ODD             = 0x02,
244         RC632_CR_TX_CRC_ENABLE          = 0x04,
245         RC632_CR_RX_CRC_ENABLE          = 0x08,
246         RC632_CR_CRC8                   = 0x10,
247         RC632_CR_CRC3309                = 0x20,
248 };
249
250 enum rc632_reg_timer_control {
251         RC632_TMR_START_TX_BEGIN        = 0x01,
252         RC632_TMR_START_TX_END          = 0x02,
253         RC632_TMR_STOP_RX_BEGIN         = 0x04,
254         RC632_TMR_STOP_RX_END           = 0x08,
255 };
256  
257 enum rc632_reg_timer_irq {
258         RC632_IRQ_LO_ALERT              = 0x01,
259         RC632_IRQ_HI_ALERT              = 0x02,
260         RC632_IRQ_IDLE                  = 0x04,
261         RC632_IRQ_RX                    = 0x08,
262         RC632_IRQ_TX                    = 0x10,
263         RC632_IRQ_TIMER                 = 0x20,
264
265         RC632_IRQ_SET                   = 0x80,
266 };
267
268 enum rc632_reg_secondary_status {
269         RC632_SEC_ST_TMR_RUNNING        = 0x80,
270         RC632_SEC_ST_E2_READY           = 0x40,
271         RC632_SEC_ST_CRC_READY          = 0x20,
272 };