123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131 |
- /*
- * sec_direct_charger.h
- * Samsung Mobile Charger Header
- *
- * Copyright (C) 2018 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_DIRECT_CHARGER_H
- #define __SEC_DIRECT_CHARGER_H __FILE__
- #include "sec_battery.h"
- #include "sec_charging_common.h"
- #include "sb_pass_through.h"
- #define SEC_DIRECT_CHG_MIN_IOUT 2000
- #define SEC_DIRECT_CHG_MIN_VBAT 3500
- #define SEC_DIRECT_CHG_MAX_VBAT 4200
- #define FPDO_DC_MIN_VBAT 3500
- #define FPDO_DC_MAX_VBAT 5000
- #if IS_ENABLED(CONFIG_SEC_ABC)
- #define ABC_DC_CNT 5
- #endif
- typedef enum _sec_direct_chg_src {
- SEC_CHARGING_SOURCE_SWITCHING = 0,
- SEC_CHARGING_SOURCE_DIRECT,
- } sec_direct_chg_src_t;
- typedef enum _sec_direct_chg_mode {
- SEC_DIRECT_CHG_MODE_DIRECT_OFF = 0,
- SEC_DIRECT_CHG_MODE_DIRECT_CHECK_VBAT,
- SEC_DIRECT_CHG_MODE_DIRECT_PRESET,
- SEC_DIRECT_CHG_MODE_DIRECT_ON_ADJUST,
- SEC_DIRECT_CHG_MODE_DIRECT_ON,
- SEC_DIRECT_CHG_MODE_DIRECT_DONE,
- SEC_DIRECT_CHG_MODE_DIRECT_BYPASS,
- SEC_DIRECT_CHG_MODE_MAX,
- } sec_direct_chg_mode_t;
- enum {
- LOW_VBAT_SET = 0,
- LOW_VBAT_NONE,
- LOW_VBAT_OFF,
- };
- enum {
- DC_NORMAL_MODE = 0,
- DC_BYPASS_MODE,
- };
- #define is_direct_chg_mode_on(direct_chg_mode) ( \
- direct_chg_mode == SEC_DIRECT_CHG_MODE_DIRECT_PRESET || \
- direct_chg_mode == SEC_DIRECT_CHG_MODE_DIRECT_ON) || \
- direct_chg_mode == SEC_DIRECT_CHG_MODE_DIRECT_ON_ADJUST
- struct sec_direct_charger_platform_data {
- char *battery_name;
- char *main_charger_name;
- char *direct_charger_name;
- char *direct_sub_charger_name;
- int dchg_min_current;
- int dchg_min_vbat;
- int dchg_temp_low_threshold;
- int dchg_temp_high_threshold;
- int dchg_end_soc;
- int dchg_dc_in_swelling;
- int swelling_high_rechg_voltage;
- int fpdo_dc_min_vbat;
- int fpdo_dc_max_vbat;
- #if IS_ENABLED(CONFIG_DUAL_BATTERY)
- int fpdo_dc_max_main_vbat;
- int fpdo_dc_max_sub_vbat;
- #endif
- bool chgen_over_swell_rechg_vol;
- };
- struct sec_direct_charger_info {
- struct device *dev;
- struct sec_direct_charger_platform_data *pdata;
- struct power_supply* psy_chg;
- struct mutex charger_mutex;
- struct sb_pt *pt;
- sec_direct_chg_mode_t direct_chg_mode;
- unsigned int charger_mode;
- unsigned int charger_mode_main;
- unsigned int charger_mode_direct;
- unsigned int dc_retry_cnt;
- int cable_type;
- int input_current;
- int charging_current;
- int topoff_current;
- int float_voltage;
- bool dc_err;
- bool ta_alert_wa;
- int ta_alert_mode;
- bool is_charging;
- int batt_status;
- int capacity;
- bool direct_chg_done;
- bool wc_tx_enable;
- bool now_isApdo;
- bool store_mode;
- int vbat_min_src;
- bool dc_rcp;
- int bat_temp;
- sec_direct_chg_src_t charging_source;
- int fpdo_pos;
- int dc_input_current;
- int dc_charging_current;
- int test_mode_source;
- #if IS_ENABLED(CONFIG_SEC_ABC)
- int abc_dc_current_cnt;
- #endif
- };
- #endif /* __SEC_DIRECT_CHARGER_H */
|