Loading drivers/power/supply/qcom/qpnp-smb2.c +36 −4 Original line number Diff line number Diff line Loading @@ -337,6 +337,7 @@ static enum power_supply_property smb2_usb_props[] = { POWER_SUPPLY_PROP_PRESENT, POWER_SUPPLY_PROP_ONLINE, POWER_SUPPLY_PROP_VOLTAGE_MAX, POWER_SUPPLY_PROP_VOLTAGE_MAX_DESIGN, POWER_SUPPLY_PROP_VOLTAGE_NOW, POWER_SUPPLY_PROP_PD_CURRENT_MAX, POWER_SUPPLY_PROP_CURRENT_MAX, Loading Loading @@ -393,6 +394,9 @@ static int smb2_usb_get_prop(struct power_supply *psy, case POWER_SUPPLY_PROP_VOLTAGE_MAX: rc = smblib_get_prop_usb_voltage_max(chg, val); break; case POWER_SUPPLY_PROP_VOLTAGE_MAX_DESIGN: rc = smblib_get_prop_usb_voltage_max_design(chg, val); break; case POWER_SUPPLY_PROP_VOLTAGE_NOW: rc = smblib_get_prop_usb_voltage_now(chg, val); break; Loading Loading @@ -711,6 +715,7 @@ static enum power_supply_property smb2_usb_main_props[] = { POWER_SUPPLY_PROP_INPUT_VOLTAGE_SETTLED, POWER_SUPPLY_PROP_FCC_DELTA, POWER_SUPPLY_PROP_CURRENT_MAX, POWER_SUPPLY_PROP_TOGGLE_STAT, /* * TODO move the TEMP and TEMP_MAX properties here, * and update the thermal balancer to look here Loading Loading @@ -748,6 +753,9 @@ static int smb2_usb_main_get_prop(struct power_supply *psy, case POWER_SUPPLY_PROP_CURRENT_MAX: rc = smblib_get_icl_current(chg, &val->intval); break; case POWER_SUPPLY_PROP_TOGGLE_STAT: val->intval = 0; break; default: pr_debug("get prop %d is not supported in usb-main\n", psp); rc = -EINVAL; Loading Loading @@ -778,6 +786,9 @@ static int smb2_usb_main_set_prop(struct power_supply *psy, case POWER_SUPPLY_PROP_CURRENT_MAX: rc = smblib_set_icl_current(chg, val->intval); break; case POWER_SUPPLY_PROP_TOGGLE_STAT: rc = smblib_toggle_stat(chg, val->intval); break; default: pr_err("set prop %d is not supported\n", psp); rc = -EINVAL; Loading @@ -787,6 +798,23 @@ static int smb2_usb_main_set_prop(struct power_supply *psy, return rc; } static int smb2_usb_main_prop_is_writeable(struct power_supply *psy, enum power_supply_property psp) { int rc; switch (psp) { case POWER_SUPPLY_PROP_TOGGLE_STAT: rc = 1; break; default: rc = 0; break; } return rc; } static const struct power_supply_desc usb_main_psy_desc = { .name = "main", .type = POWER_SUPPLY_TYPE_MAIN, Loading @@ -794,6 +822,7 @@ static const struct power_supply_desc usb_main_psy_desc = { .num_properties = ARRAY_SIZE(smb2_usb_main_props), .get_property = smb2_usb_main_get_prop, .set_property = smb2_usb_main_set_prop, .property_is_writeable = smb2_usb_main_prop_is_writeable, }; static int smb2_init_usb_main_psy(struct smb2 *chip) Loading Loading @@ -1860,8 +1889,9 @@ static int smb2_chg_config_init(struct smb2 *chip) switch (pmic_rev_id->pmic_subtype) { case PMI8998_SUBTYPE: chip->chg.smb_version = PMI8998_SUBTYPE; chip->chg.wa_flags |= BOOST_BACK_WA | QC_AUTH_INTERRUPT_WA_BIT; chip->chg.chg_param.smb_version = PMI8998_SUBTYPE; chip->chg.wa_flags |= BOOST_BACK_WA | QC_AUTH_INTERRUPT_WA_BIT | TYPEC_PBS_WA_BIT; if (pmic_rev_id->rev4 == PMI8998_V1P1_REV4) /* PMI rev 1.1 */ chg->wa_flags |= QC_CHARGER_DETECTION_WA_BIT; if (pmic_rev_id->rev4 == PMI8998_V2P0_REV4) /* PMI rev 2.0 */ Loading @@ -1875,8 +1905,9 @@ static int smb2_chg_config_init(struct smb2 *chip) chg->chg_freq.freq_above_otg_threshold = 800; break; case PM660_SUBTYPE: chip->chg.smb_version = PM660_SUBTYPE; chip->chg.wa_flags |= BOOST_BACK_WA | OTG_WA | OV_IRQ_WA_BIT; chip->chg.chg_param.smb_version = PM660_SUBTYPE; chip->chg.wa_flags |= BOOST_BACK_WA | OTG_WA | OV_IRQ_WA_BIT | TYPEC_PBS_WA_BIT; chg->param.freq_buck = pm660_params.freq_buck; chg->param.freq_boost = pm660_params.freq_boost; chg->chg_freq.freq_5V = 650; Loading Loading @@ -2089,6 +2120,7 @@ static struct smb_irq_info smb2_irqs[] = { [SWITCH_POWER_OK_IRQ] = { .name = "switcher-power-ok", .handler = smblib_handle_switcher_power_ok, .wake = true, .storm_data = {true, 1000, 8}, }, }; Loading drivers/power/supply/qcom/smb-lib.c +92 −22 Original line number Diff line number Diff line Loading @@ -437,7 +437,7 @@ static int smblib_set_adapter_allowance(struct smb_charger *chg, int rc = 0; /* PM660 only support max. 9V */ if (chg->smb_version == PM660_SUBTYPE) { if (chg->chg_param.smb_version == PM660_SUBTYPE) { switch (allowed_voltage) { case USBIN_ADAPTER_ALLOW_12V: case USBIN_ADAPTER_ALLOW_9V_TO_12V: Loading Loading @@ -776,7 +776,7 @@ static int smblib_get_hw_pulse_cnt(struct smb_charger *chg, int *count) int rc; u8 val[2]; switch (chg->smb_version) { switch (chg->chg_param.smb_version) { case PMI8998_SUBTYPE: rc = smblib_read(chg, QC_PULSE_COUNT_STATUS_REG, val); if (rc) { Loading @@ -798,7 +798,7 @@ static int smblib_get_hw_pulse_cnt(struct smb_charger *chg, int *count) break; default: smblib_dbg(chg, PR_PARALLEL, "unknown SMB chip %d\n", chg->smb_version); chg->chg_param.smb_version); return -EINVAL; } Loading Loading @@ -1077,6 +1077,7 @@ static int __smblib_set_prop_typec_power_role(struct smb_charger *chg, return -EINVAL; } if (chg->wa_flags & TYPEC_PBS_WA_BIT) { if (power_role == UFP_EN_CMD_BIT) { /* disable PBS workaround when forcing sink mode */ rc = smblib_write(chg, TM_IO_DTEST4_SEL, 0x0); Loading @@ -1092,6 +1093,7 @@ static int __smblib_set_prop_typec_power_role(struct smb_charger *chg, rc); } } } rc = smblib_masked_write(chg, TYPE_C_INTRPT_ENB_SOFTWARE_CTRL_REG, TYPEC_POWER_ROLE_CMD_MASK, power_role); Loading @@ -1104,6 +1106,48 @@ static int __smblib_set_prop_typec_power_role(struct smb_charger *chg, return rc; } int smblib_toggle_stat(struct smb_charger *chg, int reset) { int rc = 0; if (reset) { rc = smblib_masked_write(chg, STAT_CFG_REG, STAT_SW_OVERRIDE_CFG_BIT | STAT_SW_OVERRIDE_VALUE_BIT, STAT_SW_OVERRIDE_CFG_BIT | 0); if (rc < 0) { smblib_err(chg, "Couldn't pull STAT pin low rc=%d\n", rc); return rc; } /* * A minimum of 20us delay is expected before switching on STAT * pin */ usleep_range(20, 30); rc = smblib_masked_write(chg, STAT_CFG_REG, STAT_SW_OVERRIDE_CFG_BIT | STAT_SW_OVERRIDE_VALUE_BIT, STAT_SW_OVERRIDE_CFG_BIT | STAT_SW_OVERRIDE_VALUE_BIT); if (rc < 0) { smblib_err(chg, "Couldn't pull STAT pin high rc=%d\n", rc); return rc; } rc = smblib_masked_write(chg, STAT_CFG_REG, STAT_SW_OVERRIDE_CFG_BIT | STAT_SW_OVERRIDE_VALUE_BIT, 0); if (rc < 0) { smblib_err(chg, "Couldn't set hardware control rc=%d\n", rc); return rc; } } return rc; } /********************* * VOTABLE CALLBACKS * *********************/ Loading Loading @@ -2373,8 +2417,31 @@ int smblib_get_prop_usb_voltage_max(struct smb_charger *chg, { switch (chg->real_charger_type) { case POWER_SUPPLY_TYPE_USB_HVDCP: case POWER_SUPPLY_TYPE_USB_HVDCP_3: if (chg->chg_param.smb_version == PM660_SUBTYPE) val->intval = MICRO_9V; else val->intval = MICRO_12V; break; case POWER_SUPPLY_TYPE_USB_PD: val->intval = chg->voltage_max_uv; break; default: val->intval = MICRO_5V; break; } return 0; } int smblib_get_prop_usb_voltage_max_design(struct smb_charger *chg, union power_supply_propval *val) { switch (chg->real_charger_type) { case POWER_SUPPLY_TYPE_USB_HVDCP: case POWER_SUPPLY_TYPE_USB_HVDCP_3: case POWER_SUPPLY_TYPE_USB_PD: if (chg->smb_version == PM660_SUBTYPE) if (chg->chg_param.smb_version == PM660_SUBTYPE) val->intval = MICRO_9V; else val->intval = MICRO_12V; Loading Loading @@ -4285,10 +4352,13 @@ static void smblib_handle_typec_removal(struct smb_charger *chg) if (rc < 0) smblib_err(chg, "Couldn't enable HW cc_out rc=%d\n", rc); /* restore crude sensor */ /* restore crude sensor if PM660/PMI8998 */ if (chg->wa_flags & TYPEC_PBS_WA_BIT) { rc = smblib_write(chg, TM_IO_DTEST4_SEL, 0xA5); if (rc < 0) smblib_err(chg, "Couldn't restore crude sensor rc=%d\n", rc); smblib_err(chg, "Couldn't restore crude sensor rc=%d\n", rc); } mutex_lock(&chg->vconn_oc_lock); if (!chg->vconn_en) Loading Loading @@ -5241,7 +5311,7 @@ int smblib_init(struct smb_charger *chg) switch (chg->mode) { case PARALLEL_MASTER: rc = qcom_batt_init(chg->smb_version); rc = qcom_batt_init(&chg->chg_param); if (rc < 0) { smblib_err(chg, "Couldn't init qcom_batt_init rc=%d\n", rc); Loading drivers/power/supply/qcom/smb-lib.h +6 −1 Original line number Diff line number Diff line Loading @@ -19,6 +19,7 @@ #include <linux/regulator/consumer.h> #include <linux/extcon.h> #include "storm-watch.h" #include "battery.h" enum print_reason { PR_INTERRUPT = BIT(0), Loading Loading @@ -89,6 +90,7 @@ enum { QC_AUTH_INTERRUPT_WA_BIT = BIT(3), OTG_WA = BIT(4), OV_IRQ_WA_BIT = BIT(5), TYPEC_PBS_WA_BIT = BIT(6), }; enum smb_irq_index { Loading Loading @@ -244,7 +246,7 @@ struct smb_charger { int *try_sink_enabled; enum smb_mode mode; struct smb_chg_freq chg_freq; int smb_version; struct charger_param chg_param; int otg_delay_ms; int *weak_chg_icl_ua; Loading Loading @@ -476,6 +478,8 @@ int smblib_get_prop_usb_suspend(struct smb_charger *chg, union power_supply_propval *val); int smblib_get_prop_usb_voltage_max(struct smb_charger *chg, union power_supply_propval *val); int smblib_get_prop_usb_voltage_max_design(struct smb_charger *chg, union power_supply_propval *val); int smblib_get_prop_usb_voltage_now(struct smb_charger *chg, union power_supply_propval *val); int smblib_get_prop_usb_current_now(struct smb_charger *chg, Loading Loading @@ -541,6 +545,7 @@ int smblib_set_prop_pr_swap_in_progress(struct smb_charger *chg, const union power_supply_propval *val); int smblib_stat_sw_override_cfg(struct smb_charger *chg, bool override); void smblib_usb_typec_change(struct smb_charger *chg); int smblib_toggle_stat(struct smb_charger *chg, int reset); int smblib_init(struct smb_charger *chg); int smblib_deinit(struct smb_charger *chg); Loading Loading
drivers/power/supply/qcom/qpnp-smb2.c +36 −4 Original line number Diff line number Diff line Loading @@ -337,6 +337,7 @@ static enum power_supply_property smb2_usb_props[] = { POWER_SUPPLY_PROP_PRESENT, POWER_SUPPLY_PROP_ONLINE, POWER_SUPPLY_PROP_VOLTAGE_MAX, POWER_SUPPLY_PROP_VOLTAGE_MAX_DESIGN, POWER_SUPPLY_PROP_VOLTAGE_NOW, POWER_SUPPLY_PROP_PD_CURRENT_MAX, POWER_SUPPLY_PROP_CURRENT_MAX, Loading Loading @@ -393,6 +394,9 @@ static int smb2_usb_get_prop(struct power_supply *psy, case POWER_SUPPLY_PROP_VOLTAGE_MAX: rc = smblib_get_prop_usb_voltage_max(chg, val); break; case POWER_SUPPLY_PROP_VOLTAGE_MAX_DESIGN: rc = smblib_get_prop_usb_voltage_max_design(chg, val); break; case POWER_SUPPLY_PROP_VOLTAGE_NOW: rc = smblib_get_prop_usb_voltage_now(chg, val); break; Loading Loading @@ -711,6 +715,7 @@ static enum power_supply_property smb2_usb_main_props[] = { POWER_SUPPLY_PROP_INPUT_VOLTAGE_SETTLED, POWER_SUPPLY_PROP_FCC_DELTA, POWER_SUPPLY_PROP_CURRENT_MAX, POWER_SUPPLY_PROP_TOGGLE_STAT, /* * TODO move the TEMP and TEMP_MAX properties here, * and update the thermal balancer to look here Loading Loading @@ -748,6 +753,9 @@ static int smb2_usb_main_get_prop(struct power_supply *psy, case POWER_SUPPLY_PROP_CURRENT_MAX: rc = smblib_get_icl_current(chg, &val->intval); break; case POWER_SUPPLY_PROP_TOGGLE_STAT: val->intval = 0; break; default: pr_debug("get prop %d is not supported in usb-main\n", psp); rc = -EINVAL; Loading Loading @@ -778,6 +786,9 @@ static int smb2_usb_main_set_prop(struct power_supply *psy, case POWER_SUPPLY_PROP_CURRENT_MAX: rc = smblib_set_icl_current(chg, val->intval); break; case POWER_SUPPLY_PROP_TOGGLE_STAT: rc = smblib_toggle_stat(chg, val->intval); break; default: pr_err("set prop %d is not supported\n", psp); rc = -EINVAL; Loading @@ -787,6 +798,23 @@ static int smb2_usb_main_set_prop(struct power_supply *psy, return rc; } static int smb2_usb_main_prop_is_writeable(struct power_supply *psy, enum power_supply_property psp) { int rc; switch (psp) { case POWER_SUPPLY_PROP_TOGGLE_STAT: rc = 1; break; default: rc = 0; break; } return rc; } static const struct power_supply_desc usb_main_psy_desc = { .name = "main", .type = POWER_SUPPLY_TYPE_MAIN, Loading @@ -794,6 +822,7 @@ static const struct power_supply_desc usb_main_psy_desc = { .num_properties = ARRAY_SIZE(smb2_usb_main_props), .get_property = smb2_usb_main_get_prop, .set_property = smb2_usb_main_set_prop, .property_is_writeable = smb2_usb_main_prop_is_writeable, }; static int smb2_init_usb_main_psy(struct smb2 *chip) Loading Loading @@ -1860,8 +1889,9 @@ static int smb2_chg_config_init(struct smb2 *chip) switch (pmic_rev_id->pmic_subtype) { case PMI8998_SUBTYPE: chip->chg.smb_version = PMI8998_SUBTYPE; chip->chg.wa_flags |= BOOST_BACK_WA | QC_AUTH_INTERRUPT_WA_BIT; chip->chg.chg_param.smb_version = PMI8998_SUBTYPE; chip->chg.wa_flags |= BOOST_BACK_WA | QC_AUTH_INTERRUPT_WA_BIT | TYPEC_PBS_WA_BIT; if (pmic_rev_id->rev4 == PMI8998_V1P1_REV4) /* PMI rev 1.1 */ chg->wa_flags |= QC_CHARGER_DETECTION_WA_BIT; if (pmic_rev_id->rev4 == PMI8998_V2P0_REV4) /* PMI rev 2.0 */ Loading @@ -1875,8 +1905,9 @@ static int smb2_chg_config_init(struct smb2 *chip) chg->chg_freq.freq_above_otg_threshold = 800; break; case PM660_SUBTYPE: chip->chg.smb_version = PM660_SUBTYPE; chip->chg.wa_flags |= BOOST_BACK_WA | OTG_WA | OV_IRQ_WA_BIT; chip->chg.chg_param.smb_version = PM660_SUBTYPE; chip->chg.wa_flags |= BOOST_BACK_WA | OTG_WA | OV_IRQ_WA_BIT | TYPEC_PBS_WA_BIT; chg->param.freq_buck = pm660_params.freq_buck; chg->param.freq_boost = pm660_params.freq_boost; chg->chg_freq.freq_5V = 650; Loading Loading @@ -2089,6 +2120,7 @@ static struct smb_irq_info smb2_irqs[] = { [SWITCH_POWER_OK_IRQ] = { .name = "switcher-power-ok", .handler = smblib_handle_switcher_power_ok, .wake = true, .storm_data = {true, 1000, 8}, }, }; Loading
drivers/power/supply/qcom/smb-lib.c +92 −22 Original line number Diff line number Diff line Loading @@ -437,7 +437,7 @@ static int smblib_set_adapter_allowance(struct smb_charger *chg, int rc = 0; /* PM660 only support max. 9V */ if (chg->smb_version == PM660_SUBTYPE) { if (chg->chg_param.smb_version == PM660_SUBTYPE) { switch (allowed_voltage) { case USBIN_ADAPTER_ALLOW_12V: case USBIN_ADAPTER_ALLOW_9V_TO_12V: Loading Loading @@ -776,7 +776,7 @@ static int smblib_get_hw_pulse_cnt(struct smb_charger *chg, int *count) int rc; u8 val[2]; switch (chg->smb_version) { switch (chg->chg_param.smb_version) { case PMI8998_SUBTYPE: rc = smblib_read(chg, QC_PULSE_COUNT_STATUS_REG, val); if (rc) { Loading @@ -798,7 +798,7 @@ static int smblib_get_hw_pulse_cnt(struct smb_charger *chg, int *count) break; default: smblib_dbg(chg, PR_PARALLEL, "unknown SMB chip %d\n", chg->smb_version); chg->chg_param.smb_version); return -EINVAL; } Loading Loading @@ -1077,6 +1077,7 @@ static int __smblib_set_prop_typec_power_role(struct smb_charger *chg, return -EINVAL; } if (chg->wa_flags & TYPEC_PBS_WA_BIT) { if (power_role == UFP_EN_CMD_BIT) { /* disable PBS workaround when forcing sink mode */ rc = smblib_write(chg, TM_IO_DTEST4_SEL, 0x0); Loading @@ -1092,6 +1093,7 @@ static int __smblib_set_prop_typec_power_role(struct smb_charger *chg, rc); } } } rc = smblib_masked_write(chg, TYPE_C_INTRPT_ENB_SOFTWARE_CTRL_REG, TYPEC_POWER_ROLE_CMD_MASK, power_role); Loading @@ -1104,6 +1106,48 @@ static int __smblib_set_prop_typec_power_role(struct smb_charger *chg, return rc; } int smblib_toggle_stat(struct smb_charger *chg, int reset) { int rc = 0; if (reset) { rc = smblib_masked_write(chg, STAT_CFG_REG, STAT_SW_OVERRIDE_CFG_BIT | STAT_SW_OVERRIDE_VALUE_BIT, STAT_SW_OVERRIDE_CFG_BIT | 0); if (rc < 0) { smblib_err(chg, "Couldn't pull STAT pin low rc=%d\n", rc); return rc; } /* * A minimum of 20us delay is expected before switching on STAT * pin */ usleep_range(20, 30); rc = smblib_masked_write(chg, STAT_CFG_REG, STAT_SW_OVERRIDE_CFG_BIT | STAT_SW_OVERRIDE_VALUE_BIT, STAT_SW_OVERRIDE_CFG_BIT | STAT_SW_OVERRIDE_VALUE_BIT); if (rc < 0) { smblib_err(chg, "Couldn't pull STAT pin high rc=%d\n", rc); return rc; } rc = smblib_masked_write(chg, STAT_CFG_REG, STAT_SW_OVERRIDE_CFG_BIT | STAT_SW_OVERRIDE_VALUE_BIT, 0); if (rc < 0) { smblib_err(chg, "Couldn't set hardware control rc=%d\n", rc); return rc; } } return rc; } /********************* * VOTABLE CALLBACKS * *********************/ Loading Loading @@ -2373,8 +2417,31 @@ int smblib_get_prop_usb_voltage_max(struct smb_charger *chg, { switch (chg->real_charger_type) { case POWER_SUPPLY_TYPE_USB_HVDCP: case POWER_SUPPLY_TYPE_USB_HVDCP_3: if (chg->chg_param.smb_version == PM660_SUBTYPE) val->intval = MICRO_9V; else val->intval = MICRO_12V; break; case POWER_SUPPLY_TYPE_USB_PD: val->intval = chg->voltage_max_uv; break; default: val->intval = MICRO_5V; break; } return 0; } int smblib_get_prop_usb_voltage_max_design(struct smb_charger *chg, union power_supply_propval *val) { switch (chg->real_charger_type) { case POWER_SUPPLY_TYPE_USB_HVDCP: case POWER_SUPPLY_TYPE_USB_HVDCP_3: case POWER_SUPPLY_TYPE_USB_PD: if (chg->smb_version == PM660_SUBTYPE) if (chg->chg_param.smb_version == PM660_SUBTYPE) val->intval = MICRO_9V; else val->intval = MICRO_12V; Loading Loading @@ -4285,10 +4352,13 @@ static void smblib_handle_typec_removal(struct smb_charger *chg) if (rc < 0) smblib_err(chg, "Couldn't enable HW cc_out rc=%d\n", rc); /* restore crude sensor */ /* restore crude sensor if PM660/PMI8998 */ if (chg->wa_flags & TYPEC_PBS_WA_BIT) { rc = smblib_write(chg, TM_IO_DTEST4_SEL, 0xA5); if (rc < 0) smblib_err(chg, "Couldn't restore crude sensor rc=%d\n", rc); smblib_err(chg, "Couldn't restore crude sensor rc=%d\n", rc); } mutex_lock(&chg->vconn_oc_lock); if (!chg->vconn_en) Loading Loading @@ -5241,7 +5311,7 @@ int smblib_init(struct smb_charger *chg) switch (chg->mode) { case PARALLEL_MASTER: rc = qcom_batt_init(chg->smb_version); rc = qcom_batt_init(&chg->chg_param); if (rc < 0) { smblib_err(chg, "Couldn't init qcom_batt_init rc=%d\n", rc); Loading
drivers/power/supply/qcom/smb-lib.h +6 −1 Original line number Diff line number Diff line Loading @@ -19,6 +19,7 @@ #include <linux/regulator/consumer.h> #include <linux/extcon.h> #include "storm-watch.h" #include "battery.h" enum print_reason { PR_INTERRUPT = BIT(0), Loading Loading @@ -89,6 +90,7 @@ enum { QC_AUTH_INTERRUPT_WA_BIT = BIT(3), OTG_WA = BIT(4), OV_IRQ_WA_BIT = BIT(5), TYPEC_PBS_WA_BIT = BIT(6), }; enum smb_irq_index { Loading Loading @@ -244,7 +246,7 @@ struct smb_charger { int *try_sink_enabled; enum smb_mode mode; struct smb_chg_freq chg_freq; int smb_version; struct charger_param chg_param; int otg_delay_ms; int *weak_chg_icl_ua; Loading Loading @@ -476,6 +478,8 @@ int smblib_get_prop_usb_suspend(struct smb_charger *chg, union power_supply_propval *val); int smblib_get_prop_usb_voltage_max(struct smb_charger *chg, union power_supply_propval *val); int smblib_get_prop_usb_voltage_max_design(struct smb_charger *chg, union power_supply_propval *val); int smblib_get_prop_usb_voltage_now(struct smb_charger *chg, union power_supply_propval *val); int smblib_get_prop_usb_current_now(struct smb_charger *chg, Loading Loading @@ -541,6 +545,7 @@ int smblib_set_prop_pr_swap_in_progress(struct smb_charger *chg, const union power_supply_propval *val); int smblib_stat_sw_override_cfg(struct smb_charger *chg, bool override); void smblib_usb_typec_change(struct smb_charger *chg); int smblib_toggle_stat(struct smb_charger *chg, int reset); int smblib_init(struct smb_charger *chg); int smblib_deinit(struct smb_charger *chg); Loading