2 * Copyright © 2013 Keith Packard <keithp@keithp.com>
4 * This program is free software; you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License as published by
6 * the Free Software Foundation; either version 2 of the License, or
7 * (at your option) any later version.
9 * This program is distributed in the hope that it will be useful, but
10 * WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 * General Public License for more details.
14 * You should have received a copy of the GNU General Public License along
15 * with this program; if not, write to the Free Software Foundation, Inc.,
16 * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
22 #define CC115L_BURST 6
26 #define CC115L_IOCFG2 0x00 /* GDO2 Output Pin Configuration */
27 #define CC115L_IOCFG1 0x01 /* GDO1 Output Pin Configuration */
28 #define CC115L_IOCFG0 0x02 /* GDO0 Output Pin Configuration */
30 #define CC115L_IOCFG_GPIO1_DS 7
31 #define CC115L_IOCFG_GPIO_INV 6
33 #define CC115L_IOCFG_GPIO_CFG 0
34 #define CC115L_IOCFG_GPIO_CFG_TXFIFO_THR 2
35 #define CC115L_IOCFG_GPIO_CFG_TXFIFO_THR_PKT 3
36 #define CC115L_IOCFG_GPIO_CFG_TXFIFO_UNDERFLOW 5
37 #define CC115L_IOCFG_GPIO_CFG_PKT_SYNC_TX 6
38 #define CC115L_IOCFG_GPIO_CFG_PLL_LOCKED 10
39 #define CC115L_IOCFG_GPIO_CFG_SERIAL_CLK 11
40 #define CC115L_IOCFG_GPIO_CFG_SYNC_DATA 12
41 #define CC115L_IOCFG_GPIO_CFG_ASYNC_DATA 13
42 #define CC115L_IOCFG_GPIO_CFG_PA_PD 27
43 #define CC115L_IOCFG_GPIO_CFG_CHIP_RDYn 41
44 #define CC115L_IOCFG_GPIO_CFG_XOSC_STABLE 43
45 #define CC115L_IOCFG_GPIO_CFG_HIGHZ 46
46 #define CC115L_IOCFG_GPIO_CFG_HW_0 47
47 #define CC115L_IOCFG_GPIO_CFG_CLK_XOSC_1 48
48 #define CC115L_IOCFG_GPIO_CFG_CLK_XOSC_1_5 49
49 #define CC115L_IOCFG_GPIO_CFG_CLK_XOSC_2 50
50 #define CC115L_IOCFG_GPIO_CFG_CLK_XOSC_3 51
51 #define CC115L_IOCFG_GPIO_CFG_CLK_XOSC_4 52
52 #define CC115L_IOCFG_GPIO_CFG_CLK_XOSC_6 53
53 #define CC115L_IOCFG_GPIO_CFG_CLK_XOSC_8 54
54 #define CC115L_IOCFG_GPIO_CFG_CLK_XOSC_12 55
55 #define CC115L_IOCFG_GPIO_CFG_CLK_XOSC_16 56
56 #define CC115L_IOCFG_GPIO_CFG_CLK_XOSC_24 57
57 #define CC115L_IOCFG_GPIO_CFG_CLK_XOSC_32 58
58 #define CC115L_IOCFG_GPIO_CFG_CLK_XOSC_48 59
59 #define CC115L_IOCFG_GPIO_CFG_CLK_XOSC_64 60
60 #define CC115L_IOCFG_GPIO_CFG_CLK_XOSC_96 61
61 #define CC115L_IOCFG_GPIO_CFG_CLK_XOSC_128 62
62 #define CC115L_IOCFG_GPIO_CFG_CLK_XOSC_192 63
63 #define CC115L_IOCFG_GPIO_CFG_MASK 0x3f
65 #define CC115L_FIFOTHR 0x03 /* TX FIFO Thresholds */
66 #define CC115L_FIFOTHR_THR_MASK 0x0f
67 #define CC115L_FIFOTHR_THR_61 0
68 #define CC115L_FIFOTHR_THR_57 1
69 #define CC115L_FIFOTHR_THR_53 2
70 #define CC115L_FIFOTHR_THR_49 3
71 #define CC115L_FIFOTHR_THR_45 4
72 #define CC115L_FIFOTHR_THR_41 5
73 #define CC115L_FIFOTHR_THR_37 6
74 #define CC115L_FIFOTHR_THR_33 7
75 #define CC115L_FIFOTHR_THR_29 8
76 #define CC115L_FIFOTHR_THR_25 9
77 #define CC115L_FIFOTHR_THR_21 10
78 #define CC115L_FIFOTHR_THR_17 11
79 #define CC115L_FIFOTHR_THR_13 12
80 #define CC115L_FIFOTHR_THR_9 13
81 #define CC115L_FIFOTHR_THR_5 14
82 #define CC115L_FIFOTHR_THR_1 15
84 #define CC115L_SYNC1 0x04 /* Sync Word, High Byte */
85 #define CC115L_SYNC0 0x05 /* Sync Word, Low Byte */
86 #define CC115L_PKTLEN 0x06 /* Packet Length */
87 #define CC115L_PKTCTRL0 0x08 /* Packet Automation Control */
88 #define CC115L_PKTCTRL0_PKT_FORMAT 4
89 #define CC115L_PKTCTRL0_PKT_FORMAT_NORMAL 0
90 #define CC115L_PKTCTRL0_PKT_FORMAT_SYNC_SERIAL 1
91 #define CC115L_PKTCTRL0_PKT_FORMAT_RANDOM 2
92 #define CC115L_PKTCTRL0_PKT_FORMAT_ASYNC_SERIAL 3
93 #define CC115L_PKTCTRL0_PKT_FORMAT_MASK 3
94 #define CC115L_PKTCTRL0_PKT_CRC_EN 2
95 #define CC115L_PKTCTRL0_PKT_LENGTH_CONFIG 0
96 #define CC115L_PKTCTRL0_PKT_LENGTH_CONFIG_FIXED 0
97 #define CC115L_PKTCTRL0_PKT_LENGTH_CONFIG_VARIABLE 1
98 #define CC115L_PKTCTRL0_PKT_LENGTH_CONFIG_INFINITE 2
99 #define CC115L_PKTCTRL0_PKT_LENGTH_CONFIG_MASK 3
100 #define CC115L_CHANNR 0x0a /* Channel Number */
101 #define CC115L_FSCTRL0 0x0c /* Frequency Synthesizer Control */
102 #define CC115L_FREQ2 0x0d /* Frequency Control Word, High Byte */
103 #define CC115L_FREQ1 0x0e /* Frequency Control Word, Middle Byte */
104 #define CC115L_FREQ0 0x0f /* Frequency Control Word, Low Byte */
105 #define CC115L_MDMCFG4 0x10 /* Modem Configuration */
106 #define CC115L_MDMCFG4_DRATE_E 0
107 #define CC115L_MDMCFG3 0x11 /* Modem Configuration */
108 #define CC115L_MDMCFG2 0x12 /* Modem Configuration */
109 #define CC115L_MDMCFG2_MOD_FORMAT 4
110 #define CC115L_MDMCFG2_MOD_FORMAT_2FSK 0
111 #define CC115L_MDMCFG2_MOD_FORMAT_GFSK 1
112 #define CC115L_MDMCFG2_MOD_FORMAT_OOK 3
113 #define CC115L_MDMCFG2_MOD_FORMAT_4FSK 4
114 #define CC115L_MDMCFG2_MOD_FORMAT_MASK 7
115 #define CC115L_MDMCFG2_MANCHESTER_EN 3
116 #define CC115L_MDMCFG2_SYNC_MODE 0
117 #define CC115L_MDMCFG2_SYNC_MODE_NONE 0
118 #define CC115L_MDMCFG2_SYNC_MODE_16BITS 1
119 #define CC115L_MDMCFG2_SYNC_MODE_32BITS 3
120 #define CC115L_MDMCFG2_SYNC_MODE_MASK 3
121 #define CC115L_MDMCFG1 0x13 /* Modem Configuration */
122 #define CC115L_MDMCFG1_NUM_PREAMBLE 4
123 #define CC115L_MDMCFG1_NUM_PREAMBLE_2 0
124 #define CC115L_MDMCFG1_NUM_PREAMBLE_3 1
125 #define CC115L_MDMCFG1_NUM_PREAMBLE_4 2
126 #define CC115L_MDMCFG1_NUM_PREAMBLE_6 3
127 #define CC115L_MDMCFG1_NUM_PREAMBLE_8 4
128 #define CC115L_MDMCFG1_NUM_PREAMBLE_12 5
129 #define CC115L_MDMCFG1_NUM_PREAMBLE_16 6
130 #define CC115L_MDMCFG1_NUM_PREAMBLE_24 7
131 #define CC115L_MDMCFG1_NUM_PREAMBLE_MASK 7
132 #define CC115L_MDMCFG1_CHANSPC_E 0
133 #define CC115L_MDMCFG0 0x14 /* Modem Configuration */
134 #define CC115L_DEVIATN 0x15 /* Modem Deviation Setting */
135 #define CC115L_DEVIATN_DEVIATION_E 4
136 #define CC115L_DEVIATN_DEVIATION_E_MASK 7
137 #define CC115L_DEVIATN_DEVIATION_M 0
138 #define CC115L_DEVIATN_DEVIATION_M_MASK 7
139 #define CC115L_MCSM1 0x17 /* Main Radio Control State Machine Configuration */
140 #define CC115L_MCSM1_TXOFF_MODE 0
141 #define CC115L_MCSM1_TXOFF_MODE_IDLE 0
142 #define CC115L_MCSM1_TXOFF_MODE_FSTXON 1
143 #define CC115L_MCSM1_TXOFF_MODE_TX 2
144 #define CC115L_MCSM1_TXOFF_MODE_MASK 3
145 #define CC115L_MCSM0 0x18 /* Main Radio Control State Machine Configuration */
146 #define CC115L_MCSM0_FS_AUTOCAL 4
147 #define CC115L_MCSM0_FS_AUTOCAL_NEVER 0
148 #define CC115L_MCSM0_FS_AUTOCAL_IDLE_TO_TX 1
149 #define CC115L_MCSM0_FS_AUTOCAL_TX_TO_IDLE 2
150 #define CC115L_MCSM0_FS_AUTOCAL_4TH_TX_TO_IDLE 3
151 #define CC115L_MCSM0_FS_AUTOCAL_MASK 3
152 #define CC115L_MCSM0_PO_TIMEOUT 2
153 #define CC115L_MCSM0_PO_TIMEOUT_1 0
154 #define CC115L_MCSM0_PO_TIMEOUT_16 1
155 #define CC115L_MCSM0_PO_TIMEOUT_64 2
156 #define CC115L_MCSM0_PO_TIMEOUT_256 3
157 #define CC115L_MCSM0_PO_TIMEOUT_MASK 3
158 #define CC115L_MCSM0_XOSC_FORCE_ON 0
159 #define CC115L_RESERVED_0X20 0x20 /* Use setting from SmartRF Studio */
160 #define CC115L_FREND0 0x22 /* Front End TX Configuration */
161 #define CC115L_FSCAL3 0x23 /* Frequency Synthesizer Calibration */
162 #define CC115L_FSCAL2 0x24 /* Frequency Synthesizer Calibration */
163 #define CC115L_FSCAL1 0x25 /* Frequency Synthesizer Calibration */
164 #define CC115L_FSCAL0 0x26 /* Frequency Synthesizer Calibration */
165 #define CC115L_RESERVED_0X29 0x29 /* Use setting from SmartRF Studio */
166 #define CC115L_RESERVED_0X2A 0x2a /* Use setting from SmartRF Studio */
167 #define CC115L_RESERVED_0X2B 0x2b /* Use setting from SmartRF Studio */
168 #define CC115L_TEST2 0x2c /* Various Test Settings */
169 #define CC115L_TEST1 0x2d /* Various Test Settings */
170 #define CC115L_TEST0 0x2e /* Various Test Settings */
172 /* Status registers (use BURST bit to select these) */
173 #define CC115L_PARTNUM (0x30|(1<<CC115L_BURST)) /* Part number for CC115L */
174 #define CC115L_VERSION (0x31|(1<<CC115L_BURST)) /* Current version number */
175 #define CC115L_MARCSTATE (0x35|(1<<CC115L_BURST)) /* Control state machine state */
176 #define CC115L_MARCSTATE_MASK 0x1f
177 #define CC115L_MARCSTATE_SLEEP 0x00
178 #define CC115L_MARCSTATE_IDLE 0x01
179 #define CC115L_MARCSTATE_XOFF 0x02
180 #define CC115L_MARCSTATE_VCOON_MC 0x03
181 #define CC115L_MARCSTATE_REGON_MC 0x04
182 #define CC115L_MARCSTATE_MANCAL 0x05
183 #define CC115L_MARCSTATE_VCOON 0x06
184 #define CC115L_MARCSTATE_REGON 0x07
185 #define CC115L_MARCSTATE_STARTCAL 0x08
186 #define CC115L_MARCSTATE_BWBOOST 0x09
187 #define CC115L_MARCSTATE_FS_LOCK 0x0a
188 #define CC115L_MARCSTATE_ENDCAL 0x0c
189 #define CC115L_MARCSTATE_FSTXON 0x12
190 #define CC115L_MARCSTATE_TX 0x13
191 #define CC115L_MARCSTATE_TX_END 0x14
192 #define CC115L_MARCSTATE_TX_UNDERFLOW 0x16
193 #define CC115L_PKTSTATUS (0x38|(1<<CC115L_BURST)) /* Current GDOx status and packet status */
194 #define CC115L_TXBYTES (0x3a|(1<<CC115L_BURST)) /* Underflow and number of bytes in the TX FIFO */
195 #define CC115L_TXBYTES_TXFIFO_UNDERFLOW 7
196 #define CC115L_TXBYTES_NUM_TX_BYTES 0
197 #define CC115L_TXBYTES_NUM_TX_BYTES_MASK 0x7f
199 /* Command strobes (no BURST bit for these) */
200 #define CC115L_SRES 0x30
201 #define CC115L_SFSTXON 0x31
202 #define CC115L_SXOFF 0x32
203 #define CC115L_SCAL 0x33
204 #define CC115L_STX 0x35
205 #define CC115L_SIDLE 0x36
206 #define CC115L_SPWD 0x39
207 #define CC115L_SFTX 0x3b
208 #define CC115L_SNOP 0x3d
210 #define CC115L_PA 0x3e
211 #define CC115L_FIFO 0x3f
213 #define CC115L_FIFO_SIZE 64
216 #define CC115L_STATUS_CHIP_RDY 7
217 #define CC115L_STATUS_STATE 4
218 #define CC115L_STATUS_STATE_IDLE 0
219 #define CC115L_STATUS_STATE_TX 2
220 #define CC115L_STATUS_STATE_FSTXON 3
221 #define CC115L_STATUS_STATE_CALIBRATE 4
222 #define CC115L_STATUS_STATE_SETTLING 5
223 #define CC115L_STATUS_STATE_TX_FIFO_UNDERFLOW 7
224 #define CC115L_STATUS_STATE_MASK 7
226 #define CC115L_STATUS_FIFO_BYTES_AVAILABLE 0
227 #endif /* _AO_CC115L_H_ */