hc
2023-12-11 1f93a7dfd1f8d5ff7a5c53246c7534fe2332d6f4
kernel/include/linux/power_supply.h
....@@ -1,3 +1,4 @@
1
+/* SPDX-License-Identifier: GPL-2.0-only */
12 /*
23 * Universal power supply monitor class
34 *
....@@ -6,8 +7,6 @@
67 * Copyright © 2003 Ian Molton <spyro@f2s.com>
78 *
89 * Modified: 2004, Oct Szabolcs Gyurko
9
- *
10
- * You may use this code as per GPL version 2
1110 */
1211
1312 #ifndef __LINUX_POWER_SUPPLY_H__
....@@ -18,7 +17,7 @@
1817 #include <linux/leds.h>
1918 #include <linux/spinlock.h>
2019 #include <linux/notifier.h>
21
-#include <linux/types.h>
20
+#include <linux/android_kabi.h>
2221
2322 /*
2423 * All voltages, currents, charges, energies, time and temperatures in uV,
....@@ -41,12 +40,22 @@
4140 POWER_SUPPLY_STATUS_FULL,
4241 };
4342
43
+/* What algorithm is the charger using? */
4444 enum {
4545 POWER_SUPPLY_CHARGE_TYPE_UNKNOWN = 0,
4646 POWER_SUPPLY_CHARGE_TYPE_NONE,
47
- POWER_SUPPLY_CHARGE_TYPE_TRICKLE,
48
- POWER_SUPPLY_CHARGE_TYPE_FAST,
49
- POWER_SUPPLY_CHARGE_TYPE_TAPER,
47
+ POWER_SUPPLY_CHARGE_TYPE_TRICKLE, /* slow speed */
48
+ POWER_SUPPLY_CHARGE_TYPE_FAST, /* fast speed */
49
+ POWER_SUPPLY_CHARGE_TYPE_STANDARD, /* normal speed */
50
+ POWER_SUPPLY_CHARGE_TYPE_ADAPTIVE, /* dynamically adjusted speed */
51
+ POWER_SUPPLY_CHARGE_TYPE_CUSTOM, /* use CHARGE_CONTROL_* props */
52
+ POWER_SUPPLY_CHARGE_TYPE_LONGLIFE, /* slow speed, longer life */
53
+
54
+ /*
55
+ * force to 50 to minimize the chances of userspace binary
56
+ * incompatibility on newer upstream kernels
57
+ */
58
+ POWER_SUPPLY_CHARGE_TYPE_TAPER = 50, /* charging in CV phase */
5059 };
5160
5261 enum {
....@@ -60,6 +69,7 @@
6069 POWER_SUPPLY_HEALTH_WATCHDOG_TIMER_EXPIRE,
6170 POWER_SUPPLY_HEALTH_SAFETY_TIMER_EXPIRE,
6271 POWER_SUPPLY_HEALTH_OVERCURRENT,
72
+ POWER_SUPPLY_HEALTH_CALIBRATION_REQUIRED,
6373 POWER_SUPPLY_HEALTH_WARM,
6474 POWER_SUPPLY_HEALTH_COOL,
6575 POWER_SUPPLY_HEALTH_HOT,
....@@ -88,84 +98,6 @@
8898 POWER_SUPPLY_SCOPE_UNKNOWN = 0,
8999 POWER_SUPPLY_SCOPE_SYSTEM,
90100 POWER_SUPPLY_SCOPE_DEVICE,
91
-};
92
-
93
-enum {
94
- POWER_SUPPLY_DP_DM_UNKNOWN = 0,
95
- POWER_SUPPLY_DP_DM_PREPARE = 1,
96
- POWER_SUPPLY_DP_DM_UNPREPARE = 2,
97
- POWER_SUPPLY_DP_DM_CONFIRMED_HVDCP3 = 3,
98
- POWER_SUPPLY_DP_DM_DP_PULSE = 4,
99
- POWER_SUPPLY_DP_DM_DM_PULSE = 5,
100
- POWER_SUPPLY_DP_DM_DP0P6_DMF = 6,
101
- POWER_SUPPLY_DP_DM_DP0P6_DM3P3 = 7,
102
- POWER_SUPPLY_DP_DM_DPF_DMF = 8,
103
- POWER_SUPPLY_DP_DM_DPR_DMR = 9,
104
- POWER_SUPPLY_DP_DM_HVDCP3_SUPPORTED = 10,
105
- POWER_SUPPLY_DP_DM_ICL_DOWN = 11,
106
- POWER_SUPPLY_DP_DM_ICL_UP = 12,
107
- POWER_SUPPLY_DP_DM_FORCE_5V = 13,
108
- POWER_SUPPLY_DP_DM_FORCE_9V = 14,
109
- POWER_SUPPLY_DP_DM_FORCE_12V = 15,
110
- POWER_SUPPLY_DP_DM_CONFIRMED_HVDCP3P5 = 16,
111
-};
112
-
113
-enum {
114
- POWER_SUPPLY_PL_NONE,
115
- POWER_SUPPLY_PL_USBIN_USBIN,
116
- POWER_SUPPLY_PL_USBIN_USBIN_EXT,
117
- POWER_SUPPLY_PL_USBMID_USBMID,
118
-};
119
-
120
-enum {
121
- POWER_SUPPLY_CHARGER_SEC_NONE = 0,
122
- POWER_SUPPLY_CHARGER_SEC_CP,
123
- POWER_SUPPLY_CHARGER_SEC_PL,
124
- POWER_SUPPLY_CHARGER_SEC_CP_PL,
125
-};
126
-
127
-enum {
128
- POWER_SUPPLY_CP_NONE = 0,
129
- POWER_SUPPLY_CP_HVDCP3,
130
- POWER_SUPPLY_CP_HVDCP3P5,
131
- POWER_SUPPLY_CP_PPS,
132
- POWER_SUPPLY_CP_WIRELESS,
133
-};
134
-
135
-enum {
136
- POWER_SUPPLY_CONNECTOR_TYPEC,
137
- POWER_SUPPLY_CONNECTOR_MICRO_USB,
138
-};
139
-
140
-enum {
141
- POWER_SUPPLY_PL_STACKED_BATFET,
142
- POWER_SUPPLY_PL_NON_STACKED_BATFET,
143
-};
144
-
145
-/* Parallel output connection topology */
146
-enum {
147
- POWER_SUPPLY_PL_OUTPUT_NONE,
148
- POWER_SUPPLY_PL_OUTPUT_VPH,
149
- POWER_SUPPLY_PL_OUTPUT_VBAT,
150
-};
151
-
152
-enum {
153
- POWER_SUPPLY_PD_INACTIVE = 0,
154
- POWER_SUPPLY_PD_ACTIVE,
155
- POWER_SUPPLY_PD_PPS_ACTIVE,
156
-};
157
-
158
-enum {
159
- POWER_SUPPLY_QC_CTM_DISABLE = BIT(0),
160
- POWER_SUPPLY_QC_THERMAL_BALANCE_DISABLE = BIT(1),
161
- POWER_SUPPLY_QC_INOV_THERMAL_DISABLE = BIT(2),
162
-};
163
-
164
-enum {
165
- POWER_SUPPLY_ALIGN_CHECKING = 0,
166
- POWER_SUPPLY_ALIGN_MOVE,
167
- POWER_SUPPLY_ALIGN_CENTERED,
168
- POWER_SUPPLY_ALIGN_ERROR,
169101 };
170102
171103 enum power_supply_property {
....@@ -205,7 +137,11 @@
205137 POWER_SUPPLY_PROP_CONSTANT_CHARGE_VOLTAGE_MAX,
206138 POWER_SUPPLY_PROP_CHARGE_CONTROL_LIMIT,
207139 POWER_SUPPLY_PROP_CHARGE_CONTROL_LIMIT_MAX,
140
+ POWER_SUPPLY_PROP_CHARGE_CONTROL_START_THRESHOLD, /* in percents! */
141
+ POWER_SUPPLY_PROP_CHARGE_CONTROL_END_THRESHOLD, /* in percents! */
208142 POWER_SUPPLY_PROP_INPUT_CURRENT_LIMIT,
143
+ POWER_SUPPLY_PROP_INPUT_VOLTAGE_LIMIT,
144
+ POWER_SUPPLY_PROP_INPUT_POWER_LIMIT,
209145 POWER_SUPPLY_PROP_ENERGY_FULL_DESIGN,
210146 POWER_SUPPLY_PROP_ENERGY_EMPTY_DESIGN,
211147 POWER_SUPPLY_PROP_ENERGY_FULL,
....@@ -215,6 +151,7 @@
215151 POWER_SUPPLY_PROP_CAPACITY, /* in percents! */
216152 POWER_SUPPLY_PROP_CAPACITY_ALERT_MIN, /* in percents! */
217153 POWER_SUPPLY_PROP_CAPACITY_ALERT_MAX, /* in percents! */
154
+ POWER_SUPPLY_PROP_CAPACITY_ERROR_MARGIN, /* in percents! */
218155 POWER_SUPPLY_PROP_CAPACITY_LEVEL,
219156 POWER_SUPPLY_PROP_TEMP,
220157 POWER_SUPPLY_PROP_TEMP_MAX,
....@@ -234,178 +171,47 @@
234171 POWER_SUPPLY_PROP_PRECHARGE_CURRENT,
235172 POWER_SUPPLY_PROP_CHARGE_TERM_CURRENT,
236173 POWER_SUPPLY_PROP_CALIBRATE,
237
- /* Local extensions */
238
- POWER_SUPPLY_PROP_USB_HC,
239
- POWER_SUPPLY_PROP_USB_OTG,
240
- POWER_SUPPLY_PROP_CHARGE_ENABLED,
241
- POWER_SUPPLY_PROP_SET_SHIP_MODE,
242
- POWER_SUPPLY_PROP_REAL_TYPE,
243
- POWER_SUPPLY_PROP_CHARGE_NOW_RAW,
244
- POWER_SUPPLY_PROP_CHARGE_NOW_ERROR,
245
- POWER_SUPPLY_PROP_CAPACITY_RAW,
246
- POWER_SUPPLY_PROP_BATTERY_CHARGING_ENABLED,
247
- POWER_SUPPLY_PROP_CHARGING_ENABLED,
248
- POWER_SUPPLY_PROP_STEP_CHARGING_ENABLED,
249
- POWER_SUPPLY_PROP_STEP_CHARGING_STEP,
250
- POWER_SUPPLY_PROP_PIN_ENABLED,
251
- POWER_SUPPLY_PROP_INPUT_SUSPEND,
252
- POWER_SUPPLY_PROP_INPUT_VOLTAGE_REGULATION,
253
- POWER_SUPPLY_PROP_INPUT_CURRENT_MAX,
254
- POWER_SUPPLY_PROP_INPUT_CURRENT_TRIM,
255
- POWER_SUPPLY_PROP_INPUT_CURRENT_SETTLED,
256
- POWER_SUPPLY_PROP_INPUT_VOLTAGE_SETTLED,
257
- POWER_SUPPLY_PROP_VCHG_LOOP_DBC_BYPASS,
258
- POWER_SUPPLY_PROP_CHARGE_COUNTER_SHADOW,
259
- POWER_SUPPLY_PROP_HI_POWER,
260
- POWER_SUPPLY_PROP_LOW_POWER,
261
- POWER_SUPPLY_PROP_COOL_TEMP,
262
- POWER_SUPPLY_PROP_WARM_TEMP,
263
- POWER_SUPPLY_PROP_COLD_TEMP,
264
- POWER_SUPPLY_PROP_HOT_TEMP,
265
- POWER_SUPPLY_PROP_SYSTEM_TEMP_LEVEL,
266
- POWER_SUPPLY_PROP_RESISTANCE,
267
- POWER_SUPPLY_PROP_RESISTANCE_CAPACITIVE,
268
- POWER_SUPPLY_PROP_RESISTANCE_ID, /* in Ohms */
269
- POWER_SUPPLY_PROP_RESISTANCE_NOW,
270
- POWER_SUPPLY_PROP_FLASH_CURRENT_MAX,
271
- POWER_SUPPLY_PROP_UPDATE_NOW,
272
- POWER_SUPPLY_PROP_ESR_COUNT,
273
- POWER_SUPPLY_PROP_BUCK_FREQ,
274
- POWER_SUPPLY_PROP_BOOST_CURRENT,
275
- POWER_SUPPLY_PROP_SAFETY_TIMER_ENABLE,
276
- POWER_SUPPLY_PROP_CHARGE_DONE,
277
- POWER_SUPPLY_PROP_FLASH_ACTIVE,
278
- POWER_SUPPLY_PROP_FLASH_TRIGGER,
279
- POWER_SUPPLY_PROP_FORCE_TLIM,
280
- POWER_SUPPLY_PROP_DP_DM,
281
- POWER_SUPPLY_PROP_INPUT_CURRENT_LIMITED,
282
- POWER_SUPPLY_PROP_INPUT_CURRENT_NOW,
283
- POWER_SUPPLY_PROP_CHARGE_QNOVO_ENABLE,
284
- POWER_SUPPLY_PROP_CURRENT_QNOVO,
285
- POWER_SUPPLY_PROP_VOLTAGE_QNOVO,
286
- POWER_SUPPLY_PROP_RERUN_AICL,
287
- POWER_SUPPLY_PROP_CYCLE_COUNT_ID,
288
- POWER_SUPPLY_PROP_SAFETY_TIMER_EXPIRED,
289
- POWER_SUPPLY_PROP_RESTRICTED_CHARGING,
290
- POWER_SUPPLY_PROP_CURRENT_CAPABILITY,
291
- POWER_SUPPLY_PROP_TYPEC_MODE,
292
- POWER_SUPPLY_PROP_TYPEC_CC_ORIENTATION, /* 0: N/C, 1: CC1, 2: CC2 */
293
- POWER_SUPPLY_PROP_TYPEC_POWER_ROLE,
294
- POWER_SUPPLY_PROP_TYPEC_SRC_RP,
295
- POWER_SUPPLY_PROP_PD_ALLOWED,
296
- POWER_SUPPLY_PROP_PD_ACTIVE,
297
- POWER_SUPPLY_PROP_PD_IN_HARD_RESET,
298
- POWER_SUPPLY_PROP_PD_CURRENT_MAX,
299
- POWER_SUPPLY_PROP_PD_USB_SUSPEND_SUPPORTED,
300
- POWER_SUPPLY_PROP_CHARGER_TEMP,
301
- POWER_SUPPLY_PROP_CHARGER_TEMP_MAX,
302
- POWER_SUPPLY_PROP_PARALLEL_DISABLE,
303
- POWER_SUPPLY_PROP_PE_START,
304
- POWER_SUPPLY_PROP_SOC_REPORTING_READY,
305
- POWER_SUPPLY_PROP_DEBUG_BATTERY,
306
- POWER_SUPPLY_PROP_FCC_DELTA,
307
- POWER_SUPPLY_PROP_ICL_REDUCTION,
308
- POWER_SUPPLY_PROP_PARALLEL_MODE,
309
- POWER_SUPPLY_PROP_DIE_HEALTH,
310
- POWER_SUPPLY_PROP_CONNECTOR_HEALTH,
311
- POWER_SUPPLY_PROP_CTM_CURRENT_MAX,
312
- POWER_SUPPLY_PROP_HW_CURRENT_MAX,
313
- POWER_SUPPLY_PROP_PR_SWAP,
314
- POWER_SUPPLY_PROP_CC_STEP,
315
- POWER_SUPPLY_PROP_CC_STEP_SEL,
316
- POWER_SUPPLY_PROP_SW_JEITA_ENABLED,
317
- POWER_SUPPLY_PROP_PD_VOLTAGE_MAX,
318
- POWER_SUPPLY_PROP_PD_VOLTAGE_MIN,
319
- POWER_SUPPLY_PROP_SDP_CURRENT_MAX,
320
- POWER_SUPPLY_PROP_CONNECTOR_TYPE,
321
- POWER_SUPPLY_PROP_PARALLEL_BATFET_MODE,
322
- POWER_SUPPLY_PROP_PARALLEL_FCC_MAX,
323
- POWER_SUPPLY_PROP_MIN_ICL,
324
- POWER_SUPPLY_PROP_MOISTURE_DETECTED,
325
- POWER_SUPPLY_PROP_BATT_PROFILE_VERSION,
326
- POWER_SUPPLY_PROP_BATT_FULL_CURRENT,
327
- POWER_SUPPLY_PROP_RECHARGE_SOC,
328
- POWER_SUPPLY_PROP_HVDCP_OPTI_ALLOWED,
329
- POWER_SUPPLY_PROP_SMB_EN_MODE,
330
- POWER_SUPPLY_PROP_SMB_EN_REASON,
331
- POWER_SUPPLY_PROP_ESR_ACTUAL,
332
- POWER_SUPPLY_PROP_ESR_NOMINAL,
333
- POWER_SUPPLY_PROP_SOH,
334
- POWER_SUPPLY_PROP_CLEAR_SOH,
335
- POWER_SUPPLY_PROP_FORCE_RECHARGE,
336
- POWER_SUPPLY_PROP_FCC_STEPPER_ENABLE,
337
- POWER_SUPPLY_PROP_TOGGLE_STAT,
338
- POWER_SUPPLY_PROP_MAIN_FCC_MAX,
339
- POWER_SUPPLY_PROP_FG_RESET,
340
- POWER_SUPPLY_PROP_QC_OPTI_DISABLE,
341
- POWER_SUPPLY_PROP_CC_SOC,
342
- POWER_SUPPLY_PROP_BATT_AGE_LEVEL,
343
- POWER_SUPPLY_PROP_SCALE_MODE_EN,
344
- POWER_SUPPLY_PROP_VOLTAGE_VPH,
345
- POWER_SUPPLY_PROP_CHIP_VERSION,
346
- POWER_SUPPLY_PROP_THERM_ICL_LIMIT,
347
- POWER_SUPPLY_PROP_DC_RESET,
348
- POWER_SUPPLY_PROP_VOLTAGE_MAX_LIMIT,
349
- POWER_SUPPLY_PROP_REAL_CAPACITY,
350
- POWER_SUPPLY_PROP_FORCE_MAIN_ICL,
351
- POWER_SUPPLY_PROP_FORCE_MAIN_FCC,
352
- POWER_SUPPLY_PROP_COMP_CLAMP_LEVEL,
353
- POWER_SUPPLY_PROP_ADAPTER_CC_MODE,
354
- POWER_SUPPLY_PROP_SKIN_HEALTH,
355
- POWER_SUPPLY_PROP_CHARGE_DISABLE,
356
- POWER_SUPPLY_PROP_ADAPTER_DETAILS,
357
- POWER_SUPPLY_PROP_DEAD_BATTERY,
358
- POWER_SUPPLY_PROP_VOLTAGE_FIFO,
359
- POWER_SUPPLY_PROP_CC_UAH,
360
- POWER_SUPPLY_PROP_OPERATING_FREQ,
361
- POWER_SUPPLY_PROP_AICL_DELAY,
362
- POWER_SUPPLY_PROP_AICL_ICL,
363
- POWER_SUPPLY_PROP_RTX,
364
- POWER_SUPPLY_PROP_CUTOFF_SOC,
365
- POWER_SUPPLY_PROP_SYS_SOC,
366
- POWER_SUPPLY_PROP_BATT_SOC,
367
- /* Capacity Estimation */
368
- POWER_SUPPLY_PROP_BATT_CE_CTRL,
369
- POWER_SUPPLY_PROP_CHARGE_FULL_ESTIMATE,
370
- /* Resistance Estimaton */
371
- POWER_SUPPLY_PROP_RESISTANCE_AVG,
372
- POWER_SUPPLY_PROP_RES_FILTER_COUNT,
373
- POWER_SUPPLY_PROP_AICL_DONE,
374
- POWER_SUPPLY_PROP_VOLTAGE_STEP,
375
- POWER_SUPPLY_PROP_OTG_FASTROLESWAP,
376
- POWER_SUPPLY_PROP_APSD_RERUN,
377
- POWER_SUPPLY_PROP_APSD_TIMEOUT,
174
+ POWER_SUPPLY_PROP_MANUFACTURE_YEAR,
175
+ POWER_SUPPLY_PROP_MANUFACTURE_MONTH,
176
+ POWER_SUPPLY_PROP_MANUFACTURE_DAY,
177
+#if defined(CONFIG_NO_GKI)
378178 /* Charge pump properties */
379
- POWER_SUPPLY_PROP_CP_STATUS1,
380
- POWER_SUPPLY_PROP_CP_STATUS2,
381
- POWER_SUPPLY_PROP_CP_ENABLE,
179
+ POWER_SUPPLY_PROP_CP_ALARM_STATUS,
180
+ POWER_SUPPLY_PROP_CP_BAT_OVP_ALARM,
181
+ POWER_SUPPLY_PROP_CP_BAT_OCP_ALARM,
182
+ POWER_SUPPLY_PROP_CP_BAT_UCP_ALARM,
183
+ POWER_SUPPLY_PROP_CP_BUS_OVP_ALARM,
184
+ POWER_SUPPLY_PROP_CP_BUS_OCP_ALARM,
185
+ POWER_SUPPLY_PROP_CP_BAT_THERM_ALARM,
186
+ POWER_SUPPLY_PROP_CP_BUS_THERM_ALARM,
187
+ POWER_SUPPLY_PROP_CP_DIE_THERM_ALARM,
188
+ POWER_SUPPLY_PROP_CP_FAULT_STATUS,
189
+ POWER_SUPPLY_PROP_CP_BAT_OVP_FAULT,
190
+ POWER_SUPPLY_PROP_CP_BAT_OCP_FAULT,
191
+ POWER_SUPPLY_PROP_CP_BUS_OVP_FAULT,
192
+ POWER_SUPPLY_PROP_CP_BUS_OCP_FAULT,
193
+ POWER_SUPPLY_PROP_CP_BAT_THERM_FAULT,
194
+ POWER_SUPPLY_PROP_CP_BUS_THERM_FAULT,
195
+ POWER_SUPPLY_PROP_CP_DIE_THERM_FAULT,
196
+ POWER_SUPPLY_PROP_CP_VBUS_ERROR_STATUS,
197
+ POWER_SUPPLY_PROP_CP_VBUS_HERROR_STATUS,
198
+ POWER_SUPPLY_PROP_CP_VBUS_LERROR_STATUS,
199
+ POWER_SUPPLY_PROP_CP_CHARGING_ENABLED,
200
+ POWER_SUPPLY_PROP_CP_WDT_EN,
201
+ POWER_SUPPLY_PROP_CP_VBUS,
202
+ POWER_SUPPLY_PROP_CP_IBUS,
382203 POWER_SUPPLY_PROP_CP_SWITCHER_EN,
383
- POWER_SUPPLY_PROP_CP_DIE_TEMP,
204
+ POWER_SUPPLY_PROP_CP_BAT_TEMPERATURE,
205
+ POWER_SUPPLY_PROP_CP_BUS_TEMPERATURE,
206
+ POWER_SUPPLY_PROP_CP_DIE_TEMPERATURE,
384207 POWER_SUPPLY_PROP_CP_ISNS,
385
- POWER_SUPPLY_PROP_CP_ISNS_SLAVE,
386208 POWER_SUPPLY_PROP_CP_TOGGLE_SWITCHER,
387209 POWER_SUPPLY_PROP_CP_IRQ_STATUS,
388210 POWER_SUPPLY_PROP_CP_ILIM,
389
- POWER_SUPPLY_PROP_IRQ_STATUS,
390
- POWER_SUPPLY_PROP_PARALLEL_OUTPUT_MODE,
391
- POWER_SUPPLY_PROP_ALIGNMENT,
392
- POWER_SUPPLY_PROP_MOISTURE_DETECTION_ENABLE,
393
- POWER_SUPPLY_PROP_CC_TOGGLE_ENABLE,
394
- POWER_SUPPLY_PROP_FG_TYPE,
395
- POWER_SUPPLY_PROP_CHARGER_STATUS,
396
- /* Local extensions of type int64_t */
397
- POWER_SUPPLY_PROP_CHARGE_COUNTER_EXT,
398
- POWER_SUPPLY_PROP_CHARGE_CHARGER_STATE,
211
+#endif
399212 /* Properties of type `const char *' */
400213 POWER_SUPPLY_PROP_MODEL_NAME,
401
- POWER_SUPPLY_PROP_PTMC_ID,
402214 POWER_SUPPLY_PROP_MANUFACTURER,
403
- POWER_SUPPLY_PROP_BATTERY_TYPE,
404
- POWER_SUPPLY_PROP_CYCLE_COUNTS,
405
- /*
406
- * Add local extensions for properties with string values between
407
- * MODEL_NAME and SERIAL_NUMBER. Don't add below SERIAL_NUMBER.
408
- */
409215 POWER_SUPPLY_PROP_SERIAL_NUMBER,
410216 };
411217
....@@ -422,17 +228,10 @@
422228 POWER_SUPPLY_TYPE_USB_PD, /* Power Delivery Port */
423229 POWER_SUPPLY_TYPE_USB_PD_DRP, /* PD Dual Role Port */
424230 POWER_SUPPLY_TYPE_APPLE_BRICK_ID, /* Apple Charging Method */
425
- POWER_SUPPLY_TYPE_USB_HVDCP, /* High Voltage DCP */
426
- POWER_SUPPLY_TYPE_USB_HVDCP_3, /* Efficient High Voltage DCP */
427
- POWER_SUPPLY_TYPE_USB_HVDCP_3P5, /* Efficient High Voltage DCP */
428
- POWER_SUPPLY_TYPE_WIRELESS, /* Accessory Charger Adapters */
429
- POWER_SUPPLY_TYPE_USB_FLOAT, /* Floating charger */
430
- POWER_SUPPLY_TYPE_BMS, /* Battery Monitor System */
431
- POWER_SUPPLY_TYPE_PARALLEL, /* Parallel Path */
432
- POWER_SUPPLY_TYPE_MAIN, /* Main Path */
433
- POWER_SUPPLY_TYPE_UFP, /* Type-C UFP */
434
- POWER_SUPPLY_TYPE_DFP, /* Type-C DFP */
231
+ POWER_SUPPLY_TYPE_WIRELESS, /* Wireless */
232
+#if defined(CONFIG_NO_GKI)
435233 POWER_SUPPLY_TYPE_CHARGE_PUMP, /* Charge Pump */
234
+#endif
436235 };
437236
438237 enum power_supply_usb_type {
....@@ -448,45 +247,6 @@
448247 POWER_SUPPLY_USB_TYPE_APPLE_BRICK_ID, /* Apple Charging Method */
449248 };
450249
451
-/* Indicates USB Type-C CC connection status */
452
-enum power_supply_typec_mode {
453
- POWER_SUPPLY_TYPEC_NONE,
454
-
455
- /* Acting as source */
456
- POWER_SUPPLY_TYPEC_SINK, /* Rd only */
457
- POWER_SUPPLY_TYPEC_SINK_POWERED_CABLE, /* Rd/Ra */
458
- POWER_SUPPLY_TYPEC_SINK_DEBUG_ACCESSORY,/* Rd/Rd */
459
- POWER_SUPPLY_TYPEC_SINK_AUDIO_ADAPTER, /* Ra/Ra */
460
- POWER_SUPPLY_TYPEC_POWERED_CABLE_ONLY, /* Ra only */
461
-
462
- /* Acting as sink */
463
- POWER_SUPPLY_TYPEC_SOURCE_DEFAULT, /* Rp default */
464
- POWER_SUPPLY_TYPEC_SOURCE_MEDIUM, /* Rp 1.5A */
465
- POWER_SUPPLY_TYPEC_SOURCE_HIGH, /* Rp 3A */
466
- POWER_SUPPLY_TYPEC_DAM_DEFAULT, /* Rp-1.5A/Rp-3A */
467
- POWER_SUPPLY_TYPEC_DAM_MEDIUM, /* Rp-Default/Rp-1.5A */
468
- POWER_SUPPLY_TYPEC_DAM_HIGH, /* Rp-Default/Rp-3A */
469
-
470
- /* Non Compliant */
471
- POWER_SUPPLY_TYPEC_NON_COMPLIANT,
472
- POWER_SUPPLY_TYPEC_RP_STD_STD, /* Rp-Default/Rp-Default */
473
- POWER_SUPPLY_TYPEC_RP_MED_MED, /* Rp-1.5A/Rp-1.5A */
474
- POWER_SUPPLY_TYPEC_RP_HIGH_HIGH, /* Rp-3A/Rp-3A */
475
-};
476
-
477
-enum power_supply_typec_src_rp {
478
- POWER_SUPPLY_TYPEC_SRC_RP_STD,
479
- POWER_SUPPLY_TYPEC_SRC_RP_1P5A,
480
- POWER_SUPPLY_TYPEC_SRC_RP_3A
481
-};
482
-
483
-enum power_supply_typec_power_role {
484
- POWER_SUPPLY_TYPEC_PR_NONE, /* CC lines in high-Z */
485
- POWER_SUPPLY_TYPEC_PR_DUAL,
486
- POWER_SUPPLY_TYPEC_PR_SINK,
487
- POWER_SUPPLY_TYPEC_PR_SOURCE,
488
-};
489
-
490250 enum power_supply_notifier_events {
491251 PSY_EVENT_PROP_CHANGED,
492252 };
....@@ -494,7 +254,6 @@
494254 union power_supply_propval {
495255 int intval;
496256 const char *strval;
497
- int64_t int64val;
498257 };
499258
500259 struct device_node;
....@@ -508,17 +267,22 @@
508267 /* Driver private data */
509268 void *drv_data;
510269
270
+ /* Device specific sysfs attributes */
271
+ const struct attribute_group **attr_grp;
272
+
511273 char **supplied_to;
512274 size_t num_supplicants;
275
+
276
+ ANDROID_KABI_RESERVE(1);
513277 };
514278
515279 /* Description of power supply */
516280 struct power_supply_desc {
517281 const char *name;
518282 enum power_supply_type type;
519
- enum power_supply_usb_type *usb_types;
283
+ const enum power_supply_usb_type *usb_types;
520284 size_t num_usb_types;
521
- enum power_supply_property *properties;
285
+ const enum power_supply_property *properties;
522286 size_t num_properties;
523287
524288 /*
....@@ -551,6 +315,8 @@
551315 bool no_thermal;
552316 /* For APM emulation, think legacy userspace. */
553317 int use_for_apm;
318
+
319
+ ANDROID_KABI_RESERVE(1);
554320 };
555321
556322 struct power_supply {
....@@ -592,6 +358,8 @@
592358 struct led_trigger *charging_blink_full_solid_trig;
593359 char *charging_blink_full_solid_trig_name;
594360 #endif
361
+
362
+ ANDROID_KABI_RESERVE(1);
595363 };
596364
597365 /*
....@@ -613,6 +381,18 @@
613381 int use_for_apm;
614382 };
615383
384
+struct power_supply_battery_ocv_table {
385
+ int ocv; /* microVolts */
386
+ int capacity; /* percent */
387
+};
388
+
389
+struct power_supply_resistance_temp_table {
390
+ int temp; /* celsius */
391
+ int resistance; /* internal resistance percent */
392
+};
393
+
394
+#define POWER_SUPPLY_OCV_TEMP_MAX 20
395
+
616396 /*
617397 * This is the recommended struct to manage static battery parameters,
618398 * populated by power_supply_get_battery_info(). Most platform drivers should
....@@ -626,10 +406,29 @@
626406 int energy_full_design_uwh; /* microWatt-hours */
627407 int charge_full_design_uah; /* microAmp-hours */
628408 int voltage_min_design_uv; /* microVolts */
409
+ int voltage_max_design_uv; /* microVolts */
410
+ int tricklecharge_current_ua; /* microAmps */
629411 int precharge_current_ua; /* microAmps */
412
+ int precharge_voltage_max_uv; /* microVolts */
630413 int charge_term_current_ua; /* microAmps */
414
+ int charge_restart_voltage_uv; /* microVolts */
415
+ int overvoltage_limit_uv; /* microVolts */
631416 int constant_charge_current_max_ua; /* microAmps */
632417 int constant_charge_voltage_max_uv; /* microVolts */
418
+ int factory_internal_resistance_uohm; /* microOhms */
419
+ int ocv_temp[POWER_SUPPLY_OCV_TEMP_MAX];/* celsius */
420
+ int temp_ambient_alert_min; /* celsius */
421
+ int temp_ambient_alert_max; /* celsius */
422
+ int temp_alert_min; /* celsius */
423
+ int temp_alert_max; /* celsius */
424
+ int temp_min; /* celsius */
425
+ int temp_max; /* celsius */
426
+ struct power_supply_battery_ocv_table *ocv_table[POWER_SUPPLY_OCV_TEMP_MAX];
427
+ int ocv_table_size[POWER_SUPPLY_OCV_TEMP_MAX];
428
+ struct power_supply_resistance_temp_table *resist_table;
429
+ int resist_table_size;
430
+
431
+ ANDROID_KABI_RESERVE(1);
633432 };
634433
635434 extern struct atomic_notifier_head power_supply_notifier;
....@@ -640,12 +439,22 @@
640439 #ifdef CONFIG_OF
641440 extern struct power_supply *power_supply_get_by_phandle(struct device_node *np,
642441 const char *property);
442
+extern int power_supply_get_by_phandle_array(struct device_node *np,
443
+ const char *property,
444
+ struct power_supply **psy,
445
+ ssize_t size);
643446 extern struct power_supply *devm_power_supply_get_by_phandle(
644447 struct device *dev, const char *property);
645448 #else /* !CONFIG_OF */
646449 static inline struct power_supply *
647450 power_supply_get_by_phandle(struct device_node *np, const char *property)
648451 { return NULL; }
452
+static inline int
453
+power_supply_get_by_phandle_array(struct device_node *np,
454
+ const char *property,
455
+ struct power_supply **psy,
456
+ int size)
457
+{ return 0; }
649458 static inline struct power_supply *
650459 devm_power_supply_get_by_phandle(struct device *dev, const char *property)
651460 { return NULL; }
....@@ -653,6 +462,18 @@
653462
654463 extern int power_supply_get_battery_info(struct power_supply *psy,
655464 struct power_supply_battery_info *info);
465
+extern void power_supply_put_battery_info(struct power_supply *psy,
466
+ struct power_supply_battery_info *info);
467
+extern int power_supply_ocv2cap_simple(struct power_supply_battery_ocv_table *table,
468
+ int table_len, int ocv);
469
+extern struct power_supply_battery_ocv_table *
470
+power_supply_find_ocv2cap_table(struct power_supply_battery_info *info,
471
+ int temp, int *table_len);
472
+extern int power_supply_batinfo_ocv2cap(struct power_supply_battery_info *info,
473
+ int ocv, int temp);
474
+extern int
475
+power_supply_temp2resist_simple(struct power_supply_resistance_temp_table *table,
476
+ int table_len, int temp);
656477 extern void power_supply_changed(struct power_supply *psy);
657478 extern int power_supply_am_i_supplied(struct power_supply *psy);
658479 extern int power_supply_set_input_current_limit_from_supplier(
....@@ -668,9 +489,16 @@
668489 extern int power_supply_get_property(struct power_supply *psy,
669490 enum power_supply_property psp,
670491 union power_supply_propval *val);
492
+#if IS_ENABLED(CONFIG_POWER_SUPPLY)
671493 extern int power_supply_set_property(struct power_supply *psy,
672494 enum power_supply_property psp,
673495 const union power_supply_propval *val);
496
+#else
497
+static inline int power_supply_set_property(struct power_supply *psy,
498
+ enum power_supply_property psp,
499
+ const union power_supply_propval *val)
500
+{ return 0; }
501
+#endif
674502 extern int power_supply_property_is_writeable(struct power_supply *psy,
675503 enum power_supply_property psp);
676504 extern void power_supply_external_power_changed(struct power_supply *psy);
....@@ -754,4 +582,17 @@
754582 return 0;
755583 }
756584
585
+#ifdef CONFIG_POWER_SUPPLY_HWMON
586
+int power_supply_add_hwmon_sysfs(struct power_supply *psy);
587
+void power_supply_remove_hwmon_sysfs(struct power_supply *psy);
588
+#else
589
+static inline int power_supply_add_hwmon_sysfs(struct power_supply *psy)
590
+{
591
+ return 0;
592
+}
593
+
594
+static inline
595
+void power_supply_remove_hwmon_sysfs(struct power_supply *psy) {}
596
+#endif
597
+
757598 #endif /* __LINUX_POWER_SUPPLY_H__ */