Project

General

Profile

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