From f9004dbfff8a3fbbd7e2a88c8a4327c7f2f8e5b2 Mon Sep 17 00:00:00 2001
From: hc <hc@nodka.com>
Date: Wed, 31 Jan 2024 01:04:47 +0000
Subject: [PATCH] add driver 5G

---
 kernel/include/linux/power_supply.h |  444 +++++++++++++++++-------------------------------------
 1 files changed, 143 insertions(+), 301 deletions(-)

diff --git a/kernel/include/linux/power_supply.h b/kernel/include/linux/power_supply.h
index a19b2fc..e85901b 100644
--- a/kernel/include/linux/power_supply.h
+++ b/kernel/include/linux/power_supply.h
@@ -1,3 +1,4 @@
+/* SPDX-License-Identifier: GPL-2.0-only */
 /*
  *  Universal power supply monitor class
  *
@@ -6,8 +7,6 @@
  *  Copyright © 2003  Ian Molton <spyro@f2s.com>
  *
  *  Modified: 2004, Oct     Szabolcs Gyurko
- *
- *  You may use this code as per GPL version 2
  */
 
 #ifndef __LINUX_POWER_SUPPLY_H__
@@ -18,7 +17,7 @@
 #include <linux/leds.h>
 #include <linux/spinlock.h>
 #include <linux/notifier.h>
