altos/telefireone-v1.0: Track ao_led_init API change
[fw/altos] / src / drivers / ao_cc115l.h
1 /*
2  * Copyright © 2013 Keith Packard <keithp@keithp.com>
3  *
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.
8  *
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.
13  *
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.
17  */
18
19 #ifndef _AO_CC115L_H_
20 #define _AO_CC115L_H_
21
22 #define CC115L_BURST            6
23 #define CC115L_READ             7
24
25 /* Register space */
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 */
29
30 #define  CC115L_IOCFG_GPIO1_DS          7
31 #define  CC115L_IOCFG_GPIO_INV          6
32
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
64
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
83
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 */
171
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
198
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
209
210 #define CC115L_PA               0x3e
211 #define CC115L_FIFO             0x3f
212
213 #define CC115L_FIFO_SIZE        64
214
215 /* Status byte */
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
225
226 #define CC115L_STATUS_FIFO_BYTES_AVAILABLE      0
227 #endif /* _AO_CC115L_H_ */