Zephyr API Documentation 4.4.0-rc1
A Scalable Open Source RTOS
Loading...
Searching...
No Matches
max2221x.h
Go to the documentation of this file.
1/*
2 * Copyright (c) 2025 Analog Devices Inc.
3 *
4 * SPDX-License-Identifier: Apache-2.0
5 */
6
12
13#ifndef ZEPHYR_INCLUDE_DRIVERS_MFD_MAX2221X_H_
14#define ZEPHYR_INCLUDE_DRIVERS_MFD_MAX2221X_H_
15
16#ifdef __cplusplus
17extern "C" {
18#endif
19
20#include <zephyr/device.h>
21#include <zephyr/sys/util.h>
22
28
34#define MAX2221X_SPI_TRANS_ADDR GENMASK(6, 0)
36#define MAX2221X_SPI_TRANS_DIR BIT(7)
38
44#define MAX2221X_REG_GLOBAL_CTRL 0x00
46#define MAX2221X_REG_GLOBAL_CFG 0x01
48#define MAX2221X_REG_STATUS 0x02
50#define MAX2221X_REG_DC_H2L 0x03
52#define MAX2221X_REG_VM_MONITOR 0x05
54#define MAX2221X_REG_VM_THRESHOLD 0x06
59#define MAX2221X_REG_CFG_DC_L2H(x) (0x09 + ((x) * 0xE))
64#define MAX2221X_REG_CFG_DC_H(x) (0x0A + ((x) * 0xE))
69#define MAX2221X_REG_CFG_DC_L(x) (0x0B + ((x) * 0xE))
74#define MAX2221X_REG_CFG_TIME_L2H(x) (0x0C + ((x) * 0xE))
79#define MAX2221X_REG_CFG_CTRL0(x) (0x0D + ((x) * 0xE))
84#define MAX2221X_REG_CFG_CTRL1(x) (0x0E + ((x) * 0xE))
89#define MAX2221X_REG_PWM_DUTY(x) (0x49 + ((x) * 0xE))
91#define MAX2221X_REG_FAULT0 0x65
93#define MAX2221X_REG_FAULT1 0x66
95
101#define MAX2221X_F_PWM_M_MASK GENMASK(7, 4)
103#define MAX2221X_CNTL0_MASK BIT(0)
105#define MAX2221X_CNTL1_MASK BIT(1)
107#define MAX2221X_CNTL2_MASK BIT(2)
109#define MAX2221X_CNTL3_MASK BIT(3)
111
117#define MAX2221X_ACTIVE_MASK BIT(15)
119#define MAX2221X_M_UVM_MASK BIT(8)
121#define MAX2221X_VDRNVDRDUTY_MASK BIT(4)
123
129#define MAX2221X_STATUS_STT3_MASK BIT(14)
131#define MAX2221X_STATUS_STT2_MASK BIT(13)
133#define MAX2221X_STATUS_STT1_MASK BIT(12)
135#define MAX2221X_STATUS_STT0_MASK BIT(11)
137#define MAX2221X_STATUS_MIN_T_ON_MASK BIT(10)
139#define MAX2221X_STATUS_RES_MASK BIT(9)
141#define MAX2221X_STATUS_IND_MASK BIT(8)
143#define MAX2221X_STATUS_OVT_MASK BIT(7)
145#define MAX2221X_STATUS_OCP_MASK BIT(6)
147#define MAX2221X_STATUS_OLF_MASK BIT(5)
149#define MAX2221X_STATUS_HHF_MASK BIT(4)
151#define MAX2221X_STATUS_DPM_MASK BIT(3)
153#define MAX2221X_STATUS_COMER_MASK BIT(2)
155#define MAX2221X_STATUS_UVM_MASK BIT(1)
157
163#define MAX2221X_VM_MONITOR_MASK GENMASK(12, 0)
165
171#define MAX2221X_VM_THLD_UP_MASK GENMASK(7, 4)
173#define MAX2221X_VM_THLD_DOWN_MASK GENMASK(3, 0)
175
181#define MAX2221X_CTRL_MODE_MASK GENMASK(15, 14)
183#define MAX2221X_RDWE_MASK BIT(10)
185#define MAX2221X_RMDE_MASK BIT(9)
187#define MAX2221X_RUPE_MASK BIT(8)
189#define MAX2221X_RAMP_MASK GENMASK(7, 0)
191
197#define MAX2221X_F_PWM_MASK GENMASK(9, 8)
199#define MAX2221X_SLEW_RATE_MASK GENMASK(5, 4)
201#define MAX2221X_GAIN_MASK GENMASK(3, 2)
203#define MAX2221X_SNSF_MASK GENMASK(1, 0)
205
211#define MAX2221X_FAULT_DPM3_MASK BIT(15)
213#define MAX2221X_FAULT_DPM2_MASK BIT(14)
215#define MAX2221X_FAULT_DPM1_MASK BIT(13)
217#define MAX2221X_FAULT_DPM0_MASK BIT(12)
219#define MAX2221X_FAULT_OLF3_MASK BIT(11)
221#define MAX2221X_FAULT_OLF2_MASK BIT(10)
223#define MAX2221X_FAULT_OLF1_MASK BIT(9)
225#define MAX2221X_FAULT_OLF0_MASK BIT(8)
227#define MAX2221X_FAULT_HHF3_MASK BIT(7)
229#define MAX2221X_FAULT_HHF2_MASK BIT(6)
231#define MAX2221X_FAULT_HHF1_MASK BIT(5)
233#define MAX2221X_FAULT_HHF0_MASK BIT(4)
235#define MAX2221X_FAULT_OCP3_MASK BIT(3)
237#define MAX2221X_FAULT_OCP2_MASK BIT(2)
239#define MAX2221X_FAULT_OCP1_MASK BIT(1)
241#define MAX2221X_FAULT_OCP0_MASK BIT(0)
243
249#define MAX2221X_FAULT_RES3_MASK BIT(10)
251#define MAX2221X_FAULT_RES2_MASK BIT(9)
253#define MAX2221X_FAULT_RES1_MASK BIT(8)
255#define MAX2221X_FAULT_RES0_MASK BIT(7)
257#define MAX2221X_FAULT_OVT_MASK BIT(6)
259#define MAX2221X_FAULT_COMER_MASK BIT(5)
261#define MAX2221X_FAULT_UVM_MASK BIT(4)
263#define MAX2221X_FAULT_IND3_MASK BIT(3)
265#define MAX2221X_FAULT_IND2_MASK BIT(2)
267#define MAX2221X_FAULT_IND1_MASK BIT(1)
269#define MAX2221X_FAULT_IND0_MASK BIT(0)
271
273#define MAX2221X_NUM_CHANNELS 4
274
284int max2221x_reg_read(const struct device *dev, uint8_t addr, uint16_t *value);
285
295int max2221x_reg_write(const struct device *dev, uint8_t addr, uint16_t value);
296
307int max2221x_reg_update(const struct device *dev, uint8_t addr, uint16_t mask, uint16_t val);
308
310
311#ifdef __cplusplus
312}
313#endif
314
315#endif /* ZEPHYR_INCLUDE_DRIVERS_MFD_MAX2221X_H_ */
int max2221x_reg_read(const struct device *dev, uint8_t addr, uint16_t *value)
Read register from max2221x.
int max2221x_reg_update(const struct device *dev, uint8_t addr, uint16_t mask, uint16_t val)
Update register in max2221x.
int max2221x_reg_write(const struct device *dev, uint8_t addr, uint16_t value)
Write register to max2221x.
__UINT8_TYPE__ uint8_t
Definition stdint.h:88
__UINT16_TYPE__ uint16_t
Definition stdint.h:89
Runtime device structure (in ROM) per driver instance.
Definition device.h:513
Misc utilities.