no-OS
Loading...
Searching...
No Matches
ltm3360b.h
Go to the documentation of this file.
1/***************************************************************************/
33#ifndef __LTM3360B_H__
34#define __LTM3360B_H__
35
36#include <stdint.h>
37#include <stdbool.h>
38#include "no_os_util.h"
39#include "no_os_i2c.h"
40
41#define LTM3360B_I2C_ADDR 0x69
42
43#define LTM3360B_EN_IMON_CTRL 0x01
44#define LTM3360B_VOUT_SETTING 0x03
45#define LTM3360B_ADC_SELECT 0x04
46#define LTM3360B_ADC_CTRL 0x05
47#define LTM3360B_ADC_OUTPUT 0x06
48
49#define LTM3360B_IGNORE_EN_IN_BIT NO_OS_BIT(0)
50#define LTM3360B_EN_I2C_BIT NO_OS_BIT(1)
51#define LTM3360B_OPT_IMON_TH_MSK NO_OS_GENMASK(3, 2)
52#define LTM3360B_ADC_SEL_IN(x) ((x) & NO_OS_GENMASK(2, 0))
53#define LTM3360B_OPT_IMON_TH(x) (((x) << 2) & LTM3360B_OPT_IMON_TH_MSK)
54#define LTM3360B_VOUT_LSB_MV 4
55#define LTM3360B_VOUT_MV_TO_CODE(mv) ((mv) / LTM3360B_VOUT_LSB_MV)
56#define LTM3360B_VOUT_CODE_TO_MV(code) ((code) * LTM3360B_VOUT_LSB_MV)
57#define LTM3360B_EN_ADC_BIT NO_OS_BIT(0)
58
59/* LTM3360B Constants */
60#define LTM3360B_ADC_CONV_TIME_MS 4
61#define LTM3360B_VOUT_MIN_MV 297
62#define LTM3360B_VOUT_MAX_MV 1000
63
74
86
95
106
109
110int ltm3360b_remove(struct ltm3360b_dev *dev);
111
112int ltm3360b_reg_read(struct ltm3360b_dev *dev, uint8_t reg, uint8_t *data);
113
114int ltm3360b_reg_write(struct ltm3360b_dev *dev, uint8_t reg, uint8_t data);
115
116int ltm3360b_reg_update(struct ltm3360b_dev *dev, uint8_t reg,
117 uint8_t mask, uint8_t val);
118
119int ltm3360b_enable_device(struct ltm3360b_dev *dev, bool enable);
120
121int ltm3360b_set_vout_mv(struct ltm3360b_dev *dev, uint16_t vout_mv);
122
123int ltm3360b_get_vout_mv(struct ltm3360b_dev *dev, uint16_t *vout_mv);
124
126 enum ltm3360b_imon_threshold threshold);
127
128int ltm3360b_adc_enable(struct ltm3360b_dev *dev, bool enable);
129
130int ltm3360b_adc_read_raw(struct ltm3360b_dev *dev,
131 enum ltm3360b_adc_channel channel, uint8_t *result);
132
133#endif /* __LTM3360B_H__ */
struct ad7616_init_param init_param
Definition ad7616_sdz.c:107
int ltm3360b_set_vout_mv(struct ltm3360b_dev *dev, uint16_t vout_mv)
Set output voltage.
Definition ltm3360b.c:144
int ltm3360b_reg_update(struct ltm3360b_dev *dev, uint8_t reg, uint8_t mask, uint8_t val)
Update register bits using mask - modifies only specified bits.
Definition ltm3360b.c:95
int ltm3360b_enable_device(struct ltm3360b_dev *dev, bool enable)
Enable or disable LTM3360B device.
Definition ltm3360b.c:120
int ltm3360b_init(struct ltm3360b_dev **device, struct ltm3360b_init_param *init_param)
Initialize LTM3360B device.
Definition ltm3360b.c:245
int ltm3360b_reg_read(struct ltm3360b_dev *dev, uint8_t reg, uint8_t *data)
Read register from LTM3360B device.
Definition ltm3360b.c:53
ltm3360b_adc_channel
ADC Input selection.
Definition ltm3360b.h:79
@ LTM3360B_ADC_VOUT_P
Definition ltm3360b.h:82
@ LTM3360B_ADC_VOUT_N
Definition ltm3360b.h:83
@ LTM3360B_ADC_IMON
Definition ltm3360b.h:80
@ LTM3360B_ADC_TEMP
Definition ltm3360b.h:81
@ LTM3360B_ADC_VIN
Definition ltm3360b.h:84
int ltm3360b_remove(struct ltm3360b_dev *dev)
Remove LTM3360B device instance.
Definition ltm3360b.c:295
int ltm3360b_adc_read_raw(struct ltm3360b_dev *dev, enum ltm3360b_adc_channel channel, uint8_t *result)
Read raw ADC value.
Definition ltm3360b.c:221
int ltm3360b_set_imon_threshold(struct ltm3360b_dev *dev, enum ltm3360b_imon_threshold threshold)
Set IMON threshold for overcurrent detection.
Definition ltm3360b.c:188
ltm3360b_imon_threshold
IMON Threshold settings.
Definition ltm3360b.h:68
@ LTM3360B_IMON_TH_79_PERCENT
Definition ltm3360b.h:71
@ LTM3360B_IMON_TH_99_PERCENT
Definition ltm3360b.h:69
@ LTM3360B_IMON_TH_69_PERCENT
Definition ltm3360b.h:72
@ LTM3360B_IMON_TH_89_PERCENT
Definition ltm3360b.h:70
int ltm3360b_get_vout_mv(struct ltm3360b_dev *dev, uint16_t *vout_mv)
Get current output voltage setting.
Definition ltm3360b.c:165
int ltm3360b_reg_write(struct ltm3360b_dev *dev, uint8_t reg, uint8_t data)
Write register to LTM3360B device.
Definition ltm3360b.c:74
int ltm3360b_adc_enable(struct ltm3360b_dev *dev, bool enable)
Enable or disable ADC.
Definition ltm3360b.c:205
Header file of I2C Interface.
Header file of utility functions.
Definition ad9361_util.h:63
LTM3360B Device Descriptor.
Definition ltm3360b.h:91
bool auto_enable
Definition ltm3360b.h:93
struct no_os_i2c_desc * i2c_desc
Definition ltm3360b.h:92
LTM3360B Initialization Parameters.
Definition ltm3360b.h:100
uint16_t vout_mv
Definition ltm3360b.h:103
enum ltm3360b_imon_threshold imon_threshold
Definition ltm3360b.h:104
bool auto_enable
Definition ltm3360b.h:102
struct no_os_i2c_init_param * i2c_init
Definition ltm3360b.h:101
Structure holding I2C address descriptor.
Definition no_os_i2c.h:89
Structure holding the parameters for I2C initialization.
Definition no_os_i2c.h:52