You've already forked linux-apfs
mirror of
https://github.com/linux-apfs/linux-apfs.git
synced 2026-05-01 15:00:59 -07:00
Merge tag 'v3.19-rc6' into HEAD
Linux 3.19-rc6
This commit is contained in:
@@ -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;
|
||||
|
||||
@@ -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>;
|
||||
};
|
||||
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user