diff options
Diffstat (limited to 'drivers')
| -rw-r--r-- | drivers/of/platform.c | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/drivers/of/platform.c b/drivers/of/platform.c index 7c6771986c06..656cccf0e680 100644 --- a/drivers/of/platform.c +++ b/drivers/of/platform.c | |||
| @@ -500,6 +500,7 @@ int of_platform_populate(struct device_node *root, | |||
| 500 | if (rc) | 500 | if (rc) |
| 501 | break; | 501 | break; |
| 502 | } | 502 | } |
| 503 | of_node_set_flag(root, OF_POPULATED_BUS); | ||
| 503 | 504 | ||
| 504 | of_node_put(root); | 505 | of_node_put(root); |
| 505 | return rc; | 506 | return rc; |
| @@ -542,7 +543,10 @@ static int of_platform_device_destroy(struct device *dev, void *data) | |||
| 542 | */ | 543 | */ |
| 543 | void of_platform_depopulate(struct device *parent) | 544 | void of_platform_depopulate(struct device *parent) |
| 544 | { | 545 | { |
| 545 | device_for_each_child(parent, NULL, of_platform_device_destroy); | 546 | if (parent->of_node && of_node_check_flag(parent->of_node, OF_POPULATED_BUS)) { |
| 547 | device_for_each_child(parent, NULL, of_platform_device_destroy); | ||
| 548 | of_node_clear_flag(parent->of_node, OF_POPULATED_BUS); | ||
| 549 | } | ||
| 546 | } | 550 | } |
| 547 | EXPORT_SYMBOL_GPL(of_platform_depopulate); | 551 | EXPORT_SYMBOL_GPL(of_platform_depopulate); |
| 548 | 552 | ||
