Loading drivers/power/supply/qcom/smb5-lib.c +34 −4 Original line number Diff line number Diff line Loading @@ -2049,12 +2049,42 @@ int smblib_get_prop_usb_voltage_max(struct smb_charger *chg, int smblib_get_prop_usb_voltage_now(struct smb_charger *chg, union power_supply_propval *val) { if (chg->iio.usbin_v_chan) return iio_read_channel_processed(chg->iio.usbin_v_chan, &val->intval); else int rc, ret = 0; /* set 12V OV to 14.6V */ if (chg->smb_version == PM8150B_SUBTYPE) { rc = smblib_masked_write(chg, USB_ENG_SSUPPLY_USB2_REG, ENG_SSUPPLY_12V_OV_OPT_BIT, ENG_SSUPPLY_12V_OV_OPT_BIT); if (rc < 0) { smblib_err(chg, "Couldn't set USB_ENG_SSUPPLY_USB2_REG rc=%d\n", rc); return -ENODATA; } } if (chg->iio.usbin_v_chan) { rc = iio_read_channel_processed(chg->iio.usbin_v_chan, &val->intval); if (rc < 0) ret = -ENODATA; } else { ret = -ENODATA; } /* restore 12V OV to 13.2V */ if (chg->smb_version == PM8150B_SUBTYPE) { rc = smblib_masked_write(chg, USB_ENG_SSUPPLY_USB2_REG, ENG_SSUPPLY_12V_OV_OPT_BIT, 0); if (rc < 0) { smblib_err(chg, "Couldn't restore USB_ENG_SSUPPLY_USB2_REG rc=%d\n", rc); ret = -ENODATA; } } return ret; } int smblib_get_prop_charger_temp(struct smb_charger *chg, union power_supply_propval *val) Loading drivers/power/supply/qcom/smb5-reg.h +3 −0 Original line number Diff line number Diff line Loading @@ -271,6 +271,9 @@ enum { #define USBIN_AICL_PERIODIC_RERUN_EN_BIT BIT(4) #define USBIN_AICL_ADC_EN_BIT BIT(3) #define USB_ENG_SSUPPLY_USB2_REG (USBIN_BASE + 0xC0) #define ENG_SSUPPLY_12V_OV_OPT_BIT BIT(1) /******************************** * DCIN Peripheral Registers * ********************************/ Loading Loading
drivers/power/supply/qcom/smb5-lib.c +34 −4 Original line number Diff line number Diff line Loading @@ -2049,12 +2049,42 @@ int smblib_get_prop_usb_voltage_max(struct smb_charger *chg, int smblib_get_prop_usb_voltage_now(struct smb_charger *chg, union power_supply_propval *val) { if (chg->iio.usbin_v_chan) return iio_read_channel_processed(chg->iio.usbin_v_chan, &val->intval); else int rc, ret = 0; /* set 12V OV to 14.6V */ if (chg->smb_version == PM8150B_SUBTYPE) { rc = smblib_masked_write(chg, USB_ENG_SSUPPLY_USB2_REG, ENG_SSUPPLY_12V_OV_OPT_BIT, ENG_SSUPPLY_12V_OV_OPT_BIT); if (rc < 0) { smblib_err(chg, "Couldn't set USB_ENG_SSUPPLY_USB2_REG rc=%d\n", rc); return -ENODATA; } } if (chg->iio.usbin_v_chan) { rc = iio_read_channel_processed(chg->iio.usbin_v_chan, &val->intval); if (rc < 0) ret = -ENODATA; } else { ret = -ENODATA; } /* restore 12V OV to 13.2V */ if (chg->smb_version == PM8150B_SUBTYPE) { rc = smblib_masked_write(chg, USB_ENG_SSUPPLY_USB2_REG, ENG_SSUPPLY_12V_OV_OPT_BIT, 0); if (rc < 0) { smblib_err(chg, "Couldn't restore USB_ENG_SSUPPLY_USB2_REG rc=%d\n", rc); ret = -ENODATA; } } return ret; } int smblib_get_prop_charger_temp(struct smb_charger *chg, union power_supply_propval *val) Loading
drivers/power/supply/qcom/smb5-reg.h +3 −0 Original line number Diff line number Diff line Loading @@ -271,6 +271,9 @@ enum { #define USBIN_AICL_PERIODIC_RERUN_EN_BIT BIT(4) #define USBIN_AICL_ADC_EN_BIT BIT(3) #define USB_ENG_SSUPPLY_USB2_REG (USBIN_BASE + 0xC0) #define ENG_SSUPPLY_12V_OV_OPT_BIT BIT(1) /******************************** * DCIN Peripheral Registers * ********************************/ Loading