power: add wirelesscharger(WLC) bq51051b driver
Change-Id: I61c4b9c3d648e8f709ec78708271f807ceed1715
diff --git a/drivers/power/pm8921-bms.c b/drivers/power/pm8921-bms.c
index e3e5cca..148b9ff 100644
--- a/drivers/power/pm8921-bms.c
+++ b/drivers/power/pm8921-bms.c
@@ -352,6 +352,25 @@
return ret.intval;
}
+#ifdef CONFIG_WIRELESS_CHARGER
+static int wireless_chg_plugged_in(void)
+{
+ union power_supply_propval ret = {0,};
+ static struct power_supply *psy;
+
+ if (psy == NULL) {
+ psy = power_supply_get_by_name("wireless");
+ if (psy == NULL)
+ return 0;
+ }
+
+ if (psy->get_property(psy, POWER_SUPPLY_PROP_ONLINE, &ret))
+ return 0;
+
+ return ret.intval;
+}
+#endif
+
#define HOLD_OREG_DATA BIT(1)
static int pm_bms_lock_output_data(struct pm8921_bms_chip *chip)
{
@@ -870,6 +889,10 @@
usb_chg = usb_chg_plugged_in();
+#ifdef CONFIG_WIRELESS_CHARGER
+ usb_chg |= wireless_chg_plugged_in();
+#endif
+
convert_vbatt_raw_to_uv(the_chip, usb_chg, vbat_raw, vbat_uv);
convert_vsense_to_uv(the_chip, vsense_raw, &vsense_uv);
*ibat_ua = vsense_uv * 1000 / (int)the_chip->r_sense;
@@ -901,6 +924,10 @@
mutex_unlock(&chip->bms_output_lock);
usb_chg = usb_chg_plugged_in();
+
+#ifdef CONFIG_WIRELESS_CHARGER
+ usb_chg |= wireless_chg_plugged_in();
+#endif
convert_vbatt_raw_to_uv(chip, usb_chg,
raw->vbatt_for_rbatt_raw, &raw->vbatt_for_rbatt_uv);
convert_vbatt_raw_to_uv(chip, usb_chg,
@@ -947,6 +974,10 @@
usb_chg = usb_chg_plugged_in();
+#ifdef CONFIG_WIRELESS_CHARGER
+ usb_chg |= wireless_chg_plugged_in();
+#endif
+
if (chip->prev_last_good_ocv_raw == 0) {
chip->prev_last_good_ocv_raw = raw->last_good_ocv_raw;
adjust_pon_ocv_raw(chip, raw);
@@ -1692,6 +1723,10 @@
voltage = xoadc_reading_to_microvolt(result.adc_code);
usb_chg = usb_chg_plugged_in();
+
+#ifdef CONFIG_WIRELESS_CHARGER
+ usb_chg |= wireless_chg_plugged_in();
+#endif
pr_debug("result 0.625V = 0x%x, voltage = %duV adc_meas = %lld "
"usb_chg = %d\n",
result.adc_code, voltage, result.measurement,
@@ -2278,6 +2313,10 @@
ocv_uv = 0;
pm_bms_read_output_data(chip, LAST_GOOD_OCV_VALUE, &ocv_raw);
usb_chg = usb_chg_plugged_in();
+
+#ifdef CONFIG_WIRELESS_CHARGER
+ usb_chg |= wireless_chg_plugged_in();
+#endif
rc = convert_vbatt_raw_to_uv(chip, usb_chg, ocv_raw, &ocv_uv);
if (rc || ocv_uv == 0) {
rc = adc_based_ocv(chip, &ocv_uv);