41#define LT3074_SEND_BYTE 0
45#define LT3074_R0B (LT3074_SEND_BYTE << 8)
46#define LT3074_R1B (LT3074_BYTE << 8)
47#define LT3074_R2B (LT3074_WORD << 8)
48#define LT3074_R6B (6 << 8)
50#define LT3074_SIZE_MSK NO_OS_GENMASK(15,8)
51#define LT3074_CMD(x) ((uint8_t)(x & 0xFF))
52#define LT3074_ADDR_SIZE(x) no_os_field_get(LT3074_SIZE_MSK, x)
55#define LT3074_PAGE (LT3074_R1B | 0x00)
56#define LT3074_OPERATION (LT3074_R1B | 0x01)
57#define LT3074_ON_OFF_CONFIG (LT3074_R1B | 0x02)
58#define LT3074_CLEAR_FAULTS (LT3074_R0B | 0x03)
59#define LT3074_WRITE_PROTECT (LT3074_R1B | 0x10)
60#define LT3074_CAPABILITY (LT3074_R1B | 0x19)
61#define LT3074_VOUT_MODE (LT3074_R1B | 0x20)
62#define LT3074_VOUT_OV_WARN_LIMIT (LT3074_R2B | 0x42)
63#define LT3074_VOUT_UV_WARN_LIMIT (LT3074_R2B | 0x43)
64#define LT3074_IOUT_OC_FAULT_LIMIT (LT3074_R2B | 0x46)
65#define LT3074_IOUT_OC_FAULT_RESPONSE (LT3074_R1B | 0x47)
66#define LT3074_OT_WARN_LIMIT (LT3074_R2B | 0x51)
67#define LT3074_VIN_OV_WARN_LIMIT (LT3074_R2B | 0x57)
68#define LT3074_VIN_UV_WARN_LIMIT (LT3074_R2B | 0x58)
69#define LT3074_STATUS_BYTE (LT3074_R1B | 0x78)
70#define LT3074_STATUS_WORD (LT3074_R2B | 0x79)
71#define LT3074_STATUS_VOUT (LT3074_R1B | 0x7A)
72#define LT3074_STATUS_IOUT (LT3074_R1B | 0x7B)
73#define LT3074_STATUS_INPUT (LT3074_R1B | 0x7C)
74#define LT3074_STATUS_TEMPERATURE (LT3074_R1B | 0x7D)
75#define LT3074_STATUS_CML (LT3074_R1B | 0x7E)
76#define LT3074_STATUS_MFR_SPECIFIC (LT3074_R1B | 0x80)
77#define LT3074_READ_VIN (LT3074_R2B | 0x88)
78#define LT3074_READ_VOUT (LT3074_R2B | 0x8B)
79#define LT3074_READ_IOUT (LT3074_R2B | 0x8C)
80#define LT3074_READ_TEMPERATURE_1 (LT3074_R2B | 0x8D)
81#define LT3074_REVISION (LT3074_R1B | 0x98)
82#define LT3074_IC_DEVICE_ID (LT3074_R6B | 0xAD)
83#define LT3074_IC_DEVICE_REV (LT3074_R2B | 0xAE)
86#define LT3074_MFR_MARGIN (LT3074_R1B | 0xC4)
87#define LT3074_MFR_READ_VBIAS (LT3074_R2B | 0xC6)
88#define LT3074_MFR_BIAS_OV_WARN_LIMIT (LT3074_R2B | 0xC7)
89#define LT3074_MFR_BIAS_UV_WARN_LIMIT (LT3074_R2B | 0xC8)
90#define LT3074_MFR_IOUT_MIN_WARN_LIMIT (LT3074_R2B | 0xC9)
91#define LT3074_MFR_SPECIAL_ID (LT3074_R2B | 0xE7)
92#define LT3074_MFR_DEFAULT_CONFIG (LT3074_R1B | 0xF5)
93#define LT3074_MFR_RAIL_ADDRESS (LT3074_R1B | 0xFA)
94#define LT3074_MFR_RESET (LT3074_R0B | 0xFD)
97#define LT3074_CRC_POLYNOMIAL 0x7
98#define LT3074_MARGIN_HIGH_MSK 0xF0
99#define LT3074_MARGIN_LOW_MSK 0x0F
100#define LT3074_OPERATION_ACCESS_MSK (NO_OS_GENMASK(5,4) | NO_OS_BIT(7))
101#define LT3074_SPECIAL_ID_VALUE 0x1C1D
104#define LT3074_STATUS_BYTE_TYPE_MSK 0x01
105#define LT3074_STATUS_VOUT_TYPE_MSK 0x02
106#define LT3074_STATUS_IOUT_TYPE_MSK 0x04
107#define LT3074_STATUS_INPUT_TYPE_MSK 0x08
108#define LT3074_STATUS_TEMP_TYPE_MSK 0x10
109#define LT3074_STATUS_CML_TYPE_MSK 0x20
110#define LT3074_STATUS_MFR_SPECIFIC_TYPE_MSK 0x40
111#define LT3074_STATUS_WORD_TYPE_MSK 0x80
112#define LT3074_STATUS_ALL_TYPE_MSK 0xFF
225 uint8_t *data,
size_t nbytes);
struct ad7616_init_param init_param
Definition ad7616_sdz.c:107
lt3074_value_type
Definition lt3074.h:121
@ LT3074_VIN
Definition lt3074.h:122
@ LT3074_TEMP
Definition lt3074.h:125
@ LT3074_IOUT
Definition lt3074.h:124
@ LT3074_VOUT
Definition lt3074.h:123
@ LT3074_VBIAS
Definition lt3074.h:126
#define LT3074_READ_VOUT
Definition lt3074.h:78
int lt3074_set_operation(struct lt3074_dev *dev, enum lt3074_operation_type operation)
Set operation.
Definition lt3074.c:805
#define LT3074_STATUS_CML_TYPE_MSK
Definition lt3074.h:109
int lt3074_reg_write(struct lt3074_dev *dev, uint32_t reg, uint32_t val)
Generic register write wrapper.
Definition lt3074.c:655
#define LT3074_STATUS_BYTE_TYPE_MSK
Definition lt3074.h:104
int lt3074_clear_faults(struct lt3074_dev *dev)
Clear status registers.
Definition lt3074.c:827
int lt3074_read_status(struct lt3074_dev *dev, enum lt3074_status_type status_type, struct lt3074_status *status)
Read statuses.
Definition lt3074.c:700
#define LT3074_VIN_UV_WARN_LIMIT
Definition lt3074.h:68
lt3074_limit_type
Definition lt3074.h:129
@ LT3074_VOUT_OV_WARN_LIMIT_TYPE
Definition lt3074.h:130
@ LT3074_VBIAS_OV_WARN_LIMIT_TYPE
Definition lt3074.h:136
@ LT3074_IOUT_MIN_WARN_LIMIT_TYPE
Definition lt3074.h:138
@ LT3074_OT_WARN_LIMIT_TYPE
Definition lt3074.h:133
@ LT3074_IOUT_OC_FAULT_LIMIT_TYPE
Definition lt3074.h:132
@ LT3074_VIN_UV_WARN_LIMIT_TYPE
Definition lt3074.h:135
@ LT3074_VOUT_UV_WARN_LIMIT_TYPE
Definition lt3074.h:131
@ LT3074_VBIAS_UV_WARN_LIMIT_TYPE
Definition lt3074.h:137
@ LT3074_VIN_OV_WARN_LIMIT_TYPE
Definition lt3074.h:134
int lt3074_write_word(struct lt3074_dev *dev, uint32_t cmd, uint16_t word)
Perform a raw PMBus write word operation.
Definition lt3074.c:503
#define LT3074_STATUS_MFR_SPECIFIC_TYPE_MSK
Definition lt3074.h:110
#define LT3074_VOUT_OV_WARN_LIMIT
Definition lt3074.h:62
int lt3074_read_value(struct lt3074_dev *dev, enum lt3074_value_type value_type, int *value)
Read a value.
Definition lt3074.c:680
int lt3074_read_block_data(struct lt3074_dev *dev, uint32_t cmd, uint8_t *data, size_t nbytes)
Perform a PMBus read block operation.
Definition lt3074.c:565
int lt3074_set_enable_pin(struct lt3074_dev *dev, bool state)
Enable/Disable the device using the EN pin.
Definition lt3074.c:840
int lt3074_send_byte(struct lt3074_dev *dev, uint32_t cmd)
Send a PMBus command to the device.
Definition lt3074.c:401
#define LT3074_MFR_BIAS_UV_WARN_LIMIT
Definition lt3074.h:89
int lt3074_write_word_data(struct lt3074_dev *dev, uint32_t cmd, int data)
Converts value to register data and do PMBus write word operation.
Definition lt3074.c:544
#define LT3074_VIN_OV_WARN_LIMIT
Definition lt3074.h:67
#define LT3074_MFR_READ_VBIAS
Definition lt3074.h:87
int lt3074_read_byte(struct lt3074_dev *dev, uint32_t cmd, uint8_t *data)
Perform a raw PMBus read byte operation.
Definition lt3074.c:415
int lt3074_read_word(struct lt3074_dev *dev, uint32_t cmd, uint16_t *word)
Perform a raw PMBus read word operation.
Definition lt3074.c:468
int lt3074_read_word_data(struct lt3074_dev *dev, uint32_t cmd, int *data)
Perform a PMBus read word operation and converts to actual value.
Definition lt3074.c:524
#define LT3074_MFR_IOUT_MIN_WARN_LIMIT
Definition lt3074.h:90
int lt3074_software_reset(struct lt3074_dev *dev)
Perform a device software reset.
Definition lt3074.c:851
#define LT3074_MFR_BIAS_OV_WARN_LIMIT
Definition lt3074.h:88
lt3074_status_type
Definition lt3074.h:141
@ LT3074_STATUS_IOUT_TYPE
Definition lt3074.h:144
@ LT3074_STATUS_INPUT_TYPE
Definition lt3074.h:145
@ LT3074_STATUS_VOUT_TYPE
Definition lt3074.h:143
@ LT3074_STATUS_BYTE_TYPE
Definition lt3074.h:142
@ LT3074_STATUS_MFR_SPECIFIC_TYPE
Definition lt3074.h:148
@ LT3074_STATUS_TEMP_TYPE
Definition lt3074.h:146
@ LT3074_STATUS_CML_TYPE
Definition lt3074.h:147
@ LT3074_STATUS_ALL_TYPE
Definition lt3074.h:150
@ LT3074_STATUS_WORD_TYPE
Definition lt3074.h:149
#define LT3074_READ_TEMPERATURE_1
Definition lt3074.h:80
int lt3074_remove(struct lt3074_dev *dev)
Free or remove device instance.
Definition lt3074.c:369
int lt3074_set_limit(struct lt3074_dev *dev, enum lt3074_limit_type limit, int limit_val)
Sets the limit value for a specific fault/warning limits.
Definition lt3074.c:788
lt3074_operation_type
Definition lt3074.h:114
@ LT3074_OPERATION_MARGIN_LOW
Definition lt3074.h:118
@ LT3074_OPERATION_ON
Definition lt3074.h:116
@ LT3074_OPERATION_OFF
Definition lt3074.h:115
@ LT3074_OPERATION_MARGIN_HIGH
Definition lt3074.h:117
int lt3074_write_byte(struct lt3074_dev *dev, uint32_t cmd, uint8_t value)
Perform a raw PMBus write byte operation.
Definition lt3074.c:447
#define LT3074_STATUS_IOUT_TYPE_MSK
Definition lt3074.h:106
#define LT3074_READ_VIN
Definition lt3074.h:77
#define LT3074_READ_IOUT
Definition lt3074.h:79
int lt3074_reg_read(struct lt3074_dev *dev, uint32_t reg, uint32_t *data)
Generic register read wrapper.
Definition lt3074.c:611
#define LT3074_STATUS_INPUT_TYPE_MSK
Definition lt3074.h:107
#define LT3074_STATUS_TEMP_TYPE_MSK
Definition lt3074.h:108
#define LT3074_IOUT_OC_FAULT_LIMIT
Definition lt3074.h:64
#define LT3074_STATUS_VOUT_TYPE_MSK
Definition lt3074.h:105
#define LT3074_OT_WARN_LIMIT
Definition lt3074.h:66
#define LT3074_STATUS_WORD_TYPE_MSK
Definition lt3074.h:111
int lt3074_init(struct lt3074_dev **dev, struct lt3074_init_param *init_param)
Initialize the device structure.
Definition lt3074.c:271
lt3074_margin
Definition lt3074.h:153
@ LT3074_MARGIN_PERCENTAGE_25
Definition lt3074.h:161
@ LT3074_MARGIN_PERCENTAGE_3
Definition lt3074.h:156
@ LT3074_MARGIN_PERCENTAGE_1
Definition lt3074.h:155
@ LT3074_MARGIN_PERCENTAGE_20
Definition lt3074.h:160
@ LT3074_MARGIN_PERCENTAGE_30
Definition lt3074.h:162
@ LT3074_MARGIN_PERCENTAGE_10
Definition lt3074.h:158
@ LT3074_MARGIN_PERCENTAGE_0
Definition lt3074.h:154
@ LT3074_MARGIN_PERCENTAGE_5
Definition lt3074.h:157
@ LT3074_MARGIN_PERCENTAGE_15
Definition lt3074.h:159
#define LT3074_VOUT_UV_WARN_LIMIT
Definition lt3074.h:63
int lt3074_vout_margin(struct lt3074_dev *dev, enum lt3074_margin margin_high, enum lt3074_margin margin_low)
Set output voltage margin.
Definition lt3074.c:769
#define LT3074_STATUS_ALL_TYPE_MSK
Definition lt3074.h:112
Header file of I2C Interface.
Header file of utility functions.
struct no_os_i2c_desc * i2c_desc
Definition lt3074.h:166
bool crc_en
Definition lt3074.h:172
struct no_os_gpio_desc * alert_desc
Definition lt3074.h:169
struct no_os_gpio_desc * en_desc
Definition lt3074.h:168
int lin16_exp
Definition lt3074.h:171
struct no_os_gpio_desc * pg_desc
Definition lt3074.h:167
struct no_os_gpio_init_param * alert_param
Definition lt3074.h:179
struct no_os_gpio_init_param * pg_param
Definition lt3074.h:177
struct no_os_i2c_init_param * i2c_init
Definition lt3074.h:176
struct no_os_gpio_init_param * en_param
Definition lt3074.h:178
bool crc_en
Definition lt3074.h:181
uint8_t input
Definition lt3074.h:189
uint8_t mfr_specific
Definition lt3074.h:192
uint8_t iout
Definition lt3074.h:188
uint8_t byte
Definition lt3074.h:186
uint8_t temp
Definition lt3074.h:190
uint8_t cml
Definition lt3074.h:191
uint16_t word
Definition lt3074.h:185
uint8_t vout
Definition lt3074.h:187
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