-#include <linux/types.h>
+#include <linux/android_kabi.h>
 
 /*
  * All voltages, currents, charges, energies, time and temperatures in uV,
@@ -41,12 +40,22 @@
 	POWER_SUPPLY_STATUS_FULL,
 };
 
+/* What algorithm is the charger using? */
 enum {
 	POWER_SUPPLY_CHARGE_TYPE_UNKNOWN = 0,
 	POWER_SUPPLY_CHARGE_TYPE_NONE,
-	POWER_SUPPLY_CHARGE_TYPE_TRICKLE,
-	POWER_SUPPLY_CHARGE_TYPE_FAST,
-	POWER_SUPPLY_CHARGE_TYPE_TAPER,
+	POWER_SUPPLY_CHARGE_TYPE_TRICKLE,	/* slow speed */
+	POWER_SUPPLY_CHARGE_TYPE_FAST,		/* fast speed */
+	POWER_SUPPLY_CHARGE_TYPE_STANDARD,	/* normal speed */
+	POWER_SUPPLY_CHARGE_TYPE_ADAPTIVE,	/* dynamically adjusted speed */
+	POWER_SUPPLY_CHARGE_TYPE_CUSTOM,	/* use CHARGE_CONTROL_* props */
+	POWER_SUPPLY_CHARGE_TYPE_LONGLIFE,	/* slow speed, longer life */
+
+	/*
+	 * force to 50 to minimize the chances of userspace binary
+	 * incompatibility on newer upstream kernels
+	 */
+	POWER_SUPPLY_CHARGE_TYPE_TAPER = 50,	/* charging in CV phase */
 };
 
 enum {
@@ -60,6 +69,7 @@
 	POWER_SUPPLY_HEALTH_WATCHDOG_TIMER_EXPIRE,
 	POWER_SUPPLY_HEALTH_SAFETY_TIMER_EXPIRE,
 	POWER_SUPPLY_HEALTH_OVERCURRENT,
+	POWER_SUPPLY_HEALTH_CALIBRATION_REQUIRED,
 	POWER_SUPPLY_HEALTH_WARM,
 	POWER_SUPPLY_HEALTH_COOL,
 	POWER_SUPPLY_HEALTH_HOT,
@@ -88,84 +98,6 @@
 	POWER_SUPPLY_SCOPE_UNKNOWN = 0,
 	POWER_SUPPLY_SCOPE_SYSTEM,
 	POWER_SUPPLY_SCOPE_DEVICE,
-};
-
-enum {
-	POWER_SUPPLY_DP_DM_UNKNOWN = 0,
-	POWER_SUPPLY_DP_DM_PREPARE = 1,
-	POWER_SUPPLY_DP_DM_UNPREPARE = 2,
-	POWER_SUPPLY_DP_DM_CONFIRMED_HVDCP3 = 3,
-	POWER_SUPPLY_DP_DM_DP_PULSE = 4,
-	POWER_SUPPLY_DP_DM_DM_PULSE = 5,
-	POWER_SUPPLY_DP_DM_DP0P6_DMF = 6,
-	POWER_SUPPLY_DP_DM_DP0P6_DM3P3 = 7,
-	POWER_SUPPLY_DP_DM_DPF_DMF = 8,
-	POWER_SUPPLY_DP_DM_DPR_DMR = 9,
-	POWER_SUPPLY_DP_DM_HVDCP3_SUPPORTED = 10,
-	POWER_SUPPLY_DP_DM_ICL_DOWN = 11,
-	POWER_SUPPLY_DP_DM_ICL_UP = 12,
-	POWER_SUPPLY_DP_DM_FORCE_5V = 13,
-	POWER_SUPPLY_DP_DM_FORCE_9V = 14,
-	POWER_SUPPLY_DP_DM_FORCE_12V = 15,
-	POWER_SUPPLY_DP_DM_CONFIRMED_HVDCP3P5 = 16,
-};
-
-enum {
-	POWER_SUPPLY_PL_NONE,
-	POWER_SUPPLY_PL_USBIN_USBIN,
-	POWER_SUPPLY_PL_USBIN_USBIN_EXT,
-	POWER_SUPPLY_PL_USBMID_USBMID,
-};
-
-enum {
-	POWER_SUPPLY_CHARGER_SEC_NONE = 0,
-	POWER_SUPPLY_CHARGER_SEC_CP,
-	POWER_SUPPLY_CHARGER_SEC_PL,
-	POWER_SUPPLY_CHARGER_SEC_CP_PL,
-};
-
-enum {
-	POWER_SUPPLY_CP_NONE = 0,
-	POWER_SUPPLY_CP_HVDCP3,
-	POWER_SUPPLY_CP_HVDCP3P5,
-	POWER_SUPPLY_CP_PPS,
-	POWER_SUPPLY_CP_WIRELESS,
-};
-
-enum {
-	POWER_SUPPLY_CONNECTOR_TYPEC,
-	POWER_SUPPLY_CONNECTOR_MICRO_USB,
-};
-
-enum {
-	POWER_SUPPLY_PL_STACKED_BATFET,
-	POWER_SUPPLY_PL_NON_STACKED_BATFET,
-};
-
-/* Parallel output connection topology */
-enum {
-	POWER_SUPPLY_PL_OUTPUT_NONE,
-	POWER_SUPPLY_PL_OUTPUT_VPH,
-	POWER_SUPPLY_PL_OUTPUT_VBAT,
-};
-
-enum {
-	POWER_SUPPLY_PD_INACTIVE = 0,
-	POWER_SUPPLY_PD_ACTIVE,
-	POWER_SUPPLY_PD_PPS_ACTIVE,
-};
-
-enum {
-	POWER_SUPPLY_QC_CTM_DISABLE = BIT(0),
-	POWER_SUPPLY_QC_THERMAL_BALANCE_DISABLE = BIT(1),
-	POWER_SUPPLY_QC_INOV_THERMAL_DISABLE = BIT(2),
-};
-
-enum {
-	POWER_SUPPLY_ALIGN_CHECKING = 0,
-	POWER_SUPPLY_ALIGN_MOVE,
-	POWER_SUPPLY_ALIGN_CENTERED,
-	POWER_SUPPLY_ALIGN_ERROR,
 };
 
 enum power_supply_property {
@@ -205,7 +137,11 @@
 	POWER_SUPPLY_PROP_CONSTANT_CHARGE_VOLTAGE_MAX,
 	POWER_SUPPLY_PROP_CHARGE_CONTROL_LIMIT,
 	POWER_SUPPLY_PROP_CHARGE_CONTROL_LIMIT_MAX,
+	POWER_SUPPLY_PROP_CHARGE_CONTROL_START_THRESHOLD, /* in percents! */
+	POWER_SUPPLY_PROP_CHARGE_CONTROL_END_THRESHOLD, /* in percents! */
 	POWER_SUPPLY_PROP_INPUT_CURRENT_LIMIT,
+	POWER_SUPPLY_PROP_INPUT_VOLTAGE_LIMIT,
+	POWER_SUPPLY_PROP_INPUT_POWER_LIMIT,
 	POWER_SUPPLY_PROP_ENERGY_FULL_DESIGN,
 	POWER_SUPPLY_PROP_ENERGY_EMPTY_DESIGN,
 	POWER_SUPPLY_PROP_ENERGY_FULL,
@@ -215,6 +151,7 @@
 	POWER_SUPPLY_PROP_CAPACITY, /* in percents! */
 	POWER_SUPPLY_PROP_CAPACITY_ALERT_MIN, /* in percents! */
 	POWER_SUPPLY_PROP_CAPACITY_ALERT_MAX, /* in percents! */
+	POWER_SUPPLY_PROP_CAPACITY_ERROR_MARGIN, /* in percents! */
 	POWER_SUPPLY_PROP_CAPACITY_LEVEL,
 	POWER_SUPPLY_PROP_TEMP,
 	POWER_SUPPLY_PROP_TEMP_MAX,
@@ -234,178 +171,47 @@
 	POWER_SUPPLY_PROP_PRECHARGE_CURRENT,
 	POWER_SUPPLY_PROP_CHARGE_TERM_CURRENT,
 	POWER_SUPPLY_PROP_CALIBRATE,
-	/* Local extensions */
-	POWER_SUPPLY_PROP_USB_HC,
-	POWER_SUPPLY_PROP_USB_OTG,
-	POWER_SUPPLY_PROP_CHARGE_ENABLED,
-	POWER_SUPPLY_PROP_SET_SHIP_MODE,
-	POWER_SUPPLY_PROP_REAL_TYPE,
-	POWER_SUPPLY_PROP_CHARGE_NOW_RAW,
-	POWER_SUPPLY_PROP_CHARGE_NOW_ERROR,
-	POWER_SUPPLY_PROP_CAPACITY_RAW,
-	POWER_SUPPLY_PROP_BATTERY_CHARGING_ENABLED,
-	POWER_SUPPLY_PROP_CHARGING_ENABLED,
-	POWER_SUPPLY_PROP_STEP_CHARGING_ENABLED,
-	POWER_SUPPLY_PROP_STEP_CHARGING_STEP,
-	POWER_SUPPLY_PROP_PIN_ENABLED,
-	POWER_SUPPLY_PROP_INPUT_SUSPEND,
-	POWER_SUPPLY_PROP_INPUT_VOLTAGE_REGULATION,
-	POWER_SUPPLY_PROP_INPUT_CURRENT_MAX,
-	POWER_SUPPLY_PROP_INPUT_CURRENT_TRIM,
-	POWER_SUPPLY_PROP_INPUT_CURRENT_SETTLED,
-	POWER_SUPPLY_PROP_INPUT_VOLTAGE_SETTLED,
-	POWER_SUPPLY_PROP_VCHG_LOOP_DBC_BYPASS,
-	POWER_SUPPLY_PROP_CHARGE_COUNTER_SHADOW,
-	POWER_SUPPLY_PROP_HI_POWER,
-	POWER_SUPPLY_PROP_LOW_POWER,
-	POWER_SUPPLY_PROP_COOL_TEMP,
-	POWER_SUPPLY_PROP_WARM_TEMP,
-	POWER_SUPPLY_PROP_COLD_TEMP,
-	POWER_SUPPLY_PROP_HOT_TEMP,
-	POWER_SUPPLY_PROP_SYSTEM_TEMP_LEVEL,
-	POWER_SUPPLY_PROP_RESISTANCE,
-	POWER_SUPPLY_PROP_RESISTANCE_CAPACITIVE,
-	POWER_SUPPLY_PROP_RESISTANCE_ID, /* in Ohms */
-	POWER_SUPPLY_PROP_RESISTANCE_NOW,
-	POWER_SUPPLY_PROP_FLASH_CURRENT_MAX,
-	POWER_SUPPLY_PROP_UPDATE_NOW,
-	POWER_SUPPLY_PROP_ESR_COUNT,
-	POWER_SUPPLY_PROP_BUCK_FREQ,
-	POWER_SUPPLY_PROP_BOOST_CURRENT,
-	POWER_SUPPLY_PROP_SAFETY_TIMER_ENABLE,
-	POWER_SUPPLY_PROP_CHARGE_DONE,
-	POWER_SUPPLY_PROP_FLASH_ACTIVE,
-	POWER_SUPPLY_PROP_FLASH_TRIGGER,
-	POWER_SUPPLY_PROP_FORCE_TLIM,
-	POWER_SUPPLY_PROP_DP_DM,
-	POWER_SUPPLY_PROP_INPUT_CURRENT_LIMITED,
-	POWER_SUPPLY_PROP_INPUT_CURRENT_NOW,
-	POWER_SUPPLY_PROP_CHARGE_QNOVO_ENABLE,
-	POWER_SUPPLY_PROP_CURRENT_QNOVO,
-	POWER_SUPPLY_PROP_VOLTAGE_QNOVO,
-	POWER_SUPPLY_PROP_RERUN_AICL,
-	POWER_SUPPLY_PROP_CYCLE_COUNT_ID,
-	POWER_SUPPLY_PROP_SAFETY_TIMER_EXPIRED,
-	POWER_SUPPLY_PROP_RESTRICTED_CHARGING,
-	POWER_SUPPLY_PROP_CURRENT_CAPABILITY,
-	POWER_SUPPLY_PROP_TYPEC_MODE,
-	POWER_SUPPLY_PROP_TYPEC_CC_ORIENTATION, /* 0: N/C, 1: CC1, 2: CC2 */
-	POWER_SUPPLY_PROP_TYPEC_POWER_ROLE,
-	POWER_SUPPLY_PROP_TYPEC_SRC_RP,
-	POWER_SUPPLY_PROP_PD_ALLOWED,
-	POWER_SUPPLY_PROP_PD_ACTIVE,
-	POWER_SUPPLY_PROP_PD_IN_HARD_RESET,
-	POWER_SUPPLY_PROP_PD_CURRENT_MAX,
-	POWER_SUPPLY_PROP_PD_USB_SUSPEND_SUPPORTED,
-	POWER_SUPPLY_PROP_CHARGER_TEMP,
-	POWER_SUPPLY_PROP_CHARGER_TEMP_MAX,
-	POWER_SUPPLY_PROP_PARALLEL_DISABLE,
-	POWER_SUPPLY_PROP_PE_START,
-	POWER_SUPPLY_PROP_SOC_REPORTING_READY,
-	POWER_SUPPLY_PROP_DEBUG_BATTERY,
-	POWER_SUPPLY_PROP_FCC_DELTA,
-	POWER_SUPPLY_PROP_ICL_REDUCTION,
-	POWER_SUPPLY_PROP_PARALLEL_MODE,
-	POWER_SUPPLY_PROP_DIE_HEALTH,
-	POWER_SUPPLY_PROP_CONNECTOR_HEALTH,
-	POWER_SUPPLY_PROP_CTM_CURRENT_MAX,
-	POWER_SUPPLY_PROP_HW_CURRENT_MAX,
-	POWER_SUPPLY_PROP_PR_SWAP,
-	POWER_SUPPLY_PROP_CC_STEP,
-	POWER_SUPPLY_PROP_CC_STEP_SEL,
-	POWER_SUPPLY_PROP_SW_JEITA_ENABLED,
-	POWER_SUPPLY_PROP_PD_VOLTAGE_MAX,
-	POWER_SUPPLY_PROP_PD_VOLTAGE_MIN,
-	POWER_SUPPLY_PROP_SDP_CURRENT_MAX,
-	POWER_SUPPLY_PROP_CONNECTOR_TYPE,
-	POWER_SUPPLY_PROP_PARALLEL_BATFET_MODE,
-	POWER_SUPPLY_PROP_PARALLEL_FCC_MAX,
-	POWER_SUPPLY_PROP_MIN_ICL,
-	POWER_SUPPLY_PROP_MOISTURE_DETECTED,
-	POWER_SUPPLY_PROP_BATT_PROFILE_VERSION,
-	POWER_SUPPLY_PROP_BATT_FULL_CURRENT,
-	POWER_SUPPLY_PROP_RECHARGE_SOC,
-	POWER_SUPPLY_PROP_HVDCP_OPTI_ALLOWED,
-	POWER_SUPPLY_PROP_SMB_EN_MODE,
-	POWER_SUPPLY_PROP_SMB_EN_REASON,
-	POWER_SUPPLY_PROP_ESR_ACTUAL,
-	POWER_SUPPLY_PROP_ESR_NOMINAL,
-	POWER_SUPPLY_PROP_SOH,
-	POWER_SUPPLY_PROP_CLEAR_SOH,
-	POWER_SUPPLY_PROP_FORCE_RECHARGE,
-	POWER_SUPPLY_PROP_FCC_STEPPER_ENABLE,
-	POWER_SUPPLY_PROP_TOGGLE_STAT,
-	POWER_SUPPLY_PROP_MAIN_FCC_MAX,
-	POWER_SUPPLY_PROP_FG_RESET,
-	POWER_SUPPLY_PROP_QC_OPTI_DISABLE,
-	POWER_SUPPLY_PROP_CC_SOC,
-	POWER_SUPPLY_PROP_BATT_AGE_LEVEL,
-	POWER_SUPPLY_PROP_SCALE_MODE_EN,
-	POWER_SUPPLY_PROP_VOLTAGE_VPH,
-	POWER_SUPPLY_PROP_CHIP_VERSION,
-	POWER_SUPPLY_PROP_THERM_ICL_LIMIT,
-	POWER_SUPPLY_PROP_DC_RESET,
-	POWER_SUPPLY_PROP_VOLTAGE_MAX_LIMIT,
-	POWER_SUPPLY_PROP_REAL_CAPACITY,
-	POWER_SUPPLY_PROP_FORCE_MAIN_ICL,
-	POWER_SUPPLY_PROP_FORCE_MAIN_FCC,
-	POWER_SUPPLY_PROP_COMP_CLAMP_LEVEL,
-	POWER_SUPPLY_PROP_ADAPTER_CC_MODE,
-	POWER_SUPPLY_PROP_SKIN_HEALTH,
-	POWER_SUPPLY_PROP_CHARGE_DISABLE,
-	POWER_SUPPLY_PROP_ADAPTER_DETAILS,
-	POWER_SUPPLY_PROP_DEAD_BATTERY,
-	POWER_SUPPLY_PROP_VOLTAGE_FIFO,
-	POWER_SUPPLY_PROP_CC_UAH,
-	POWER_SUPPLY_PROP_OPERATING_FREQ,
-	POWER_SUPPLY_PROP_AICL_DELAY,
-	POWER_SUPPLY_PROP_AICL_ICL,
-	POWER_SUPPLY_PROP_RTX,
-	POWER_SUPPLY_PROP_CUTOFF_SOC,
-	POWER_SUPPLY_PROP_SYS_SOC,
-	POWER_SUPPLY_PROP_BATT_SOC,
-	/* Capacity Estimation */
-	POWER_SUPPLY_PROP_BATT_CE_CTRL,
-	POWER_SUPPLY_PROP_CHARGE_FULL_ESTIMATE,
-	/* Resistance Estimaton */
-	POWER_SUPPLY_PROP_RESISTANCE_AVG,
-	POWER_SUPPLY_PROP_RES_FILTER_COUNT,
-	POWER_SUPPLY_PROP_AICL_DONE,
-	POWER_SUPPLY_PROP_VOLTAGE_STEP,
-	POWER_SUPPLY_PROP_OTG_FASTROLESWAP,
-	POWER_SUPPLY_PROP_APSD_RERUN,
-	POWER_SUPPLY_PROP_APSD_TIMEOUT,
+	POWER_SUPPLY_PROP_MANUFACTURE_YEAR,
+	POWER_SUPPLY_PROP_MANUFACTURE_MONTH,
+	POWER_SUPPLY_PROP_MANUFACTURE_DAY,
+#if defined(CONFIG_NO_GKI)
 	/* Charge pump properties */
-	POWER_SUPPLY_PROP_CP_STATUS1,
-	POWER_SUPPLY_PROP_CP_STATUS2,
-	POWER_SUPPLY_PROP_CP_ENABLE,
+	POWER_SUPPLY_PROP_CP_ALARM_STATUS,
+	POWER_SUPPLY_PROP_CP_BAT_OVP_ALARM,
+	POWER_SUPPLY_PROP_CP_BAT_OCP_ALARM,
+	POWER_SUPPLY_PROP_CP_BAT_UCP_ALARM,
+	POWER_SUPPLY_PROP_CP_BUS_OVP_ALARM,
+	POWER_SUPPLY_PROP_CP_BUS_OCP_ALARM,
+	POWER_SUPPLY_PROP_CP_BAT_THERM_ALARM,
+	POWER_SUPPLY_PROP_CP_BUS_THERM_ALARM,
+	POWER_SUPPLY_PROP_CP_DIE_THERM_ALARM,
+	POWER_SUPPLY_PROP_CP_FAULT_STATUS,
+	POWER_SUPPLY_PROP_CP_BAT_OVP_FAULT,
+	POWER_SUPPLY_PROP_CP_BAT_OCP_FAULT,
+	POWER_SUPPLY_PROP_CP_BUS_OVP_FAULT,
+	POWER_SUPPLY_PROP_CP_BUS_OCP_FAULT,
+	POWER_SUPPLY_PROP_CP_BAT_THERM_FAULT,
+	POWER_SUPPLY_PROP_CP_BUS_THERM_FAULT,
+	POWER_SUPPLY_PROP_CP_DIE_THERM_FAULT,
+	POWER_SUPPLY_PROP_CP_VBUS_ERROR_STATUS,
+	POWER_SUPPLY_PROP_CP_VBUS_HERROR_STATUS,
+	POWER_SUPPLY_PROP_CP_VBUS_LERROR_STATUS,
+	POWER_SUPPLY_PROP_CP_CHARGING_ENABLED,
+	POWER_SUPPLY_PROP_CP_WDT_EN,
+	POWER_SUPPLY_PROP_CP_VBUS,
+	POWER_SUPPLY_PROP_CP_IBUS,
 	POWER_SUPPLY_PROP_CP_SWITCHER_EN,
-	POWER_SUPPLY_PROP_CP_DIE_TEMP,
+	POWER_SUPPLY_PROP_CP_BAT_TEMPERATURE,
+	POWER_SUPPLY_PROP_CP_BUS_TEMPERATURE,
+	POWER_SUPPLY_PROP_CP_DIE_TEMPERATURE,
 	POWER_SUPPLY_PROP_CP_ISNS,
-	POWER_SUPPLY_PROP_CP_ISNS_SLAVE,
 	POWER_SUPPLY_PROP_CP_TOGGLE_SWITCHER,
 	POWER_SUPPLY_PROP_CP_IRQ_STATUS,
 	POWER_SUPPLY_PROP_CP_ILIM,
-	POWER_SUPPLY_PROP_IRQ_STATUS,
-	POWER_SUPPLY_PROP_PARALLEL_OUTPUT_MODE,
-	POWER_SUPPLY_PROP_ALIGNMENT,
-	POWER_SUPPLY_PROP_MOISTURE_DETECTION_ENABLE,
-	POWER_SUPPLY_PROP_CC_TOGGLE_ENABLE,
-	POWER_SUPPLY_PROP_FG_TYPE,
-	POWER_SUPPLY_PROP_CHARGER_STATUS,
-	/* Local extensions of type int64_t */
-	POWER_SUPPLY_PROP_CHARGE_COUNTER_EXT,
-	POWER_SUPPLY_PROP_CHARGE_CHARGER_STATE,
+#endif
 	/* Properties of type `const char *' */
 	POWER_SUPPLY_PROP_MODEL_NAME,
-	POWER_SUPPLY_PROP_PTMC_ID,
 	POWER_SUPPLY_PROP_MANUFACTURER,
-	POWER_SUPPLY_PROP_BATTERY_TYPE,
-	POWER_SUPPLY_PROP_CYCLE_COUNTS,
-	/*
-	 * Add local extensions for properties with string values between
-	 * MODEL_NAME and SERIAL_NUMBER. Don't add below SERIAL_NUMBER.
-	 */
 	POWER_SUPPLY_PROP_SERIAL_NUMBER,
 };
 
