Project

General

Profile

Download (6.75 KB) Statistics
| Branch: | Tag: | Revision:
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
#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
enum rc632_reg_status {
74
	RC632_STAT_LOALERT		= 0x01,
75
	RC632_STAT_HIALERT		= 0x02,
76
	RC632_STAT_ERR			= 0x04,
77
	RC632_STAT_IRQ			= 0x08,
78
#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
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
	RC632_CONTROL_FIFO_FLUSH	= 0x01,
117
	RC632_CONTROL_TIMER_START	= 0x02,
118
	RC632_CONTROL_TIMER_STOP	= 0x04,
119
	RC632_CONTROL_CRYPTO1_ON	= 0x08,
120
	RC632_CONTROL_POWERDOWN		= 0x10,
121
	RC632_CONTROL_STANDBY		= 0x20,
122
};
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
	 /* bit 2-0 TXCoding */
149
#define RC632_CDRCTRL_TXCD_MASK		0x07
150
	RC632_CDRCTRL_TXCD_NRZ		= 0x00,
151
	RC632_CDRCTRL_TXCD_14443A	= 0x01,
152
	RC632_CDRCTRL_TXCD_ICODE_STD	= 0x04,
153
	RC632_CDRCTRL_TXCD_ICODE_FAST	= 0x05,
154
	RC632_CDRCTRL_TXCD_15693_STD	= 0x06,
155
	RC632_CDRCTRL_TXCD_15693_FAST	= 0x07,
156

    
157
	/* bit5-3 CoderRate*/
158
#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

    
167
	/* bit 7 SendOnePuls */
168
	RC632_CDRCTRL_15693_EOF_PULSE	= 0x80,
169
};
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
enum rc632_reg_timer_control {
254
	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
};
259
 
260
enum rc632_reg_irq_pin_cfg {
261
	RC632_IRQCFG_CMOS		= 0x01,
262
	RC632_IRQCFG_INV		= 0x02,
263
};
264

    
265
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

    
271
#endif
(3-3/11)
Add picture from clipboard (Maximum size: 48.8 MB)