Loading drivers/power/supply/qcom/qg-core.h +2 −0 Original line number Diff line number Diff line Loading @@ -66,6 +66,7 @@ struct qg_dt { bool esr_disable; bool esr_discharge_enable; bool qg_ext_sense; bool use_cp_iin_sns; bool use_s7_ocv; bool qg_sleep_config; bool qg_fast_chg_cfg; Loading Loading @@ -122,6 +123,7 @@ struct qpnp_qg { struct power_supply *usb_psy; struct power_supply *dc_psy; struct power_supply *parallel_psy; struct power_supply *cp_psy; struct qg_esr_data esr_data[QG_MAX_ESR_COUNT]; /* status variable */ Loading drivers/power/supply/qcom/qg-util.c +16 −1 Original line number Diff line number Diff line Loading @@ -307,7 +307,7 @@ bool is_input_present(struct qpnp_qg *chip) return is_usb_present(chip) || is_dc_present(chip); } static bool is_parallel_available(struct qpnp_qg *chip) bool is_parallel_available(struct qpnp_qg *chip) { if (chip->parallel_psy) return true; Loading @@ -319,6 +319,18 @@ static bool is_parallel_available(struct qpnp_qg *chip) return true; } bool is_cp_available(struct qpnp_qg *chip) { if (chip->cp_psy) return true; chip->cp_psy = power_supply_get_by_name("charge_pump_master"); if (!chip->cp_psy) return false; return true; } bool is_parallel_enabled(struct qpnp_qg *chip) { union power_supply_propval pval = {0, }; Loading @@ -326,6 +338,9 @@ bool is_parallel_enabled(struct qpnp_qg *chip) if (is_parallel_available(chip)) { power_supply_get_property(chip->parallel_psy, POWER_SUPPLY_PROP_CHARGING_ENABLED, &pval); } else if (is_cp_available(chip)) { power_supply_get_property(chip->cp_psy, POWER_SUPPLY_PROP_CP_ENABLE, &pval); } return pval.intval ? true : false; Loading drivers/power/supply/qcom/qg-util.h +2 −0 Original line number Diff line number Diff line Loading @@ -19,6 +19,8 @@ bool is_usb_present(struct qpnp_qg *chip); bool is_dc_present(struct qpnp_qg *chip); bool is_input_present(struct qpnp_qg *chip); bool is_parallel_enabled(struct qpnp_qg *chip); bool is_cp_available(struct qpnp_qg *chip); bool is_parallel_available(struct qpnp_qg *chip); int qg_write_monotonic_soc(struct qpnp_qg *chip, int msoc); int qg_get_battery_temp(struct qpnp_qg *chip, int *batt_temp); int qg_get_battery_current(struct qpnp_qg *chip, int *ibat_ua); Loading drivers/power/supply/qcom/qpnp-qg.c +12 −6 Original line number Diff line number Diff line Loading @@ -2442,13 +2442,15 @@ static int qg_parallel_status_update(struct qpnp_qg *chip) "Parallel status changed Enabled=%d\n", parallel_enabled); mutex_lock(&chip->data_lock); /* * Parallel charger uses the same external sense, hence do not * enable SMB sensing if PMI632 is configured for external sense. * dt.qg_ext_sense = Uses external rsense, if defined do not * enable SMB sensing (for non-CP parallel charger). * dt.cp_iin_sns = Uses CP IIN_SNS, enable SMB sensing (for CP charger). */ if (!chip->dt.qg_ext_sense) update_smb = true; if (is_cp_available(chip)) update_smb = chip->dt.use_cp_iin_sns ? true : false; else if (is_parallel_available(chip)) update_smb = chip->dt.qg_ext_sense ? false : true; rc = process_rt_fifo_data(chip, update_smb); if (rc < 0) Loading Loading @@ -2699,7 +2701,8 @@ static int qg_notifier_cb(struct notifier_block *nb, if ((strcmp(psy->desc->name, "battery") == 0) || (strcmp(psy->desc->name, "parallel") == 0) || (strcmp(psy->desc->name, "usb") == 0) || (strcmp(psy->desc->name, "dc") == 0)) { || (strcmp(psy->desc->name, "dc") == 0) || (strcmp(psy->desc->name, "charge_pump_master") == 0)) { /* * We cannot vote for awake votable here as that takes * a mutex lock and this is executed in an atomic context. Loading Loading @@ -4340,6 +4343,9 @@ static int qg_parse_dt(struct qpnp_qg *chip) chip->dt.qg_ext_sense = of_property_read_bool(node, "qcom,qg-ext-sns"); chip->dt.use_cp_iin_sns = of_property_read_bool(node, "qcom,use-cp-iin-sns"); chip->dt.use_s7_ocv = of_property_read_bool(node, "qcom,qg-use-s7-ocv"); rc = of_property_read_u32(node, "qcom,min-sleep-time-secs", &temp); Loading Loading
drivers/power/supply/qcom/qg-core.h +2 −0 Original line number Diff line number Diff line Loading @@ -66,6 +66,7 @@ struct qg_dt { bool esr_disable; bool esr_discharge_enable; bool qg_ext_sense; bool use_cp_iin_sns; bool use_s7_ocv; bool qg_sleep_config; bool qg_fast_chg_cfg; Loading Loading @@ -122,6 +123,7 @@ struct qpnp_qg { struct power_supply *usb_psy; struct power_supply *dc_psy; struct power_supply *parallel_psy; struct power_supply *cp_psy; struct qg_esr_data esr_data[QG_MAX_ESR_COUNT]; /* status variable */ Loading
drivers/power/supply/qcom/qg-util.c +16 −1 Original line number Diff line number Diff line Loading @@ -307,7 +307,7 @@ bool is_input_present(struct qpnp_qg *chip) return is_usb_present(chip) || is_dc_present(chip); } static bool is_parallel_available(struct qpnp_qg *chip) bool is_parallel_available(struct qpnp_qg *chip) { if (chip->parallel_psy) return true; Loading @@ -319,6 +319,18 @@ static bool is_parallel_available(struct qpnp_qg *chip) return true; } bool is_cp_available(struct qpnp_qg *chip) { if (chip->cp_psy) return true; chip->cp_psy = power_supply_get_by_name("charge_pump_master"); if (!chip->cp_psy) return false; return true; } bool is_parallel_enabled(struct qpnp_qg *chip) { union power_supply_propval pval = {0, }; Loading @@ -326,6 +338,9 @@ bool is_parallel_enabled(struct qpnp_qg *chip) if (is_parallel_available(chip)) { power_supply_get_property(chip->parallel_psy, POWER_SUPPLY_PROP_CHARGING_ENABLED, &pval); } else if (is_cp_available(chip)) { power_supply_get_property(chip->cp_psy, POWER_SUPPLY_PROP_CP_ENABLE, &pval); } return pval.intval ? true : false; Loading
drivers/power/supply/qcom/qg-util.h +2 −0 Original line number Diff line number Diff line Loading @@ -19,6 +19,8 @@ bool is_usb_present(struct qpnp_qg *chip); bool is_dc_present(struct qpnp_qg *chip); bool is_input_present(struct qpnp_qg *chip); bool is_parallel_enabled(struct qpnp_qg *chip); bool is_cp_available(struct qpnp_qg *chip); bool is_parallel_available(struct qpnp_qg *chip); int qg_write_monotonic_soc(struct qpnp_qg *chip, int msoc); int qg_get_battery_temp(struct qpnp_qg *chip, int *batt_temp); int qg_get_battery_current(struct qpnp_qg *chip, int *ibat_ua); Loading
drivers/power/supply/qcom/qpnp-qg.c +12 −6 Original line number Diff line number Diff line Loading @@ -2442,13 +2442,15 @@ static int qg_parallel_status_update(struct qpnp_qg *chip) "Parallel status changed Enabled=%d\n", parallel_enabled); mutex_lock(&chip->data_lock); /* * Parallel charger uses the same external sense, hence do not * enable SMB sensing if PMI632 is configured for external sense. * dt.qg_ext_sense = Uses external rsense, if defined do not * enable SMB sensing (for non-CP parallel charger). * dt.cp_iin_sns = Uses CP IIN_SNS, enable SMB sensing (for CP charger). */ if (!chip->dt.qg_ext_sense) update_smb = true; if (is_cp_available(chip)) update_smb = chip->dt.use_cp_iin_sns ? true : false; else if (is_parallel_available(chip)) update_smb = chip->dt.qg_ext_sense ? false : true; rc = process_rt_fifo_data(chip, update_smb); if (rc < 0) Loading Loading @@ -2699,7 +2701,8 @@ static int qg_notifier_cb(struct notifier_block *nb, if ((strcmp(psy->desc->name, "battery") == 0) || (strcmp(psy->desc->name, "parallel") == 0) || (strcmp(psy->desc->name, "usb") == 0) || (strcmp(psy->desc->name, "dc") == 0)) { || (strcmp(psy->desc->name, "dc") == 0) || (strcmp(psy->desc->name, "charge_pump_master") == 0)) { /* * We cannot vote for awake votable here as that takes * a mutex lock and this is executed in an atomic context. Loading Loading @@ -4340,6 +4343,9 @@ static int qg_parse_dt(struct qpnp_qg *chip) chip->dt.qg_ext_sense = of_property_read_bool(node, "qcom,qg-ext-sns"); chip->dt.use_cp_iin_sns = of_property_read_bool(node, "qcom,use-cp-iin-sns"); chip->dt.use_s7_ocv = of_property_read_bool(node, "qcom,qg-use-s7-ocv"); rc = of_property_read_u32(node, "qcom,min-sleep-time-secs", &temp); Loading