power: qpnp-charger.c: check power supply change calls

Make sure that a power supply is initialized before
calling power_supply_changed on a particular supply.

This fixes a possible bad magic bug when the power
supply framework tries to schedule the work queue.

Change-Id: Ie9d071208af93144a647047cf0c6d3ae9b94f4c2
Signed-off-by: David Keitel <dkeitel@codeaurora.org>
diff --git a/drivers/power/qpnp-charger.c b/drivers/power/qpnp-charger.c
index 5a0441b..10a9fcc 100644
--- a/drivers/power/qpnp-charger.c
+++ b/drivers/power/qpnp-charger.c
@@ -680,8 +680,10 @@
 	}
 
 	power_supply_changed(chip->usb_psy);
-	power_supply_changed(&chip->dc_psy);
-	power_supply_changed(&chip->batt_psy);
+	if (chip->dc_chgpth_base)
+		power_supply_changed(&chip->dc_psy);
+	if (chip->bat_if_base)
+		power_supply_changed(&chip->batt_psy);
 	return IRQ_HANDLED;
 }
 
@@ -796,9 +798,11 @@
 	if (rc)
 		pr_err("Failed to write chg_fail clear bit!\n");
 
-	power_supply_changed(&chip->batt_psy);
+	if (chip->bat_if_base)
+		power_supply_changed(&chip->batt_psy);
 	power_supply_changed(chip->usb_psy);
-	power_supply_changed(&chip->dc_psy);
+	if (chip->dc_chgpth_base)
+		power_supply_changed(&chip->dc_psy);
 	return IRQ_HANDLED;
 }
 
@@ -810,7 +814,8 @@
 	pr_debug("TRKL IRQ triggered\n");
 
 	chip->chg_done = false;
-	power_supply_changed(&chip->batt_psy);
+	if (chip->bat_if_base)
+		power_supply_changed(&chip->batt_psy);
 
 	return IRQ_HANDLED;
 }
@@ -822,9 +827,11 @@
 
 	pr_debug("FAST_CHG IRQ triggered\n");
 	chip->chg_done = false;
-	power_supply_changed(&chip->batt_psy);
+	if (chip->bat_if_base)
+		power_supply_changed(&chip->batt_psy);
 	power_supply_changed(chip->usb_psy);
-	power_supply_changed(&chip->dc_psy);
+	if (chip->dc_chgpth_base)
+		power_supply_changed(&chip->dc_psy);
 	enable_irq(chip->chg_vbatdet_lo_irq);
 
 	return IRQ_HANDLED;