@@ -422,17 +228,10 @@
 	POWER_SUPPLY_TYPE_USB_PD,		/* Power Delivery Port */
 	POWER_SUPPLY_TYPE_USB_PD_DRP,		/* PD Dual Role Port */
 	POWER_SUPPLY_TYPE_APPLE_BRICK_ID,	/* Apple Charging Method */
-	POWER_SUPPLY_TYPE_USB_HVDCP,		/* High Voltage DCP */
-	POWER_SUPPLY_TYPE_USB_HVDCP_3,		/* Efficient High Voltage DCP */
-	POWER_SUPPLY_TYPE_USB_HVDCP_3P5,	/* Efficient High Voltage DCP */
-	POWER_SUPPLY_TYPE_WIRELESS,		/* Accessory Charger Adapters */
-	POWER_SUPPLY_TYPE_USB_FLOAT,		/* Floating charger */
-	POWER_SUPPLY_TYPE_BMS,			/* Battery Monitor System */
-	POWER_SUPPLY_TYPE_PARALLEL,		/* Parallel Path */
-	POWER_SUPPLY_TYPE_MAIN,			/* Main Path */
-	POWER_SUPPLY_TYPE_UFP,			/* Type-C UFP */
-	POWER_SUPPLY_TYPE_DFP,			/* Type-C DFP */
+	POWER_SUPPLY_TYPE_WIRELESS,		/* Wireless */
+#if defined(CONFIG_NO_GKI)
 	POWER_SUPPLY_TYPE_CHARGE_PUMP,		/* Charge Pump */
