|
@@ -566,6 +566,10 @@ static int of_platform_notify(struct notifier_block *nb,
|
|
|
if (!of_node_check_flag(rd->dn->parent, OF_POPULATED_BUS))
|
|
|
return NOTIFY_OK; /* not for us */
|
|
|
|
|
|
+ /* already populated? (driver using of_populate manually) */
|
|
|
+ if (of_node_check_flag(rd->dn, OF_POPULATED))
|
|
|
+ return NOTIFY_OK;
|
|
|
+
|
|
|
/* pdev_parent may be NULL when no bus platform device */
|
|
|
pdev_parent = of_find_device_by_node(rd->dn->parent);
|
|
|
pdev = of_platform_device_create(rd->dn, NULL,
|
|
@@ -581,6 +585,11 @@ static int of_platform_notify(struct notifier_block *nb,
|
|
|
break;
|
|
|
|
|
|
case OF_RECONFIG_CHANGE_REMOVE:
|
|
|
+
|
|
|
+ /* already depopulated? */
|
|
|
+ if (!of_node_check_flag(rd->dn, OF_POPULATED))
|
|
|
+ return NOTIFY_OK;
|
|
|
+
|
|
|
/* find our device by node */
|
|
|
pdev = of_find_device_by_node(rd->dn);
|
|
|
if (pdev == NULL)
|