mirror of
https://github.com/hardkernel/linux.git
synced 2026-06-08 20:07:46 +09:00
of/platform: Handle of_populate drivers in notifier
When using overlays with drivers calling of_populate the notifier
will try to create the device twice. Using the populated bit
before proceeding protects against this.
Signed-off-by: Pantelis Antoniou <pantelis.antoniou@konsulko.com>
Signed-off-by: Grant Likely <grant.likely@linaro.org>
(cherry picked from commit 15204ab1eb)
Signed-off-by: Mark Brown <broonie@kernel.org>
This commit is contained in:
committed by
Mark Brown
parent
5e3b95753e
commit
3472bee304
@@ -540,6 +540,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,
|
||||
@@ -555,6 +559,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)
|
||||
|
||||
Reference in New Issue
Block a user