123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363 |
- /*
- * sec_battery_common.h
- * Samsung Mobile Charging Common Header
- *
- * Copyright (C) 2020 Samsung Electronics, Inc.
- *
- *
- * This software is licensed under the terms of the GNU General Public
- * License version 2, as published by the Free Software Foundation, and
- * may be copied, distributed, and modified under those terms.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- */
- #ifndef __SEC_BATTERY_COMMON_H
- #define __SEC_BATTERY_COMMON_H __FILE__
- #include <linux/power_supply.h>
- #include <dt-bindings/battery/sec-battery.h>
- enum power_supply_ext_property {
- POWER_SUPPLY_EXT_PROP_MIN = 1000,
- POWER_SUPPLY_EXT_PROP_CHECK_SUB_CHG_I2C = POWER_SUPPLY_EXT_PROP_MIN,
- POWER_SUPPLY_EXT_PROP_MULTI_CHARGER_MODE,
- POWER_SUPPLY_EXT_PROP_WIRELESS_OP_FREQ,
- POWER_SUPPLY_EXT_PROP_WIRELESS_OP_FREQ_STRENGTH,
- POWER_SUPPLY_EXT_PROP_WIRELESS_TRX_CMD,
- POWER_SUPPLY_EXT_PROP_WIRELESS_TRX_VAL,
- POWER_SUPPLY_EXT_PROP_WIRELESS_TX_ID,
- POWER_SUPPLY_EXT_PROP_WIRELESS_TX_ID_CNT,
- POWER_SUPPLY_EXT_PROP_WIRELESS_ERR,
- POWER_SUPPLY_EXT_PROP_WIRELESS_SWITCH,
- POWER_SUPPLY_EXT_PROP_WIRELESS_TX_ENABLE,
- POWER_SUPPLY_EXT_PROP_WIRELESS_TX_VOUT,
- POWER_SUPPLY_EXT_PROP_WIRELESS_TX_IOUT,
- POWER_SUPPLY_EXT_PROP_WIRELESS_TX_UNO_VIN,
- POWER_SUPPLY_EXT_PROP_WIRELESS_TX_UNO_IIN,
- POWER_SUPPLY_EXT_PROP_WIRELESS_RX_CONNECTED,
- POWER_SUPPLY_EXT_PROP_WIRELESS_RX_POWER,
- POWER_SUPPLY_EXT_PROP_WIRELESS_WR_CONNECTED,
- POWER_SUPPLY_EXT_PROP_WIRELESS_MAX_VOUT,
- POWER_SUPPLY_EXT_PROP_WIRELESS_AUTH_ADT_STATUS,
- POWER_SUPPLY_EXT_PROP_WIRELESS_AUTH_ADT_DATA,
- POWER_SUPPLY_EXT_PROP_WIRELESS_AUTH_ADT_SIZE,
- POWER_SUPPLY_EXT_PROP_WIRELESS_RX_TYPE,
- POWER_SUPPLY_EXT_PROP_WIRELESS_TX_ERR,
- POWER_SUPPLY_EXT_PROP_WIRELESS_TX_RETRY_CASE,
- POWER_SUPPLY_EXT_PROP_WIRELESS_MIN_DUTY,
- POWER_SUPPLY_EXT_PROP_WIRELESS_SEND_FSK,
- POWER_SUPPLY_EXT_PROP_WIRELESS_RX_VOUT,
- POWER_SUPPLY_EXT_PROP_WIRELESS_INITIAL_WC_CHECK,
- POWER_SUPPLY_EXT_PROP_WIRELESS_PARAM_INFO,
- POWER_SUPPLY_EXT_PROP_WIRELESS_CHECK_FW_VER,
- POWER_SUPPLY_EXT_PROP_WIRELESS_SGF,
- POWER_SUPPLY_EXT_PROP_WIRELESS_MST_PWR_EN,
- POWER_SUPPLY_EXT_PROP_WIRELESS_JIG_PAD,
- POWER_SUPPLY_EXT_PROP_WIRELESS_OP_MODE,
- POWER_SUPPLY_EXT_PROP_WIRELESS_WC_STATUS,
- POWER_SUPPLY_EXT_PROP_AICL_CURRENT,
- POWER_SUPPLY_EXT_PROP_CHIP_ID,
- POWER_SUPPLY_EXT_PROP_ERROR_CAUSE,
- POWER_SUPPLY_EXT_PROP_SYSOVLO,
- POWER_SUPPLY_EXT_PROP_VBAT_OVP,
- POWER_SUPPLY_EXT_PROP_FGSRC_SWITCHING,
- POWER_SUPPLY_EXT_PROP_USB_CONFIGURE,
- POWER_SUPPLY_EXT_PROP_WDT_STATUS,
- POWER_SUPPLY_EXT_PROP_WATER_DETECT,
- POWER_SUPPLY_EXT_PROP_SURGE,
- POWER_SUPPLY_EXT_PROP_HV_DISABLE,
- POWER_SUPPLY_EXT_PROP_FUELGAUGE_RESET,
- POWER_SUPPLY_EXT_PROP_FACTORY_VOLTAGE_REGULATION,
- POWER_SUPPLY_EXT_PROP_FUELGAUGE_FACTORY,
- POWER_SUPPLY_EXT_PROP_DISABLE_FACTORY_MODE,
- POWER_SUPPLY_EXT_PROP_OVERHEAT_NOTIFY,
- POWER_SUPPLY_EXT_PROP_CHARGE_POWER,
- POWER_SUPPLY_EXT_PROP_MEASURE_SYS,
- POWER_SUPPLY_EXT_PROP_MEASURE_INPUT,
- POWER_SUPPLY_EXT_PROP_WC_CONTROL,
- POWER_SUPPLY_EXT_PROP_WC_EPT_UNKNOWN,
- POWER_SUPPLY_EXT_PROP_CHGINSEL,
- POWER_SUPPLY_EXT_PROP_JIG_GPIO,
- POWER_SUPPLY_EXT_PROP_MONITOR_WORK,
- POWER_SUPPLY_EXT_PROP_SHIPMODE_TEST,
- POWER_SUPPLY_EXT_PROP_AUTO_SHIPMODE_CONTROL,
- POWER_SUPPLY_EXT_PROP_WIRELESS_TIMER_ON,
- POWER_SUPPLY_EXT_PROP_CALL_EVENT,
- POWER_SUPPLY_EXT_PROP_GEAR_PHM_EVENT,
- POWER_SUPPLY_EXT_PROP_RX_PHM,
- #if IS_ENABLED(CONFIG_DUAL_BATTERY)
- POWER_SUPPLY_EXT_PROP_CHGIN_OK,
- POWER_SUPPLY_EXT_PROP_SUPLLEMENT_MODE,
- POWER_SUPPLY_EXT_PROP_RECHG_ON,
- POWER_SUPPLY_EXT_PROP_EOC_ON,
- POWER_SUPPLY_EXT_PROP_DISCHG_MODE,
- POWER_SUPPLY_EXT_PROP_CHG_MODE,
- POWER_SUPPLY_EXT_PROP_CHG_VOLTAGE,
- POWER_SUPPLY_EXT_PROP_FASTCHG_LIMIT_CURRENT,
- POWER_SUPPLY_EXT_PROP_TRICKLECHG_LIMIT_CURRENT,
- POWER_SUPPLY_EXT_PROP_DISCHG_LIMIT_CURRENT,
- POWER_SUPPLY_EXT_PROP_RECHG_VOLTAGE,
- POWER_SUPPLY_EXT_PROP_EOC_VOLTAGE,
- POWER_SUPPLY_EXT_PROP_EOC_CURRENT,
- POWER_SUPPLY_EXT_PROP_POWERMETER_ENABLE,
- POWER_SUPPLY_EXT_PROP_POWER_MODE2,
- POWER_SUPPLY_EXT_PROP_DUAL_BAT_DET,
- POWER_SUPPLY_EXT_PROP_FULL_CONDITION,
- POWER_SUPPLY_EXT_PROP_LIMITER_SHIPMODE,
- #endif
- POWER_SUPPLY_EXT_PROP_REPSOC,
- POWER_SUPPLY_EXT_PROP_REPCAP,
- POWER_SUPPLY_EXT_PROP_FULLCAPREP,
- POWER_SUPPLY_EXT_PROP_FULLCAPNOM,
- POWER_SUPPLY_EXT_PROP_DESIGNCAP,
- POWER_SUPPLY_EXT_PROP_CYCLES,
- POWER_SUPPLY_EXT_PROP_CURRENT_EVENT,
- POWER_SUPPLY_EXT_PROP_CURRENT_EVENT_CLEAR,
- POWER_SUPPLY_EXT_PROP_PAD_VOLT_CTRL,
- POWER_SUPPLY_EXT_PROP_WIRELESS_VOUT,
- POWER_SUPPLY_EXT_PROP_WIRELESS_TX_AVG_CURR,
- POWER_SUPPLY_EXT_PROP_WIRELESS_1ST_DONE,
- POWER_SUPPLY_EXT_PROP_WIRELESS_2ND_DONE,
- POWER_SUPPLY_EXT_PROP_CURRENT_MEASURE,
- POWER_SUPPLY_EXT_PROP_DIRECT_CHARGER_MODE,
- POWER_SUPPLY_EXT_PROP_CHARGING_ENABLED_DC,
- POWER_SUPPLY_EXT_PROP_DIRECT_DONE,
- POWER_SUPPLY_EXT_PROP_DIRECT_FIXED_PDO,
- POWER_SUPPLY_EXT_PROP_DIRECT_WDT_CONTROL,
- POWER_SUPPLY_EXT_PROP_DIRECT_CONSTANT_CHARGE_VOLTAGE,
- POWER_SUPPLY_EXT_PROP_DIRECT_CONSTANT_CHARGE_VOLTAGE_MAX,
- POWER_SUPPLY_EXT_PROP_DIRECT_CURRENT_MAX,
- POWER_SUPPLY_EXT_PROP_DIRECT_ADC_CTRL,
- POWER_SUPPLY_EXT_PROP_DIRECT_HAS_APDO,
- POWER_SUPPLY_EXT_PROP_DIRECT_TA_ALERT,
- POWER_SUPPLY_EXT_PROP_DIRECT_CHARGER_CHG_STATUS,
- POWER_SUPPLY_EXT_PROP_CHANGE_CHARGING_SOURCE,
- POWER_SUPPLY_EXT_PROP_REFRESH_CHARGING_SOURCE,
- POWER_SUPPLY_EXT_PROP_DIRECT_CLEAR_ERR,
- POWER_SUPPLY_EXT_PROP_DIRECT_SEND_UVDM,
- POWER_SUPPLY_EXT_PROP_UPDATE_BATTERY_DATA,
- POWER_SUPPLY_EXT_PROP_SRCCAP,
- POWER_SUPPLY_EXT_PROP_HV_PDO,
- POWER_SUPPLY_EXT_PROP_CHARGE_BOOST,
- POWER_SUPPLY_EXT_PROP_CHARGING_ENABLED,
- POWER_SUPPLY_EXT_PROP_INPUT_VOLTAGE_REGULATION,
- POWER_SUPPLY_EXT_PROP_POWER_DESIGN,
- POWER_SUPPLY_EXT_PROP_FILTER_CFG,
- POWER_SUPPLY_EXT_PROP_CHARGE_OTG_CONTROL,
- POWER_SUPPLY_EXT_PROP_CHARGE_OTG_ICL_CONTROL,
- POWER_SUPPLY_EXT_PROP_CHARGE_POWERED_OTG_CONTROL,
- POWER_SUPPLY_EXT_PROP_CHARGE_UNO_CONTROL,
- POWER_SUPPLY_EXT_PROP_CHARGE_COUNTER_SHADOW,
- POWER_SUPPLY_EXT_PROP_WPC_EN,
- POWER_SUPPLY_EXT_PROP_WPC_EN_MST,
- POWER_SUPPLY_EXT_PROP_MST_MODE,
- POWER_SUPPLY_EXT_PROP_MST_DELAY,
- POWER_SUPPLY_EXT_PROP_WPC_FREQ_STRENGTH,
- POWER_SUPPLY_EXT_PROP_HEALTH,
- POWER_SUPPLY_EXT_PROP_SLEEP_MODE,
- POWER_SUPPLY_EXT_PROP_MFC_FW_UPDATE,
- POWER_SUPPLY_EXT_PROP_THERMAL_ZONE,
- POWER_SUPPLY_EXT_PROP_TEMP_CHECK_TYPE,
- POWER_SUPPLY_EXT_PROP_DC_INITIALIZE,
- POWER_SUPPLY_EXT_PROP_BATTERY_ID,
- #if IS_ENABLED(CONFIG_DUAL_BATTERY)
- POWER_SUPPLY_EXT_PROP_DIRECT_VBAT_CHECK,
- POWER_SUPPLY_EXT_PROP_VOLTAGE_PACK_MAIN,
- POWER_SUPPLY_EXT_PROP_VOLTAGE_PACK_SUB,
- #endif
- POWER_SUPPLY_EXT_PROP_WIRELESS_RX_CONTROL,
- POWER_SUPPLY_EXT_PROP_INPUT_CURRENT_LIMIT_WRL,
- POWER_SUPPLY_EXT_PROP_CONSTANT_CHARGE_CURRENT_WRL,
- POWER_SUPPLY_EXT_PROP_SUB_TEMP,
- POWER_SUPPLY_EXT_PROP_MIX_LIMIT,
- POWER_SUPPLY_EXT_PROP_ENABLE_HW_FACTORY_MODE,
- POWER_SUPPLY_EXT_PROP_FACTORY_MODE,
- POWER_SUPPLY_EXT_PROP_CHECK_INIT,
- POWER_SUPPLY_EXT_PROP_IB_MODE,
- POWER_SUPPLY_EXT_PROP_OB_MODE_CABLE_REMOVED,
- POWER_SUPPLY_EXT_PROP_BATT_F_MODE,
- POWER_SUPPLY_EXT_PROP_FACTORY_MODE_RELIEVE,
- POWER_SUPPLY_EXT_PROP_FACTORY_MODE_BYPASS,
- POWER_SUPPLY_EXT_PROP_LCD_FLICKER,
- POWER_SUPPLY_EXT_PROP_PASS_THROUGH_MODE,
- POWER_SUPPLY_EXT_PROP_PASS_THROUGH_MODE_TA_VOL,
- POWER_SUPPLY_EXT_PROP_D2D_REVERSE_VOLTAGE,
- POWER_SUPPLY_EXT_PROP_FUELGAUGE_LOG,
- POWER_SUPPLY_EXT_PROP_CHARGER_IC_NAME,
- POWER_SUPPLY_EXT_PROP_D2D_REVERSE_OCP,
- POWER_SUPPLY_EXT_PROP_BATT_DUMP,
- POWER_SUPPLY_EXT_PROP_FLASH_STATE,
- POWER_SUPPLY_EXT_PROP_PMIC_BAT_VOLTAGE,
- POWER_SUPPLY_EXT_PROP_USB_BOOTCOMPLETE,
- #if IS_ENABLED(CONFIG_MTK_CHARGER)
- POWER_SUPPLY_EXT_PROP_BATT_VSYS,
- POWER_SUPPLY_EXT_PROP_RP_LEVEL,
- POWER_SUPPLY_EXT_PROP_BUCK_STATE,
- POWER_SUPPLY_EXT_PROP_AFC_INIT,
- POWER_SUPPLY_EXT_PROP_MTK_FG_INIT,
- #endif
- POWER_SUPPLY_EXT_PROP_D2D_REVERSE_VBUS,
- POWER_SUPPLY_EXT_PROP_ADC_MODE,
- POWER_SUPPLY_EXT_PROP_DC_OP_MODE,
- POWER_SUPPLY_EXT_PROP_LRP_CHG_SRC,
- POWER_SUPPLY_EXT_PROP_MISC_EVENT,
- POWER_SUPPLY_EXT_PROP_MISC_EVENT_CLEAR,
- POWER_SUPPLY_EXT_PROP_MST_EN,
- #if defined(CONFIG_SEC_FACTORY)
- POWER_SUPPLY_EXT_PROP_AFC_TEST_FG_MODE,
- #endif
- POWER_SUPPLY_EXT_PROP_SPSN_TEST,
- POWER_SUPPLY_EXT_PROP_ABNORMAL_SRCCAP,
- POWER_SUPPLY_EXT_PROP_CHARGE_FULL_REPCAP,
- POWER_SUPPLY_EXT_PROP_STATUS_FULL_REPCAP,
- POWER_SUPPLY_EXT_PROP_DC_VIN_OVERCURRENT,
- POWER_SUPPLY_EXT_PROP_DC_REVERSE_MODE,
- POWER_SUPPLY_EXT_PROP_OTG_VBUS_CTRL,
- POWER_SUPPLY_EXT_PROP_TX_PWR_BUDG,
- POWER_SUPPLY_EXT_PROP_HARDRESET_OCCUR,
- POWER_SUPPLY_EXT_PROP_FPDO_DC_THERMAL_CHECK,
- POWER_SUPPLY_EXT_PROP_CHARGER_MODE_DIRECT,
- POWER_SUPPLY_EXT_PROP_DCHG_READ_BATP_BATN,
- POWER_SUPPLY_EXT_PROP_ABNORMAL_TA,
- POWER_SUPPLY_EXT_PROP_WIRELESS_PING_DUTY,
- POWER_SUPPLY_EXT_PROP_WARM_FOD,
- POWER_SUPPLY_EXT_PROP_MPP_COVER,
- POWER_SUPPLY_EXT_PROP_MPP_CLOAK,
- POWER_SUPPLY_EXT_PROP_MPP_ICL_CTRL,
- POWER_SUPPLY_EXT_PROP_MPP_INC_INT_CTRL,
- POWER_SUPPLY_EXT_PROP_DC_RCP,
- #if IS_ENABLED(CONFIG_SBP_FG)
- POWER_SUPPLY_EXT_PROP_FAKE_SOC,
- #endif
- POWER_SUPPLY_EXT_PROP_ARI_CNT,
- POWER_SUPPLY_EXT_PROP_PRSWAP,
- POWER_SUPPLY_EXT_PROP_MAX,
- };
- enum {
- POWER_SUPPLY_DC_REVERSE_STOP, /* stop reverse mode */
- POWER_SUPPLY_DC_REVERSE_BYP, /* 1:1 reverse bypass mode */
- POWER_SUPPLY_DC_REVERSE_1TO2, /* 1:2 reverse switching mode */
- };
- enum {
- TURN_OTG_OFF,
- TURN_OTG_ON,
- TURN_RB_OFF, /* REVERSE BYPASS for Earphone*/
- TURN_RB_ON,
- TURN_OTG_OFF_RB_ON,
- };
- enum sec_battery_usb_conf {
- USB_CURRENT_NONE = 0,
- USB_CURRENT_SUSPENDED = 1,
- USB_CURRENT_CLEAR = 2,
- USB_CURRENT_UNCONFIGURED = 100,
- USB_CURRENT_HIGH_SPEED = 475,
- USB_CURRENT_SUPER_SPEED = 850,
- };
- enum sec_battery_wpc_en_ctrl {
- WPC_EN_SYSFS = 0x1,
- WPC_EN_CCIC = 0x2,
- WPC_EN_CHARGING = 0x4,
- WPC_EN_TX = 0x8,
- WPC_EN_MST = 0x10,
- WPC_EN_FW = 0x20,
- WPC_EN_SLATE = 0x40,
- };
- static inline struct power_supply *get_power_supply_by_name(char *name)
- {
- if (!name)
- return (struct power_supply *)NULL;
- else
- return power_supply_get_by_name(name);
- }
- #define psy_do_property(name, function, property, value) \
- ({ \
- struct power_supply *psy; \
- int ret = 0; \
- psy = get_power_supply_by_name((name)); \
- if (!psy) { \
- pr_err("%s: Fail to "#function" psy (%s)\n", \
- __func__, (name)); \
- value.intval = 0; \
- ret = -ENOENT; \
- } else { \
- if (psy->desc->function##_property != NULL) { \
- ret = psy->desc->function##_property(psy, \
- (enum power_supply_property) (property), &(value)); \
- if (ret < 0) { \
- pr_err("%s: Fail to %s "#function" "#property" (%d)\n", \
- __func__, name, ret); \
- value.intval = 0; \
- } \
- } else { \
- ret = -ENOSYS; \
- } \
- power_supply_put(psy); \
- } \
- ret; \
- })
- #if defined(CONFIG_OF)
- #define sb_of_parse_u32(np, pdata, value, deft) \
- ({ \
- int ret = 0; \
- ret = of_property_read_u32(np, #value, (unsigned int *)&pdata->value); \
- if (!ret) \
- pr_info("%s: %s - write "#value" to %d\n", __func__, np->name, pdata->value); \
- else \
- pdata->value = deft; \
- ret;\
- })
- #define sb_of_parse_str(np, pdata, value) \
- ({ \
- int ret = 0; \
- ret = of_property_read_string(np, #value, (const char **)&pdata->value); \
- if (!ret) \
- pr_info("%s: %s - write "#value" to %s\n", __func__, np->name, pdata->value); \
- ret;\
- })
- #define sb_of_parse_bool(np, pdata, value) \
- ({ \
- pdata->value = of_property_read_bool(np, #value); \
- pr_info("%s: %s - write "#value" to %d\n", __func__, np->name, pdata->value); \
- })
- #define sb_of_parse_str_dt(np, dt_name, pdata, path) \
- ({ \
- int ret = 0; \
- ret = of_property_read_string(np, dt_name, (const char **)&pdata->path); \
- if (!ret) \
- pr_info("%s: %s - write "dt_name" to %s\n", __func__, np->name, pdata->path); \
- ret;\
- })
- #define sb_of_parse_u32_dt(np, dt_name, pdata, path, deft) \
- ({ \
- int ret = 0; \
- ret = of_property_read_u32(np, dt_name, (unsigned int *)&pdata->path); \
- if (ret) \
- pdata->path = deft; \
- pr_info("%s: %s - write "dt_name" to %d\n", __func__, np->name, pdata->path); \
- ret;\
- })
- #define sb_of_parse_bool_dt(np, dt_name, pdata, path) \
- ({ \
- pdata->path = of_property_read_bool(np, dt_name); \
- pr_info("%s: %s - write "dt_name" to %d\n", __func__, np->name, pdata->path); \
- })
- #endif
- #endif /* __SEC_BATTERY_COMMON_H */
|