Linux kernel mirror (for testing)
git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel
os
linux
1/* SPDX-License-Identifier: GPL-2.0 */
2/*
3 * Maxim MAX77705 definitions.
4 *
5 * Copyright (C) 2015 Samsung Electronics, Inc.
6 * Copyright (C) 2025 Dzmitry Sankouski <dsankouski@gmail.com>
7 */
8
9#ifndef __LINUX_MFD_MAX77705_PRIV_H
10#define __LINUX_MFD_MAX77705_PRIV_H
11
12#define MAX77705_SRC_IRQ_CHG BIT(0)
13#define MAX77705_SRC_IRQ_TOP BIT(1)
14#define MAX77705_SRC_IRQ_FG BIT(2)
15#define MAX77705_SRC_IRQ_USBC BIT(3)
16#define MAX77705_SRC_IRQ_ALL (MAX77705_SRC_IRQ_CHG | MAX77705_SRC_IRQ_TOP | \
17 MAX77705_SRC_IRQ_FG | MAX77705_SRC_IRQ_USBC)
18
19/* MAX77705_PMIC_REG_PMICREV register */
20#define MAX77705_VERSION_SHIFT 3
21#define MAX77705_REVISION_MASK GENMASK(2, 0)
22#define MAX77705_VERSION_MASK GENMASK(7, MAX77705_VERSION_SHIFT)
23/* MAX77705_PMIC_REG_MAINCTRL1 register */
24#define MAX77705_MAINCTRL1_BIASEN_SHIFT 7
25#define MAX77705_MAINCTRL1_BIASEN_MASK BIT(MAX77705_MAINCTRL1_BIASEN_SHIFT)
26/* MAX77705_PMIC_REG_MCONFIG2 (haptics) register */
27#define MAX77705_CONFIG2_MEN_SHIFT 6
28#define MAX77705_CONFIG2_MODE_SHIFT 7
29#define MAX77705_CONFIG2_HTYP_SHIFT 5
30/* MAX77705_PMIC_REG_SYSTEM_INT_MASK register */
31#define MAX77705_SYSTEM_IRQ_BSTEN_INT BIT(3)
32#define MAX77705_SYSTEM_IRQ_SYSUVLO_INT BIT(4)
33#define MAX77705_SYSTEM_IRQ_SYSOVLO_INT BIT(5)
34#define MAX77705_SYSTEM_IRQ_TSHDN_INT BIT(6)
35#define MAX77705_SYSTEM_IRQ_TM_INT BIT(7)
36/* MAX77705_RGBLED_REG_LEDEN register */
37#define MAX77705_RGBLED_EN_WIDTH 2
38/* MAX77705_RGBLED_REG_LEDBLNK register */
39#define MAX77705_RGB_DELAY_100_STEP_LIM 500
40#define MAX77705_RGB_DELAY_100_STEP_COUNT 4
41#define MAX77705_RGB_DELAY_100_STEP 100
42#define MAX77705_RGB_DELAY_250_STEP_LIM 3250
43#define MAX77705_RGB_DELAY_250_STEP 250
44#define MAX77705_RGB_DELAY_500_STEP 500
45#define MAX77705_RGB_DELAY_500_STEP_COUNT 10
46#define MAX77705_RGB_DELAY_500_STEP_LIM 5000
47#define MAX77705_RGB_DELAY_1000_STEP_LIM 8000
48#define MAX77705_RGB_DELAY_1000_STEP_COUNT 13
49#define MAX77705_RGB_DELAY_1000_STEP 1000
50#define MAX77705_RGB_DELAY_2000_STEP 2000
51#define MAX77705_RGB_DELAY_2000_STEP_COUNT 13
52#define MAX77705_RGB_DELAY_2000_STEP_LIM 12000
53
54enum max77705_hw_rev {
55 MAX77705_PASS1 = 1,
56 MAX77705_PASS2,
57 MAX77705_PASS3
58};
59
60enum max77705_reg {
61 MAX77705_PMIC_REG_PMICID1 = 0x00,
62 MAX77705_PMIC_REG_PMICREV = 0x01,
63 MAX77705_PMIC_REG_MAINCTRL1 = 0x02,
64 MAX77705_PMIC_REG_BSTOUT_MASK = 0x03,
65 MAX77705_PMIC_REG_FORCE_EN_MASK = 0x08,
66 MAX77705_PMIC_REG_MCONFIG = 0x10,
67 MAX77705_PMIC_REG_MCONFIG2 = 0x11,
68 MAX77705_PMIC_REG_INTSRC = 0x22,
69 MAX77705_PMIC_REG_INTSRC_MASK = 0x23,
70 MAX77705_PMIC_REG_SYSTEM_INT = 0x24,
71 MAX77705_PMIC_REG_RESERVED_25 = 0x25,
72 MAX77705_PMIC_REG_SYSTEM_INT_MASK = 0x26,
73 MAX77705_PMIC_REG_RESERVED_27 = 0x27,
74 MAX77705_PMIC_REG_RESERVED_28 = 0x28,
75 MAX77705_PMIC_REG_RESERVED_29 = 0x29,
76 MAX77705_PMIC_REG_BOOSTCONTROL1 = 0x4C,
77 MAX77705_PMIC_REG_BOOSTCONTROL2 = 0x4F,
78 MAX77705_PMIC_REG_SW_RESET = 0x50,
79 MAX77705_PMIC_REG_USBC_RESET = 0x51,
80
81 MAX77705_PMIC_REG_END
82};
83
84enum max77705_chg_reg {
85 MAX77705_CHG_REG_BASE = 0xB0,
86 MAX77705_CHG_REG_INT = 0,
87 MAX77705_CHG_REG_INT_MASK,
88 MAX77705_CHG_REG_INT_OK,
89 MAX77705_CHG_REG_DETAILS_00,
90 MAX77705_CHG_REG_DETAILS_01,
91 MAX77705_CHG_REG_DETAILS_02,
92 MAX77705_CHG_REG_DTLS_03,
93 MAX77705_CHG_REG_CNFG_00,
94 MAX77705_CHG_REG_CNFG_01,
95 MAX77705_CHG_REG_CNFG_02,
96 MAX77705_CHG_REG_CNFG_03,
97 MAX77705_CHG_REG_CNFG_04,
98 MAX77705_CHG_REG_CNFG_05,
99 MAX77705_CHG_REG_CNFG_06,
100 MAX77705_CHG_REG_CNFG_07,
101 MAX77705_CHG_REG_CNFG_08,
102 MAX77705_CHG_REG_CNFG_09,
103 MAX77705_CHG_REG_CNFG_10,
104 MAX77705_CHG_REG_CNFG_11,
105
106 MAX77705_CHG_REG_CNFG_12,
107 MAX77705_CHG_REG_CNFG_13,
108 MAX77705_CHG_REG_CNFG_14,
109 MAX77705_CHG_REG_SAFEOUT_CTRL
110};
111
112enum max77705_fuelgauge_reg {
113 STATUS_REG = 0x00,
114 VALRT_THRESHOLD_REG = 0x01,
115 TALRT_THRESHOLD_REG = 0x02,
116 SALRT_THRESHOLD_REG = 0x03,
117 REMCAP_REP_REG = 0x05,
118 SOCREP_REG = 0x06,
119 TEMPERATURE_REG = 0x08,
120 VCELL_REG = 0x09,
121 TIME_TO_EMPTY_REG = 0x11,
122 FULLSOCTHR_REG = 0x13,
123 CURRENT_REG = 0x0A,
124 AVG_CURRENT_REG = 0x0B,
125 SOCMIX_REG = 0x0D,
126 SOCAV_REG = 0x0E,
127 REMCAP_MIX_REG = 0x0F,
128 FULLCAP_REG = 0x10,
129 RFAST_REG = 0x15,
130 AVR_TEMPERATURE_REG = 0x16,
131 CYCLES_REG = 0x17,
132 DESIGNCAP_REG = 0x18,
133 AVR_VCELL_REG = 0x19,
134 TIME_TO_FULL_REG = 0x20,
135 CONFIG_REG = 0x1D,
136 ICHGTERM_REG = 0x1E,
137 REMCAP_AV_REG = 0x1F,
138 FULLCAP_NOM_REG = 0x23,
139 LEARN_CFG_REG = 0x28,
140 FILTER_CFG_REG = 0x29,
141 MISCCFG_REG = 0x2B,
142 QRTABLE20_REG = 0x32,
143 FULLCAP_REP_REG = 0x35,
144 RCOMP_REG = 0x38,
145 VEMPTY_REG = 0x3A,
146 FSTAT_REG = 0x3D,
147 DISCHARGE_THRESHOLD_REG = 0x40,
148 QRTABLE30_REG = 0x42,
149 ISYS_REG = 0x43,
150 DQACC_REG = 0x45,
151 DPACC_REG = 0x46,
152 AVGISYS_REG = 0x4B,
153 QH_REG = 0x4D,
154 VSYS_REG = 0xB1,
155 TALRTTH2_REG = 0xB2,
156 VBYP_REG = 0xB3,
157 CONFIG2_REG = 0xBB,
158 IIN_REG = 0xD0,
159 OCV_REG = 0xEE,
160 VFOCV_REG = 0xFB,
161 VFSOC_REG = 0xFF,
162
163 MAX77705_FG_END
164};
165
166enum max77705_led_reg {
167 MAX77705_RGBLED_REG_BASE = 0x30,
168 MAX77705_RGBLED_REG_LEDEN = 0,
169 MAX77705_RGBLED_REG_LED0BRT,
170 MAX77705_RGBLED_REG_LED1BRT,
171 MAX77705_RGBLED_REG_LED2BRT,
172 MAX77705_RGBLED_REG_LED3BRT,
173 MAX77705_RGBLED_REG_LEDRMP,
174 MAX77705_RGBLED_REG_LEDBLNK,
175 MAX77705_LED_REG_END
176};
177
178enum max77705_charger_battery_state {
179 MAX77705_BATTERY_NOBAT,
180 MAX77705_BATTERY_PREQUALIFICATION,
181 MAX77705_BATTERY_DEAD,
182 MAX77705_BATTERY_GOOD,
183 MAX77705_BATTERY_LOWVOLTAGE,
184 MAX77705_BATTERY_OVERVOLTAGE,
185 MAX77705_BATTERY_RESERVED
186};
187
188enum max77705_charger_charge_type {
189 MAX77705_CHARGER_CONSTANT_CURRENT = 1,
190 MAX77705_CHARGER_CONSTANT_VOLTAGE,
191 MAX77705_CHARGER_END_OF_CHARGE,
192 MAX77705_CHARGER_DONE
193};
194
195#endif /* __LINUX_MFD_MAX77705_PRIV_H */