+#endif
 };
 
 enum power_supply_usb_type {
@@ -448,45 +247,6 @@
 	POWER_SUPPLY_USB_TYPE_APPLE_BRICK_ID,	/* Apple Charging Method */
 };
 
-/* Indicates USB Type-C CC connection status */
-enum power_supply_typec_mode {
-	POWER_SUPPLY_TYPEC_NONE,
-
-	/* Acting as source */
-	POWER_SUPPLY_TYPEC_SINK,		/* Rd only */
-	POWER_SUPPLY_TYPEC_SINK_POWERED_CABLE,	/* Rd/Ra */
-	POWER_SUPPLY_TYPEC_SINK_DEBUG_ACCESSORY,/* Rd/Rd */
-	POWER_SUPPLY_TYPEC_SINK_AUDIO_ADAPTER,	/* Ra/Ra */
-	POWER_SUPPLY_TYPEC_POWERED_CABLE_ONLY,	/* Ra only */
-
-	/* Acting as sink */
-	POWER_SUPPLY_TYPEC_SOURCE_DEFAULT,	/* Rp default */
-	POWER_SUPPLY_TYPEC_SOURCE_MEDIUM,	/* Rp 1.5A */
-	POWER_SUPPLY_TYPEC_SOURCE_HIGH,		/* Rp 3A */
-	POWER_SUPPLY_TYPEC_DAM_DEFAULT,		/* Rp-1.5A/Rp-3A */
-	POWER_SUPPLY_TYPEC_DAM_MEDIUM,		/* Rp-Default/Rp-1.5A */
-	POWER_SUPPLY_TYPEC_DAM_HIGH,		/* Rp-Default/Rp-3A */
-
-	/* Non Compliant */
-	POWER_SUPPLY_TYPEC_NON_COMPLIANT,
-	POWER_SUPPLY_TYPEC_RP_STD_STD,		/* Rp-Default/Rp-Default */
-	POWER_SUPPLY_TYPEC_RP_MED_MED,		/* Rp-1.5A/Rp-1.5A */
-	POWER_SUPPLY_TYPEC_RP_HIGH_HIGH,	/* Rp-3A/Rp-3A */
-};
-
-enum power_supply_typec_src_rp {
-	POWER_SUPPLY_TYPEC_SRC_RP_STD,
-	POWER_SUPPLY_TYPEC_SRC_RP_1P5A,
-	POWER_SUPPLY_TYPEC_SRC_RP_3A
-};
-
-enum power_supply_typec_power_role {
-	POWER_SUPPLY_TYPEC_PR_NONE,		/* CC lines in high-Z */
-	POWER_SUPPLY_TYPEC_PR_DUAL,
-	POWER_SUPPLY_TYPEC_PR_SINK,
-	POWER_SUPPLY_TYPEC_PR_SOURCE,
-};
-
 enum power_supply_notifier_events {
 	PSY_EVENT_PROP_CHANGED,
 };
