no-OS
All Classes Files Functions Variables Typedefs Enumerations Enumerator Macros Modules Pages
ltc2992.h
Go to the documentation of this file.
1/*******************************************************************************
2* @file ltc2992.h
3* @brief Header file of the LTC2992 Driver
4* @authors Cedric Justine Encarnacion (cedricjustine.encarnacion@analog.com)
5********************************************************************************
6* Copyright 2024(c) Analog Devices, Inc.
7*
8* Redistribution and use in source and binary forms, with or without
9* modification, are permitted provided that the following conditions are met:
10*
11* 1. Redistributions of source code must retain the above copyright notice,
12* this list of conditions and the following disclaimer.
13*
14* 2. Redistributions in binary form must reproduce the above copyright notice,
15* this list of conditions and the following disclaimer in the documentation
16* and/or other materials provided with the distribution.
17*
18* 3. Neither the name of Analog Devices, Inc. nor the names of its
19* contributors may be used to endorse or promote products derived from this
20* software without specific prior written permission.
21*
22* THIS SOFTWARE IS PROVIDED BY ANALOG DEVICES, INC. “AS IS” AND ANY EXPRESS OR
23* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
24* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
25* EVENT SHALL ANALOG DEVICES, INC. BE LIABLE FOR ANY DIRECT, INDIRECT,
26* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
27* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,
28* OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
29* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
30* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
31* EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
32*******************************************************************************/
33
34#ifndef __LTC2992_H__
35#define __LTC2992_H__
36
37#include <stdint.h>
38#include <string.h>
39#include "no_os_util.h"
40#include "no_os_i2c.h"
41#include "no_os_gpio.h"
42
43#define LTC2992_REG_CTRLA 0x00
44#define LTC2992_REG_CTRLB 0x01
45#define LTC2992_REG_ALERT1 0x02
46#define LTC2992_REG_FAULT1 0x03
47#define LTC2992_REG_NADC 0x04
48#define LTC2992_REG_POWER1 0x05
49#define LTC2992_REG_POWER1_MAX 0x08
50#define LTC2992_REG_POWER1_MIN 0x0B
51#define LTC2992_REG_POWER1_MAX_THRESH 0x0E
52#define LTC2992_REG_POWER1_MIN_THRESH 0x11
53#define LTC2992_REG_DSENSE1 0x14
54#define LTC2992_REG_DSENSE1_MAX 0x16
55#define LTC2992_REG_DSENSE1_MIN 0x18
56#define LTC2992_REG_DSENSE1_MAX_THRESH 0x1A
57#define LTC2992_REG_DSENSE1_MIN_THRESH 0x1C
58#define LTC2992_REG_SENSE1 0x1E
59#define LTC2992_REG_SENSE1_MAX 0x20
60#define LTC2992_REG_SENSE1_MIN 0x22
61#define LTC2992_REG_SENSE1_MAX_THRESH 0x24
62#define LTC2992_REG_SENSE1_MIN_THRESH 0x26
63#define LTC2992_REG_G1 0x28
64#define LTC2992_REG_G1_MAX 0x2A
65#define LTC2992_REG_G1_MIN 0x2C
66#define LTC2992_REG_G1_MAX_THRESH 0x2E
67#define LTC2992_REG_G1_MIN_THRESH 0x30
68#define LTC2992_REG_ALERT2 0x34
69#define LTC2992_REG_FAULT2 0x35
70#define LTC2992_REG_G2 0x5A
71#define LTC2992_REG_G2_MAX 0x5C
72#define LTC2992_REG_G2_MIN 0x5E
73#define LTC2992_REG_G2_MAX_THRESH 0x60
74#define LTC2992_REG_G2_MIN_THRESH 0x62
75#define LTC2992_REG_G3 0x64
76#define LTC2992_REG_G3_MAX 0x66
77#define LTC2992_REG_G3_MIN 0x68
78#define LTC2992_REG_G3_MAX_THRESH 0x6A
79#define LTC2992_REG_G3_MIN_THRESH 0x6C
80#define LTC2992_REG_G4 0x6E
81#define LTC2992_REG_G4_MAX 0x70
82#define LTC2992_REG_G4_MIN 0x72
83#define LTC2992_REG_G4_MAX_THRESH 0x74
84#define LTC2992_REG_G4_MIN_THRESH 0x76
85#define LTC2992_REG_ISUM 0x78
86#define LTC2992_REG_ISUM_MAX 0x7A
87#define LTC2992_REG_ISUM_MIN 0x7C
88#define LTC2992_REG_ISUM_MAX_THRESH 0x7E
89#define LTC2992_REG_ISUM_MIN_THRESH 0x80
90#define LTC2992_REG_PSUM 0x82
91#define LTC2992_REG_PSUM_MAX 0x85
92#define LTC2992_REG_PSUM_MIN 0x88
93#define LTC2992_REG_PSUM_MAX_THRESH 0x8B
94#define LTC2992_REG_PSUM_MIN_THRESH 0x8E
95#define LTC2992_REG_ALERT3 0x91
96#define LTC2992_REG_FAULT3 0x92
97#define LTC2992_REG_GPIO_STATUS 0x95
98#define LTC2992_REG_GPIO_IO_CTRL 0x96
99#define LTC2992_REG_GPIO4_CTRL 0x97
100#define LTC2992_REG_MFR_SPECIAL_ID 0xE7
101
102#define LTC2992_REG_POWER(x) (LTC2992_REG_POWER1 + ((x) * 0x32))
103#define LTC2992_REG_POWER_MAX(x) (LTC2992_REG_POWER1_MAX + ((x) * 0x32))
104#define LTC2992_REG_POWER_MIN(x) (LTC2992_REG_POWER1_MIN + ((x) * 0x32))
105#define LTC2992_REG_POWER_MAX_THRESH(x) (LTC2992_REG_POWER1_MAX_THRESH + ((x) * 0x32))
106#define LTC2992_REG_POWER_MIN_THRESH(x) (LTC2992_REG_POWER1_MIN_THRESH + ((x) * 0x32))
107#define LTC2992_REG_DSENSE(x) (LTC2992_REG_DSENSE1 + ((x) * 0x32))
108#define LTC2992_REG_DSENSE_MAX(x) (LTC2992_REG_DSENSE1_MAX + ((x) * 0x32))
109#define LTC2992_REG_DSENSE_MIN(x) (LTC2992_REG_DSENSE1_MIN + ((x) * 0x32))
110#define LTC2992_REG_DSENSE_MAX_THRESH(x) (LTC2992_REG_DSENSE1_MAX_THRESH + ((x) * 0x32))
111#define LTC2992_REG_DSENSE_MIN_THRESH(x) (LTC2992_REG_DSENSE1_MIN_THRESH + ((x) * 0x32))
112#define LTC2992_REG_SENSE(x) (LTC2992_REG_SENSE1 + ((x) * 0x32))
113#define LTC2992_REG_SENSE_MAX(x) (LTC2992_REG_SENSE1_MAX + ((x) * 0x32))
114#define LTC2992_REG_SENSE_MIN(x) (LTC2992_REG_SENSE1_MIN + ((x) * 0x32))
115#define LTC2992_REG_SENSE_MAX_THRESH(x) (LTC2992_REG_SENSE1_MAX_THRESH + ((x) * 0x32))
116#define LTC2992_REG_SENSE_MIN_THRESH(x) (LTC2992_REG_SENSE1_MIN_THRESH + ((x) * 0x32))
117#define LTC2992_REG_POWER_FAULT(x) (LTC2992_REG_FAULT1 + ((x) * 0x32))
118#define LTC2992_REG_SENSE_FAULT(x) (LTC2992_REG_FAULT1 + ((x) * 0x32))
119#define LTC2992_REG_DSENSE_FAULT(x) (LTC2992_REG_FAULT1 + ((x) * 0x32))
120
121#define LTC2992_OFFSET_CAL_MSK NO_OS_BIT(7)
122#define LTC2992_MEASURE_MODE_MSK NO_OS_GENMASK(6,5)
123#define LTC2992_VSEL_CON_MSK NO_OS_GENMASK(4,3)
124#define LTC2992_VSEL_SNAP_MSK NO_OS_GENMASK(2,0)
125#define LTC2992_POWER_ALERT_MSK NO_OS_GENMASK(7,6)
126#define LTC2992_DSENSE_ALERT_MSK NO_OS_GENMASK(5,4)
127#define LTC2992_SENSE_ALERT_MSK NO_OS_GENMASK(3,2)
128#define LTC2992_ISUM_ALERT_MSK NO_OS_GENMASK(3,2)
129#define LTC2992_PSUM_ALERT_MSK NO_OS_GENMASK(1,0)
130#define LTC2992_POWER_FAULT_MSK NO_OS_GENMASK(7,6)
131#define LTC2992_DSENSE_FAULT_MSK NO_OS_GENMASK(5,4)
132#define LTC2992_SENSE_FAULT_MSK NO_OS_GENMASK(3,2)
133#define LTC2992_ISUM_FAULT_MSK NO_OS_GENMASK(3,2)
134#define LTC2992_PSUM_FAULT_MSK NO_OS_GENMASK(1,0)
135#define LTC2992_12B_SENSE_VAL_MSK NO_OS_GENMASK(15,4)
136#define LTC2992_12B_POWER_VAL_MSK NO_OS_GENMASK(23,0)
137#define LTC2992_8B_SENSE_VAL_MSK NO_OS_GENMASK(15,8)
138#define LTC2992_8B_POWER_VAL_MSK NO_OS_GENMASK(23,8)
139
140#define LTC2992_G1_FAULT_ALERT_MSK 0x03
141#define LTC2992_G2_FAULT_ALERT_MSK 0x03
142#define LTC2992_G3_FAULT_ALERT_MSK 0xC0
143#define LTC2992_G4_FAULT_ALERT_MSK 0x30
144
145#define LTC2992_ALERT_CLR_BIT NO_OS_BIT(7)
146#define LTC2992_READ_CTRL_BIT NO_OS_BIT(5)
147#define LTC2992_STUCK_BUS_TIMEOUT_BIT NO_OS_BIT(4)
148#define LTC2992_PEAK_RST_BIT NO_OS_BIT(3)
149#define LTC2992_RESET_BIT NO_OS_BIT(0)
150#define LTC2992_G4_ALERT_PIN_BIT NO_OS_BIT(7)
151#define LTC2992_G1_CTRL_BIT NO_OS_BIT(7)
152#define LTC2992_G2_CTRL_BIT NO_OS_BIT(6)
153#define LTC2992_G3_CTRL_BIT NO_OS_BIT(0)
154#define LTC2992_G4_CTRL_BIT NO_OS_BIT(6)
155
156#define LTC2992_MFR_ID_VALUE 0x62
157#define LTC2992_RESOLUTION_POS 7
158
164
171
176
181
190
195
202
209
220
225
232
239
241 uint8_t data;
242 uint8_t max;
243 uint8_t min;
244 uint8_t max_thresh;
245 uint8_t min_thresh;
246 uint8_t fault;
247 uint8_t alert;
249 uint8_t ctrl;
250 uint8_t ctrl_mask;
251};
252
259
273
274/* Generate device I2C address based on ADR pin states */
276 enum ltc2992_adr_state a0,
277 enum ltc2992_adr_state a1);
278
279/* Initialize communication peripheral for the device */
280int ltc2992_init(struct ltc2992_dev **device,
282
283/* Free resources allocated to the device */
284int ltc2992_remove(struct ltc2992_dev *dev);
285
286/* Read raw data from device register */
287int ltc2992_read_reg(struct ltc2992_dev *dev, uint8_t addr,
288 uint32_t *data, uint8_t num_bytes);
289
290/* Write raw data to device register */
291int ltc2992_write_reg(struct ltc2992_dev *dev, uint8_t addr,
292 uint32_t value, uint8_t num_bytes);
293
294/* Update register value in the device */
295int ltc2992_update_reg(struct ltc2992_dev *dev, uint8_t addr,
296 uint8_t mask, uint8_t val);
297
298/* Read bus voltage in a sense channel */
299int ltc2992_get_voltage(struct ltc2992_dev *dev,
300 enum ltc2992_sense sense,
301 uint32_t *voltage_data);
302
303/* Read shunt voltage in a sense channel */
304int ltc2992_get_vshunt(struct ltc2992_dev *dev,
305 enum ltc2992_sense sense,
306 uint32_t *vshunt_data);
307
308/* Read bus current along a sense channel */
309int ltc2992_get_current(struct ltc2992_dev *dev,
310 enum ltc2992_sense sense,
311 uint32_t *current_data);
312
313/* Read bus power output in a sense channel */
314int ltc2992_get_power(struct ltc2992_dev *dev,
315 enum ltc2992_sense sense,
316 uint32_t *power_data);
317
318/* Read the shunt voltage sum or power sum of both sense channels */
319int ltc2992_get_sum(struct ltc2992_dev *dev,
320 enum ltc2992_channel chan,
321 uint32_t *sum_data);
322
323/* Read sense data at a SENSE channel */
324int ltc2992_get_sense_data(struct ltc2992_dev *dev,
325 enum ltc2992_sense sense,
326 enum ltc2992_channel chan,
327 uint32_t *data);
328
329/* Read maximum sense data at a SENSE channel */
330int ltc2992_get_max_data(struct ltc2992_dev *dev,
331 enum ltc2992_sense sense,
332 enum ltc2992_channel chan,
333 uint32_t *data);
334
335/* Read minimum sense data at a SENSE channel */
336int ltc2992_get_min_data(struct ltc2992_dev *dev,
337 enum ltc2992_sense sense,
338 enum ltc2992_channel chan,
339 uint32_t *data);
340
341/* Set upper thresh level for alert at a SENSE channel */
342int ltc2992_set_max_thresh(struct ltc2992_dev *dev,
343 enum ltc2992_sense sense,
344 enum ltc2992_channel chan,
345 uint32_t thresh_value);
346/* Set lower thresh level for alert at a SENSE channel */
347int ltc2992_set_min_thresh(struct ltc2992_dev *dev,
348 enum ltc2992_sense sense,
349 enum ltc2992_channel chan,
350 uint32_t thresh_value);
351
352/* Enable alert */
353int ltc2992_set_alert(struct ltc2992_dev *dev,
354 enum ltc2992_sense sense,
355 enum ltc2992_channel chan,
356 enum ltc2992_alert_value alert);
357
358/* Get fault status */
359int ltc2992_get_fault(struct ltc2992_dev *dev,
360 enum ltc2992_sense sense,
361 enum ltc2992_channel chan,
362 enum ltc2992_fault_status *fault);
363
364/* Clear fault status */
365int ltc2992_clear_fault(struct ltc2992_dev *dev,
366 enum ltc2992_sense sense,
367 enum ltc2992_channel chan);
368
369/* Get data from a GPIO data converter */
370int ltc2992_get_gpio_data(struct ltc2992_dev *dev,
371 enum ltc2992_gpio gpio,
372 uint32_t *gpio_data);
373
374/* Get maximum data from a GPIO data converter */
376 enum ltc2992_gpio gpio,
377 uint32_t *gpio_data);
378
379/* Get minimum data from a GPIO data converter */
381 enum ltc2992_gpio gpio,
382 uint32_t *gpio_data);
383
384/* Set upper threshold level in a GPIO */
386 enum ltc2992_gpio gpio,
387 uint32_t thresh_value);
388
389/* Set lower threshold level in a GPIO */
391 enum ltc2992_gpio gpio,
392 uint32_t thresh_value);
393
394/* Enable alert when GPIO level reaches beyond threshold limit */
395int ltc2992_set_gpio_alert(struct ltc2992_dev *dev,
396 enum ltc2992_gpio gpio,
397 enum ltc2992_alert_value alert_value);
398
399/* Get GPIO fault status */
400int ltc2992_get_gpio_fault(struct ltc2992_dev *dev,
401 enum ltc2992_gpio gpio,
402 enum ltc2992_fault_status *fault);
403
404/* Clear GPIO fault status */
406 enum ltc2992_gpio gpio);
407
408/* Reset alert pin (GPI04) status */
409int ltc2992_reset_alert_pin(struct ltc2992_dev *dev);
410
411/* Get GPIO state */
412int ltc2992_get_gpio_state(struct ltc2992_dev *dev,
413 enum ltc2992_gpio gpio,
414 uint8_t *state);
415
416/* Set GPIO output */
418 enum ltc2992_gpio gpio,
419 enum ltc2992_gpio_output output);
420#endif /* __LTC2992_H__ */
struct ad7616_init_param init_param
Definition ad7616_sdz.c:107
ltc2992_gpio_output
Definition ltc2992.h:172
@ LTC2992_GPIO_OUTPUT_PULL_LOW
Definition ltc2992.h:174
@ LTC2992_GPIO_OUTPUT_HI_Z
Definition ltc2992.h:173
int ltc2992_get_gpio_min_data(struct ltc2992_dev *dev, enum ltc2992_gpio gpio, uint32_t *gpio_data)
Get minimum data from a GPIO data converter.
Definition ltc2992.c:1225
int ltc2992_read_reg(struct ltc2992_dev *dev, uint8_t addr, uint32_t *data, uint8_t num_bytes)
Read raw data from device register.
Definition ltc2992.c:288
int ltc2992_get_sense_data(struct ltc2992_dev *dev, enum ltc2992_sense sense, enum ltc2992_channel chan, uint32_t *data)
Read sense data at a SENSE channel.
Definition ltc2992.c:678
int ltc2992_get_min_data(struct ltc2992_dev *dev, enum ltc2992_sense sense, enum ltc2992_channel chan, uint32_t *data)
Read minimum sense data at a SENSE channel.
Definition ltc2992.c:776
ltc2992_measure_mode
Definition ltc2992.h:196
@ LTC2992_MODE_SHUTDOWN
Definition ltc2992.h:200
@ LTC2992_MODE_SNAPSHOT
Definition ltc2992.h:198
@ LTC2992_MODE_SINGLE_CYCLE
Definition ltc2992.h:199
@ LTC2992_MODE_CONTINUOUS
Definition ltc2992.h:197
int ltc2992_get_voltage(struct ltc2992_dev *dev, enum ltc2992_sense sense, uint32_t *voltage_data)
Read bus voltage in a sense channel.
Definition ltc2992.c:558
int ltc2992_get_gpio_fault(struct ltc2992_dev *dev, enum ltc2992_gpio gpio, enum ltc2992_fault_status *fault)
Get GPIO fault status.
Definition ltc2992.c:1311
int ltc2992_update_reg(struct ltc2992_dev *dev, uint8_t addr, uint8_t mask, uint8_t val)
Update register value in the device.
Definition ltc2992.c:361
ltc2992_channel
Definition ltc2992.h:182
@ LTC2992_CURRENT
Definition ltc2992.h:185
@ LTC2992_VSHUNT
Definition ltc2992.h:184
@ LTC2992_VOLTAGE
Definition ltc2992.h:183
@ LTC2992_POWER
Definition ltc2992.h:186
@ LTC2992_PSUM
Definition ltc2992.h:188
@ LTC2992_ISUM
Definition ltc2992.h:187
int ltc2992_get_sum(struct ltc2992_dev *dev, enum ltc2992_channel chan, uint32_t *sum_data)
Read the shunt voltage sum or power sum of both sense channels.
Definition ltc2992.c:634
ltc2992_resolution
Definition ltc2992.h:221
@ LTC2992_RESOLUTION_12_BIT
Definition ltc2992.h:222
@ LTC2992_RESOLUTION_8_BIT
Definition ltc2992.h:223
int ltc2992_get_gpio_state(struct ltc2992_dev *dev, enum ltc2992_gpio gpio, uint8_t *state)
Get GPIO state.
Definition ltc2992.c:1371
int ltc2992_write_reg(struct ltc2992_dev *dev, uint8_t addr, uint32_t value, uint8_t num_bytes)
Write raw data to device register.
Definition ltc2992.c:328
ltc2992_fault_status
Definition ltc2992.h:233
@ LTC2992_FAULT_NONE
Definition ltc2992.h:234
@ LTC2992_FAULT_OVERVALUE
Definition ltc2992.h:236
@ LTC2992_FAULT_ALL
Definition ltc2992.h:237
@ LTC2992_FAULT_UNDERVALUE
Definition ltc2992.h:235
int ltc2992_set_gpio_output(struct ltc2992_dev *dev, enum ltc2992_gpio gpio, enum ltc2992_gpio_output output)
Set GPIO output.
Definition ltc2992.c:1400
ltc2992_alert_value
Definition ltc2992.h:226
@ LTC2992_ALERT_ENABLE_OV
Definition ltc2992.h:229
@ LTC2992_ALERT_ENABLE_ALL
Definition ltc2992.h:230
@ LTC2992_ALERT_ENABLE_UV
Definition ltc2992.h:228
@ LTC2992_ALERT_DISABLE_ALL
Definition ltc2992.h:227
int ltc2992_set_max_thresh(struct ltc2992_dev *dev, enum ltc2992_sense sense, enum ltc2992_channel chan, uint32_t thresh_value)
Set upper thresh level for alert at a SENSE channel.
Definition ltc2992.c:836
int ltc2992_set_gpio_max_thresh(struct ltc2992_dev *dev, enum ltc2992_gpio gpio, uint32_t thresh_value)
Set upper threshold level in a GPIO.
Definition ltc2992.c:1243
int ltc2992_get_current(struct ltc2992_dev *dev, enum ltc2992_sense sense, uint32_t *current_data)
Read bus current along a sense channel.
Definition ltc2992.c:592
int ltc2992_addr_gen(struct ltc2992_init_param *init_param, enum ltc2992_adr_state a0, enum ltc2992_adr_state a1)
Generate device I2C address based on ADR pin states.
Definition ltc2992.c:114
ltc2992_calibration
Definition ltc2992.h:191
@ LTC2992_CALIBRATE_ON_DEMAND
Definition ltc2992.h:193
@ LTC2992_CALIBRATE_ALWAYS
Definition ltc2992.h:192
ltc2992_snapshot_vsel
Definition ltc2992.h:210
@ LTC2992_SNAP_VSEL_SENSE1
Definition ltc2992.h:211
@ LTC2992_SNAP_VSEL_GPIO3
Definition ltc2992.h:215
@ LTC2992_SNAP_VSEL_GPIO2
Definition ltc2992.h:214
@ LTC2992_SNAP_VSEL_GPIO4
Definition ltc2992.h:216
@ LTC2992_SNAP_VSEL_GPIO1
Definition ltc2992.h:213
@ LTC2992_SNAP_VSEL_SENSE1_SENSE2
Definition ltc2992.h:217
@ LTC2992_SNAP_VSEL_SENSE2
Definition ltc2992.h:212
@ LTC2992_SNAP_VSEL_GPIO1_GPIO2
Definition ltc2992.h:218
int ltc2992_get_vshunt(struct ltc2992_dev *dev, enum ltc2992_sense sense, uint32_t *vshunt_data)
Read shunt voltage in a sense channel.
Definition ltc2992.c:575
int ltc2992_set_gpio_min_thresh(struct ltc2992_dev *dev, enum ltc2992_gpio gpio, uint32_t thresh_value)
Set lower threshold level in a GPIO.
Definition ltc2992.c:1262
ltc2992_adr_state
Definition ltc2992.h:159
@ LTC2992_ADR_NC
Definition ltc2992.h:162
@ LTC2992_ADR_LOW
Definition ltc2992.h:161
@ LTC2992_ADR_HIGH
Definition ltc2992.h:160
int ltc2992_clear_gpio_fault(struct ltc2992_dev *dev, enum ltc2992_gpio gpio)
Clear GPIO fault status.
Definition ltc2992.c:1339
int ltc2992_remove(struct ltc2992_dev *dev)
Free resources allocated to the device.
Definition ltc2992.c:268
int ltc2992_clear_fault(struct ltc2992_dev *dev, enum ltc2992_sense sense, enum ltc2992_channel chan)
Clear fault status.
Definition ltc2992.c:1108
int ltc2992_get_power(struct ltc2992_dev *dev, enum ltc2992_sense sense, uint32_t *power_data)
Read bus power output in a sense channel.
Definition ltc2992.c:617
int ltc2992_reset_alert_pin(struct ltc2992_dev *dev)
Reset alert pin (GPI04) status.
Definition ltc2992.c:1351
int ltc2992_set_gpio_alert(struct ltc2992_dev *dev, enum ltc2992_gpio gpio, enum ltc2992_alert_value alert_value)
Enable alert when GPIO level reaches beyond threshold limit.
Definition ltc2992.c:1288
int ltc2992_get_fault(struct ltc2992_dev *dev, enum ltc2992_sense sense, enum ltc2992_channel chan, enum ltc2992_fault_status *fault)
Get fault status.
Definition ltc2992.c:1033
ltc2992_continuous_vsel
Definition ltc2992.h:203
@ LTC2992_CONT_VSEL_SENSE_ONLY
Definition ltc2992.h:205
@ LTC2992_CONT_VSEL_GPIOS_ONLY
Definition ltc2992.h:207
@ LTC2992_CONT_VSEL_GPIO1_GPIO2
Definition ltc2992.h:206
@ LTC2992_CONT_VSEL_ALL
Definition ltc2992.h:204
ltc2992_gpio
Definition ltc2992.h:165
@ LTC2992_GPIO2
Definition ltc2992.h:167
@ LTC2992_GPIO1
Definition ltc2992.h:166
@ LTC2992_GPIO4
Definition ltc2992.h:169
@ LTC2992_GPIO3
Definition ltc2992.h:168
ltc2992_sense
Definition ltc2992.h:177
@ LTC2992_SENSE1
Definition ltc2992.h:178
@ LTC2992_SENSE2
Definition ltc2992.h:179
int ltc2992_get_max_data(struct ltc2992_dev *dev, enum ltc2992_sense sense, enum ltc2992_channel chan, uint32_t *data)
Read maximum sense data at a SENSE channel.
Definition ltc2992.c:716
int ltc2992_get_gpio_max_data(struct ltc2992_dev *dev, enum ltc2992_gpio gpio, uint32_t *gpio_data)
Get maximum data from a GPIO data converter.
Definition ltc2992.c:1207
int ltc2992_set_alert(struct ltc2992_dev *dev, enum ltc2992_sense sense, enum ltc2992_channel chan, enum ltc2992_alert_value alert)
Enable alert.
Definition ltc2992.c:947
int ltc2992_set_min_thresh(struct ltc2992_dev *dev, enum ltc2992_sense sense, enum ltc2992_channel chan, uint32_t thresh_value)
Set lower thresh level for alert at a SENSE channel.
Definition ltc2992.c:888
int ltc2992_init(struct ltc2992_dev **device, struct ltc2992_init_param *init_param)
Initialize communication peripheral for the device.
Definition ltc2992.c:175
int ltc2992_get_gpio_data(struct ltc2992_dev *dev, enum ltc2992_gpio gpio, uint32_t *gpio_data)
Get data from a GPIO data converter.
Definition ltc2992.c:1189
Header file of GPIO Interface.
Header file of I2C Interface.
Header file of utility functions.
Definition ad9361_util.h:63
Definition ltc2992.h:253
uint32_t shunt_resistor
Definition ltc2992.h:256
uint8_t resolution
Definition ltc2992.h:257
struct no_os_i2c_desc * i2c_desc
Definition ltc2992.h:254
struct no_os_gpio_desc * alert_gpio_desc
Definition ltc2992.h:255
Definition ltc2992.h:260
enum ltc2992_resolution resolution
Definition ltc2992.h:263
bool alert_clear
Definition ltc2992.h:269
enum ltc2992_calibration calibration
Definition ltc2992.h:264
uint32_t shunt_resistor
Definition ltc2992.h:268
struct no_os_gpio_init_param alert_gpio_init
Definition ltc2992.h:262
bool stuck_bus_timer_wakeup_en
Definition ltc2992.h:271
bool fault_clear_on_read
Definition ltc2992.h:270
enum ltc2992_continuous_vsel continuous_vsel
Definition ltc2992.h:266
enum ltc2992_measure_mode measure_mode
Definition ltc2992.h:265
enum ltc2992_snapshot_vsel snapshot_vsel
Definition ltc2992.h:267
struct no_os_i2c_init_param i2c_init
Definition ltc2992.h:261
Definition ltc2992.h:240
uint8_t alert
Definition ltc2992.h:247
uint8_t fault
Definition ltc2992.h:246
uint8_t data
Definition ltc2992.h:241
uint8_t min
Definition ltc2992.h:243
uint8_t max
Definition ltc2992.h:242
uint8_t max_thresh
Definition ltc2992.h:244
uint8_t ctrl_mask
Definition ltc2992.h:250
uint8_t min_thresh
Definition ltc2992.h:245
uint8_t ctrl
Definition ltc2992.h:249
uint8_t fault_alert_mask
Definition ltc2992.h:248
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 I2C address descriptor.
Definition no_os_i2c.h:89
Structure holding the parameters for I2C initialization.
Definition no_os_i2c.h:52