From b720a321333be6eae6ccc911b436ed8b6401b3b9 Mon Sep 17 00:00:00 2001
From: Sjoerd Simons <sjoerd.simons@collabora.co.uk>
Date: Fri, 16 Aug 2019 17:00:40 +0200
Subject: [PATCH] Ensure an add uevent gets sent

the power supply core filters out the add uevent from device_add and as
a delayed operation later sends an initial change. Which can confuse
userspace as there is a change but no add. Make the first change always
be an add.

Signed-off-by: Sjoerd Simons <sjoerd.simons@collabora.co.uk>
---
 drivers/power/supply/power_supply_core.c | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/drivers/power/supply/power_supply_core.c b/drivers/power/supply/power_supply_core.c
index 494b105b0e30..6b1f92fc4b40 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);
 	}
 
-- 
GitLab