no-OS
All Classes Files Functions Variables Typedefs Enumerations Enumerator Macros Modules Pages
adpd188.h
Go to the documentation of this file.
1/***************************************************************************/
33
34#ifndef ADPD188_H_
35#define ADPD188_H_
36
37#include <stdint.h>
38#include <stdbool.h>
39#include "no_os_i2c.h"
40#include "no_os_spi.h"
41#include "no_os_gpio.h"
42
43#define ADPD188_REG_STATUS 0x00
44#define ADPD188_REG_INT_MASK 0x01
45#define ADPD188_REG_GPIO_DRV 0x02
46#define ADPD188_REG_BG_STATUS 0x04
47#define ADPD188_REG_FIFO_THRESH 0x06
48#define ADPD188_REG_DEVID 0x08
49#define ADPD188_REG_I2CS_ID 0x09
50#define ADPD188_REG_CLK_RATIO 0x0A
51#define ADPD188_REG_GPIO_CTRL 0x0B
52#define ADPD188_REG_SLAVE_ADDR_KEY 0x0D
53#define ADPD188_REG_SW_RESET 0x0F
54#define ADPD188_REG_MODE 0x10
55#define ADPD188_REG_SLOT_EN 0x11
56#define ADPD188_REG_FSAMPLE 0x12
57#define ADPD188_REG_PD_LED_SELECT 0x14
58#define ADPD188_REG_NUM_AVG 0x15
59#define ADPD188_REG_BG_MEAS_A 0x16
60#define ADPD188_REG_INT_SEQ_A 0x17
61#define ADPD188_REG_SLOTA_CH1_OFFSET 0x18
62#define ADPD188_REG_SLOTA_CH2_OFFSET 0x19
63#define ADPD188_REG_SLOTA_CH3_OFFSET 0x1A
64#define ADPD188_REG_SLOTA_CH4_OFFSET 0x1B
65#define ADPD188_REG_BG_MEAS_B 0x1C
66#define ADPD188_REG_INT_SEQ_B 0x1D
67#define ADPD188_REG_SLOTB_CH1_OFFSET 0x1E
68#define ADPD188_REG_SLOTB_CH2_OFFSET 0x1F
69#define ADPD188_REG_SLOTB_CH3_OFFSET 0x20
70#define ADPD188_REG_SLOTB_CH4_OFFSET 0x21
71#define ADPD188_REG_ILED3_COARSE 0x22
72#define ADPD188_REG_ILED1_COARSE 0x23
73#define ADPD188_REG_ILED2_COARSE 0x24
74#define ADPD188_REG_ILED_FINE 0x25
75#define ADPD188_REG_SLOTA_LED_PULSE 0x30
76#define ADPD188_REG_SLOTA_NUMPULSES 0x31
77#define ADPD188_REG_LED_DISABLE 0x34
78#define ADPD188_REG_SLOTB_LED_PULSE 0x35
79#define ADPD188_REG_SLOTB_NUMPULSES 0x36
80#define ADPD188_REG_ALT_PWR_DN 0x37
81#define ADPD188_REG_EXT_SYNC_STARTUP 0x38
82#define ADPD188_REG_SLOTA_AFE_WINDOW 0x39
83#define ADPD188_REG_SLOTB_AFE_WINDOW 0x3B
84#define ADPD188_REG_AFE_PWR_CFG1 0x3C
85#define ADPD188_REG_SLOTA_FLOAT_LED 0x3E
86#define ADPD188_REG_SLOTB_FLOAT_LED 0x3F
87#define ADPD188_REG_SLOTA_TIA_CFG 0x42
88#define ADPD188_REG_SLOTA_AFE_CFG 0x43
89#define ADPD188_REG_SLOTB_TIA_CFG 0x44
90#define ADPD188_REG_SLOTB_AFE_CFG 0x45
91#define ADPD188_REG_SAMPLE_CLK 0x4B
92#define ADPD188_REG_CLK32M_ADJUST 0x4D
93#define ADPD188_REG_EXT_SYNC_SEL 0x4F
94#define ADPD188_REG_CLK32M_CAL_EN 0x50
95#define ADPD188_REG_AFE_PWR_CFG2 0x54
96#define ADPD188_REG_TIA_INDEP_GAIN 0x55
97#define ADPD188_REG_MATH 0x58
98#define ADPD188_REG_FLT_CONFIG_B 0x59
99#define ADPD188_REG_FLT_LED_FIRE 0x5A
100#define ADPD188_REG_FLT_CONFIG_A 0x5E
101#define ADPD188_REG_DATA_ACCESS_CTL 0x5F
102#define ADPD188_REG_FIFO_ACCESS 0x60
103#define ADPD188_REG_SLOTA_PD1_16BIT 0x64
104#define ADPD188_REG_SLOTA_PD2_16BIT 0x65
105#define ADPD188_REG_SLOTA_PD3_16BIT 0x66
106#define ADPD188_REG_SLOTA_PD4_16BIT 0x67
107#define ADPD188_REG_SLOTB_PD1_16BIT 0x68
108#define ADPD188_REG_SLOTB_PD2_16BIT 0x69
109#define ADPD188_REG_SLOTB_PD3_16BIT 0x6A
110#define ADPD188_REG_SLOTB_PD4_16BIT 0x6B
111#define ADPD188_REG_A_PD1_LOW 0x70
112#define ADPD188_REG_A_PD2_LOW 0x71
113#define ADPD188_REG_A_PD3_LOW 0x72
114#define ADPD188_REG_A_PD4_LOW 0x73
115#define ADPD188_REG_A_PD1_HIGH 0x74
116#define ADPD188_REG_A_PD2_HIGH 0x75
117#define ADPD188_REG_A_PD3_HIGH 0x76
118#define ADPD188_REG_A_PD4_HIGH 0x77
119#define ADPD188_REG_B_PD1_LOW 0x78
120#define ADPD188_REG_B_PD2_LOW 0x79
121#define ADPD188_REG_B_PD3_LOW 0x7A
122#define ADPD188_REG_B_PD4_LOW 0x7B
123#define ADPD188_REG_B_PD1_HIGH 0x7C
124#define ADPD188_REG_B_PD2_HIGH 0x7D
125#define ADPD188_REG_B_PD3_HIGH 0x7E
126#define ADPD188_REG_B_PD4_HIGH 0x7F
127
128/* ADPD188_REG_STATUS */
129#define ADPD188_STATUS_FIFO_SAMPLES_MASK 0xFF00
130#define ADPD188_STATUS_SLOTB_INT_MASK 0x0040
131#define ADPD188_STATUS_SLOTA_INT_MASK 0x0020
132#define ADPD188_STATUS_FIFO_SAMPLES_POS 8
133#define ADPD188_STATUS_SLOTB_INT_POS 6
134#define ADPD188_STATUS_SLOTA_INT_POS 5
135
136/* ADPD188_REG_INT_MASK */
137#define ADPD188_INT_MASK_FIFO_INT_MASK_MASK 0x0100
138#define ADPD188_INT_MASK_SLOTB_INT_MASK_MASK 0x0040
139#define ADPD188_INT_MASK_SLOTA_INT_MASK_MASK 0x0020
140#define ADPD188_INT_MASK_FIFO_INT_MASK_POS 8
141#define ADPD188_INT_MASK_SLOTB_INT_MASK_POS 6
142#define ADPD188_INT_MASK_SLOTA_INT_MASK_POS 5
143
144/* ADPD188_REG_GPIO_DRV */
145#define ADPD188_GPIO_DRV_GPIO1_DRV_MASK 0x0200
146#define ADPD188_GPIO_DRV_GPIO1_POL_MASK 0x0100
147#define ADPD188_GPIO_DRV_GPIO0_ENA_MASK 0x0004
148#define ADPD188_GPIO_DRV_GPIO0_DRV_MASK 0x0002
149#define ADPD188_GPIO_DRV_GPIO0_POL_MASK 0x0001
150#define ADPD188_GPIO_DRV_GPIO1_DRV_POS 9
151#define ADPD188_GPIO_DRV_GPIO1_POL_POS 8
152#define ADPD188_GPIO_DRV_GPIO0_ENA_POS 2
153#define ADPD188_GPIO_DRV_GPIO0_DRV_POS 1
154#define ADPD188_GPIO_DRV_GPIO0_POL_POS 0
155
156/* ADPD188_REG_BG_STATUS */
157#define ADPD188_BG_STATUS_BG_STATUS_B_MASK 0x00F0
158#define ADPD188_BG_STATUS_BG_STATUS_A_MASK 0x000F
159#define ADPD188_BG_STATUS_BG_STATUS_B_POS 4
160#define ADPD188_BG_STATUS_BG_STATUS_A_POS 0
161
162/* ADPD188_REG_FIFO_THRESH */
163#define ADPD188_FIFO_THRESH_FIFO_THRESH_MASK 0x3F00
164#define ADPD188_FIFO_THRESH_FIFO_THRESH_POS 8
165#define ADPD188_FIFO_THRESH_MAX_THRESHOLD 63
166
167/* ADPD188_REG_DEVID */
168#define ADPD188_DEVID_REV_NUM_MASK 0xFF00
169#define ADPD188_DEVID_DEV_ID_MASK 0x00FF
170#define ADPD188_DEVID_REV_NUM_POS 8
171#define ADPD188_DEVID_DEV_ID_POS 0
172/* ADPD188BI specific */
173#define ADPD188_DEVICE_ID 0x0916
174/* ADPD108X specific */
175#define ADPD108X_DEVICE_ID 0x0A16
176
177/* ADPD188_REG_I2CS_ID */
178#define ADPD188_I2CS_ID_ADDRESS_WRITE_KEY_MASK 0xFF00
179#define ADPD188_I2CS_ID_SLAVE_ADDRESS_MASK 0x00FE
180#define ADPD188_I2CS_ID_ADDRESS_WRITE_KEY_POS 8
181#define ADPD188_I2CS_ID_SLAVE_ADDRESS_POS 1
182
183/* ADPD188_REG_CLK_RATIO */
184#define ADPD188_CLK_RATIO_CLK_RATIO_MASK 0x0FFF
185#define ADPD188_CLK_RATIO_CLK_RATIO_POS 0
186
187/* ADPD188_REG_GPIO_CTRL */
188#define ADPD188_GPIO_CTRL_GPIO1_ALT_CFG_MASK 0x1F00
189#define ADPD188_GPIO_CTRL_GPIO0_ALT_CFG_MASK 0x001F
190#define ADPD188_GPIO_CTRL_GPIO1_ALT_CFG_POS 8
191#define ADPD188_GPIO_CTRL_GPIO0_ALT_CFG_POS 0
192
193/* ADPD188_REG_SW_RESET */
194#define ADPD188_SW_RESET_SW_RESET_MASK 0x0001
195#define ADPD188_SW_RESET_SW_RESET_POS 0
196
197/* ADPD188_REG_MODE */
198#define ADPD188_MODE_MODE_MASK 0x0003
199#define ADPD188_MODE_MODE_POS 0
200
201/* ADPD188_REG_SLOT_EN */
202#define ADPD188_SLOT_EN_RDOUT_MODE_MASK 0x2000
203#define ADPD188_SLOT_EN_FIFO_OVRN_PREVENT_MASK 0x1000
204#define ADPD188_SLOT_EN_SLOTB_FIFO_MODE_MASK 0x01C0
205#define ADPD188_SLOT_EN_SLOTB_EN_MASK 0x0020
206#define ADPD188_SLOT_EN_SLOTA_FIFO_MODE_MASK 0x001C
207#define ADPD188_SLOT_EN_SLOTA_EN_MASK 0x0001
208#define ADPD188_SLOT_EN_RDOUT_MODE_POS 13
209#define ADPD188_SLOT_EN_FIFO_OVRN_PREVENT_POS 12
210#define ADPD188_SLOT_EN_SLOTB_FIFO_MODE_POS 6
211#define ADPD188_SLOT_EN_SLOTB_EN_POS 5
212#define ADPD188_SLOT_EN_SLOTA_FIFO_MODE_POS 2
213#define ADPD188_SLOT_EN_SLOTA_EN_POS 0
214
215/* ADPD188_REG_PD_LED_SELECT */
216#define ADPD188_PD_LED_SELECT_SLOTB_PD_SEL_MASK 0x0F00
217#define ADPD188_PD_LED_SELECT_SLOTA_PD_SEL_MASK 0x00F0
218#define ADPD188_PD_LED_SELECT_SLOTB_LED_SEL_MASK 0x000C
219#define ADPD188_PD_LED_SELECT_SLOTA_LED_SEL_MASK 0x0003
220#define ADPD188_PD_LED_SELECT_SLOTB_PD_SEL_POS 8
221#define ADPD188_PD_LED_SELECT_SLOTA_PD_SEL_POS 4
222#define ADPD188_PD_LED_SELECT_SLOTB_LED_SEL_POS 2
223#define ADPD188_PD_LED_SELECT_SLOTA_LED_SEL_POS 0
224
225/* ADPD188_REG_NUM_AVG */
226#define ADPD188_NUM_AVG_SLOTB_NUM_AVG_MASK 0x0700
227#define ADPD188_NUM_AVG_SLOTA_NUM_AVG_MASK 0x0070
228#define ADPD188_NUM_AVG_SLOTB_NUM_AVG_POS 8
229#define ADPD188_NUM_AVG_SLOTA_NUM_AVG_POS 4
230
231/* ADPD188_REG_BG_MEAS_A */
232#define ADPD188_BG_MEAS_A_BG_COUNT_A_MASK 0xC000
233#define ADPD188_BG_MEAS_A_BG_THRESH_A_MASK 0x3FFF
234#define ADPD188_BG_MEAS_A_BG_COUNT_A_POS 14
235#define ADPD188_BG_MEAS_A_BG_THRESH_A_POS 0
236
237/* ADPD188_REG_INT_SEQ_A */
238#define ADPD188_INT_SEQ_A_INTEG_ORDER_A_MASK 0x000F
239#define ADPD188_INT_SEQ_A_INTEG_ORDER_A_POS 0
240
241/* ADPD188_REG_BG_MEAS_B */
242#define ADPD188_BG_MEAS_B_BG_COUNT_B_MASK 0xC000
243#define ADPD188_BG_MEAS_B_BG_THRESH_B_MASK 0x3FFF
244#define ADPD188_BG_MEAS_B_BG_COUNT_B_POS 14
245#define ADPD188_BG_MEAS_B_BG_THRESH_B_POS 0
246
247/* ADPD188_REG_INT_SEQ_B */
248#define ADPD188_INT_SEQ_B_INTEG_ORDER_B_MASK 0x000F
249#define ADPD188_INT_SEQ_B_INTEG_ORDER_B_POS 0
250
251/* ADPD188_REG_ILED3_COARSE */
252#define ADPD188_ILED3_COARSE_ILED3_SCALE_MASK 0x2000
253#define ADPD188_ILED3_COARSE_ILED3_SLEW_MASK 0x0070
254#define ADPD188_ILED3_COARSE_ILED3_COARSE_MASK 0x000F
255#define ADPD188_ILED3_COARSE_ILED3_SCALE_POS 13
256#define ADPD188_ILED3_COARSE_ILED3_SLEW_POS 4
257#define ADPD188_ILED3_COARSE_ILED3_COARSE_POS 0
258
259/* ADPD188_REG_ILED1_COARSE */
260#define ADPD188_ILED1_COARSE_ILED1_SCALE_MASK 0x2000
261#define ADPD188_ILED1_COARSE_ILED1_SLEW_MASK 0x0070
262#define ADPD188_ILED1_COARSE_ILED1_COARSE_MASK 0x000F
263#define ADPD188_ILED1_COARSE_ILED1_SCALE_POS 13
264#define ADPD188_ILED1_COARSE_ILED1_SLEW_POS 4
265#define ADPD188_ILED1_COARSE_ILED1_COARSE_POS 0
266
267/* ADPD188_REG_ILED2_COARSE */
268#define ADPD188_ILED2_COARSE_ILED2_SCALE_MASK 0x2000
269#define ADPD188_ILED2_COARSE_ILED2_SLEW_MASK 0x0070
270#define ADPD188_ILED2_COARSE_ILED2_COARSE_MASK 0x000F
271#define ADPD188_ILED2_COARSE_ILED2_SCALE_POS 13
272#define ADPD188_ILED2_COARSE_ILED2_SLEW_POS 4
273#define ADPD188_ILED2_COARSE_ILED2_COARSE_POS 0
274
275/* ADPD188_REG_ILED_FINE */
276#define ADPD188_ILED_FINE_ILED3_FINE_MASK 0xF800
277#define ADPD188_ILED_FINE_ILED2_FINE_MASK 0x07C0
278#define ADPD188_ILED_FINE_ILED1_FINE_MASK 0x001F
279#define ADPD188_ILED_FINE_ILED3_FINE_POS 11
280#define ADPD188_ILED_FINE_ILED2_FINE_POS 6
281#define ADPD188_ILED_FINE_ILED1_FINE_POS 0
282
283/* ADPD188_REG_SLOTA_LED_PULSE */
284#define ADPD188_SLOTA_LED_PULSE_SLOTA_LED_WIDTH_MASK 0x1F00
285#define ADPD188_SLOTA_LED_PULSE_SLOTA_LED_OFFSET_MASK 0x00FF
286#define ADPD188_SLOTA_LED_PULSE_SLOTA_LED_WIDTH_POS 8
287#define ADPD188_SLOTA_LED_PULSE_SLOTA_LED_OFFSET_POS 0
288
289/* ADPD188_REG_SLOTA_NUMPULSES */
290#define ADPD188_SLOTA_NUMPULSES_SLOTA_PULSES_MASK 0xFF00
291#define ADPD188_SLOTA_NUMPULSES_SLOTA_PERIOD_MASK 0x00FF
292#define ADPD188_SLOTA_NUMPULSES_SLOTA_PULSES_POS 8
293#define ADPD188_SLOTA_NUMPULSES_SLOTA_PERIOD_POS 0
294
295/* ADPD188_REG_LED_DISABLE */
296#define ADPD188_LED_DISABLE_SLOTB_LED_DIS_MASK 0x0200
297#define ADPD188_LED_DISABLE_SLOTA_LED_DIS_MASK 0x0100
298#define ADPD188_LED_DISABLE_SLOTB_LED_DIS_POS 9
299#define ADPD188_LED_DISABLE_SLOTA_LED_DIS_POS 8
300
301/* ADPD188_REG_SLOTB_LED_PULSE */
302#define ADPD188_SLOTB_LED_PULSE_SLOTB_LED_WIDTH_MASK 0x1F00
303#define ADPD188_SLOTB_LED_PULSE_SLOTB_LED_OFFSET_MASK 0x00FF
304#define ADPD188_SLOTB_LED_PULSE_SLOTB_LED_WIDTH_POS 8
305#define ADPD188_SLOTB_LED_PULSE_SLOTB_LED_OFFSET_POS 0
306
307/* ADPD188_REG_SLOTB_NUMPULSES */
308#define ADPD188_SLOTB_NUMPULSES_SLOTB_PULSES_MASK 0xFF00
309#define ADPD188_SLOTB_NUMPULSES_SLOTB_PERIOD_MASK 0x00FF
310#define ADPD188_SLOTB_NUMPULSES_SLOTB_PULSES_POS 8
311#define ADPD188_SLOTB_NUMPULSES_SLOTB_PERIOD_POS 0
312
313/* ADPD188_REG_ALT_PWR_DN */
314#define ADPD188_ALT_PWR_DN_CH34_DISABLE_MASK 0xE000
315#define ADPD188_ALT_PWR_DN_CH2_DISABLE_MASK 0x1C00
316#define ADPD188_ALT_PWR_DN_SLOTB_PERIOD_MASK 0x0300
317#define ADPD188_ALT_PWR_DN_SLOTA_PERIOD_MASK 0x0003
318#define ADPD188_ALT_PWR_DN_CH34_DISABLE_POS 13
319#define ADPD188_ALT_PWR_DN_CH2_DISABLE_POS 10
320#define ADPD188_ALT_PWR_DN_SLOTB_PERIOD_POS 8
321#define ADPD188_ALT_PWR_DN_SLOTA_PERIOD_POS 0
322
323/* ADPD188_REG_SLOTA_AFE_WINDOW */
324#define ADPD188_SLOTA_AFE_WINDOW_SLOTA_AFE_WIDTH_MASK 0xF800
325#define ADPD188_SLOTA_AFE_WINDOW_SLOTA_AFE_OFFSET_MASK 0x07FF
326#define ADPD188_SLOTA_AFE_WINDOW_SLOTA_AFE_WIDTH_POS 11
327#define ADPD188_SLOTA_AFE_WINDOW_SLOTA_AFE_OFFSET_POS 0
328
329/* ADPD188_REG_SLOTB_AFE_WINDOW */
330#define ADPD188_SLOTB_AFE_WINDOW_SLOTB_AFE_WIDTH_MASK 0xF800
331#define ADPD188_SLOTB_AFE_WINDOW_SLOTB_AFE_OFFSET_MASK 0x07FF
332#define ADPD188_SLOTB_AFE_WINDOW_SLOTB_AFE_WIDTH_POS 11
333#define ADPD188_SLOTB_AFE_WINDOW_SLOTB_AFE_OFFSET_POS 0
334
335/* ADPD188_REG_AFE_PWR_CFG1 */
336#define ADPD188_AFE_PWR_CFG1_V_CATHODE_MASK 0x0200
337#define ADPD188_AFE_PWR_CFG1_AFE_POWERDOWN_MASK 0x01F8
338#define ADPD188_AFE_PWR_CFG1_V_CATHODE_POS 9
339#define ADPD188_AFE_PWR_CFG1_AFE_POWERDOWN_POS 3
340
341/* ADPD188_REG_SLOTA_FLOAT_LED */
342#define ADPD188_SLOTA_FLOAT_LED_FLT_LED_SELECT_A_MASK 0xC000
343#define ADPD188_SLOTA_FLOAT_LED_FLT_LED_WIDTH_A_MASK 0x1F00
344#define ADPD188_SLOTA_FLOAT_LED_FLT_LED_OFFSET_A_MASK 0x00FF
345#define ADPD188_SLOTA_FLOAT_LED_FLT_LED_SELECT_A_POS 14
346#define ADPD188_SLOTA_FLOAT_LED_FLT_LED_WIDTH_A_POS 8
347#define ADPD188_SLOTA_FLOAT_LED_FLT_LED_OFFSET_A_POS 0
348
349/* ADPD188_REG_SLOTB_FLOAT_LED */
350#define ADPD188_SLOTB_FLOAT_LED_FLT_LED_SELECT_B_MASK 0xC000
351#define ADPD188_SLOTB_FLOAT_LED_FLT_LED_WIDTH_B_MASK 0x1F00
352#define ADPD188_SLOTB_FLOAT_LED_FLT_LED_OFFSET_B_MASK 0x00FF
353#define ADPD188_SLOTB_FLOAT_LED_FLT_LED_SELECT_B_POS 14
354#define ADPD188_SLOTB_FLOAT_LED_FLT_LED_WIDTH_B_POS 8
355#define ADPD188_SLOTB_FLOAT_LED_FLT_LED_OFFSET_B_POS 0
356
357/* ADPD188_REG_SLOTA_TIA_CFG */
358/* ADPD188BI specific registers */
359#define ADPD188_SLOTA_TIA_CFG_SLOTA_BUF_GAIN_MASK 0x0200
360#define ADPD188_SLOTA_TIA_CFG_SLOTA_BUF_GAIN_POS 9
361/* ADPD108X specific registers */
362#define ADPD108X_SLOTA_TIA_CFG_SLOTA_BUF_GAIN_MASK 0x0300
363#define ADPD108X_SLOTA_TIA_CFG_SLOTA_INT_GAIN_POS 8
364/* ADPD188_REG_SLOTA_TIA_CFG common registers */
365#define ADPD188_SLOTA_TIA_CFG_SLOTA_AFE_MODE_MASK 0xFC00
366#define ADPD188_SLOTA_TIA_CFG_SLOTA_INT_AS_BUF_MASK 0x0080
367#define ADPD188_SLOTA_TIA_CFG_SLOTA_TIA_IND_EN_MASK 0x0040
368#define ADPD188_SLOTA_TIA_CFG_SLOTA_TIA_VREF_MASK 0x0030
369#define ADPD188_SLOTA_TIA_CFG_SLOTA_TIA_GAIN_MASK 0x0003
370#define ADPD188_SLOTA_TIA_CFG_SLOTA_AFE_MODE_POS 10
371#define ADPD188_SLOTA_TIA_CFG_SLOTA_INT_AS_BUF_POS 7
372#define ADPD188_SLOTA_TIA_CFG_SLOTA_TIA_IND_EN_POS 6
373#define ADPD188_SLOTA_TIA_CFG_SLOTA_TIA_VREF_POS 4
374#define ADPD188_SLOTA_TIA_CFG_SLOTA_TIA_GAIN_POS 0
375
376/* ADPD188_REG_SLOTB_TIA_CFG */
377/* ADPD188BI specific registers */
378#define ADPD188_SLOTB_TIA_CFG_SLOTA_BUF_GAIN_MASK 0x0200
379#define ADPD188_SLOTB_TIA_CFG_SLOTA_BUF_GAIN_POS 9
380/* ADPD108X specific registers */
381#define ADPD108X_SLOTB_TIA_CFG_SLOTA_BUF_GAIN_MASK 0x0300
382#define ADPD108X_SLOTB_TIA_CFG_SLOTA_INT_GAIN_POS 8
383/* ADPD188_REG_SLOTA_TIA_CFG common registers */
384#define ADPD188_SLOTB_TIA_CFG_SLOTB_AFE_MODE_MASK 0xFC00
385#define ADPD188_SLOTB_TIA_CFG_SLOTB_INT_AS_BUF_MASK 0x0080
386#define ADPD188_SLOTB_TIA_CFG_SLOTB_TIA_IND_EN_MASK 0x0040
387#define ADPD188_SLOTB_TIA_CFG_SLOTB_TIA_VREF_MASK 0x0030
388#define ADPD188_SLOTB_TIA_CFG_SLOTB_TIA_GAIN_MASK 0x0003
389#define ADPD188_SLOTB_TIA_CFG_SLOTB_AFE_MODE_POS 10
390#define ADPD188_SLOTB_TIA_CFG_SLOTB_INT_AS_BUF_POS 7
391#define ADPD188_SLOTB_TIA_CFG_SLOTB_TIA_IND_EN_POS 6
392#define ADPD188_SLOTB_TIA_CFG_SLOTB_TIA_VREF_POS 4
393#define ADPD188_SLOTB_TIA_CFG_SLOTB_TIA_GAIN_POS 0
394
395/* ADPD188_REG_SAMPLE_CLK */
396#define ADPD188_SAMPLE_CLK_CLK32K_BYP_MASK 0x0100
397#define ADPD188_SAMPLE_CLK_CLK32K_EN_MASK 0x0080
398#define ADPD188_SAMPLE_CLK_CLK32K_ADJUST_MASK 0x003F
399#define ADPD188_SAMPLE_CLK_CLK32K_BYP_POS 8
400#define ADPD188_SAMPLE_CLK_CLK32K_EN_POS 7
401#define ADPD188_SAMPLE_CLK_CLK32K_ADJUST_POS 0
402
403/* ADPD188_REG_CLK32M_ADJUST */
404#define ADPD188_CLK32M_ADJUST_CLK32M_ADJUST_MASK 0x00FF
405#define ADPD188_CLK32M_ADJUST_CLK32M_ADJUST_POS 0
406
407/* ADPD188_REG_EXT_SYNC_SEL */
408#define ADPD188_EXT_SYNC_SEL_GPIO1_OE_MASK 0x0040
409#define ADPD188_EXT_SYNC_SEL_GPIO1_IE_MASK 0x0020
410#define ADPD188_EXT_SYNC_SEL_EXT_SYNC_SEL_MASK 0x000C
411#define ADPD188_EXT_SYNC_SEL_GPIO0_IE_MASK 0x0002
412#define ADPD188_EXT_SYNC_SEL_GPIO1_OE_POS 6
413#define ADPD188_EXT_SYNC_SEL_GPIO1_IE_POS 5
414#define ADPD188_EXT_SYNC_SEL_EXT_SYNC_SEL_POS 2
415#define ADPD188_EXT_SYNC_SEL_GPIO0_IE_POS 1
416
417/* ADPD188_REG_CLK32M_CAL_EN */
418#define ADPD188_CLK32M_CAL_EN_GPIO1_CTRL_MASK 0x0040
419#define ADPD188_CLK32M_CAL_EN_CLK32M_CAL_EN_MASK 0x0020
420#define ADPD188_CLK32M_CAL_EN_GPIO1_CTRL_POS 6
421#define ADPD188_CLK32M_CAL_EN_CLK32M_CAL_EN_POS 5
422
423/* ADPD188_REG_AFE_PWR_CFG2 */
424#define ADPD188_AFE_PWR_CFG2_SLEEP_V_CATHODE_MASK 0x3000
425#define ADPD188_AFE_PWR_CFG2_SLOTB_V_CATHODE_MASK 0x0C00
426#define ADPD188_AFE_PWR_CFG2_SLOTA_V_CATHODE_MASK 0x0300
427#define ADPD188_AFE_PWR_CFG2_REG54_VCAT_ENABLE_MASK 0x0080
428#define ADPD188_AFE_PWR_CFG2_SLEEP_V_CATHODE_POS 12
429#define ADPD188_AFE_PWR_CFG2_SLOTB_V_CATHODE_POS 10
430#define ADPD188_AFE_PWR_CFG2_SLOTA_V_CATHODE_POS 8
431#define ADPD188_AFE_PWR_CFG2_REG54_VCAT_ENABLE_POS 7
432
433/* ADPD188_REG_TIA_INDEP_GAIN */
434#define ADPD188_TIA_INDEP_GAIN_SLOTB_TIA_GAIN_4_MASK 0x0C00
435#define ADPD188_TIA_INDEP_GAIN_SLOTB_TIA_GAIN_3_MASK 0x0300
436#define ADPD188_TIA_INDEP_GAIN_SLOTB_TIA_GAIN_2_MASK 0x00C0
437#define ADPD188_TIA_INDEP_GAIN_SLOTA_TIA_GAIN_4_MASK 0x0030
438#define ADPD188_TIA_INDEP_GAIN_SLOTA_TIA_GAIN_3_MASK 0x000C
439#define ADPD188_TIA_INDEP_GAIN_SLOTA_TIA_GAIN_2_MASK 0x0003
440#define ADPD188_TIA_INDEP_GAIN_SLOTB_TIA_GAIN_4_POS 10
441#define ADPD188_TIA_INDEP_GAIN_SLOTB_TIA_GAIN_3_POS 8
442#define ADPD188_TIA_INDEP_GAIN_SLOTB_TIA_GAIN_2_POS 6
443#define ADPD188_TIA_INDEP_GAIN_SLOTA_TIA_GAIN_4_POS 4
444#define ADPD188_TIA_INDEP_GAIN_SLOTA_TIA_GAIN_3_POS 2
445#define ADPD188_TIA_INDEP_GAIN_SLOTA_TIA_GAIN_2_POS 0
446
447/* ADPD188_REG_MATH */
448#define ADPD188_MATH_FLT_MATH34_B_MASK 0x0C00
449#define ADPD188_MATH_FLT_MATH34_A_MASK 0x0300
450#define ADPD188_MATH_ENA_INT_AS_BUF_MASK 0x0080
451#define ADPD188_MATH_FLT_MATH12_B_MASK 0x0060
452#define ADPD188_MATH_FLT_MATH12_A_MASK 0x0006
453#define ADPD188_MATH_FLT_MATH34_B_POS 10
454#define ADPD188_MATH_FLT_MATH34_A_POS 8
455#define ADPD188_MATH_ENA_INT_AS_BUF_POS 7
456#define ADPD188_MATH_FLT_MATH12_B_POS 5
457#define ADPD188_MATH_FLT_MATH12_A_POS 1
458
459/* ADPD188_REG_FLT_CONFIG_B */
460#define ADPD188_FLT_CONFIG_B_FLT_EN_B_MASK 0x6000
461#define ADPD188_FLT_CONFIG_B_FLT_PRECON_B_MASK 0x1F00
462#define ADPD188_FLT_CONFIG_B_FLT_EN_B_POS 13
463#define ADPD188_FLT_CONFIG_B_FLT_PRECON_B_POS 8
464
465/* ADPD188_REG_FLT_LED_FIRE */
466#define ADPD188_FLT_LED_FIRE_FLT_LED_FIRE_B_MASK 0xF000
467#define ADPD188_FLT_LED_FIRE_FLT_LED_FIRE_A_MASK 0x0F00
468#define ADPD188_FLT_LED_FIRE_FLT_LED_FIRE_B_POS 12
469#define ADPD188_FLT_LED_FIRE_FLT_LED_FIRE_A_POS 8
470
471/* ADPD188_REG_FLT_CONFIG_A */
472#define ADPD188_FLT_CONFIG_A_FLT_EN_A_MASK 0x6000
473#define ADPD188_FLT_CONFIG_A_FLT_PRECON_A_MASK 0x1F00
474#define ADPD188_FLT_CONFIG_A_FLT_EN_A_POS 13
475#define ADPD188_FLT_CONFIG_A_FLT_PRECON_A_POS 8
476
477/* ADPD188_REG_DATA_ACCESS_CTL */
478#define ADPD188_DATA_ACCESS_CTL_SLOTB_DATA_HOLD_MASK 0x0004
479#define ADPD188_DATA_ACCESS_CTL_SLOTA_DATA_HOLD_MASK 0x0002
480#define ADPD188_DATA_ACCESS_CTL_DIGITAL_CLOCK_ENA_MASK 0x0001
481#define ADPD188_DATA_ACCESS_CTL_SLOTB_DATA_HOLD_POS 2
482#define ADPD188_DATA_ACCESS_CTL_SLOTA_DATA_HOLD_POS 1
483#define ADPD188_DATA_ACCESS_CTL_DIGITAL_CLOCK_ENA_POS 0
484
494
506
517
530
543
550 uint8_t gpio_id;
552 uint8_t gpio_pol;
554 uint8_t gpio_drv;
556 uint8_t gpio_en;
557};
558
597
608
625
638
655
672
673/* Initialize the ADPD188 driver. */
674int32_t adpd188_init(struct adpd188_dev **device,
676
677/* Free resources allocated by adpd188_init(). */
678int32_t adpd188_remove(struct adpd188_dev *dev);
679
680/* Read one 16 bit register of the ADPD188. */
681int32_t adpd188_reg_read(struct adpd188_dev *dev, uint8_t reg_addr,
682 uint16_t *reg_val);
683
684/* Write one 16 bit register of the ADPD188. */
685int32_t adpd188_reg_write(struct adpd188_dev *dev, uint8_t reg_addr,
686 uint16_t reg_val);
687
688/* Get the mode of operation of the ADPD188. */
689int32_t adpd188_mode_get(struct adpd188_dev *dev, enum adpd188_mode *mode);
690
691/* Set the mode of operation of the ADPD188. */
692int32_t adpd188_mode_set(struct adpd188_dev *dev, enum adpd188_mode new_mode);
693
694/* Get the number of bytes currently present in FIFO. */
695int32_t adpd188_fifo_status_get(struct adpd188_dev *dev, uint8_t *bytes_no);
696
697/* Empty the FIFO. */
698int32_t adpd188_fifo_clear(struct adpd188_dev *dev);
699
700/*
701 * Set the number of 16 bit words that need to be in the FIFO to trigger an
702 * interrupt.
703 */
704int32_t adpd188_fifo_thresh_set(struct adpd188_dev *dev, uint8_t word_no);
705
706/* Get the slot and FIFO interrupt flags. */
707int32_t adpd188_interrupt_get(struct adpd188_dev *dev, uint8_t *flags);
708
709/* Clear the slot and FIFO interrupt flags. */
710int32_t adpd188_interrupt_clear(struct adpd188_dev *dev, uint8_t flags);
711
712/* Enable the slot and FIFO interrupt flags. */
713int32_t adpd188_interrupt_en(struct adpd188_dev *dev, uint8_t flags);
714
715/* Setup drive and polarity of the GPIOs. */
716int32_t adpd188_gpio_setup(struct adpd188_dev *dev,
717 struct adpd188_gpio_config config);
718
719/* Setup the GPIO source. */
720int32_t adpd188_gpio_alt_setup(struct adpd188_dev *dev, uint8_t gpio_id,
721 enum adpd188_gpio_alt_config config);
722
723/* Do software reset of the device. */
724int32_t adpd188_sw_reset(struct adpd188_dev *dev);
725
726/* Do internal 32MHz clock calibration. */
727int32_t adpd188_clk32mhz_cal(struct adpd188_dev *dev);
728
729/* Enable slot and setup its FIFO interaction. */
730int32_t adpd188_slot_setup(struct adpd188_dev *dev,
731 struct adpd188_slot_config config);
732
733/* Set sample frequency of the ADC. */
734int32_t adpd188_adc_fsample_set(struct adpd188_dev *dev, uint16_t freq_hz);
735
736/* Get sample frequency of the ADC. */
737int32_t adpd188_adc_fsample_get(struct adpd188_dev *dev, uint16_t *freq_hz);
738
739/* Do initial configuration of the device to use as a smoke detector. */
740int32_t adpd188_smoke_detect_setup(struct adpd188_dev *dev);
741
742#endif /* ADPD188_H_ */
struct ad7616_init_param init_param
Definition ad7616_sdz.c:107
adpd188_slot_fifo_mode
The way a time slot stores data in the FIFO.
Definition adpd188.h:613
@ ADPD188_32BIT_4CHAN
Definition adpd188.h:623
@ ADPD188_16BIT_4CHAN
Definition adpd188.h:621
@ ADPD188_16BIT_SUM
Definition adpd188.h:617
@ ADPD188_NO_FIFO
Definition adpd188.h:615
@ ADPD188_32BIT_SUM
Definition adpd188.h:619
int32_t adpd188_mode_set(struct adpd188_dev *dev, enum adpd188_mode new_mode)
Set the mode of operation of the ADPD188.
Definition adpd188.c:253
adpd188_phy_opt
Types of physical communication protocol.
Definition adpd188.h:511
@ ADPD188_SPI
Definition adpd188.h:513
@ ADPD188_I2C
Definition adpd188.h:515
int32_t adpd188_reg_write(struct adpd188_dev *dev, uint8_t reg_addr, uint16_t reg_val)
Write one 16 bit register of the ADPD188.
Definition adpd188.c:197
int32_t adpd188_reg_read(struct adpd188_dev *dev, uint8_t reg_addr, uint16_t *reg_val)
Read one 16 bit register of the ADPD188.
Definition adpd188.c:159
int32_t adpd188_fifo_thresh_set(struct adpd188_dev *dev, uint8_t word_no)
Set the number of 16 bit words that need to be in the FIFO to trigger an interrupt.
Definition adpd188.c:311
int32_t adpd188_remove(struct adpd188_dev *dev)
Free resources allocated by adpd188_init().
Definition adpd188.c:127
int32_t adpd188_clk32mhz_cal(struct adpd188_dev *dev)
Do internal 32MHz clock calibration. This calibration requires the 32kHz clock to be calibrated first...
Definition adpd188.c:519
adpd188_mode
ADPD188 operation modes.
Definition adpd188.h:522
@ ADPD188_NORMAL
Definition adpd188.h:528
@ ADPD188_PROGRAM
Definition adpd188.h:526
@ ADPD188_STANDBY
Definition adpd188.h:524
adpd188_gpio_alt_config
GPIO source configuration.
Definition adpd188.h:563
@ ADPD188_32KHZ_OSC
Definition adpd188.h:595
@ ADPD188_ANYSLOT_PULSE
Definition adpd188.h:578
@ ADPD188_ADPD103
Definition adpd188.h:565
@ ADPD188_OUT_HIGH
Definition adpd188.h:593
@ ADPD188_INT_FUNC
Definition adpd188.h:567
@ ADPD188_SLOTA_PULSE
Definition adpd188.h:574
@ ADPD188_ANYSLOT_OUT
Definition adpd188.h:584
@ ADPD188_SLOTA_OUT
Definition adpd188.h:580
@ ADPD188_SLOTB_PULSE
Definition adpd188.h:576
@ ADPD188_ACTIVE_PULSE
Definition adpd188.h:572
@ ADPD188_HALF_SAMPLING
Definition adpd188.h:589
@ ADPD188_SLOTB_OUT
Definition adpd188.h:582
@ ADPD188_OUT_LOW
Definition adpd188.h:591
int32_t adpd188_adc_fsample_get(struct adpd188_dev *dev, uint16_t *freq_hz)
Get sample frequency of the ADC.
Definition adpd188.c:635
int32_t adpd188_mode_get(struct adpd188_dev *dev, enum adpd188_mode *mode)
Get the mode of operation of the ADPD188.
Definition adpd188.c:230
int32_t adpd188_gpio_alt_setup(struct adpd188_dev *dev, uint8_t gpio_id, enum adpd188_gpio_alt_config config)
Setup the GPIO source.
Definition adpd188.c:477
int32_t adpd188_smoke_detect_setup(struct adpd188_dev *dev)
Do initial configuration of the device to use as a smoke detector. The configuration is described in ...
Definition adpd188.c:654
int32_t adpd188_gpio_setup(struct adpd188_dev *dev, struct adpd188_gpio_config config)
Setup drive and polarity of the GPIOs. Also enable GPIO if necessary.
Definition adpd188.c:434
int32_t adpd188_interrupt_en(struct adpd188_dev *dev, uint8_t flags)
Enable the slot and FIFO interrupt flags.
Definition adpd188.c:410
adpd_supported_devices
Devices supported by the driver.
Definition adpd188.h:489
@ ADPD1080
Definition adpd188.h:491
@ ADPD1081
Definition adpd188.h:492
@ ADPD188BI
Definition adpd188.h:490
int32_t adpd188_sw_reset(struct adpd188_dev *dev)
Do software reset of the device.
Definition adpd188.c:507
int32_t adpd188_fifo_clear(struct adpd188_dev *dev)
Empty the FIFO.
Definition adpd188.c:288
int32_t adpd188_interrupt_clear(struct adpd188_dev *dev, uint8_t flags)
Clear the slot and FIFO interrupt flags.
Definition adpd188.c:370
int32_t adpd188_init(struct adpd188_dev **device, struct adpd188_init_param *init_param)
Initialize the ADPD188 driver.
Definition adpd188.c:47
int32_t adpd188_slot_setup(struct adpd188_dev *dev, struct adpd188_slot_config config)
Enable slot and setup its FIFO interaction.
Definition adpd188.c:580
int32_t adpd188_interrupt_get(struct adpd188_dev *dev, uint8_t *flags)
Get the slot and FIFO interrupt flags.
Definition adpd188.c:340
adpd188_slots
ADPD188 time slots.
Definition adpd188.h:602
@ ADPD188_SLOTB
Definition adpd188.h:606
@ ADPD188_SLOTA
Definition adpd188.h:604
adpd188_interrupt
Interrupt flags of the ADPD188.
Definition adpd188.h:535
@ ADPD188_SLOTB_INT
Definition adpd188.h:539
@ ADPD188_SLOTA_INT
Definition adpd188.h:537
@ ADPD188_FIFO_INT
Definition adpd188.h:541
int32_t adpd188_fifo_status_get(struct adpd188_dev *dev, uint8_t *bytes_no)
Get the number of bytes currently present in FIFO.
Definition adpd188.c:268
int32_t adpd188_adc_fsample_set(struct adpd188_dev *dev, uint16_t freq_hz)
Set sample frequency of the ADC.
Definition adpd188.c:617
Header file of GPIO Interface.
Header file of I2C Interface.
Header file of SPI Interface.
Driver descriptor structure.
Definition adpd188.h:643
void * phy_desc
Definition adpd188.h:649
enum adpd188_phy_opt phy_opt
Definition adpd188.h:647
enum adpd_supported_devices device
Definition adpd188.h:645
struct no_os_gpio_desc * gpio1
Definition adpd188.h:653
struct no_os_gpio_desc * gpio0
Definition adpd188.h:651
GPIO level configuration.
Definition adpd188.h:548
uint8_t gpio_pol
Definition adpd188.h:552
uint8_t gpio_drv
Definition adpd188.h:554
uint8_t gpio_id
Definition adpd188.h:550
uint8_t gpio_en
Definition adpd188.h:556
Driver initialization structure.
Definition adpd188.h:660
union adpd188_phy_init phy_init
Definition adpd188.h:666
struct no_os_gpio_init_param gpio1_init
Definition adpd188.h:670
enum adpd188_phy_opt phy_opt
Definition adpd188.h:664
struct no_os_gpio_init_param gpio0_init
Definition adpd188.h:668
enum adpd_supported_devices device
Definition adpd188.h:662
Slot configuration initialization structure.
Definition adpd188.h:630
enum adpd188_slot_fifo_mode sot_fifo_mode
Definition adpd188.h:636
enum adpd188_slots slot_id
Definition adpd188.h:632
bool slot_en
Definition adpd188.h:634
Definition ad9361_util.h:63
Structure holding the GPIO descriptor.
Definition no_os_gpio.h:84
Structure holding the parameters for GPIO initialization.
Definition no_os_gpio.h:67
Structure holding the parameters for I2C initialization.
Definition no_os_i2c.h:52
Structure holding the parameters for SPI initialization.
Definition no_os_spi.h:128
Communication physical protocol initialization structure. Can be I2C or SPI.
Definition adpd188.h:500
struct no_os_i2c_init_param i2c_phy
Definition adpd188.h:502
struct no_os_spi_init_param spi_phy
Definition adpd188.h:504