no-OS
Loading...
Searching...
No Matches
max17616.h
Go to the documentation of this file.
1/***************************************************************************/
33
34#ifndef __MAX17616_H__
35#define __MAX17616_H__
36
37#include <stdint.h>
38#include <string.h>
39#include <stdbool.h>
40#include "no_os_util.h"
41#include "no_os_i2c.h"
42
43#define MAX17616_DS_0B (0 << 8) /* Send-only command */
44#define MAX17616_DS_1B (1 << 8) /* Byte */
45#define MAX17616_DS_2B (2 << 8) /* Word */
46#define MAX17616_DS_3B (3 << 8) /* Block of size 3*/
47#define MAX17616_DS_5B (5 << 8) /* Block of size 5*/
48#define MAX17616_DS_9B (9 << 8) /* Block of size 9*/
49#define MAX17616_DS_10B (10 << 8) /* Block of size 10*/
50#define MAX17616_DF_NONE (0 << 12) /* None */
51#define MAX17616_DF_LINEAR11 (1 << 12) /* Linear 11 */
52#define MAX17616_DF_LINEAR16 (2 << 12) /* Linear 16 */
53#define MAX17616_DF_DIRECT (3 << 12) /* Direct */
54#define MAX17616_DF_VID (4 << 12) /* VID */
55#define MAX17616_DF_IEEE754 (5 << 12) /* IEEE754 */
56
57#define MAX17616_CMD(x) ((uint8_t)(x & 0xFF))
58#define MAX17616_DATA_SIZE(x) no_os_field_get(NO_OS_GENMASK(11,8), x)
59#define MAX17616_DATA_FORMAT(x) no_os_field_get(NO_OS_GENMASK(15,12), x)
60
61#define MAX17616_OPERATION (MAX17616_DS_1B | 0x01)
62#define MAX17616_CLEAR_FAULTS (MAX17616_DS_0B | 0x03)
63#define MAX17616_CAPABILITY (MAX17616_DS_1B | 0x19)
64#define MAX17616_SMBALERT_MASK (MAX17616_DS_1B | 0x1B)
65#define MAX17616_VOUT_UV_FAULT_LIMIT (MAX17616_DS_1B | 0x44)
66#define MAX17616_STATUS_BYTE (MAX17616_DS_1B | 0x78)
67#define MAX17616_STATUS_WORD (MAX17616_DS_2B | 0x79)
68#define MAX17616_STATUS_VOUT (MAX17616_DS_1B | 0x7A)
69#define MAX17616_STATUS_IOUT (MAX17616_DS_1B | 0x7B)
70#define MAX17616_STATUS_INPUT (MAX17616_DS_1B | 0x7C)
71#define MAX17616_STATUS_TEMPERATURE (MAX17616_DS_1B | 0x7D)
72#define MAX17616_STATUS_CML (MAX17616_DS_1B | 0x7E)
73#define MAX17616_STATUS_MFR_SPECIFIC (MAX17616_DS_1B | 0x80)
74#define MAX17616_READ_VIN (MAX17616_DF_DIRECT | MAX17616_DS_2B | 0x88)
75#define MAX17616_READ_VOUT (MAX17616_DF_DIRECT | MAX17616_DS_2B | 0x8B)
76#define MAX17616_READ_IOUT (MAX17616_DF_DIRECT | MAX17616_DS_2B | 0x8C)
77#define MAX17616_READ_TEMPERATURE_1 (MAX17616_DF_DIRECT | MAX17616_DS_2B | 0x8D)
78#define MAX17616_PMBUS_REVISION (MAX17616_DS_2B | 0x98)
79
80#define MAX17616_MFR_ID (MAX17616_DS_5B | 0x99)
81#define MAX17616_MFR_MODEL (MAX17616_DS_10B | 0x9A)
82#define MAX17616_MFR_REVISION (MAX17616_DS_3B | 0x9B)
83#define MAX17616_SET_CLMODE (MAX17616_DS_1B | 0xC4)
84#define MAX17616_SET_ISTART_RATIO (MAX17616_DS_1B | 0xC5)
85#define MAX17616_SET_TSTOC (MAX17616_DS_1B | 0xC6)
86#define MAX17616_SET_ISTLIM (MAX17616_DS_1B | 0xC7)
87#define MAX17616_IC_DEVICE_ID (MAX17616_DS_9B | 0xAD)
88#define MAX17616_IC_DEVICE_REV (MAX17616_DS_3B | 0xAE)
89
90/* Status types masks */
91#define MAX17616_STATUS_BYTE_TYPE_MSK 0x01
92#define MAX17616_STATUS_VOUT_TYPE_MSK 0x02
93#define MAX17616_STATUS_IOUT_TYPE_MSK 0x04
94#define MAX17616_STATUS_INPUT_TYPE_MSK 0x08
95#define MAX17616_STATUS_TEMP_TYPE_MSK 0x10
96#define MAX17616_STATUS_CML_TYPE_MSK 0x20
97#define MAX17616_STATUS_MFR_SPECIFIC_TYPE_MSK 0x40
98#define MAX17616_STATUS_WORD_TYPE_MSK 0x80
99#define MAX17616_STATUS_ALL_TYPE_MSK 0xFF
100
101/* Maximum PMBus block transfer size per PMBus spec */
102#define MAX17616_MAX_BLOCK_SIZE 255
103
107#define MAX17616_DIRECT_EXPONENT_SCALE 10 /* 10^(-R) for R=-1 */
108#define MAX17616_MILLIUNIT_SCALE 1000 /* mV, mA, m°C conversion */
109
110#ifdef TEST
111#define STATIC
112#else
113#define STATIC static
114#endif
115
121
122/* Current limit mode options */
124 MAX17616_CLMODE_LATCH_OFF = 0x00, /* bit[7:6] 00b - latch-off mode */
125 MAX17616_CLMODE_CONTINUOUS = 0x40, /* bit[7:6] 01b - continuous mode */
126 MAX17616_CLMODE_AUTO_RETRY = 0x80 /* bit[7:6] 10b - auto-retry mode */
127};
128
129/* Current start ratio options - fractions of hardware-configured current limit
130 * Note: The actual current limit is set by external resistor on SETI pin */
132 MAX17616_ISTART_FULL, /* 000b = Current Limit (1/1) */
133 MAX17616_ISTART_HALF, /* 001b = Current Limit / 2 */
134 MAX17616_ISTART_QUARTER, /* 010b = Current Limit / 4 */
135 MAX17616_ISTART_EIGHTH, /* 011b = Current Limit / 8 */
136 MAX17616_ISTART_SIXTEENTH /* 100b = Current Limit / 16 */
137};
138
139/* Overcurrent timeout duration options */
141 MAX17616_TIMEOUT_400US, /* 00b = 400 microseconds */
142 MAX17616_TIMEOUT_1MS, /* 01b = 1 millisecond */
143 MAX17616_TIMEOUT_4MS, /* 10b = 4 milliseconds */
144 MAX17616_TIMEOUT_24MS /* 11b = 24 milliseconds */
145};
146
147/* Overcurrent limit ratio options - multiples of hardware current limit */
149 MAX17616_OC_LIMIT_1_25, /* 00b = 1.25:1 ratio */
150 MAX17616_OC_LIMIT_1_50, /* 01b = 1.50:1 ratio */
151 MAX17616_OC_LIMIT_1_75, /* 10b = 1.75:1 ratio */
152 MAX17616_OC_LIMIT_2_00 /* 11b = 2.00:1 ratio */
153};
154
155/* Nominal voltage selection options for VOUT UV fault limit (bits 4:2) */
157 MAX17616_NOMINAL_5V, /* 000b = 5V */
158 MAX17616_NOMINAL_9V, /* 001b = 9V */
159 MAX17616_NOMINAL_12V, /* 010b = 12V */
160 MAX17616_NOMINAL_24V, /* 011b = 24V */
161 MAX17616_NOMINAL_36V, /* 100b = 36V */
162 MAX17616_NOMINAL_48V, /* 101b = 48V */
163 MAX17616_NOMINAL_60V, /* 110b = 60V */
164 MAX17616_NOMINAL_72V /* 111b = 72V */
165};
166
167/* PGOOD rising threshold options for VOUT UV fault limit (bits 1:0) */
169 MAX17616_PGOOD_MINUS_10_PERCENT = 0x00, /* 00b = -10% */
170 MAX17616_PGOOD_MINUS_20_PERCENT = 0x01, /* 01b = -20% */
171 MAX17616_PGOOD_MINUS_30_PERCENT = 0x02 /* 10b = -30% */
172};
173
174/* Bit field macros for current limit mode */
175#define MAX17616_CLMODE_MASK NO_OS_GENMASK(7, 6)
176#define MAX17616_CLMODE_LATCH_OFF_BITS 0x00
177#define MAX17616_CLMODE_CONTINUOUS_BITS 0x01
178#define MAX17616_CLMODE_AUTO_RETRY_BITS 0x02
179
180/* Bit field macros for ISTART ratio */
181#define MAX17616_ISTART_MASK NO_OS_GENMASK(3, 0)
182#define MAX17616_ISTART_FULL_BITS 0x00
183#define MAX17616_ISTART_HALF_BITS 0x01
184#define MAX17616_ISTART_QUARTER_BITS 0x02
185#define MAX17616_ISTART_EIGHTH_BITS 0x03
186#define MAX17616_ISTART_SIXTEENTH_BITS 0x04
187
188/* Bit field macros for overcurrent timeout */
189#define MAX17616_TIMEOUT_MASK NO_OS_GENMASK(1, 0)
190#define MAX17616_TIMEOUT_400US_BITS 0x00
191#define MAX17616_TIMEOUT_1MS_BITS 0x01
192#define MAX17616_TIMEOUT_4MS_BITS 0x02
193#define MAX17616_TIMEOUT_24MS_BITS 0x03
194
195/* Bit field macros for overcurrent limit */
196#define MAX17616_OC_LIMIT_MASK NO_OS_GENMASK(1, 0)
197#define MAX17616_OC_LIMIT_1_25_BITS 0x00
198#define MAX17616_OC_LIMIT_1_50_BITS 0x01
199#define MAX17616_OC_LIMIT_1_75_BITS 0x02
200#define MAX17616_OC_LIMIT_2_00_BITS 0x03
201
202/* Bit field macros for nominal voltage configuration */
203#define MAX17616_NOMINAL_VOLTAGE_MASK NO_OS_GENMASK(4, 2)
204#define MAX17616_NOMINAL_5V_BITS 0x00
205#define MAX17616_NOMINAL_9V_BITS 0x01
206#define MAX17616_NOMINAL_12V_BITS 0x02
207#define MAX17616_NOMINAL_24V_BITS 0x03
208#define MAX17616_NOMINAL_36V_BITS 0x04
209#define MAX17616_NOMINAL_48V_BITS 0x05
210#define MAX17616_NOMINAL_60V_BITS 0x06
211#define MAX17616_NOMINAL_72V_BITS 0x07
212
213/* Bit field macros for PGOOD threshold configuration */
214#define MAX17616_PGOOD_MASK NO_OS_GENMASK(1, 0)
215#define MAX17616_PGOOD_MINUS_10_PERCENT_BITS 0x00
216#define MAX17616_PGOOD_MINUS_20_PERCENT_BITS 0x01
217#define MAX17616_PGOOD_MINUS_30_PERCENT_BITS 0x02
218
219/* Value types for high-level read/write functions */
221 MAX17616_VIN, /* Input voltage in volts */
222 MAX17616_VOUT, /* Output voltage in volts */
223 MAX17616_IOUT, /* Output current in amps */
224 MAX17616_TEMP, /* Temperature in degrees Celsius */
225 MAX17616_POWER, /* Power in watts */
226};
227
228/* Status structure */
230 uint16_t word;
231 uint8_t byte;
232 uint8_t vout;
233 uint8_t iout;
234 uint8_t input;
235 uint8_t temperature;
236 uint8_t cml;
237 uint8_t other;
239};
240
245
254
260
265
267 MAX17616_STATUS_BIT_GENERAL, /* Not supported */
268 MAX17616_STATUS_BIT_CML, /* Comms, memory, or logic Fault */
269 MAX17616_STATUS_BIT_TEMPERATURE, /* Temperature Fault or Warning */
270 MAX17616_STATUS_BIT_VIN_UV, /* Input Under Voltage Fault */
271 MAX17616_STATUS_BIT_IOUT_OC, /* Output Over Current Fault */
272 MAX17616_STATUS_BIT_VOUT_OV, /* An output overvoltage fault occurred */
273 MAX17616_STATUS_BIT_OFF, /* Max17616 is not enabled */
274 MAX17616_STATUS_BIT_BUSY /* Not supported */
275};
276
278 MAX17616_STATUS_BIT_STARTUP, /* Not supported */
279 MAX17616_STATUS_BIT_OTHER, /* Not supported */
280 MAX17616_STATUS_BIT_FANS, /* Not supported */
282 MAX17616_STATUS_BIT_MFR, /* Manufacturer specific Fault */
283 MAX17616_STATUS_BIT_INPUT, /* Input V, I, or P Fault */
284 MAX17616_STATUS_BIT_IOUT_POUT, /* Output current or power Fault */
285 MAX17616_STATUS_BIT_VOUT /* Output voltage Fault */
286};
287
298
300 MAX17616_CML_FAULT_NS_BIT0, /* Not supported */
301 MAX17616_CML_FAULT_OTHER, /* Communications other error */
302 MAX17616_CML_FAULT_NS_BIT2, /* Not supported */
303 MAX17616_CML_FAULT_NS_BIT3, /* Not supported */
304 MAX17616_CML_FAULT_MEM_ERROR, /* Memory Error detected */
305 MAX17616_CML_FAULT_PEC_FAIL, /* Packet error checking failed */
306 MAX17616_CML_FAULT_DATA, /* Invalid or unsupported data received */
307 MAX17616_CML_FAULT_CMD /* Invalid or unsupported command received */
308};
309
320
325 MAX17616_INPUT_FAULT_UNIT_OFF, /* Not supported */
326 MAX17616_INPUT_FAULT_VIN_UV_FAULT, /* An input undervoltage fault occurred */
329 MAX17616_INPUT_FAULT_VIN_OV_FAULT /* An input overvoltage fault occurred */
330};
331
333 MAX17616_IOUT_FAULT_NS_BIT0, /* An output overcurrent fault occurred */
334 MAX17616_IOUT_FAULT_NS_BIT1, /* Not supported */
335 MAX17616_IOUT_FAULT_NS_BIT2, /* Not supported */
336 MAX17616_IOUT_FAULT_NS_BIT3, /* Not supported */
337 MAX17616_IOUT_FAULT_NS_BIT4, /* Not supported */
339 MAX17616_IOUT_FAULT_OUT_OC_UV_LO, /* An output overcurrent and low voltage fault occurred */
340 MAX17616_IOUT_FAULT_OUT_OC_FAULT /* An output overcurrent fault occurred */
341};
342
349 MAX17616_VOUT_FAULT_VOUT_UV_WARNING, /* Output has gone below the output undervoltage threshold */
350 MAX17616_VOUT_FAULT_VOUT_OV_WARNING, /* Output regulation event has occurred */
352};
353
355 MAX17616_MFR_FAULT_NS_BIT0, /* Not supported */
356 MAX17616_MFR_FAULT_NS_BIT1, /* Not supported */
357 MAX17616_MFR_FAULT_REVERSE_CURRENT, /* A reverse current fault occurred */
358 MAX17616_MFR_FAULT_OUTPUT_SHORT_CIRCUIT, /* An output short circuit fault occurred */
359 MAX17616_MFR_FAULT_NS_BIT4, /* Not supported */
360 MAX17616_MFR_FAULT_SOFT_START, /* Soft start failed */
361 MAX17616_MFR_FAULT_IMON_PIN, /* IMON pin fault */
362 MAX17616_MFR_FAULT_SETI_PIN /* SETI pin fault */
363};
364
365/* Fault Management Module Definitions */
366
367/* Fault group identifiers matching STATUS_WORD bits */
381
382/* Individual fault information structure */
384 uint16_t group;
385 uint8_t bit;
386 const char *description;
388};
389
395 int32_t vin_mv; /* Input voltage in millivolts */
396 int32_t vout_mv; /* Output voltage in millivolts */
397 int32_t iout_ma; /* Output current in milliamps */
398 int32_t pin_mw; /* Input power in milliwatts */
399 int32_t pout_mw; /* Output power in milliwatts */
400 int32_t temp1_mc; /* Temperature in millidegrees Celsius */
401 uint8_t valid_mask; /* Bitmask indicating which values are valid */
402};
403
404/* Initialize the device structure */
405int max17616_init(struct max17616_dev **dev,
407
408/* Free or remove device instance */
409int max17616_remove(struct max17616_dev *dev);
410
411/* Clear status registers */
412int max17616_clear_faults(struct max17616_dev *dev);
413
414/* Perform a PMBus write_byte operation */
415int max17616_write_byte(struct max17616_dev *dev, uint8_t cmd, uint8_t value);
416
417/* Read a block of bytes */
418int max17616_read_block_data(struct max17616_dev *dev, uint8_t cmd,
419 uint8_t *data, size_t nbytes);
420
421/* Perform a PMBus read_word operation */
422int max17616_read_word(struct max17616_dev *dev, uint8_t cmd, uint16_t *word);
423
424/* Send a PMBus command to the device */
425int max17616_send_byte(struct max17616_dev *dev, uint8_t cmd);
426
427/* Read a single byte from the device */
428int max17616_read_byte(struct max17616_dev *dev, uint8_t cmd, uint8_t *data);
429
430/* Fault Management Module Functions */
431int max17616_read_status(struct max17616_dev *dev,
432 struct max17616_status *status);
433
434/* Get human-readable description for a specific fault */
435const char *max17616_get_fault_description(uint16_t group, uint8_t bit);
436
437/* High-level value reading functions */
438int max17616_read_value(struct max17616_dev *dev,
439 enum max17616_value_type value_type,
440 int32_t *value_milliunit);
441
442/* Enhanced operation control functions */
443int max17616_set_operation_state(struct max17616_dev *dev, bool enable);
444int max17616_get_operation_state(struct max17616_dev *dev, bool *enabled);
445
446/* Manufacturer-specific command functions */
448 enum max17616_current_limit_mode clmode);
450 enum max17616_current_limit_mode *clmode);
452 enum max17616_istart_ratio ratio);
454 enum max17616_istart_ratio *istart_ratio);
460 enum max17616_overcurrent_limit limit);
462 enum max17616_overcurrent_limit *istlim);
463
464/* VOUT UV fault limit configuration functions */
466 enum max17616_nominal_voltage voltage,
467 enum max17616_pgood_threshold threshold);
469 enum max17616_nominal_voltage *voltage,
470 enum max17616_pgood_threshold *threshold);
471
472/* PMBus capability function */
473int max17616_read_capability(struct max17616_dev *dev, uint8_t *capability);
474
475/* Comprehensive telemetry functions */
477 struct max17616_telemetry *telemetry);
478
479/* Read STATUS_BYTE register */
480int max17616_read_status_byte(struct max17616_dev *dev, uint8_t *status_byte);
481
482/* Read individual status registers */
483int max17616_read_status_vout(struct max17616_dev *dev, uint8_t *status_vout);
484int max17616_read_status_iout(struct max17616_dev *dev, uint8_t *status_iout);
485int max17616_read_status_input(struct max17616_dev *dev, uint8_t *status_input);
487 uint8_t *status_temperature);
488int max17616_read_status_cml(struct max17616_dev *dev, uint8_t *status_cml);
490 uint8_t *status_mfr);
491
492/* Device identification and verification functions */
496
497#endif /* __MAX17616_H__ */
uint32_t timeout
Definition ad413x.c:46
struct ad7616_init_param init_param
Definition ad7616_sdz.c:107
max17616_pgood_threshold
Definition max17616.h:168
@ MAX17616_PGOOD_MINUS_30_PERCENT
Definition max17616.h:171
@ MAX17616_PGOOD_MINUS_10_PERCENT
Definition max17616.h:169
@ MAX17616_PGOOD_MINUS_20_PERCENT
Definition max17616.h:170
int max17616_get_istart_ratio(struct max17616_dev *dev, enum max17616_istart_ratio *istart_ratio)
Get current start ratio.
Definition max17616.c:687
int max17616_set_operation_state(struct max17616_dev *dev, bool enable)
Set device operation state.
Definition max17616.c:592
int max17616_write_byte(struct max17616_dev *dev, uint8_t cmd, uint8_t value)
Perform a raw PMBus write byte operation.
Definition max17616.c:212
max17616_nominal_voltage
Definition max17616.h:156
@ MAX17616_NOMINAL_72V
Definition max17616.h:164
@ MAX17616_NOMINAL_5V
Definition max17616.h:157
@ MAX17616_NOMINAL_36V
Definition max17616.h:161
@ MAX17616_NOMINAL_60V
Definition max17616.h:163
@ MAX17616_NOMINAL_24V
Definition max17616.h:160
@ MAX17616_NOMINAL_12V
Definition max17616.h:159
@ MAX17616_NOMINAL_48V
Definition max17616.h:162
@ MAX17616_NOMINAL_9V
Definition max17616.h:158
int max17616_set_vout_uv_fault_limit_config(struct max17616_dev *dev, enum max17616_nominal_voltage voltage, enum max17616_pgood_threshold threshold)
Set VOUT UV fault limit configuration using enums.
Definition max17616.c:873
max17616_temperature_bit_fault_byte
Definition max17616.h:310
@ MAX17616_TEMPERATURE_FAULT_OT_WARNING
Definition max17616.h:317
@ MAX17616_TEMPERATURE_FAULT_NS_BIT3
Definition max17616.h:314
@ MAX17616_TEMPERATURE_FAULT_NS_BIT2
Definition max17616.h:313
@ MAX17616_TEMPERATURE_FAULT_NS_BIT1
Definition max17616.h:312
@ MAX17616_TEMPERATURE_FAULT_OT_FAULT
Definition max17616.h:318
@ MAX17616_TEMPERATURE_FAULT_UT_WARNING
Definition max17616.h:316
@ MAX17616_TEMPERATURE_FAULT_NS_BIT0
Definition max17616.h:311
@ MAX17616_TEMPERATURE_FAULT_UT_FAULT
Definition max17616.h:315
int max17616_read_status_temperature(struct max17616_dev *dev, uint8_t *status_temperature)
Read STATUS_TEMPERATURE register.
Definition max17616.c:317
max17616_overcurrent_timeout
Definition max17616.h:140
@ MAX17616_TIMEOUT_400US
Definition max17616.h:141
@ MAX17616_TIMEOUT_4MS
Definition max17616.h:143
@ MAX17616_TIMEOUT_24MS
Definition max17616.h:144
@ MAX17616_TIMEOUT_1MS
Definition max17616.h:142
int max17616_read_telemetry_all(struct max17616_dev *dev, struct max17616_telemetry *telemetry)
Read comprehensive telemetry data.
Definition max17616.c:1049
int max17616_read_status_vout(struct max17616_dev *dev, uint8_t *status_vout)
Read STATUS_VOUT register.
Definition max17616.c:272
int max17616_set_current_limit_mode(struct max17616_dev *dev, enum max17616_current_limit_mode clmode)
Set current limit mode.
Definition max17616.c:665
max17616_general_bit_fault_byte
Definition max17616.h:288
@ MAX17616_GENERAL_FAULT_NS_BIT2
Definition max17616.h:291
@ MAX17616_GENERAL_FAULT_NS_BIT6
Definition max17616.h:295
@ MAX17616_GENERAL_FAULT_NS_BIT4
Definition max17616.h:293
@ MAX17616_GENERAL_FAULT_NS_BIT3
Definition max17616.h:292
@ MAX17616_GENERAL_FAULT_NS_BIT5
Definition max17616.h:294
@ MAX17616_GENERAL_FAULT_NS_BIT1
Definition max17616.h:290
@ MAX17616_GENERAL_FAULT_NS_BIT0
Definition max17616.h:289
@ MAX17616_GENERAL_FAULT_NS_BIT7
Definition max17616.h:296
max17616_iout_fault_bit
Definition max17616.h:332
@ MAX17616_IOUT_FAULT_NS_BIT2
Definition max17616.h:335
@ MAX17616_IOUT_FAULT_NS_BIT1
Definition max17616.h:334
@ MAX17616_IOUT_FAULT_NS_BIT0
Definition max17616.h:333
@ MAX17616_IOUT_FAULT_OUT_OC_WARNING
Definition max17616.h:338
@ MAX17616_IOUT_FAULT_NS_BIT3
Definition max17616.h:336
@ MAX17616_IOUT_FAULT_OUT_OC_FAULT
Definition max17616.h:340
@ MAX17616_IOUT_FAULT_OUT_OC_UV_LO
Definition max17616.h:339
@ MAX17616_IOUT_FAULT_NS_BIT4
Definition max17616.h:337
int max17616_clear_faults(struct max17616_dev *dev)
Clear all asserted faults.
Definition max17616.c:473
max17616_current_limit_mode
Definition max17616.h:123
@ MAX17616_CLMODE_LATCH_OFF
Definition max17616.h:124
@ MAX17616_CLMODE_CONTINUOUS
Definition max17616.h:125
@ MAX17616_CLMODE_AUTO_RETRY
Definition max17616.h:126
int max17616_verify_pmbus_revision(struct max17616_dev *dev)
Verify PMBus revision.
Definition max17616.c:428
int max17616_identify_chip_variant(struct max17616_dev *dev)
Read device ID and identify chip variant.
Definition max17616.c:401
max17616_status_byte
Definition max17616.h:266
@ MAX17616_STATUS_BIT_CML
Definition max17616.h:268
@ MAX17616_STATUS_BIT_VIN_UV
Definition max17616.h:270
@ MAX17616_STATUS_BIT_GENERAL
Definition max17616.h:267
@ MAX17616_STATUS_BIT_OFF
Definition max17616.h:273
@ MAX17616_STATUS_BIT_IOUT_OC
Definition max17616.h:271
@ MAX17616_STATUS_BIT_BUSY
Definition max17616.h:274
@ MAX17616_STATUS_BIT_TEMPERATURE
Definition max17616.h:269
@ MAX17616_STATUS_BIT_VOUT_OV
Definition max17616.h:272
max17616_input_fault_bit
Definition max17616.h:321
@ MAX17616_INPUT_FAULT_VIN_OV_FAULT
Definition max17616.h:329
@ MAX17616_INPUT_FAULT_UNIT_OFF
Definition max17616.h:325
@ MAX17616_INPUT_FAULT_IIN_OC_WARNING
Definition max17616.h:323
@ MAX17616_INPUT_FAULT_PIN_OP_WARNING
Definition max17616.h:322
@ MAX17616_INPUT_FAULT_VIN_UV_FAULT
Definition max17616.h:326
@ MAX17616_INPUT_FAULT_VIN_OV_WARNING
Definition max17616.h:328
@ MAX17616_INPUT_FAULT_IIN_OC_FAULT
Definition max17616.h:324
@ MAX17616_INPUT_FAULT_VIN_UV_WARNING
Definition max17616.h:327
int max17616_get_overcurrent_timeout(struct max17616_dev *dev, enum max17616_overcurrent_timeout *timeout)
Get short-term overcurrent duration.
Definition max17616.c:752
int max17616_set_overcurrent_limit(struct max17616_dev *dev, enum max17616_overcurrent_limit limit)
Set the short-term overcurrent limit ratio.
Definition max17616.c:852
int max17616_read_status_iout(struct max17616_dev *dev, uint8_t *status_iout)
Read STATUS_IOUT register.
Definition max17616.c:287
max17616_istart_ratio
Definition max17616.h:131
@ MAX17616_ISTART_SIXTEENTH
Definition max17616.h:136
@ MAX17616_ISTART_EIGHTH
Definition max17616.h:135
@ MAX17616_ISTART_HALF
Definition max17616.h:133
@ MAX17616_ISTART_QUARTER
Definition max17616.h:134
@ MAX17616_ISTART_FULL
Definition max17616.h:132
max17616_cml_bit_fault_byte
Definition max17616.h:299
@ MAX17616_CML_FAULT_NS_BIT3
Definition max17616.h:303
@ MAX17616_CML_FAULT_CMD
Definition max17616.h:307
@ MAX17616_CML_FAULT_DATA
Definition max17616.h:306
@ MAX17616_CML_FAULT_PEC_FAIL
Definition max17616.h:305
@ MAX17616_CML_FAULT_MEM_ERROR
Definition max17616.h:304
@ MAX17616_CML_FAULT_NS_BIT0
Definition max17616.h:300
@ MAX17616_CML_FAULT_OTHER
Definition max17616.h:301
@ MAX17616_CML_FAULT_NS_BIT2
Definition max17616.h:302
int max17616_remove(struct max17616_dev *dev)
Free or remove device instance.
Definition max17616.c:1145
int max17616_get_operation_state(struct max17616_dev *dev, bool *enabled)
Get device operation state.
Definition max17616.c:605
int max17616_set_overcurrent_timeout(struct max17616_dev *dev, enum max17616_overcurrent_timeout timeout)
Set short-term overcurrent duration.
Definition max17616.c:792
int max17616_read_capability(struct max17616_dev *dev, uint8_t *capability)
Read device capability register.
Definition max17616.c:364
const char * max17616_get_fault_description(uint16_t group, uint8_t bit)
Get human-readable description for a specific fault.
Definition max17616.c:1242
int max17616_read_block_data(struct max17616_dev *dev, uint8_t cmd, uint8_t *data, size_t nbytes)
Perform a PMBus read block operation.
Definition max17616.c:177
max17616_fault_group
Definition max17616.h:368
@ MAX17616_FAULT_GRP_VIN_UV
Definition max17616.h:372
@ MAX17616_FAULT_GRP_IOUT_POUT
Definition max17616.h:376
@ MAX17616_FAULT_GRP_VOUT
Definition max17616.h:377
@ MAX17616_FAULT_GRP_VOUT_OV
Definition max17616.h:374
@ MAX17616_FAULT_GRP_ALL
Definition max17616.h:379
@ MAX17616_FAULT_GRP_NONE
Definition max17616.h:369
@ MAX17616_FAULT_GRP_TEMPERATURE
Definition max17616.h:371
@ MAX17616_FAULT_GRP_MFR_SPECIFIC
Definition max17616.h:378
@ MAX17616_FAULT_GRP_IOUT_OC
Definition max17616.h:373
@ MAX17616_FAULT_GRP_INPUT
Definition max17616.h:375
@ MAX17616_FAULT_GRP_CML
Definition max17616.h:370
int max17616_read_value(struct max17616_dev *dev, enum max17616_value_type value_type, int32_t *value_milliunit)
Read a specific value with automatic data conversion.
Definition max17616.c:513
int max17616_send_byte(struct max17616_dev *dev, uint8_t cmd)
Send a PMBus command to the device.
Definition max17616.c:100
max17616_mfr_specific_fault_bit
Definition max17616.h:354
@ MAX17616_MFR_FAULT_SOFT_START
Definition max17616.h:360
@ MAX17616_MFR_FAULT_IMON_PIN
Definition max17616.h:361
@ MAX17616_MFR_FAULT_NS_BIT1
Definition max17616.h:356
@ MAX17616_MFR_FAULT_NS_BIT0
Definition max17616.h:355
@ MAX17616_MFR_FAULT_SETI_PIN
Definition max17616.h:362
@ MAX17616_MFR_FAULT_NS_BIT4
Definition max17616.h:359
@ MAX17616_MFR_FAULT_OUTPUT_SHORT_CIRCUIT
Definition max17616.h:358
@ MAX17616_MFR_FAULT_REVERSE_CURRENT
Definition max17616.h:357
int max17616_read_status(struct max17616_dev *dev, struct max17616_status *status)
Read MAX17616 device status.
Definition max17616.c:974
max17616_status_word_byte_high
Definition max17616.h:277
@ MAX17616_STATUS_BIT_INPUT
Definition max17616.h:283
@ MAX17616_STATUS_BIT_POWER_GOOD
Definition max17616.h:281
@ MAX17616_STATUS_BIT_VOUT
Definition max17616.h:285
@ MAX17616_STATUS_BIT_OTHER
Definition max17616.h:279
@ MAX17616_STATUS_BIT_FANS
Definition max17616.h:280
@ MAX17616_STATUS_BIT_IOUT_POUT
Definition max17616.h:284
@ MAX17616_STATUS_BIT_MFR
Definition max17616.h:282
@ MAX17616_STATUS_BIT_STARTUP
Definition max17616.h:278
int max17616_read_status_byte(struct max17616_dev *dev, uint8_t *status_byte)
Read STATUS_BYTE register.
Definition max17616.c:257
int max17616_set_istart_ratio(struct max17616_dev *dev, enum max17616_istart_ratio ratio)
Set current start ratio.
Definition max17616.c:731
int max17616_get_current_limit_mode(struct max17616_dev *dev, enum max17616_current_limit_mode *clmode)
Get current limit mode.
Definition max17616.c:627
max17616_overcurrent_limit
Definition max17616.h:148
@ MAX17616_OC_LIMIT_1_50
Definition max17616.h:150
@ MAX17616_OC_LIMIT_2_00
Definition max17616.h:152
@ MAX17616_OC_LIMIT_1_75
Definition max17616.h:151
@ MAX17616_OC_LIMIT_1_25
Definition max17616.h:149
int max17616_read_word(struct max17616_dev *dev, uint8_t cmd, uint16_t *word)
Perform a raw PMBus read word operation.
Definition max17616.c:149
int max17616_read_status_input(struct max17616_dev *dev, uint8_t *status_input)
Read STATUS_INPUT register.
Definition max17616.c:302
int max17616_read_byte(struct max17616_dev *dev, uint8_t cmd, uint8_t *data)
Perform a raw PMBus read byte operation.
Definition max17616.c:119
max17616_value_type
Definition max17616.h:220
@ MAX17616_TEMP
Definition max17616.h:224
@ MAX17616_VIN
Definition max17616.h:221
@ MAX17616_POWER
Definition max17616.h:225
@ MAX17616_IOUT
Definition max17616.h:223
@ MAX17616_VOUT
Definition max17616.h:222
int max17616_read_status_cml(struct max17616_dev *dev, uint8_t *status_cml)
Read STATUS_CML register.
Definition max17616.c:333
int max17616_get_vout_uv_fault_limit_config(struct max17616_dev *dev, enum max17616_nominal_voltage *voltage, enum max17616_pgood_threshold *threshold)
Get VOUT UV fault limit configuration using enums.
Definition max17616.c:902
max17616_vout_fault_bit
Definition max17616.h:343
@ MAX17616_VOUT_FAULT_VOUT_OV_WARNING
Definition max17616.h:350
@ MAX17616_VOUT_FAULT_VOUT_MAX_WARNING
Definition max17616.h:347
@ MAX17616_VOUT_FAULT_VOUT_TRACKING_ERROR
Definition max17616.h:344
@ MAX17616_VOUT_FAULT_TOFF_MAX_WARNING
Definition max17616.h:345
@ MAX17616_VOUT_FAULT_VOUT_UV_WARNING
Definition max17616.h:349
@ MAX17616_VOUT_FAULT_VOUT_UV_FAULT
Definition max17616.h:348
@ MAX17616_VOUT_FAULT_TON_MAX_FAULT
Definition max17616.h:346
@ MAX17616_VOUT_FAULT_VOUT_OV_FAULT
Definition max17616.h:351
int max17616_get_overcurrent_limit(struct max17616_dev *dev, enum max17616_overcurrent_limit *istlim)
Get the short-term overcurrent limit ratio.
Definition max17616.c:812
max17616_chip_id
Definition max17616.h:116
@ ID_MAX17616
Definition max17616.h:117
@ ID_MAX17616A
Definition max17616.h:118
@ ID_MAX17616_CHIP_COUNT
Definition max17616.h:119
int max17616_verify_manufacturer_id(struct max17616_dev *dev)
Read and verify manufacturer ID.
Definition max17616.c:378
int max17616_init(struct max17616_dev **dev, struct max17616_init_param *init_param)
Initialize the device structure.
Definition max17616.c:1095
int max17616_read_status_mfr_specific(struct max17616_dev *dev, uint8_t *status_mfr)
Read STATUS_MFR_SPECIFIC register.
Definition max17616.c:348
Header file of I2C Interface.
Header file of utility functions.
Definition max17616.h:246
uint8_t mfr_rev_size
Definition max17616.h:250
struct max17616_chip_specific_info specific_info[ID_MAX17616_CHIP_COUNT]
Definition max17616.h:252
uint8_t mfr_id_size
Definition max17616.h:248
char * mfr_rev
Definition max17616.h:249
char * mfr_id
Definition max17616.h:247
uint8_t pmbus_rev
Definition max17616.h:251
Definition max17616.h:241
uint8_t ic_dev_id_size
Definition max17616.h:243
char * ic_dev_id
Definition max17616.h:242
Definition max17616.h:255
struct max17616_chip_info * chip_info
Definition max17616.h:258
enum max17616_chip_id chip_id
Definition max17616.h:257
struct no_os_i2c_desc * i2c_desc
Definition max17616.h:256
Definition max17616.h:383
uint16_t group
Definition max17616.h:384
const char * description
Definition max17616.h:386
bool is_supported
Definition max17616.h:387
uint8_t bit
Definition max17616.h:385
Definition max17616.h:261
struct no_os_i2c_init_param * i2c_init
Definition max17616.h:262
enum max17616_chip_id chip_id
Definition max17616.h:263
Definition max17616.h:229
uint8_t iout
Definition max17616.h:233
uint8_t other
Definition max17616.h:237
uint8_t temperature
Definition max17616.h:235
uint8_t cml
Definition max17616.h:236
uint8_t vout
Definition max17616.h:232
uint16_t word
Definition max17616.h:230
uint8_t byte
Definition max17616.h:231
uint8_t input
Definition max17616.h:234
uint8_t mfr_specific
Definition max17616.h:238
Telemetry data structure with milliunits.
Definition max17616.h:394
int32_t vin_mv
Definition max17616.h:395
int32_t temp1_mc
Definition max17616.h:400
int32_t vout_mv
Definition max17616.h:396
int32_t pout_mw
Definition max17616.h:399
uint8_t valid_mask
Definition max17616.h:401
int32_t iout_ma
Definition max17616.h:397
int32_t pin_mw
Definition max17616.h:398
Structure holding I2C address descriptor.
Definition no_os_i2c.h:89
Structure holding the parameters for I2C initialization.
Definition no_os_i2c.h:52