@@ -494,7 +254,6 @@
 union power_supply_propval {
 	int intval;
 	const char *strval;
-	int64_t int64val;
 };
 
 struct device_node;
@@ -508,17 +267,22 @@
 	/* Driver private data */
 	void *drv_data;
 
+	/* Device specific sysfs attributes */
+	const struct attribute_group **attr_grp;
+
 	char **supplied_to;
 	size_t num_supplicants;
+
+	ANDROID_KABI_RESERVE(1);
 };
 
 /* Description of power supply */
 struct power_supply_desc {
 	const char *name;
 	enum power_supply_type type;
-	enum power_supply_usb_type *usb_types;
+	const enum power_supply_usb_type *usb_types;
 	size_t num_usb_types;
-	enum power_supply_property *properties;
+	const enum power_supply_property *properties;
 	size_t num_properties;
 
 	/*
@@ -551,6 +315,8 @@
 	bool no_thermal;
 	/* For APM emulation, think legacy userspace. */
 	int use_for_apm;
+
+	ANDROID_KABI_RESERVE(1);
 };
 
 struct power_supply {
@@ -592,6 +358,8 @@
 	struct led_trigger *charging_blink_full_solid_trig;
 	char *charging_blink_full_solid_trig_name;
 #endif
+
+	ANDROID_KABI_RESERVE(1);
 };
 
 /*
@@ -613,6 +381,18 @@
 	int use_for_apm;
 };
 
+struct power_supply_battery_ocv_table {
+	int ocv;	/* microVolts */
+	int capacity;	/* percent */
+};
+
+struct power_supply_resistance_temp_table {
+	int temp;	/* celsius */
+	int resistance;	/* internal resistance percent */
+};
+
+#define POWER_SUPPLY_OCV_TEMP_MAX 20
+
 /*
  * This is the recommended struct to manage static battery parameters,
  * populated by power_supply_get_battery_info(). Most platform drivers should
@@ -626,10 +406,29 @@
 	int energy_full_design_uwh;	    /* microWatt-hours */
 	int charge_full_design_uah;	    /* microAmp-hours */
 	int voltage_min_design_uv;	    /* microVolts */
