1be5418d4SNishad Kamdar /* SPDX-License-Identifier: GPL-2.0+ */
2be5418d4SNishad Kamdar /*
3874bcba6SMarcus Wolf  * register description for HopeRf rf69 radio module
4874bcba6SMarcus Wolf  *
5874bcba6SMarcus Wolf  * Copyright (C) 2016 Wolf-Entwicklungen
6874bcba6SMarcus Wolf  *	Marcus Wolf <linux@wolf-entwicklungen.de>
7874bcba6SMarcus Wolf  */
8874bcba6SMarcus Wolf 
9874bcba6SMarcus Wolf /*******************************************/
10874bcba6SMarcus Wolf /* RF69 register addresses		   */
11874bcba6SMarcus Wolf /*******************************************/
12874bcba6SMarcus Wolf #define  REG_FIFO			0x00
13874bcba6SMarcus Wolf #define  REG_OPMODE			0x01
14874bcba6SMarcus Wolf #define  REG_DATAMODUL			0x02
15874bcba6SMarcus Wolf #define  REG_BITRATE_MSB		0x03
16874bcba6SMarcus Wolf #define  REG_BITRATE_LSB		0x04
17874bcba6SMarcus Wolf #define  REG_FDEV_MSB			0x05
18874bcba6SMarcus Wolf #define  REG_FDEV_LSB			0x06
19874bcba6SMarcus Wolf #define  REG_FRF_MSB			0x07
20874bcba6SMarcus Wolf #define  REG_FRF_MID			0x08
21874bcba6SMarcus Wolf #define  REG_FRF_LSB			0x09
22874bcba6SMarcus Wolf #define  REG_OSC1			0x0A
23874bcba6SMarcus Wolf #define  REG_AFCCTRL			0x0B
24874bcba6SMarcus Wolf #define  REG_LOWBAT			0x0C
25874bcba6SMarcus Wolf #define  REG_LISTEN1			0x0D
26874bcba6SMarcus Wolf #define  REG_LISTEN2			0x0E
27874bcba6SMarcus Wolf #define  REG_LISTEN3			0x0F
28874bcba6SMarcus Wolf #define  REG_VERSION			0x10
29874bcba6SMarcus Wolf #define  REG_PALEVEL			0x11
30874bcba6SMarcus Wolf #define  REG_PARAMP			0x12
31874bcba6SMarcus Wolf #define  REG_OCP			0x13
32874bcba6SMarcus Wolf #define  REG_AGCREF			0x14 /* not available on RF69 */
33874bcba6SMarcus Wolf #define  REG_AGCTHRESH1			0x15 /* not available on RF69 */
34874bcba6SMarcus Wolf #define  REG_AGCTHRESH2			0x16 /* not available on RF69 */
35874bcba6SMarcus Wolf #define  REG_AGCTHRESH3			0x17 /* not available on RF69 */
36874bcba6SMarcus Wolf #define  REG_LNA			0x18
37874bcba6SMarcus Wolf #define  REG_RXBW			0x19
38874bcba6SMarcus Wolf #define  REG_AFCBW			0x1A
39874bcba6SMarcus Wolf #define  REG_OOKPEAK			0x1B
40874bcba6SMarcus Wolf #define  REG_OOKAVG			0x1C
41874bcba6SMarcus Wolf #define  REG_OOKFIX			0x1D
42874bcba6SMarcus Wolf #define  REG_AFCFEI			0x1E
43874bcba6SMarcus Wolf #define  REG_AFCMSB			0x1F
44874bcba6SMarcus Wolf #define  REG_AFCLSB			0x20
45874bcba6SMarcus Wolf #define  REG_FEIMSB			0x21
46874bcba6SMarcus Wolf #define  REG_FEILSB			0x22
47874bcba6SMarcus Wolf #define  REG_RSSICONFIG			0x23
48874bcba6SMarcus Wolf #define  REG_RSSIVALUE			0x24
49874bcba6SMarcus Wolf #define  REG_DIOMAPPING1		0x25
50874bcba6SMarcus Wolf #define  REG_DIOMAPPING2		0x26
51874bcba6SMarcus Wolf #define  REG_IRQFLAGS1			0x27
52874bcba6SMarcus Wolf #define  REG_IRQFLAGS2			0x28
53874bcba6SMarcus Wolf #define  REG_RSSITHRESH			0x29
54874bcba6SMarcus Wolf #define  REG_RXTIMEOUT1			0x2A
55874bcba6SMarcus Wolf #define  REG_RXTIMEOUT2			0x2B
56874bcba6SMarcus Wolf #define  REG_PREAMBLE_MSB		0x2C
57874bcba6SMarcus Wolf #define  REG_PREAMBLE_LSB		0x2D
58874bcba6SMarcus Wolf #define  REG_SYNC_CONFIG		0x2E
59874bcba6SMarcus Wolf #define  REG_SYNCVALUE1			0x2F
60874bcba6SMarcus Wolf #define  REG_SYNCVALUE2			0x30
61874bcba6SMarcus Wolf #define  REG_SYNCVALUE3			0x31
62874bcba6SMarcus Wolf #define  REG_SYNCVALUE4			0x32
63874bcba6SMarcus Wolf #define  REG_SYNCVALUE5			0x33
64874bcba6SMarcus Wolf #define  REG_SYNCVALUE6			0x34
65874bcba6SMarcus Wolf #define  REG_SYNCVALUE7			0x35
66874bcba6SMarcus Wolf #define  REG_SYNCVALUE8			0x36
67874bcba6SMarcus Wolf #define  REG_PACKETCONFIG1		0x37
68874bcba6SMarcus Wolf #define  REG_PAYLOAD_LENGTH		0x38
69874bcba6SMarcus Wolf #define  REG_NODEADRS			0x39
70874bcba6SMarcus Wolf #define  REG_BROADCASTADRS		0x3A
71874bcba6SMarcus Wolf #define  REG_AUTOMODES			0x3B
72874bcba6SMarcus Wolf #define  REG_FIFO_THRESH		0x3C
73874bcba6SMarcus Wolf #define  REG_PACKETCONFIG2		0x3D
74874bcba6SMarcus Wolf #define  REG_AESKEY1			0x3E
75874bcba6SMarcus Wolf #define  REG_AESKEY2			0x3F
76874bcba6SMarcus Wolf #define  REG_AESKEY3			0x40
77874bcba6SMarcus Wolf #define  REG_AESKEY4			0x41
78874bcba6SMarcus Wolf #define  REG_AESKEY5			0x42
79874bcba6SMarcus Wolf #define  REG_AESKEY6			0x43
80874bcba6SMarcus Wolf #define  REG_AESKEY7			0x44
81874bcba6SMarcus Wolf #define  REG_AESKEY8			0x45
82874bcba6SMarcus Wolf #define  REG_AESKEY9			0x46
83874bcba6SMarcus Wolf #define  REG_AESKEY10			0x47
84874bcba6SMarcus Wolf #define  REG_AESKEY11			0x48
85874bcba6SMarcus Wolf #define  REG_AESKEY12			0x49
86874bcba6SMarcus Wolf #define  REG_AESKEY13			0x4A
87874bcba6SMarcus Wolf #define  REG_AESKEY14			0x4B
88874bcba6SMarcus Wolf #define  REG_AESKEY15			0x4C
89874bcba6SMarcus Wolf #define  REG_AESKEY16			0x4D
90874bcba6SMarcus Wolf #define  REG_TEMP1			0x4E
91874bcba6SMarcus Wolf #define  REG_TEMP2			0x4F
92874bcba6SMarcus Wolf #define  REG_TESTPA1			0x5A /* only present on RFM69HW */
93874bcba6SMarcus Wolf #define  REG_TESTPA2			0x5C /* only present on RFM69HW */
94874bcba6SMarcus Wolf #define  REG_TESTDAGC			0x6F
95874bcba6SMarcus Wolf 
96874bcba6SMarcus Wolf /******************************************************/
97874bcba6SMarcus Wolf /* RF69/SX1231 bit definition				*/
98874bcba6SMarcus Wolf /******************************************************/
99874bcba6SMarcus Wolf /* write bit */
100874bcba6SMarcus Wolf #define WRITE_BIT				0x80
101874bcba6SMarcus Wolf 
102874bcba6SMarcus Wolf /* RegOpMode */
103874bcba6SMarcus Wolf #define  MASK_OPMODE_SEQUENCER_OFF		0x80
104874bcba6SMarcus Wolf #define  MASK_OPMODE_LISTEN_ON			0x40
105874bcba6SMarcus Wolf #define  MASK_OPMODE_LISTEN_ABORT		0x20
106874bcba6SMarcus Wolf #define  MASK_OPMODE_MODE			0x1C
107874bcba6SMarcus Wolf 
108874bcba6SMarcus Wolf #define  OPMODE_MODE_SLEEP			0x00
109874bcba6SMarcus Wolf #define  OPMODE_MODE_STANDBY			0x04 /* default */
110874bcba6SMarcus Wolf #define  OPMODE_MODE_SYNTHESIZER		0x08
111874bcba6SMarcus Wolf #define  OPMODE_MODE_TRANSMIT			0x0C
112874bcba6SMarcus Wolf #define  OPMODE_MODE_RECEIVE			0x10
113874bcba6SMarcus Wolf 
114874bcba6SMarcus Wolf /* RegDataModul */
115874bcba6SMarcus Wolf #define  MASK_DATAMODUL_MODE			0x06
116874bcba6SMarcus Wolf #define  MASK_DATAMODUL_MODULATION_TYPE		0x18
117874bcba6SMarcus Wolf #define  MASK_DATAMODUL_MODULATION_SHAPE	0x03
118874bcba6SMarcus Wolf 
119874bcba6SMarcus Wolf #define  DATAMODUL_MODE_PACKET			0x00 /* default */
120874bcba6SMarcus Wolf #define  DATAMODUL_MODE_CONTINUOUS		0x40
121874bcba6SMarcus Wolf #define  DATAMODUL_MODE_CONTINUOUS_NOSYNC	0x60
122874bcba6SMarcus Wolf 
123874bcba6SMarcus Wolf #define  DATAMODUL_MODULATION_TYPE_FSK		0x00 /* default */
124874bcba6SMarcus Wolf #define  DATAMODUL_MODULATION_TYPE_OOK		0x08
125874bcba6SMarcus Wolf 
126874bcba6SMarcus Wolf #define  DATAMODUL_MODULATION_SHAPE_NONE	0x00 /* default */
127874bcba6SMarcus Wolf #define  DATAMODUL_MODULATION_SHAPE_1_0		0x01
128874bcba6SMarcus Wolf #define  DATAMODUL_MODULATION_SHAPE_0_5		0x02
129874bcba6SMarcus Wolf #define  DATAMODUL_MODULATION_SHAPE_0_3		0x03
130874bcba6SMarcus Wolf #define  DATAMODUL_MODULATION_SHAPE_BR		0x01
131874bcba6SMarcus Wolf #define  DATAMODUL_MODULATION_SHAPE_2BR		0x02
132874bcba6SMarcus Wolf 
133874bcba6SMarcus Wolf /* RegFDevMsb (0x05)*/
134874bcba6SMarcus Wolf #define FDEVMASB_MASK				0x3f
135874bcba6SMarcus Wolf 
136874bcba6SMarcus Wolf /*
137056eeda2SDerek Robson  * // RegOsc1
138056eeda2SDerek Robson  * #define  OSC1_RCCAL_START			0x80
139056eeda2SDerek Robson  * #define  OSC1_RCCAL_DONE			0x40
140056eeda2SDerek Robson  *
141056eeda2SDerek Robson  * // RegLowBat
142056eeda2SDerek Robson  * #define  LOWBAT_MONITOR				0x10
143056eeda2SDerek Robson  * #define  LOWBAT_ON				0x08
144056eeda2SDerek Robson  * #define  LOWBAT_OFF				0x00  // Default
145056eeda2SDerek Robson  *
146056eeda2SDerek Robson  * #define  LOWBAT_TRIM_1695			0x00
147056eeda2SDerek Robson  * #define  LOWBAT_TRIM_1764			0x01
148056eeda2SDerek Robson  * #define  LOWBAT_TRIM_1835			0x02  // Default
149056eeda2SDerek Robson  * #define  LOWBAT_TRIM_1905			0x03
150056eeda2SDerek Robson  * #define  LOWBAT_TRIM_1976			0x04
151056eeda2SDerek Robson  * #define  LOWBAT_TRIM_2045			0x05
152056eeda2SDerek Robson  * #define  LOWBAT_TRIM_2116			0x06
153056eeda2SDerek Robson  * #define  LOWBAT_TRIM_2185			0x07
154056eeda2SDerek Robson  *
155056eeda2SDerek Robson  *
156056eeda2SDerek Robson  * // RegListen1
157056eeda2SDerek Robson  * #define  LISTEN1_RESOL_64			0x50
158056eeda2SDerek Robson  * #define  LISTEN1_RESOL_4100			0xA0  // Default
159056eeda2SDerek Robson  * #define  LISTEN1_RESOL_262000			0xF0
160056eeda2SDerek Robson  *
161056eeda2SDerek Robson  * #define  LISTEN1_CRITERIA_RSSI			0x00  // Default
162056eeda2SDerek Robson  * #define  LISTEN1_CRITERIA_RSSIANDSYNC		0x08
163056eeda2SDerek Robson  *
164056eeda2SDerek Robson  * #define  LISTEN1_END_00				0x00
165056eeda2SDerek Robson  * #define  LISTEN1_END_01				0x02  // Default
166056eeda2SDerek Robson  * #define  LISTEN1_END_10				0x04
167056eeda2SDerek Robson  *
168056eeda2SDerek Robson  *
169056eeda2SDerek Robson  * // RegListen2
170056eeda2SDerek Robson  * #define  LISTEN2_COEFIDLE_VALUE			0xF5 // Default
171056eeda2SDerek Robson  *
172056eeda2SDerek Robson  * // RegListen3
173056eeda2SDerek Robson  * #define  LISTEN3_COEFRX_VALUE			0x20 // Default
174874bcba6SMarcus Wolf  */
175874bcba6SMarcus Wolf 
176874bcba6SMarcus Wolf // RegPaLevel
177874bcba6SMarcus Wolf #define  MASK_PALEVEL_PA0			0x80
178874bcba6SMarcus Wolf #define  MASK_PALEVEL_PA1			0x40
179874bcba6SMarcus Wolf #define  MASK_PALEVEL_PA2			0x20
180874bcba6SMarcus Wolf #define  MASK_PALEVEL_OUTPUT_POWER		0x1F
181874bcba6SMarcus Wolf 
182874bcba6SMarcus Wolf // RegPaRamp
183874bcba6SMarcus Wolf #define  PARAMP_3400				0x00
184874bcba6SMarcus Wolf #define  PARAMP_2000				0x01
185874bcba6SMarcus Wolf #define  PARAMP_1000				0x02
186874bcba6SMarcus Wolf #define  PARAMP_500				0x03
187874bcba6SMarcus Wolf #define  PARAMP_250				0x04
188874bcba6SMarcus Wolf #define  PARAMP_125				0x05
189874bcba6SMarcus Wolf #define  PARAMP_100				0x06
190874bcba6SMarcus Wolf #define  PARAMP_62				0x07
191874bcba6SMarcus Wolf #define  PARAMP_50				0x08
192874bcba6SMarcus Wolf #define  PARAMP_40				0x09 /* default */
193874bcba6SMarcus Wolf #define  PARAMP_31				0x0A
194874bcba6SMarcus Wolf #define  PARAMP_25				0x0B
195874bcba6SMarcus Wolf #define  PARAMP_20				0x0C
196874bcba6SMarcus Wolf #define  PARAMP_15				0x0D
197874bcba6SMarcus Wolf #define  PARAMP_12				0x0E
198874bcba6SMarcus Wolf #define  PARAMP_10				0x0F
199874bcba6SMarcus Wolf 
200874bcba6SMarcus Wolf #define  MASK_PARAMP				0x0F
201874bcba6SMarcus Wolf 
202874bcba6SMarcus Wolf /*
203056eeda2SDerek Robson  * // RegOcp
204056eeda2SDerek Robson  * #define  OCP_OFF				0x0F
205056eeda2SDerek Robson  * #define  OCP_ON					0x1A  // Default
206056eeda2SDerek Robson  *
207056eeda2SDerek Robson  * #define  OCP_TRIM_45				0x00
208056eeda2SDerek Robson  * #define  OCP_TRIM_50				0x01
209056eeda2SDerek Robson  * #define  OCP_TRIM_55				0x02
210056eeda2SDerek Robson  * #define  OCP_TRIM_60				0x03
211056eeda2SDerek Robson  * #define  OCP_TRIM_65				0x04
212056eeda2SDerek Robson  * #define  OCP_TRIM_70				0x05
213056eeda2SDerek Robson  * #define  OCP_TRIM_75				0x06
214056eeda2SDerek Robson  * #define  OCP_TRIM_80				0x07
215056eeda2SDerek Robson  * #define  OCP_TRIM_85				0x08
216056eeda2SDerek Robson  * #define  OCP_TRIM_90				0x09
217056eeda2SDerek Robson  * #define  OCP_TRIM_95				0x0A
218056eeda2SDerek Robson  * #define  OCP_TRIM_100				0x0B  // Default
219056eeda2SDerek Robson  * #define  OCP_TRIM_105				0x0C
220056eeda2SDerek Robson  * #define  OCP_TRIM_110				0x0D
221056eeda2SDerek Robson  * #define  OCP_TRIM_115				0x0E
222056eeda2SDerek Robson  * #define  OCP_TRIM_120				0x0F
223874bcba6SMarcus Wolf  */
224874bcba6SMarcus Wolf 
225874bcba6SMarcus Wolf /* RegLna (0x18) */
226874bcba6SMarcus Wolf #define  MASK_LNA_ZIN				0x80
227874bcba6SMarcus Wolf #define  MASK_LNA_CURRENT_GAIN			0x38
228874bcba6SMarcus Wolf #define  MASK_LNA_GAIN				0x07
229874bcba6SMarcus Wolf 
230874bcba6SMarcus Wolf #define  LNA_GAIN_AUTO				0x00 /* default */
231874bcba6SMarcus Wolf #define  LNA_GAIN_MAX				0x01
232874bcba6SMarcus Wolf #define  LNA_GAIN_MAX_MINUS_6			0x02
233874bcba6SMarcus Wolf #define  LNA_GAIN_MAX_MINUS_12			0x03
234874bcba6SMarcus Wolf #define  LNA_GAIN_MAX_MINUS_24			0x04
235874bcba6SMarcus Wolf #define  LNA_GAIN_MAX_MINUS_36			0x05
236874bcba6SMarcus Wolf #define  LNA_GAIN_MAX_MINUS_48			0x06
237874bcba6SMarcus Wolf 
238874bcba6SMarcus Wolf /* RegRxBw (0x19) and RegAfcBw (0x1A) */
239874bcba6SMarcus Wolf #define  MASK_BW_DCC_FREQ			0xE0
240874bcba6SMarcus Wolf #define  MASK_BW_MANTISSE			0x18
241874bcba6SMarcus Wolf #define  MASK_BW_EXPONENT			0x07
242874bcba6SMarcus Wolf 
243874bcba6SMarcus Wolf #define  BW_DCC_16_PERCENT			0x00
244874bcba6SMarcus Wolf #define  BW_DCC_8_PERCENT			0x20
245874bcba6SMarcus Wolf #define  BW_DCC_4_PERCENT			0x40 /* default */
246874bcba6SMarcus Wolf #define  BW_DCC_2_PERCENT			0x60
247874bcba6SMarcus Wolf #define  BW_DCC_1_PERCENT			0x80
248874bcba6SMarcus Wolf #define  BW_DCC_0_5_PERCENT			0xA0
249874bcba6SMarcus Wolf #define  BW_DCC_0_25_PERCENT			0xC0
250874bcba6SMarcus Wolf #define  BW_DCC_0_125_PERCENT			0xE0
251874bcba6SMarcus Wolf 
252874bcba6SMarcus Wolf #define  BW_MANT_16				0x00
253874bcba6SMarcus Wolf #define  BW_MANT_20				0x08
254874bcba6SMarcus Wolf #define  BW_MANT_24				0x10 /* default */
255874bcba6SMarcus Wolf 
256874bcba6SMarcus Wolf /* RegOokPeak (0x1B) */
257874bcba6SMarcus Wolf #define  MASK_OOKPEAK_THRESTYPE			0xc0
258874bcba6SMarcus Wolf #define  MASK_OOKPEAK_THRESSTEP			0x38
259874bcba6SMarcus Wolf #define  MASK_OOKPEAK_THRESDEC			0x07
260874bcba6SMarcus Wolf 
261874bcba6SMarcus Wolf #define  OOKPEAK_THRESHTYPE_FIXED		0x00
262874bcba6SMarcus Wolf #define  OOKPEAK_THRESHTYPE_PEAK		0x40 /* default */
263874bcba6SMarcus Wolf #define  OOKPEAK_THRESHTYPE_AVERAGE		0x80
264874bcba6SMarcus Wolf 
265874bcba6SMarcus Wolf #define  OOKPEAK_THRESHSTEP_0_5_DB		0x00 /* default */
266874bcba6SMarcus Wolf #define  OOKPEAK_THRESHSTEP_1_0_DB		0x08
267874bcba6SMarcus Wolf #define  OOKPEAK_THRESHSTEP_1_5_DB		0x10
268874bcba6SMarcus Wolf #define  OOKPEAK_THRESHSTEP_2_0_DB		0x18
269874bcba6SMarcus Wolf #define  OOKPEAK_THRESHSTEP_3_0_DB		0x20
270874bcba6SMarcus Wolf #define  OOKPEAK_THRESHSTEP_4_0_DB		0x28
271874bcba6SMarcus Wolf #define  OOKPEAK_THRESHSTEP_5_0_DB		0x30
272874bcba6SMarcus Wolf #define  OOKPEAK_THRESHSTEP_6_0_DB		0x38
273874bcba6SMarcus Wolf 
274874bcba6SMarcus Wolf #define  OOKPEAK_THRESHDEC_ONCE			0x00 /* default */
275874bcba6SMarcus Wolf #define  OOKPEAK_THRESHDEC_EVERY_2ND		0x01
276874bcba6SMarcus Wolf #define  OOKPEAK_THRESHDEC_EVERY_4TH		0x02
277874bcba6SMarcus Wolf #define  OOKPEAK_THRESHDEC_EVERY_8TH		0x03
278874bcba6SMarcus Wolf #define  OOKPEAK_THRESHDEC_TWICE		0x04
279874bcba6SMarcus Wolf #define  OOKPEAK_THRESHDEC_4_TIMES		0x05
280874bcba6SMarcus Wolf #define  OOKPEAK_THRESHDEC_8_TIMES		0x06
281874bcba6SMarcus Wolf #define  OOKPEAK_THRESHDEC_16_TIMES		0x07
282874bcba6SMarcus Wolf 
283874bcba6SMarcus Wolf /*
284056eeda2SDerek Robson  * // RegOokAvg
285056eeda2SDerek Robson  * #define  OOKAVG_AVERAGETHRESHFILT_00		0x00
286056eeda2SDerek Robson  * #define  OOKAVG_AVERAGETHRESHFILT_01		0x40
287056eeda2SDerek Robson  * #define  OOKAVG_AVERAGETHRESHFILT_10		0x80  // Default
288056eeda2SDerek Robson  * #define  OOKAVG_AVERAGETHRESHFILT_11		0xC0
289056eeda2SDerek Robson  *
290056eeda2SDerek Robson  *
291056eeda2SDerek Robson  * // RegAfcFei
292056eeda2SDerek Robson  * #define  AFCFEI_FEI_DONE			0x40
293056eeda2SDerek Robson  * #define  AFCFEI_FEI_START			0x20
294056eeda2SDerek Robson  * #define  AFCFEI_AFC_DONE			0x10
295056eeda2SDerek Robson  * #define  AFCFEI_AFCAUTOCLEAR_ON			0x08
296056eeda2SDerek Robson  * #define  AFCFEI_AFCAUTOCLEAR_OFF		0x00  // Default
297056eeda2SDerek Robson  *
298056eeda2SDerek Robson  * #define  AFCFEI_AFCAUTO_ON			0x04
299056eeda2SDerek Robson  * #define  AFCFEI_AFCAUTO_OFF			0x00  // Default
300056eeda2SDerek Robson  *
301056eeda2SDerek Robson  * #define  AFCFEI_AFC_CLEAR			0x02
302056eeda2SDerek Robson  * #define  AFCFEI_AFC_START			0x01
303056eeda2SDerek Robson  *
304056eeda2SDerek Robson  * // RegRssiConfig
305056eeda2SDerek Robson  * #define  RSSI_FASTRX_ON				0x08
306056eeda2SDerek Robson  * #define  RSSI_FASTRX_OFF			0x00  // Default
307056eeda2SDerek Robson  * #define  RSSI_DONE				0x02
308056eeda2SDerek Robson  * #define  RSSI_START				0x01
309874bcba6SMarcus Wolf  */
310874bcba6SMarcus Wolf 
311874bcba6SMarcus Wolf /* RegDioMapping1 */
312874bcba6SMarcus Wolf #define  MASK_DIO0				0xC0
313874bcba6SMarcus Wolf #define  MASK_DIO1				0x30
314874bcba6SMarcus Wolf #define  MASK_DIO2				0x0C
315874bcba6SMarcus Wolf #define  MASK_DIO3				0x03
316874bcba6SMarcus Wolf #define  SHIFT_DIO0				6
317874bcba6SMarcus Wolf #define  SHIFT_DIO1				4
318874bcba6SMarcus Wolf #define  SHIFT_DIO2				2
319874bcba6SMarcus Wolf #define  SHIFT_DIO3				0
320874bcba6SMarcus Wolf 
321874bcba6SMarcus Wolf /* RegDioMapping2 */
322874bcba6SMarcus Wolf #define  MASK_DIO4				0xC0
323874bcba6SMarcus Wolf #define  MASK_DIO5				0x30
324874bcba6SMarcus Wolf #define  SHIFT_DIO4				6
325874bcba6SMarcus Wolf #define  SHIFT_DIO5				4
326874bcba6SMarcus Wolf 
327874bcba6SMarcus Wolf /* DIO numbers */
328874bcba6SMarcus Wolf #define  DIO0					0
329874bcba6SMarcus Wolf #define  DIO1					1
330874bcba6SMarcus Wolf #define  DIO2					2
331874bcba6SMarcus Wolf #define  DIO3					3
332874bcba6SMarcus Wolf #define  DIO4					4
333874bcba6SMarcus Wolf #define  DIO5					5
334874bcba6SMarcus Wolf 
335874bcba6SMarcus Wolf /* DIO Mapping values (packet mode) */
3363d7f3bf2SSimon Sandström #define  DIO_MODE_READY_DIO4			0x00
3373d7f3bf2SSimon Sandström #define  DIO_MODE_READY_DIO5			0x03
3383d7f3bf2SSimon Sandström #define  DIO_CLK_OUT				0x00
3393d7f3bf2SSimon Sandström #define  DIO_DATA				0x01
3403d7f3bf2SSimon Sandström #define  DIO_TIMEOUT_DIO1			0x03
3413d7f3bf2SSimon Sandström #define  DIO_TIMEOUT_DIO4			0x00
3423d7f3bf2SSimon Sandström #define  DIO_RSSI_DIO0				0x03
3433d7f3bf2SSimon Sandström #define  DIO_RSSI_DIO3_4			0x01
3443d7f3bf2SSimon Sandström #define  DIO_RX_READY				0x02
3453d7f3bf2SSimon Sandström #define  DIO_PLL_LOCK				0x03
3463d7f3bf2SSimon Sandström #define  DIO_TX_READY				0x01
3473d7f3bf2SSimon Sandström #define  DIO_FIFO_FULL_DIO1			0x01
3483d7f3bf2SSimon Sandström #define  DIO_FIFO_FULL_DIO3			0x00
3493d7f3bf2SSimon Sandström #define  DIO_SYNC_ADDRESS			0x02
3503d7f3bf2SSimon Sandström #define  DIO_FIFO_NOT_EMPTY_DIO1		0x02
3513d7f3bf2SSimon Sandström #define  DIO_FIFO_NOT_EMPTY_FIO2		0x00
3523d7f3bf2SSimon Sandström #define  DIO_AUTOMODE				0x04
3533d7f3bf2SSimon Sandström #define  DIO_FIFO_LEVEL				0x00
3543d7f3bf2SSimon Sandström #define  DIO_CRC_OK				0x00
3553d7f3bf2SSimon Sandström #define  DIO_PAYLOAD_READY			0x01
3563d7f3bf2SSimon Sandström #define  DIO_PACKET_SENT			0x00
3573d7f3bf2SSimon Sandström #define  DIO_DCLK				0x00
358874bcba6SMarcus Wolf 
359874bcba6SMarcus Wolf /* RegDioMapping2 CLK_OUT part */
360874bcba6SMarcus Wolf #define  MASK_DIOMAPPING2_CLK_OUT		0x07
361874bcba6SMarcus Wolf 
362874bcba6SMarcus Wolf #define  DIOMAPPING2_CLK_OUT_NO_DIV		0x00
363874bcba6SMarcus Wolf #define  DIOMAPPING2_CLK_OUT_DIV_2		0x01
364874bcba6SMarcus Wolf #define  DIOMAPPING2_CLK_OUT_DIV_4		0x02
365874bcba6SMarcus Wolf #define  DIOMAPPING2_CLK_OUT_DIV_8		0x03
366874bcba6SMarcus Wolf #define  DIOMAPPING2_CLK_OUT_DIV_16		0x04
367874bcba6SMarcus Wolf #define  DIOMAPPING2_CLK_OUT_DIV_32		0x05
368874bcba6SMarcus Wolf #define  DIOMAPPING2_CLK_OUT_RC			0x06
369874bcba6SMarcus Wolf #define  DIOMAPPING2_CLK_OUT_OFF		0x07 /* default */
370874bcba6SMarcus Wolf 
371874bcba6SMarcus Wolf /* RegIrqFlags1 */
372874bcba6SMarcus Wolf #define  MASK_IRQFLAGS1_MODE_READY		0x80
373874bcba6SMarcus Wolf #define  MASK_IRQFLAGS1_RX_READY		0x40
374874bcba6SMarcus Wolf #define  MASK_IRQFLAGS1_TX_READY		0x20
375874bcba6SMarcus Wolf #define  MASK_IRQFLAGS1_PLL_LOCK		0x10
376874bcba6SMarcus Wolf #define  MASK_IRQFLAGS1_RSSI			0x08
377874bcba6SMarcus Wolf #define  MASK_IRQFLAGS1_TIMEOUT			0x04
378874bcba6SMarcus Wolf #define  MASK_IRQFLAGS1_AUTOMODE		0x02
379874bcba6SMarcus Wolf #define  MASK_IRQFLAGS1_SYNC_ADDRESS_MATCH	0x01
380874bcba6SMarcus Wolf 
381874bcba6SMarcus Wolf /* RegIrqFlags2 */
382874bcba6SMarcus Wolf #define  MASK_IRQFLAGS2_FIFO_FULL		0x80
383874bcba6SMarcus Wolf #define  MASK_IRQFLAGS2_FIFO_NOT_EMPTY		0x40
384874bcba6SMarcus Wolf #define  MASK_IRQFLAGS2_FIFO_LEVEL		0x20
385874bcba6SMarcus Wolf #define  MASK_IRQFLAGS2_FIFO_OVERRUN		0x10
386874bcba6SMarcus Wolf #define  MASK_IRQFLAGS2_PACKET_SENT		0x08
387874bcba6SMarcus Wolf #define  MASK_IRQFLAGS2_PAYLOAD_READY		0x04
388874bcba6SMarcus Wolf #define  MASK_IRQFLAGS2_CRC_OK			0x02
389874bcba6SMarcus Wolf #define  MASK_IRQFLAGS2_LOW_BAT			0x01
390874bcba6SMarcus Wolf 
391874bcba6SMarcus Wolf /* RegSyncConfig */
392874bcba6SMarcus Wolf #define  MASK_SYNC_CONFIG_SYNC_ON		0x80 /* default */
393874bcba6SMarcus Wolf #define  MASK_SYNC_CONFIG_FIFO_FILL_CONDITION	0x40
394874bcba6SMarcus Wolf #define  MASK_SYNC_CONFIG_SYNC_SIZE		0x38
395874bcba6SMarcus Wolf #define  MASK_SYNC_CONFIG_SYNC_TOLERANCE	0x07
396874bcba6SMarcus Wolf 
397874bcba6SMarcus Wolf /* RegPacketConfig1 */
398d0222e9aSYannick Loeck #define  MASK_PACKETCONFIG1_PACKET_FORMAT_VARIABLE	0x80
399874bcba6SMarcus Wolf #define  MASK_PACKETCONFIG1_DCFREE			0x60
400874bcba6SMarcus Wolf #define  MASK_PACKETCONFIG1_CRC_ON			0x10 /* default */
401874bcba6SMarcus Wolf #define  MASK_PACKETCONFIG1_CRCAUTOCLEAR_OFF		0x08
402874bcba6SMarcus Wolf #define  MASK_PACKETCONFIG1_ADDRESSFILTERING		0x06
403874bcba6SMarcus Wolf 
404874bcba6SMarcus Wolf #define  PACKETCONFIG1_DCFREE_OFF			0x00 /* default */
405874bcba6SMarcus Wolf #define  PACKETCONFIG1_DCFREE_MANCHESTER		0x20
406874bcba6SMarcus Wolf #define  PACKETCONFIG1_DCFREE_WHITENING			0x40
407874bcba6SMarcus Wolf #define  PACKETCONFIG1_ADDRESSFILTERING_OFF		0x00 /* default */
408874bcba6SMarcus Wolf #define  PACKETCONFIG1_ADDRESSFILTERING_NODE		0x02
409874bcba6SMarcus Wolf #define  PACKETCONFIG1_ADDRESSFILTERING_NODEBROADCAST	0x04
410874bcba6SMarcus Wolf 
411874bcba6SMarcus Wolf /*
412056eeda2SDerek Robson  * // RegAutoModes
413056eeda2SDerek Robson  * #define  AUTOMODES_ENTER_OFF			0x00  // Default
414056eeda2SDerek Robson  * #define  AUTOMODES_ENTER_FIFONOTEMPTY		0x20
415056eeda2SDerek Robson  * #define  AUTOMODES_ENTER_FIFOLEVEL		0x40
416056eeda2SDerek Robson  * #define  AUTOMODES_ENTER_CRCOK			0x60
417056eeda2SDerek Robson  * #define  AUTOMODES_ENTER_PAYLOADREADY		0x80
418056eeda2SDerek Robson  * #define  AUTOMODES_ENTER_SYNCADRSMATCH		0xA0
419056eeda2SDerek Robson  * #define  AUTOMODES_ENTER_PACKETSENT		0xC0
420056eeda2SDerek Robson  * #define  AUTOMODES_ENTER_FIFOEMPTY		0xE0
421056eeda2SDerek Robson  *
422056eeda2SDerek Robson  * #define  AUTOMODES_EXIT_OFF			0x00  // Default
423056eeda2SDerek Robson  * #define  AUTOMODES_EXIT_FIFOEMPTY		0x04
424056eeda2SDerek Robson  * #define  AUTOMODES_EXIT_FIFOLEVEL		0x08
425056eeda2SDerek Robson  * #define  AUTOMODES_EXIT_CRCOK			0x0C
426056eeda2SDerek Robson  * #define  AUTOMODES_EXIT_PAYLOADREADY		0x10
427056eeda2SDerek Robson  * #define  AUTOMODES_EXIT_SYNCADRSMATCH		0x14
428056eeda2SDerek Robson  * #define  AUTOMODES_EXIT_PACKETSENT		0x18
429056eeda2SDerek Robson  * #define  AUTOMODES_EXIT_RXTIMEOUT		0x1C
430056eeda2SDerek Robson  *
431056eeda2SDerek Robson  * #define  AUTOMODES_INTERMEDIATE_SLEEP		0x00  // Default
432056eeda2SDerek Robson  * #define  AUTOMODES_INTERMEDIATE_STANDBY		0x01
433056eeda2SDerek Robson  * #define  AUTOMODES_INTERMEDIATE_RECEIVER	0x02
434056eeda2SDerek Robson  * #define  AUTOMODES_INTERMEDIATE_TRANSMITTER	0x03
435056eeda2SDerek Robson  *
436874bcba6SMarcus Wolf  */
437874bcba6SMarcus Wolf /* RegFifoThresh (0x3c) */
438874bcba6SMarcus Wolf #define  MASK_FIFO_THRESH_TXSTART		0x80
439874bcba6SMarcus Wolf #define  MASK_FIFO_THRESH_VALUE			0x7F
440874bcba6SMarcus Wolf 
441874bcba6SMarcus Wolf /*
442056eeda2SDerek Robson  *
443056eeda2SDerek Robson  * // RegPacketConfig2
444056eeda2SDerek Robson  * #define  PACKET2_RXRESTARTDELAY_1BIT		0x00  // Default
445056eeda2SDerek Robson  * #define  PACKET2_RXRESTARTDELAY_2BITS		0x10
446056eeda2SDerek Robson  * #define  PACKET2_RXRESTARTDELAY_4BITS		0x20
447056eeda2SDerek Robson  * #define  PACKET2_RXRESTARTDELAY_8BITS		0x30
448056eeda2SDerek Robson  * #define  PACKET2_RXRESTARTDELAY_16BITS		0x40
449056eeda2SDerek Robson  * #define  PACKET2_RXRESTARTDELAY_32BITS		0x50
450056eeda2SDerek Robson  * #define  PACKET2_RXRESTARTDELAY_64BITS		0x60
451056eeda2SDerek Robson  * #define  PACKET2_RXRESTARTDELAY_128BITS		0x70
452056eeda2SDerek Robson  * #define  PACKET2_RXRESTARTDELAY_256BITS		0x80
453056eeda2SDerek Robson  * #define  PACKET2_RXRESTARTDELAY_512BITS		0x90
454056eeda2SDerek Robson  * #define  PACKET2_RXRESTARTDELAY_1024BITS	0xA0
455056eeda2SDerek Robson  * #define  PACKET2_RXRESTARTDELAY_2048BITS	0xB0
456056eeda2SDerek Robson  * #define  PACKET2_RXRESTARTDELAY_NONE		0xC0
457056eeda2SDerek Robson  * #define  PACKET2_RXRESTART			0x04
458056eeda2SDerek Robson  *
459056eeda2SDerek Robson  * #define  PACKET2_AUTORXRESTART_ON		0x02  // Default
460056eeda2SDerek Robson  * #define  PACKET2_AUTORXRESTART_OFF		0x00
461056eeda2SDerek Robson  *
462056eeda2SDerek Robson  * #define  PACKET2_AES_ON				0x01
463056eeda2SDerek Robson  * #define  PACKET2_AES_OFF			0x00  // Default
464056eeda2SDerek Robson  *
465056eeda2SDerek Robson  *
466056eeda2SDerek Robson  * // RegTemp1
467056eeda2SDerek Robson  * #define  TEMP1_MEAS_START			0x08
468056eeda2SDerek Robson  * #define  TEMP1_MEAS_RUNNING			0x04
469056eeda2SDerek Robson  * #define  TEMP1_ADCLOWPOWER_ON			0x01  // Default
470056eeda2SDerek Robson  * #define  TEMP1_ADCLOWPOWER_OFF			0x00
471874bcba6SMarcus Wolf  */
472874bcba6SMarcus Wolf 
473874bcba6SMarcus Wolf // RegTestDagc (0x6F)
474874bcba6SMarcus Wolf #define  DAGC_NORMAL				0x00 /* Reset value */
475874bcba6SMarcus Wolf #define  DAGC_IMPROVED_LOWBETA1			0x20
476874bcba6SMarcus Wolf #define  DAGC_IMPROVED_LOWBETA0			0x30 /* Recommended val */
477