# HG changeset patch
# User Hollis Blanchard <hollisb@xxxxxxxxxx>
# Node ID 9c72449e4370128446fa902d0183080289bdde12
# Parent 539a1e66698289d408ea61c3294361f150d320ff
[POWERPC] flat device tree update
- remove unused code
- implement ft_set_prop()
- relicense as LGPL (with permission from copyright owners)
- add explicit copyright notices
---
tools/libxc/powerpc64/ft_build.c | 165 +++++++--------------------------------
tools/libxc/powerpc64/ft_build.h | 29 ++++--
2 files changed, 49 insertions(+), 145 deletions(-)
diff -r 539a1e666982 -r 9c72449e4370 tools/libxc/powerpc64/ft_build.c
--- a/tools/libxc/powerpc64/ft_build.c Fri Aug 18 14:07:50 2006 -0400
+++ b/tools/libxc/powerpc64/ft_build.c Fri Aug 18 17:52:04 2006 -0500
@@ -1,17 +1,22 @@
/*
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of version 2.1 of the GNU Lesser General Public
+ * License as published by the Free Software Foundation.
*
- * This program is distributed in the hope that it will be useful,
+ * This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
*
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ * Copyright Pantelis Antoniou 2006
+ * Copyright (C) IBM Corporation 2006
+ *
+ * Authors: Pantelis Antoniou <pantelis@xxxxxxxxxxxxxxxxx>
+ * Hollis Blanchard <hollisb@xxxxxxxxxx>
*/
#include <stddef.h>
@@ -527,126 +532,20 @@ void *ft_get_prop(void *bphp, const char
return NULL;
}
-/********************************************************************/
-
-#if 0
-extern unsigned char oftree_dtb[];
-extern unsigned int oftree_dtb_len;
-
-void ft_setup(void *blob, int size, bd_t * bd)
-{
- DECLARE_GLOBAL_DATA_PTR;
- char *end;
- u32 *p;
- int len;
- struct ft_cxt cxt;
- int i, k, nxt;
- static char tmpenv[256];
- char *s, *lval, *rval;
- ulong clock;
- u32 v;
-
- /* disable OF tree; booting old kernel */
- if (getenv("disable_of") != NULL) {
- memcpy(blob, bd, sizeof(*bd));
- return;
- }
-
- ft_begin(&cxt, blob, size);
-
- /* fs_add_rsvmap not used */
-
- ft_begin_tree(&cxt);
-
- ft_begin_node(&cxt, "");
-
- ft_end_node(&cxt);
-
- /* copy RO tree */
- ft_merge_blob(&cxt, oftree_dtb);
-
- /* back into root */
- ft_backtrack_node(&cxt);
-
- ft_begin_node(&cxt, "u-boot-env");
-
- for (i = 0; env_get_char(i) != '\0'; i = nxt + 1) {
- for (nxt = i; env_get_char(nxt) != '\0'; ++nxt) ;
- s = tmpenv;
- for (k = i; k < nxt && s < &tmpenv[sizeof(tmpenv) - 1]; ++k)
- *s++ = env_get_char(k);
- *s++ = '\0';
- lval = tmpenv;
- s = strchr(tmpenv, '=');
- if (s != NULL) {
- *s++ = '\0';
- rval = s;
- } else
- continue;
- ft_prop_str(&cxt, lval, rval);
- }
-
- ft_end_node(&cxt);
-
- ft_begin_node(&cxt, "chosen");
-
- ft_prop_str(&cxt, "name", "chosen");
- ft_prop_str(&cxt, "bootargs", getenv("bootargs"));
- ft_prop_int(&cxt, "linux,platform", 0x600); /* what is this? */
-
- ft_end_node(&cxt);
-
- ft_end_node(&cxt); /* end root */
-
- ft_end_tree(&cxt);
-
- /*
- printf("merged OF-tree\n");
- ft_dump_blob(blob);
- */
-
- /* paste the bd_t at the end of the flat tree */
- end = (char *)blob +
- be32_to_cpu(((struct boot_param_header *)blob)->totalsize);
- memcpy(end, bd, sizeof(*bd));
-
-#ifdef CONFIG_PPC
-
- for (i = 0; i < sizeof(bd_map)/sizeof(bd_map[0]); i++) {
- sprintf(tmpenv, "/bd_t/%s", bd_map[i].name);
- v = *(u32 *)((char *)bd + bd_map[i].offset);
-
- p = ft_get_prop(blob, tmpenv, &len);
- if (p != NULL)
- *p = cpu_to_be32(v);
- }
-
- p = ft_get_prop(blob, "/bd_t/enetaddr", &len);
- if (p != NULL)
- memcpy(p, bd->bi_enetaddr, 6);
-
- p = ft_get_prop(blob, "/bd_t/ethspeed", &len);
- if (p != NULL)
- *p = cpu_to_be32((u32) bd->bi_ethspeed);
-
- clock = bd->bi_intfreq;
- p = ft_get_prop(blob, "/cpus/" OF_CPU "/clock-frequency", &len);
- if (p != NULL)
- *p = cpu_to_be32(clock);
-
-#ifdef OF_TBCLK
- clock = OF_TBCLK;
- p = ft_get_prop(blob, "/cpus/" OF_CPU "/timebase-frequency", &len);
- if (p != NULL)
- *p = cpu_to_be32(OF_TBCLK);
-#endif
-
-#endif /* __powerpc__ */
-
- /*
- printf("final OF-tree\n");
- ft_dump_blob(blob);
- */
-
-}
-#endif
+int ft_set_prop(void *bphp, const char *propname, const void *val,
+ unsigned int len)
+{
+ void *prop;
+ unsigned int proplen;
+
+ prop = ft_get_prop(bphp, propname, &proplen);
+ if (prop == NULL)
+ return -ENOENT;
+
+ if (proplen != len)
+ /* XXX to be removed when property resize is supported */
+ return -EINVAL;
+
+ memcpy(prop, val, len);
+ return 0;
+}
diff -r 539a1e666982 -r 9c72449e4370 tools/libxc/powerpc64/ft_build.h
--- a/tools/libxc/powerpc64/ft_build.h Fri Aug 18 14:07:50 2006 -0400
+++ b/tools/libxc/powerpc64/ft_build.h Fri Aug 18 17:52:04 2006 -0500
@@ -1,17 +1,22 @@
/*
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of version 2.1 of the GNU Lesser General Public
+ * License as published by the Free Software Foundation.
*
- * This program is distributed in the hope that it will be useful,
+ * This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
*
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ * Copyright Pantelis Antoniou 2006
+ * Copyright (C) IBM Corporation 2006
+ *
+ * Authors: Pantelis Antoniou <pantelis@xxxxxxxxxxxxxxxxx>
+ * Hollis Blanchard <hollisb@xxxxxxxxxx>
*/
#ifndef FT_BUILD_H
@@ -116,7 +121,7 @@ void ft_dump_blob(const void *bphp);
void ft_dump_blob(const void *bphp);
void ft_merge_blob(struct ft_cxt *cxt, void *blob);
void *ft_get_prop(void *bphp, const char *propname, unsigned int *szp);
-void ft_set_prop(void *bphp, const char *propname,
- void *val, unsigned int len);
+int ft_set_prop(void *bphp, const char *propname, const void *val,
+ unsigned int len);
#endif
_______________________________________________
Xen-ppc-devel mailing list
Xen-ppc-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-ppc-devel
|