+	int voltage_max_design_uv;	    /* microVolts */
+	int tricklecharge_current_ua;	    /* microAmps */
 	int precharge_current_ua;	    /* microAmps */
+	int precharge_voltage_max_uv;	    /* microVolts */
 	int charge_term_current_ua;	    /* microAmps */
+	int charge_restart_voltage_uv;	    /* microVolts */
+	int overvoltage_limit_uv;	    /* microVolts */
 	int constant_charge_current_max_ua; /* microAmps */
 	int constant_charge_voltage_max_uv; /* microVolts */
+	int factory_internal_resistance_uohm;   /* microOhms */
+	int ocv_temp[POWER_SUPPLY_OCV_TEMP_MAX];/* celsius */
+	int temp_ambient_alert_min;             /* celsius */
+	int temp_ambient_alert_max;             /* celsius */
+	int temp_alert_min;                     /* celsius */
+	int temp_alert_max;                     /* celsius */
+	int temp_min;                           /* celsius */
+	int temp_max;                           /* celsius */
+	struct power_supply_battery_ocv_table *ocv_table[POWER_SUPPLY_OCV_TEMP_MAX];
+	int ocv_table_size[POWER_SUPPLY_OCV_TEMP_MAX];
+	struct power_supply_resistance_temp_table *resist_table;
+	int resist_table_size;
+
+	ANDROID_KABI_RESERVE(1);
 };
 
 extern struct atomic_notifier_head power_supply_notifier;
