Merge tag 'v3.19-rc6' into HEAD

Linux 3.19-rc6
This commit is contained in:
Rob Herring
2015-02-04 10:43:01 -06:00
503 changed files with 4732 additions and 3372 deletions
-11
View File
@@ -114,17 +114,6 @@ static int of_overlay_apply_single_device_node(struct of_overlay *ov,
ret = of_overlay_apply_one(ov, tchild, child);
if (ret)
return ret;
/* The properties are already copied, now do the child nodes */
for_each_child_of_node(child, grandchild) {
ret = of_overlay_apply_single_device_node(ov, tchild, grandchild);
if (ret) {
pr_err("%s: Failed to apply single node @%s/%s\n",
__func__, tchild->full_name,
grandchild->name);
return ret;
}
}
}
return ret;
+9
View File
@@ -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)
@@ -176,5 +176,60 @@
};
};
overlay10 {
fragment@0 {
target-path = "/testcase-data/overlay-node/test-bus";
__overlay__ {
/* suppress DTC warning */
#address-cells = <1>;
#size-cells = <0>;
test-selftest10 {
compatible = "selftest";
status = "okay";
reg = <10>;
#address-cells = <1>;
#size-cells = <0>;
test-selftest101 {
compatible = "selftest";
status = "okay";
reg = <1>;
};
};
};
};
};
overlay11 {
fragment@0 {
target-path = "/testcase-data/overlay-node/test-bus";
__overlay__ {
/* suppress DTC warning */
#address-cells = <1>;
#size-cells = <0>;
test-selftest11 {
compatible = "selftest";
status = "okay";
reg = <11>;
#address-cells = <1>;
#size-cells = <0>;
test-selftest111 {
compatible = "selftest";
status = "okay";
reg = <1>;
};
};
};
};
};
};
};
+39
View File
@@ -935,6 +935,9 @@ static int selftest_probe(struct platform_device *pdev)
}
dev_dbg(dev, "%s for node @%s\n", __func__, np->full_name);
of_platform_populate(np, NULL, NULL, &pdev->dev);
return 0;
}
@@ -1342,6 +1345,39 @@ static void of_selftest_overlay_8(void)
selftest(1, "overlay test %d passed\n", 8);
}
/* test insertion of a bus with parent devices */
static void of_selftest_overlay_10(void)
{
int ret;
char *child_path;
/* device should disable */
ret = of_selftest_apply_overlay_check(10, 10, 0, 1);
if (selftest(ret == 0, "overlay test %d failed; overlay application\n", 10))
return;
child_path = kasprintf(GFP_KERNEL, "%s/test-selftest101",
selftest_path(10));
if (selftest(child_path, "overlay test %d failed; kasprintf\n", 10))
return;
ret = of_path_platform_device_exists(child_path);
kfree(child_path);
if (selftest(ret, "overlay test %d failed; no child device\n", 10))
return;
}
/* test insertion of a bus with parent devices (and revert) */
static void of_selftest_overlay_11(void)
{
int ret;
/* device should disable */
ret = of_selftest_apply_revert_overlay_check(11, 11, 0, 1);
if (selftest(ret == 0, "overlay test %d failed; overlay application\n", 11))
return;
}
static void __init of_selftest_overlay(void)
{
struct device_node *bus_np = NULL;
@@ -1390,6 +1426,9 @@ static void __init of_selftest_overlay(void)
of_selftest_overlay_6();
of_selftest_overlay_8();
of_selftest_overlay_10();
of_selftest_overlay_11();
out:
of_node_put(bus_np);
}