44#define LTM4700_PAGE 0x00
45#define LTM4700_OPERATION 0x01
46#define LTM4700_ON_OFF_CONFIG 0x02
47#define LTM4700_CLEAR_FAULTS 0x03
48#define LTM4700_PAGE_PLUS_WRITE 0x05
49#define LTM4700_PAGE_PLUS_READ 0x06
51#define LTM4700_WRITE_PROTECT 0x10
52#define LTM4700_STORE_USER_ALL 0x15
53#define LTM4700_RESTORE_USER_ALL 0x16
55#define LTM4700_CAPABILITY 0x19
56#define LTM4700_SMBALERT_MASK 0x1B
58#define LTM4700_VOUT_MODE 0x20
59#define LTM4700_VOUT_COMMAND 0x21
60#define LTM4700_VOUT_MAX 0x24
61#define LTM4700_VOUT_MARGIN_HIGH 0x25
62#define LTM4700_VOUT_MARGIN_LOW 0x26
64#define LTM4700_VOUT_OV_FAULT_LIMIT 0x40
65#define LTM4700_VOUT_OV_FAULT_RESPONSE 0x41
66#define LTM4700_VOUT_OV_WARN_LIMIT 0x42
67#define LTM4700_VOUT_UV_WARN_LIMIT 0x43
68#define LTM4700_VOUT_UV_FAULT_LIMIT 0x44
69#define LTM4700_VOUT_UV_FAULT_RESPONSE 0x45
70#define LTM4700_IOUT_OC_FAULT_LIMIT 0x46
71#define LTM4700_IOUT_OC_FAULT_RESPONSE 0x47
72#define LTM4700_IOUT_OC_WARN_LIMIT 0x4A
74#define LTM4700_TON_DELAY 0x60
75#define LTM4700_TOFF_DELAY 0x64
77#define LTM4700_STATUS_BYTE 0x78
78#define LTM4700_STATUS_WORD 0x79
79#define LTM4700_STATUS_VOUT 0x7A
80#define LTM4700_STATUS_IOUT 0x7B
81#define LTM4700_STATUS_INPUT 0x7C
82#define LTM4700_STATUS_TEMPERATURE 0x7D
83#define LTM4700_STATUS_CML 0x7E
84#define LTM4700_STATUS_MFR_SPECIFIC 0x80
86#define LTM4700_READ_VIN 0x88
87#define LTM4700_READ_IIN 0x89
88#define LTM4700_READ_VOUT 0x8B
89#define LTM4700_READ_IOUT 0x8C
90#define LTM4700_READ_TEMPERATURE_1 0x8D
91#define LTM4700_READ_TEMPERATURE_2 0x8E
92#define LTM4700_READ_FREQUENCY 0x95
93#define LTM4700_READ_POUT 0x96
94#define LTM4700_READ_PIN 0x97
96#define LTM4700_MFR_ID 0x99
97#define LTM4700_MFR_MODEL 0x9A
98#define LTM4700_MFR_VOUT_MAX 0xA5
99#define LTM4700_MFR_PIN_ACCURACY 0xAC
102#define LTM4700_MFR_EE_UNLOCK 0xBD
103#define LTM4700_MFR_EE_ERASE 0xBE
104#define LTM4700_MFR_EE_DATA 0xBF
106#define LTM4700_MFR_CHAN_CONFIG 0xD0
107#define LTM4700_MFR_CONFIG_ALL 0xD1
108#define LTM4700_MFR_FAULT_PROPAGATE 0xD2
109#define LTM4700_MFR_PWM_COMP 0xD3
110#define LTM4700_MFR_PWM_MODE 0xD4
111#define LTM4700_MFR_FAULT_RESPONSE 0xD5
112#define LTM4700_MFR_OT_FAULT_RESPONSE 0xD6
113#define LTM4700_MFR_IOUT_PEAK 0xD7
114#define LTM4700_MFR_ADC_CONTROL 0xD8
115#define LTM4700_MFR_RETRY_DELAY 0xDB
116#define LTM4700_MFR_RESTART_DELAY 0xDC
117#define LTM4700_MFR_VOUT_PEAK 0xDD
118#define LTM4700_MFR_VIN_PEAK 0xDE
119#define LTM4700_MFR_TEMPERATURE_1_PEAK 0xDF
120#define LTM4700_MFR_READ_IIN_PEAK 0xE1
121#define LTM4700_MFR_CLEAR_PEAKS 0xE3
122#define LTM4700_MFR_READ_ICHIP 0xE4
123#define LTM4700_MFR_PADS 0xE5
124#define LTM4700_MFR_ADDRESS 0xE6
125#define LTM4700_MFR_SPECIAL_ID 0xE7
126#define LTM4700_MFR_IIN_CAL_GAIN 0xE8
127#define LTM4700_MFR_FAULT_LOG_STORE 0xEA
128#define LTM4700_MFR_FAULT_LOG_CLEAR 0xEC
129#define LTM4700_MFR_FAULT_LOG 0xEE
130#define LTM4700_MFR_COMMON 0xEF
131#define LTM4700_MFR_COMPARE_USER_ALL 0xF0
132#define LTM4700_MFR_TEMPERATURE_2_PEAK 0xF4
133#define LTM4700_MFR_PWM_CONFIG 0xF5
134#define LTM4700_MFR_IOUT_CAL_GAIN_TC 0xF6
135#define LTM4700_MFR_RVIN 0xF7
136#define LTM4700_MFR_TEMP_1_GAIN 0xF8
137#define LTM4700_MFR_TEMP_1_OFFSET 0xF9
138#define LTM4700_MFR_RAIL_ADDRESS 0xFA
139#define LTM4700_MFR_REAL_TIME 0xFB
140#define LTM4700_MFR_RESET 0xFD
143#define LTM4700_CRC_POLYNOMIAL 0x7
144#define LTM4700_VOUT_MODE_VAL_MSK NO_OS_GENMASK(4,0)
147#define LTM4700_LIN11_MANTISSA_MAX 1023L
148#define LTM4700_LIN11_MANTISSA_MIN (-1024L)
149#define LTM4700_LIN11_EXPONENT_MAX 15
150#define LTM4700_LIN11_EXPONENT_MIN (-15)
151#define LTM4700_LIN11_MANTISSA_MSK NO_OS_GENMASK(10,0)
152#define LTM4700_LIN11_EXPONENT_MSK NO_OS_GENMASK(15,11)
153#define LTM4700_LIN11_EXPONENT(x) ((int16_t)(x) >> 11)
154#define LTM4700_LIN11_MANTISSA(x) (((int16_t)((x & LTM4700_LIN11_MANTISSA_MSK) << 5)) >> 5)
155#define LTM4700_LIN16_EXPONENT (-12)
158#define LTM4700_CHAN_0 0x0
159#define LTM4700_CHAN_1 0x1
160#define LTM4700_CHAN_ALL 0xFF
163#define LTM4700_STATUS_BYTE_TYPE_MSK NO_OS_BIT(0)
164#define LTM4700_STATUS_VOUT_TYPE_MSK NO_OS_BIT(1)
165#define LTM4700_STATUS_IOUT_TYPE_MSK NO_OS_BIT(2)
166#define LTM4700_STATUS_INPUT_TYPE_MSK NO_OS_BIT(3)
167#define LTM4700_STATUS_TEMP_TYPE_MSK NO_OS_BIT(4)
168#define LTM4700_STATUS_CML_TYPE_MSK NO_OS_BIT(5)
169#define LTM4700_STATUS_MFR_SPECIFIC_TYPE_MSK NO_OS_BIT(6)
170#define LTM4700_STATUS_WORD_TYPE_MSK NO_OS_BIT(7)
171#define LTM4700_STATUS_ALL_TYPE_MSK 0xFF
174#define LTM4700_ID_MSK 0xFFF0
175#define LTM4700_SPECIAL_ID_VALUE 0x4130
176#define LTM4700_MFR_ID_VALUE "ADI"
177#define LTM4700_MFR_ID_SIZE 3
178#define LTM4700_MFR_MODEL_VALUE "LTM4700"
179#define LTM4700_MFR_MODEL_SIZE 7
306 uint8_t cmd, uint8_t *data);
317 uint8_t cmd, uint8_t value);
328 uint8_t cmd, uint16_t *word);
339 uint8_t cmd, uint16_t word);
350 uint8_t cmd,
int *data);
361 uint8_t cmd,
int data);
373 uint8_t *data,
size_t nbytes);
410 int vout_command,
int vout_max);
421 int margin_low,
int margin_high);
struct ad7616_init_param init_param
Definition ad7616_sdz.c:109
#define LTM4700_STATUS_TEMP_TYPE_MSK
Definition ltm4700.h:167
#define LTM4700_MFR_IOUT_PEAK
Definition ltm4700.h:113
ltm4700_status_type
Definition ltm4700.h:205
@ LTM4700_STATUS_TEMP_TYPE
Definition ltm4700.h:211
@ LTM4700_STATUS_MFR_SPECIFIC_TYPE
Definition ltm4700.h:213
@ LTM4700_STATUS_VOUT_TYPE
Definition ltm4700.h:208
@ LTM4700_STATUS_BYTE_TYPE
Definition ltm4700.h:207
@ LTM4700_STATUS_ALL_TYPE
Definition ltm4700.h:206
@ LTM4700_STATUS_WORD_TYPE
Definition ltm4700.h:214
@ LTM4700_STATUS_INPUT_TYPE
Definition ltm4700.h:210
@ LTM4700_STATUS_CML_TYPE
Definition ltm4700.h:212
@ LTM4700_STATUS_IOUT_TYPE
Definition ltm4700.h:209
int ltm4700_vout_value(struct ltm4700_dev *dev, uint8_t channel, int vout_command, int vout_max)
Set VOUT parameters: VOUT_COMMAND and VOUT_MAX.
Definition ltm4700.c:876
int ltm4700_read_value(struct ltm4700_dev *dev, uint8_t channel, enum ltm4700_value_type value_type, int *value)
Read specific value type (voltage, current, power, temperature)
Definition ltm4700.c:782
#define LTM4700_READ_VIN
Definition ltm4700.h:86
int ltm4700_write_word(struct ltm4700_dev *dev, int page, uint8_t cmd, uint16_t word)
Perform a PMBus write_word operation.
Definition ltm4700.c:644
#define LTM4700_RESTORE_USER_ALL
Definition ltm4700.h:53
#define LTM4700_STORE_USER_ALL
Definition ltm4700.h:52
int ltm4700_nvm_cmd(struct ltm4700_dev *dev, enum ltm4700_nvm_cmd_type cmd)
Execute NVM/EEPROM user commands.
Definition ltm4700.c:971
#define LTM4700_READ_IIN
Definition ltm4700.h:87
#define LTM4700_STATUS_ALL_TYPE_MSK
Definition ltm4700.h:171
int ltm4700_read_word(struct ltm4700_dev *dev, int page, uint8_t cmd, uint16_t *word)
Perform a PMBus read_word operation.
Definition ltm4700.c:607
ltm4700_timing_type
Definition ltm4700.h:217
@ LTM4700_RETRY_DELAY
Definition ltm4700.h:220
@ LTM4700_TOFF_DELAY_TYPE
Definition ltm4700.h:219
@ LTM4700_RESTART_DELAY
Definition ltm4700.h:221
@ LTM4700_TON_DELAY_TYPE
Definition ltm4700.h:218
int ltm4700_write_word_data(struct ltm4700_dev *dev, int page, uint8_t cmd, int data)
Perform conversion then perform a PMBus write_word operation.
Definition ltm4700.c:714
#define LTM4700_MFR_COMPARE_USER_ALL
Definition ltm4700.h:131
int ltm4700_set_operation(struct ltm4700_dev *dev, uint8_t channel, enum ltm4700_operation_type operation)
Set operation mode for specified channel.
Definition ltm4700.c:952
#define LTM4700_READ_TEMPERATURE_2
Definition ltm4700.h:91
int ltm4700_verify_manufacturer_id(struct ltm4700_dev *dev)
Verify manufacturer ID.
Definition ltm4700.c:249
int ltm4700_send_byte(struct ltm4700_dev *dev, int page, uint8_t cmd)
Send a PMBus command to the device.
Definition ltm4700.c:527
#define LTM4700_STATUS_MFR_SPECIFIC_TYPE_MSK
Definition ltm4700.h:169
#define LTM4700_READ_VOUT
Definition ltm4700.h:88
ltm4700_nvm_cmd_type
Definition ltm4700.h:224
@ LTM4700_COMPARE_USER
Definition ltm4700.h:227
@ LTM4700_RESTORE_USER
Definition ltm4700.h:226
@ LTM4700_STORE_USER
Definition ltm4700.h:225
#define LTM4700_READ_TEMPERATURE_1
Definition ltm4700.h:90
int ltm4700_set_page(struct ltm4700_dev *dev, int page)
Set PMBus page and phase.
Definition ltm4700.c:494
#define LTM4700_STATUS_INPUT_TYPE_MSK
Definition ltm4700.h:166
#define LTM4700_READ_POUT
Definition ltm4700.h:93
int ltm4700_clear_peaks(struct ltm4700_dev *dev)
Clear all peak value tracking registers.
Definition ltm4700.c:999
int ltm4700_vout_margin(struct ltm4700_dev *dev, uint8_t channel, int margin_low, int margin_high)
Set VOUT margins for overvoltage/undervoltage protection.
Definition ltm4700.c:903
#define LTM4700_TON_DELAY
Definition ltm4700.h:74
int ltm4700_remove(struct ltm4700_dev *dev)
Free or remove device instance.
Definition ltm4700.c:444
#define LTM4700_MFR_TEMPERATURE_1_PEAK
Definition ltm4700.h:119
int ltm4700_software_reset(struct ltm4700_dev *dev)
Perform software reset of the device.
Definition ltm4700.c:985
#define LTM4700_STATUS_VOUT_TYPE_MSK
Definition ltm4700.h:164
#define LTM4700_READ_IOUT
Definition ltm4700.h:89
#define LTM4700_STATUS_CML_TYPE_MSK
Definition ltm4700.h:168
ltm4700_value_type
Definition ltm4700.h:189
@ LTM4700_TEMP_PEAK
Definition ltm4700.h:202
@ LTM4700_TEMP_IC
Definition ltm4700.h:195
@ LTM4700_VIN_PEAK
Definition ltm4700.h:201
@ LTM4700_VOUT_PEAK
Definition ltm4700.h:200
@ LTM4700_VOUT
Definition ltm4700.h:192
@ LTM4700_TEMP_EXT
Definition ltm4700.h:194
@ LTM4700_POUT
Definition ltm4700.h:197
@ LTM4700_IOUT_PEAK
Definition ltm4700.h:199
@ LTM4700_IIN
Definition ltm4700.h:191
@ LTM4700_PIN
Definition ltm4700.h:198
@ LTM4700_VIN
Definition ltm4700.h:190
@ LTM4700_FREQ
Definition ltm4700.h:196
@ LTM4700_IOUT
Definition ltm4700.h:193
#define LTM4700_STATUS_BYTE_TYPE_MSK
Definition ltm4700.h:163
#define LTM4700_STATUS_IOUT_TYPE_MSK
Definition ltm4700.h:165
#define LTM4700_TOFF_DELAY
Definition ltm4700.h:75
#define LTM4700_MFR_VOUT_PEAK
Definition ltm4700.h:117
#define LTM4700_MFR_VIN_PEAK
Definition ltm4700.h:118
#define LTM4700_READ_PIN
Definition ltm4700.h:94
int ltm4700_verify_manufacturer_model(struct ltm4700_dev *dev)
Verify manufacturer model.
Definition ltm4700.c:276
#define LTM4700_MFR_RESTART_DELAY
Definition ltm4700.h:116
int ltm4700_write_byte(struct ltm4700_dev *dev, int page, uint8_t cmd, uint8_t value)
Perform a PMBus write_byte operation.
Definition ltm4700.c:581
int ltm4700_read_word_data(struct ltm4700_dev *dev, int page, uint8_t cmd, int *data)
Perform a PMBus read_word operation then perform conversion.
Definition ltm4700.c:670
#define LTM4700_STATUS_WORD_TYPE_MSK
Definition ltm4700.h:170
int ltm4700_read_status(struct ltm4700_dev *dev, uint8_t channel, enum ltm4700_status_type status_type, struct ltm4700_status *status)
Read status information from device.
Definition ltm4700.c:803
#define LTM4700_MFR_RETRY_DELAY
Definition ltm4700.h:115
ltm4700_operation_type
Definition ltm4700.h:181
@ LTM4700_OPERATION_MARGIN_HIGH
Definition ltm4700.h:185
@ LTM4700_OPERATION_OFF
Definition ltm4700.h:182
@ LTM4700_OPERATION_SEQ_OFF
Definition ltm4700.h:186
@ LTM4700_OPERATION_MARGIN_LOW
Definition ltm4700.h:184
@ LTM4700_OPERATION_ON
Definition ltm4700.h:183
int ltm4700_set_timing(struct ltm4700_dev *dev, uint8_t channel, enum ltm4700_timing_type timing_type, int time)
Set timing values in microseconds.
Definition ltm4700.c:932
int ltm4700_read_byte(struct ltm4700_dev *dev, int page, uint8_t cmd, uint8_t *data)
Perform a PMBus read_byte operation.
Definition ltm4700.c:550
#define LTM4700_READ_FREQUENCY
Definition ltm4700.h:92
int ltm4700_read_block_data(struct ltm4700_dev *dev, int page, uint8_t cmd, uint8_t *data, size_t nbytes)
Read a block of bytes from device.
Definition ltm4700.c:752
int ltm4700_init(struct ltm4700_dev **device, struct ltm4700_init_param *init_param)
Initialize the LTM4700 device structure.
Definition ltm4700.c:304
Header file of GPIO Interface.
Header file of I2C Interface.
Header file of utility functions.
Definition ad9361_util.h:63
struct no_os_gpio_desc ** pgood_descs
Definition ltm4700.h:233
struct no_os_gpio_desc ** fault_descs
Definition ltm4700.h:235
bool crc_en
Definition ltm4700.h:239
uint8_t num_channels
Definition ltm4700.h:240
int page
Definition ltm4700.h:237
struct no_os_gpio_desc ** run_descs
Definition ltm4700.h:234
int lin16_exp
Definition ltm4700.h:238
struct no_os_i2c_desc * i2c_desc
Definition ltm4700.h:231
struct no_os_gpio_desc * alert_desc
Definition ltm4700.h:232
struct no_os_gpio_init_param ** run_params
Definition ltm4700.h:247
bool crc_en
Definition ltm4700.h:250
struct no_os_i2c_init_param * i2c_init
Definition ltm4700.h:244
struct no_os_gpio_init_param * alert_param
Definition ltm4700.h:245
struct no_os_gpio_init_param ** fault_params
Definition ltm4700.h:248
struct no_os_gpio_init_param ** pgood_params
Definition ltm4700.h:246
uint16_t word
Definition ltm4700.h:254
uint8_t cml
Definition ltm4700.h:260
uint8_t input
Definition ltm4700.h:258
uint8_t temp
Definition ltm4700.h:259
uint8_t mfr_specific
Definition ltm4700.h:261
uint8_t iout
Definition ltm4700.h:257
uint8_t vout
Definition ltm4700.h:256
uint8_t byte
Definition ltm4700.h:255
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