diff --git a/drivers/power/supply/power_supply_core.c b/drivers/power/supply/power_supply_core.c
index 494b105b0e300ecddf988ad73283950ef1f279f5..6b1f92fc4b40b0388ab5183c48e93e3ce974b639 100644
--- a/drivers/power/supply/power_supply_core.c
+++ b/drivers/power/supply/power_supply_core.c
@@ -96,7 +96,10 @@ static void power_supply_changed_work(struct work_struct *work)
 		power_supply_update_leds(psy);
 		atomic_notifier_call_chain(&power_supply_notifier,
 				PSY_EVENT_PROP_CHANGED, psy);
-		kobject_uevent(&psy->dev.kobj, KOBJ_CHANGE);
+		if (likely(psy->dev.kobj.state_add_uevent_sent))
+			kobject_uevent(&psy->dev.kobj, KOBJ_CHANGE);
+		else
+			kobject_uevent(&psy->dev.kobj, KOBJ_ADD);
 		spin_lock_irqsave(&psy->changed_lock, flags);
 	}