mirror of
https://github.com/LineageOS/android_kernel_samsung_msm8226.git
synced 2026-09-28 00:00:22 +02:00
s3ve3g: improved sec-battery compatibility with additional fixes
- Disabled increasing VDDMAX in qpnp-charger - Fixed non-charging issue after flashlight has been turned off while charging - Enabled battery swelling protection (CONFIG_BATTERY_SWELLING) in sec-battery to s3ve3g devices (proper configs are defined in battery header already) - Enabled prevent SOC jump. The battery driver will slowly add a SOC until it's 100 when the average current is below 170 and min SOC is 93 - Reduced minimum expected full condition SOC from 95 to 93 - Removed 'ext-ovp-present' bool from device tree as only qpnp-sec-charger calls it - Reworked default high battery temperature threshold/recovery (60°C/47°C to 58°C/53°C) also while in LPM - Switched from Qualcomm's flash-boot-supply to Samsung's flash regulator disabler/enabler - Switched from time measure check type (2400 mins) to current check type (<170mA) while charging to report full charged condition Change-Id: Id74e3d9497d381a389ae56096c61dfa7200a83cf
This commit is contained in:
committed by
Francescodario Cuzzocrea
parent
1aa8de5356
commit
93340a4ba8
@@ -11,19 +11,17 @@
|
||||
* GNU General Public License for more details.
|
||||
*/
|
||||
|
||||
&spmi_bus {
|
||||
qcom,pm8226@1 {
|
||||
qcom,leds@d300 {
|
||||
compatible = "qcom,leds-qpnp";
|
||||
status = "okay";
|
||||
reg = <0xd300 0x100>;
|
||||
label = "flash";
|
||||
flash-boost-supply = <&pm8226_chg_boost>;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
&soc {
|
||||
led_flash0: qcom,camera-led-flash {
|
||||
cell-index = <0>;
|
||||
compatible = "qcom,camera-led-flash";
|
||||
qcom,flash-type = <1>;
|
||||
qcom,flash-source = <&pm8226_flash0>;
|
||||
qcom,torch-source = <&pm8226_torch>;
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
};
|
||||
|
||||
i2c@20 {
|
||||
cell-index = <20>;
|
||||
compatible = "i2c-gpio";
|
||||
@@ -47,14 +45,6 @@
|
||||
};
|
||||
};
|
||||
|
||||
led_flash0: qcom,camera-led-flash {
|
||||
cell-index = <0>;
|
||||
compatible = "qcom,camera-led-flash";
|
||||
qcom,flash-type = <1>;
|
||||
qcom,flash-source = <&pm8226_flash0 &pm8226_flash1>;
|
||||
qcom,torch-source = <&pm8226_torch>;
|
||||
};
|
||||
|
||||
spi@f9923000 {
|
||||
eeprom0: qcom,eeprom@0 {
|
||||
compatible = "qcom,eeprom";
|
||||
|
||||
@@ -43,8 +43,8 @@
|
||||
battery,temp_check_type = <2>; /* SEC_BATTERY_TEMP_CHECK_TEMP */
|
||||
battery,temp_check_count = <1>;
|
||||
battery,full_check_type = <2>; /* SEC_BATTERY_FULLCHARGED_FG_CURRENT */
|
||||
battery,full_check_type_2nd = <3>; /* SEC_BATTERY_FULLCHARGED_TIME */
|
||||
battery,full_check_count = <2>;
|
||||
battery,full_check_type_2nd = <2>; /* SEC_BATTERY_FULLCHARGED_FG_CURRENT */
|
||||
battery,full_check_count = <1>;
|
||||
battery,chg_gpio_full_check = <0>;
|
||||
battery,chg_polarity_full_check = <1>;
|
||||
|
||||
@@ -52,7 +52,7 @@
|
||||
SEC_BATTERY_FULL_CONDITION_NOTIMEFULL |
|
||||
SEC_BATTERY_FULL_CONDITION_VCELL */
|
||||
battery,full_condition_type = <13>;
|
||||
battery,full_condition_soc = <95>;
|
||||
battery,full_condition_soc = <93>;
|
||||
battery,full_condition_vcell = <4250>;
|
||||
|
||||
battery,recharge_check_count = <1>;
|
||||
@@ -64,17 +64,22 @@
|
||||
battery,recharging_total_time = <5400>;
|
||||
battery,charging_reset_time = <0>;
|
||||
|
||||
battery,swelling_full_check_current = <170>;
|
||||
battery,swelling_high_rechg_voltage = <4150>;
|
||||
battery,swelling_low_rechg_voltage = <4050>;
|
||||
|
||||
charger {
|
||||
status = "disable"
|
||||
/* Charger */
|
||||
battery,charger_name = "qpnp-chg";
|
||||
battery,ovp_uvlo_check_type = <3>; /* SEC_BATTERY_OVP_UVLO_CHGPOLLING */
|
||||
battery,full_check_type = <2>; /* SEC_BATTERY_FULLCHARGED_FG_CURRENT */
|
||||
battery,chg_float_voltage = <4350>;
|
||||
|
||||
battery,input_current_limit = <1000 500 500 1000 500 1000 1000 500 500 1000 650 1000 1000 500 500 300 1000 1000 300 1000 1000 500 500>;
|
||||
battery,fast_charging_current = <1000 0 500 1000 500 1000 1000 500 0 1000 750 1000 1000 (-1) 500 300 1000 1000 300 1000 1000 0 0>;
|
||||
battery,full_check_current_1st = <170 0 170 170 170 170 170 170 0 170 170 170 170 0 170 170 170 170 170 170 170 0 0>;
|
||||
battery,full_check_current_2nd = <2400 0 2400 2400 2400 2400 2400 2400 0 2400 2400 2400 2400 0 2400 2400 2400 2400 2400 2400 2400 0 0>;
|
||||
battery,full_check_current_2nd = <170 0 170 170 170 170 170 170 0 170 170 170 170 0 170 170 170 170 170 170 170 0 0>;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
@@ -411,10 +411,6 @@
|
||||
|
||||
&spmi_bus {
|
||||
qcom,pm8226@0 {
|
||||
pm8226_chg: qcom,charger {
|
||||
qcom,ext-ovp-present = <0>;
|
||||
};
|
||||
|
||||
qcom,leds@a300 {
|
||||
status = "okay";
|
||||
qcom,led_mpp_4 {
|
||||
@@ -642,7 +638,6 @@
|
||||
};
|
||||
|
||||
&pm8226_chg {
|
||||
qcom,charging-disabled;
|
||||
qcom,battery-data = <&mtp_batterydata>;
|
||||
qcom,cool-bat-decidegc = <(-50)>;
|
||||
qcom,warm-bat-decidegc = <700>;
|
||||
|
||||
@@ -2311,7 +2311,7 @@ CONFIG_QPNP_CHARGER=y
|
||||
CONFIG_BATTERY_BCL=y
|
||||
# CONFIG_CHARGER_SMB347 is not set
|
||||
CONFIG_QPNP_BMS=y
|
||||
# CONFIG_BATTERY_SWELLING is not set
|
||||
CONFIG_BATTERY_SWELLING=y
|
||||
CONFIG_HWMON=y
|
||||
# CONFIG_HWMON_VID is not set
|
||||
# CONFIG_HWMON_DEBUG_CHIP is not set
|
||||
|
||||
@@ -2311,7 +2311,7 @@ CONFIG_QPNP_CHARGER=y
|
||||
CONFIG_BATTERY_BCL=y
|
||||
# CONFIG_CHARGER_SMB347 is not set
|
||||
CONFIG_QPNP_BMS=y
|
||||
# CONFIG_BATTERY_SWELLING is not set
|
||||
CONFIG_BATTERY_SWELLING=y
|
||||
CONFIG_HWMON=y
|
||||
# CONFIG_HWMON_VID is not set
|
||||
# CONFIG_HWMON_DEBUG_CHIP is not set
|
||||
|
||||
@@ -2311,7 +2311,7 @@ CONFIG_QPNP_CHARGER=y
|
||||
CONFIG_BATTERY_BCL=y
|
||||
# CONFIG_CHARGER_SMB347 is not set
|
||||
CONFIG_QPNP_BMS=y
|
||||
# CONFIG_BATTERY_SWELLING is not set
|
||||
CONFIG_BATTERY_SWELLING=y
|
||||
CONFIG_HWMON=y
|
||||
# CONFIG_HWMON_VID is not set
|
||||
# CONFIG_HWMON_DEBUG_CHIP is not set
|
||||
|
||||
@@ -94,7 +94,7 @@ CONFIG_BATTERY_SAMSUNG_DATA_FILE="s3ve3g_battery_data.h"
|
||||
CONFIG_QPNP_CHARGER=y
|
||||
CONFIG_BATTERY_BCL=y
|
||||
CONFIG_QPNP_BMS=y
|
||||
# CONFIG_BATTERY_SWELLING is not set
|
||||
CONFIG_BATTERY_SWELLING=y
|
||||
|
||||
#Sec Thermistor
|
||||
CONFIG_SEC_THERMISTOR=y
|
||||
|
||||
@@ -22,9 +22,9 @@
|
||||
|
||||
static void * samsung_battery_data;
|
||||
|
||||
#define CAPACITY_MAX 1000
|
||||
#define CAPACITY_MAX 1000
|
||||
#define CAPACITY_MAX_MARGIN 50
|
||||
#define CAPACITY_MIN 0
|
||||
#define CAPACITY_MIN 0
|
||||
|
||||
static sec_bat_adc_table_data_t temp_table[] = {
|
||||
{26537, 800},
|
||||
@@ -54,16 +54,16 @@ static sec_bat_adc_table_data_t chg_temp_table[] = {
|
||||
{0, 0},
|
||||
};
|
||||
|
||||
#define TEMP_HIGH_THRESHOLD_EVENT 600
|
||||
#define TEMP_HIGH_RECOVERY_EVENT 470
|
||||
#define TEMP_HIGH_THRESHOLD_EVENT 580
|
||||
#define TEMP_HIGH_RECOVERY_EVENT 530
|
||||
#define TEMP_LOW_THRESHOLD_EVENT (-50)
|
||||
#define TEMP_LOW_RECOVERY_EVENT 0
|
||||
#define TEMP_HIGH_THRESHOLD_NORMAL 600
|
||||
#define TEMP_HIGH_RECOVERY_NORMAL 470
|
||||
#define TEMP_HIGH_THRESHOLD_NORMAL 580
|
||||
#define TEMP_HIGH_RECOVERY_NORMAL 530
|
||||
#define TEMP_LOW_THRESHOLD_NORMAL (-50)
|
||||
#define TEMP_LOW_RECOVERY_NORMAL 0
|
||||
#define TEMP_HIGH_THRESHOLD_LPM 600
|
||||
#define TEMP_HIGH_RECOVERY_LPM 470
|
||||
#define TEMP_HIGH_THRESHOLD_LPM 580
|
||||
#define TEMP_HIGH_RECOVERY_LPM 530
|
||||
#define TEMP_LOW_THRESHOLD_LPM (-50)
|
||||
#define TEMP_LOW_RECOVERY_LPM 0
|
||||
|
||||
|
||||
@@ -1925,8 +1925,8 @@ static void sec_bat_get_battery_info(
|
||||
{
|
||||
union power_supply_propval value;
|
||||
#if defined(CONFIG_MACH_VIENNAEUR) || defined(CONFIG_MACH_VIENNAVZW) || defined(CONFIG_MACH_VIENNAKOR) || defined(CONFIG_MACH_V2) || \
|
||||
defined(CONFIG_SEC_MILLET_PROJECT) || defined(CONFIG_SEC_MATISSE_PROJECT) || defined(CONFIG_SEC_DEGAS_PROJECT) || \
|
||||
defined(CONFIG_AFC_CHARGER_MODE) || defined(CONFIG_MACH_KLTE_USC) || defined(CONFIG_MACH_KLIMT_VZW)
|
||||
defined(CONFIG_SEC_MILLET_PROJECT) || defined(CONFIG_SEC_MATISSE_PROJECT) || defined(CONFIG_MACH_S3VE3G_EUR) || \
|
||||
defined(CONFIG_AFC_CHARGER_MODE) || defined(CONFIG_MACH_KLTE_USC) || defined(CONFIG_MACH_KLIMT_VZW) || defined(CONFIG_SEC_DEGAS_PROJECT)
|
||||
static struct timespec old_ts;
|
||||
struct timespec c_ts;
|
||||
|
||||
@@ -2029,8 +2029,8 @@ static void sec_bat_get_battery_info(
|
||||
sec_bat_check_changed_soc(battery, &value);
|
||||
|
||||
#if defined(CONFIG_MACH_VIENNAEUR) || defined(CONFIG_MACH_VIENNAVZW) || defined(CONFIG_MACH_VIENNAKOR) || defined(CONFIG_MACH_V2) || \
|
||||
defined(CONFIG_SEC_MILLET_PROJECT) || defined(CONFIG_SEC_MATISSE_PROJECT) || defined(CONFIG_SEC_DEGAS_PROJECT) || \
|
||||
defined(CONFIG_AFC_CHARGER_MODE) || defined(CONFIG_MACH_KLTE_USC) || defined(CONFIG_MACH_KLIMT_VZW)
|
||||
defined(CONFIG_SEC_MILLET_PROJECT) || defined(CONFIG_SEC_MATISSE_PROJECT) || defined(CONFIG_MACH_S3VE3G_EUR) || \
|
||||
defined(CONFIG_AFC_CHARGER_MODE) || defined(CONFIG_MACH_KLTE_USC) || defined(CONFIG_MACH_KLIMT_VZW) || defined(CONFIG_SEC_DEGAS_PROJECT)
|
||||
/* if the battery status was full, and SOC wasn't 100% yet,
|
||||
then ignore FG SOC, and report (previous SOC +1)% */
|
||||
if (battery->status != POWER_SUPPLY_STATUS_FULL) {
|
||||
@@ -2406,17 +2406,17 @@ continue_monitor:
|
||||
"%s: battery->stability_test(%d), battery->eng_not_full_status(%d)\n",
|
||||
__func__, battery->stability_test, battery->eng_not_full_status);
|
||||
#endif
|
||||
if (battery->store_mode && battery->cable_type != POWER_SUPPLY_TYPE_BATTERY) {
|
||||
if (battery->store_mode && !poweroff_charging && (battery->cable_type != POWER_SUPPLY_TYPE_BATTERY)) {
|
||||
|
||||
dev_info(battery->dev,
|
||||
"%s: @battery->capacity = (%d), battery->status= (%d), battery->store_mode=(%d)\n",
|
||||
__func__, battery->capacity, battery->status, battery->store_mode);
|
||||
|
||||
if ((battery->capacity >= 35) && (battery->status == POWER_SUPPLY_STATUS_CHARGING)) {
|
||||
if ((battery->capacity >= STORE_MODE_CHARGING_MAX) && (battery->status == POWER_SUPPLY_STATUS_CHARGING)) {
|
||||
battery->status = POWER_SUPPLY_STATUS_DISCHARGING;
|
||||
sec_bat_set_charge(battery, false);
|
||||
}
|
||||
if ((battery->capacity <= 30) && (battery->status == POWER_SUPPLY_STATUS_DISCHARGING)) {
|
||||
if ((battery->capacity <= STORE_MODE_CHARGING_MIN) && (battery->status == POWER_SUPPLY_STATUS_DISCHARGING)) {
|
||||
battery->status = POWER_SUPPLY_STATUS_CHARGING;
|
||||
sec_bat_set_charge(battery, true);
|
||||
}
|
||||
@@ -3637,8 +3637,8 @@ static int sec_bat_get_property(struct power_supply *psy,
|
||||
}
|
||||
|
||||
#if defined(CONFIG_MACH_VIENNAEUR) || defined(CONFIG_MACH_VIENNAVZW) || defined(CONFIG_MACH_VIENNAKOR) || defined(CONFIG_MACH_V2) || \
|
||||
defined(CONFIG_SEC_MILLET_PROJECT) || defined(CONFIG_SEC_MATISSE_PROJECT) || \
|
||||
defined(CONFIG_AFC_CHARGER_MODE) || defined(CONFIG_MACH_KLTE_USC) || defined(CONFIG_MACH_KLIMT_VZW)|| defined(CONFIG_SEC_DEGAS_PROJECT)
|
||||
defined(CONFIG_SEC_MILLET_PROJECT) || defined(CONFIG_SEC_MATISSE_PROJECT) || defined(CONFIG_MACH_S3VE3G_EUR) || \
|
||||
defined(CONFIG_AFC_CHARGER_MODE) || defined(CONFIG_MACH_KLTE_USC) || defined(CONFIG_MACH_KLIMT_VZW) || defined(CONFIG_SEC_DEGAS_PROJECT)
|
||||
if (battery->status == POWER_SUPPLY_STATUS_FULL &&
|
||||
battery->capacity != 100) {
|
||||
val->intval = POWER_SUPPLY_STATUS_CHARGING;
|
||||
@@ -3725,8 +3725,8 @@ static int sec_bat_get_property(struct power_supply *psy,
|
||||
}
|
||||
#else
|
||||
#if defined(CONFIG_MACH_VIENNAEUR) || defined(CONFIG_MACH_VIENNAVZW) || defined(CONFIG_MACH_VIENNAKOR) || defined(CONFIG_MACH_V2) || \
|
||||
defined(CONFIG_SEC_MILLET_PROJECT) || defined(CONFIG_SEC_MATISSE_PROJECT) || \
|
||||
defined(CONFIG_AFC_CHARGER_MODE) || defined(CONFIG_MACH_KLTE_USC) || defined(CONFIG_MACH_KLIMT_VZW)|| defined(CONFIG_SEC_DEGAS_PROJECT)
|
||||
defined(CONFIG_SEC_MILLET_PROJECT) || defined(CONFIG_SEC_MATISSE_PROJECT) || defined(CONFIG_MACH_S3VE3G_EUR) || \
|
||||
defined(CONFIG_AFC_CHARGER_MODE) || defined(CONFIG_MACH_KLTE_USC) || defined(CONFIG_MACH_KLIMT_VZW) || defined(CONFIG_SEC_DEGAS_PROJECT)
|
||||
val->intval = battery->capacity;
|
||||
#else
|
||||
/* In full-charged status, SOC is always 100% */
|
||||
|
||||
@@ -235,7 +235,7 @@
|
||||
#endif
|
||||
|
||||
#define SAMSUNG_TKEY_LED_BRIGHTNESS 90
|
||||
#if defined(CONFIG_SEC_AFYON_PROJECT) || defined(CONFIG_SEC_ATLANTIC_PROJECT) || defined( CONFIG_SEC_VASTA_PROJECT) || defined(CONFIG_MACH_MEGA2LTE_KTT)
|
||||
#if defined(CONFIG_SEC_AFYON_PROJECT) || defined(CONFIG_SEC_ATLANTIC_PROJECT) || defined(CONFIG_MACH_S3VE3G_EUR) || defined(CONFIG_SEC_VASTA_PROJECT) || defined(CONFIG_MACH_MEGA2LTE_KTT)
|
||||
#define SAMSUNG_USE_EXTERNAL_CHARGER
|
||||
#endif
|
||||
|
||||
|
||||
@@ -1639,7 +1639,7 @@ qpnp_chg_set_appropriate_vddmax(struct qpnp_chg_chip *chip)
|
||||
chip->delta_vddmax_mv);
|
||||
}
|
||||
|
||||
#if !defined(CONFIG_SEC_ATLANTIC_PROJECT)
|
||||
#if !defined(CONFIG_SEC_ATLANTIC_PROJECT) || !defined(CONFIG_MACH_S3VE3G_EUR)
|
||||
#define MIN_DELTA_MV_TO_INCREASE_VDD_MAX 8
|
||||
#define MAX_DELTA_VDD_MAX_MV 80
|
||||
#define VDD_MAX_CENTER_OFFSET 4
|
||||
@@ -4669,7 +4669,7 @@ qpnp_chg_setup_flags(struct qpnp_chg_chip *chip)
|
||||
return 0;
|
||||
}
|
||||
|
||||
#if !defined(CONFIG_SEC_ATLANTIC_PROJECT)
|
||||
#if !defined(CONFIG_SEC_ATLANTIC_PROJECT) || !defined(CONFIG_MACH_S3VE3G_EUR)
|
||||
static void
|
||||
sec_qpnp_chg_check_vddmax(struct qpnp_chg_chip *chip)
|
||||
{
|
||||
@@ -5612,7 +5612,7 @@ sec_qpnp_chg_get_property(struct power_supply *psy,
|
||||
val->intval = POWER_SUPPLY_HEALTH_GOOD;
|
||||
break;
|
||||
case POWER_SUPPLY_PROP_CURRENT_MAX:
|
||||
#if !defined(CONFIG_SEC_ATLANTIC_PROJECT)
|
||||
#if !defined(CONFIG_SEC_ATLANTIC_PROJECT) || !defined(CONFIG_MACH_S3VE3G_EUR)
|
||||
sec_qpnp_chg_check_vddmax(chip);
|
||||
#endif
|
||||
val->intval = charger->charging_current_max;
|
||||
|
||||
@@ -42,6 +42,14 @@ struct sec_battery_extcon_cable{
|
||||
|
||||
#define TEMP_HIGHLIMIT_DEFAULT 2000
|
||||
|
||||
#if defined(CONFIG_CHARGING_VZWCONCEPT)
|
||||
#define STORE_MODE_CHARGING_MAX 35
|
||||
#define STORE_MODE_CHARGING_MIN 30
|
||||
#else
|
||||
#define STORE_MODE_CHARGING_MAX 70
|
||||
#define STORE_MODE_CHARGING_MIN 60
|
||||
#endif
|
||||
|
||||
struct adc_sample_info {
|
||||
unsigned int cnt;
|
||||
int total_adc;
|
||||
|
||||
Reference in New Issue
Block a user