@@ -640,12 +439,22 @@
 #ifdef CONFIG_OF
 extern struct power_supply *power_supply_get_by_phandle(struct device_node *np,
 							const char *property);
+extern int power_supply_get_by_phandle_array(struct device_node *np,
+					     const char *property,
+					     struct power_supply **psy,
+					     ssize_t size);
 extern struct power_supply *devm_power_supply_get_by_phandle(
 				    struct device *dev, const char *property);
 #else /* !CONFIG_OF */
 static inline struct power_supply *
 power_supply_get_by_phandle(struct device_node *np, const char *property)
 { return NULL; }
+static inline int
+power_supply_get_by_phandle_array(struct device_node *np,
+				  const char *property,
+				  struct power_supply **psy,
+				  int size)
+{ return 0; }
 static inline struct power_supply *
 devm_power_supply_get_by_phandle(struct device *dev, const char *property)
 { return NULL; }
@@ -653,10 +462,23 @@
 
 extern int power_supply_get_battery_info(struct power_supply *psy,
 					 struct power_supply_battery_info *info);
+extern void power_supply_put_battery_info(struct power_supply *psy,
+					  struct power_supply_battery_info *info);
+extern int power_supply_ocv2cap_simple(struct power_supply_battery_ocv_table *table,
+				       int table_len, int ocv);
+extern struct power_supply_battery_ocv_table *
+power_supply_find_ocv2cap_table(struct power_supply_battery_info *info,
+				int temp, int *table_len);
+extern int power_supply_batinfo_ocv2cap(struct power_supply_battery_info *info,
+					int ocv, int temp);
+extern int
+power_supply_temp2resist_simple(struct power_supply_resistance_temp_table *table,
+				int table_len, int temp);
 extern void power_supply_changed(struct power_supply *psy);
 extern int power_supply_am_i_supplied(struct power_supply *psy);
