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