openwrt/target/linux/bcm27xx/patches-4.19/950-0126-of-configfs-Use-of_overlay_fdt_apply-API-call.patch
Adrian Schmutzler 7d7aa2fd92 brcm2708: rename target to bcm27xx
This change makes the names of Broadcom targets consistent by using
the common notation based on SoC/CPU ID (which is used internally
anyway), bcmXXXX instead of brcmXXXX.
This is even used for target TITLE in make menuconfig already,
only the short target name used brcm so far.

Despite, since subtargets range from bcm2708 to bcm2711, it seems
appropriate to use bcm27xx instead of bcm2708 (again, as already done
for BOARDNAME).

This also renames the packages brcm2708-userland and brcm2708-gpu-fw.

Signed-off-by: Adrian Schmutzler <freifunk@adrianschmutzler.de>
Acked-by: Álvaro Fernández Rojas <noltari@gmail.com>
2020-02-14 14:10:51 +01:00

115 lines
3.3 KiB
Diff

From fe78e259c356ef883528c5ec3527c714a5966c0c Mon Sep 17 00:00:00 2001
From: Phil Elwell <phil@raspberrypi.org>
Date: Thu, 14 Jun 2018 15:07:26 +0100
Subject: [PATCH] of: configfs: Use of_overlay_fdt_apply API call
The published API to the dynamic overlay application mechanism now
takes a Flattened Device Tree blob as input so that it can manage the
lifetime of the unflattened tree. Conveniently, the new API call -
of_overlay_fdt_apply - is virtually a drop-in replacement for
create_overlay, which can now be deleted.
Signed-off-by: Phil Elwell <phil@raspberrypi.org>
---
drivers/of/configfs.c | 47 +++++++------------------------------------
1 file changed, 7 insertions(+), 40 deletions(-)
--- a/drivers/of/configfs.c
+++ b/drivers/of/configfs.c
@@ -40,41 +40,6 @@ struct cfs_overlay_item {
int dtbo_size;
};
-static int create_overlay(struct cfs_overlay_item *overlay, void *blob)
-{
- int err;
-
- /* unflatten the tree */
- of_fdt_unflatten_tree(blob, NULL, &overlay->overlay);
- if (overlay->overlay == NULL) {
- pr_err("%s: failed to unflatten tree\n", __func__);
- err = -EINVAL;
- goto out_err;
- }
- pr_debug("%s: unflattened OK\n", __func__);
-
- /* mark it as detached */
- of_node_set_flag(overlay->overlay, OF_DETACHED);
-
- /* perform resolution */
- err = of_resolve_phandles(overlay->overlay);
- if (err != 0) {
- pr_err("%s: Failed to resolve tree\n", __func__);
- goto out_err;
- }
- pr_debug("%s: resolved OK\n", __func__);
-
- err = of_overlay_apply(overlay->overlay, &overlay->ov_id);
- if (err < 0) {
- pr_err("%s: Failed to create overlay (err=%d)\n",
- __func__, err);
- goto out_err;
- }
-
-out_err:
- return err;
-}
-
static inline struct cfs_overlay_item *to_cfs_overlay_item(
struct config_item *item)
{
@@ -115,7 +80,8 @@ static ssize_t cfs_overlay_item_path_sto
if (err != 0)
goto out_err;
- err = create_overlay(overlay, (void *)overlay->fw->data);
+ err = of_overlay_fdt_apply((void *)overlay->fw->data,
+ (u32)overlay->fw->size, &overlay->ov_id);
if (err != 0)
goto out_err;
@@ -136,7 +102,7 @@ static ssize_t cfs_overlay_item_status_s
struct cfs_overlay_item *overlay = to_cfs_overlay_item(item);
return sprintf(page, "%s\n",
- overlay->ov_id >= 0 ? "applied" : "unapplied");
+ overlay->ov_id > 0 ? "applied" : "unapplied");
}
CONFIGFS_ATTR(cfs_overlay_item_, path);
@@ -188,7 +154,8 @@ ssize_t cfs_overlay_item_dtbo_write(stru
overlay->dtbo_size = count;
- err = create_overlay(overlay, overlay->dtbo);
+ err = of_overlay_fdt_apply(overlay->dtbo, overlay->dtbo_size,
+ &overlay->ov_id);
if (err != 0)
goto out_err;
@@ -198,6 +165,7 @@ out_err:
kfree(overlay->dtbo);
overlay->dtbo = NULL;
overlay->dtbo_size = 0;
+ overlay->ov_id = 0;
return err;
}
@@ -213,7 +181,7 @@ static void cfs_overlay_release(struct c
{
struct cfs_overlay_item *overlay = to_cfs_overlay_item(item);
- if (overlay->ov_id >= 0)
+ if (overlay->ov_id > 0)
of_overlay_remove(&overlay->ov_id);
if (overlay->fw)
release_firmware(overlay->fw);
@@ -241,7 +209,6 @@ static struct config_item *cfs_overlay_g
overlay = kzalloc(sizeof(*overlay), GFP_KERNEL);
if (!overlay)
return ERR_PTR(-ENOMEM);
- overlay->ov_id = -1;
config_item_init_type_name(&overlay->item, name, &cfs_overlay_type);
return &overlay->item;