-extern int power_supply_set_input_current_limit_from_supplier(
-					 struct power_supply *psy);
+int power_supply_get_property_from_supplier(struct power_supply *psy,
+					    enum power_supply_property psp,
+					    union power_supply_propval *val);
 extern int power_supply_set_battery_charged(struct power_supply *psy);
 
 #ifdef CONFIG_POWER_SUPPLY
@@ -668,9 +490,16 @@
 extern int power_supply_get_property(struct power_supply *psy,
 			    enum power_supply_property psp,
 			    union power_supply_propval *val);
+#if IS_ENABLED(CONFIG_POWER_SUPPLY)
 extern int power_supply_set_property(struct power_supply *psy,
 			    enum power_supply_property psp,
 			    const union power_supply_propval *val);
+#else
+static inline int power_supply_set_property(struct power_supply *psy,
+			    enum power_supply_property psp,
+			    const union power_supply_propval *val)
+{ return 0; }
+#endif
 extern int power_supply_property_is_writeable(struct power_supply *psy,
 					enum power_supply_property psp);
 extern void power_supply_external_power_changed(struct power_supply *psy);
@@ -754,4 +583,17 @@
 	return 0;
 }
 
+#ifdef CONFIG_POWER_SUPPLY_HWMON
+int power_supply_add_hwmon_sysfs(struct power_supply *psy);
+void power_supply_remove_hwmon_sysfs(struct power_supply *psy);
+#else
+static inline int power_supply_add_hwmon_sysfs(struct power_supply *psy)
+{
+	return 0;
+}
+
+static inline
+void power_supply_remove_hwmon_sysfs(struct power_supply *psy) {}
+#endif
+
 #endif /* __LINUX_POWER_SUPPLY_H__ */

--
Gitblit v1.6.2