1be6026838e45b67800ac803f4ad8cca3cde57d6dDavid Gibson/*
2be6026838e45b67800ac803f4ad8cca3cde57d6dDavid Gibson * libfdt - Flat Device Tree manipulation
3be6026838e45b67800ac803f4ad8cca3cde57d6dDavid Gibson * Copyright (C) 2012 David Gibson, IBM Corporation.
4be6026838e45b67800ac803f4ad8cca3cde57d6dDavid Gibson *
5be6026838e45b67800ac803f4ad8cca3cde57d6dDavid Gibson * libfdt is dual licensed: you can use it either under the terms of
6be6026838e45b67800ac803f4ad8cca3cde57d6dDavid Gibson * the GPL, or the BSD license, at your option.
7be6026838e45b67800ac803f4ad8cca3cde57d6dDavid Gibson *
8be6026838e45b67800ac803f4ad8cca3cde57d6dDavid Gibson *  a) This library is free software; you can redistribute it and/or
9be6026838e45b67800ac803f4ad8cca3cde57d6dDavid Gibson *     modify it under the terms of the GNU General Public License as
10be6026838e45b67800ac803f4ad8cca3cde57d6dDavid Gibson *     published by the Free Software Foundation; either version 2 of the
11be6026838e45b67800ac803f4ad8cca3cde57d6dDavid Gibson *     License, or (at your option) any later version.
12be6026838e45b67800ac803f4ad8cca3cde57d6dDavid Gibson *
13be6026838e45b67800ac803f4ad8cca3cde57d6dDavid Gibson *     This library is distributed in the hope that it will be useful,
14be6026838e45b67800ac803f4ad8cca3cde57d6dDavid Gibson *     but WITHOUT ANY WARRANTY; without even the implied warranty of
15be6026838e45b67800ac803f4ad8cca3cde57d6dDavid Gibson *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16be6026838e45b67800ac803f4ad8cca3cde57d6dDavid Gibson *     GNU General Public License for more details.
17be6026838e45b67800ac803f4ad8cca3cde57d6dDavid Gibson *
18be6026838e45b67800ac803f4ad8cca3cde57d6dDavid Gibson *     You should have received a copy of the GNU General Public
19be6026838e45b67800ac803f4ad8cca3cde57d6dDavid Gibson *     License along with this library; if not, write to the Free
20be6026838e45b67800ac803f4ad8cca3cde57d6dDavid Gibson *     Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
21be6026838e45b67800ac803f4ad8cca3cde57d6dDavid Gibson *     MA 02110-1301 USA
22be6026838e45b67800ac803f4ad8cca3cde57d6dDavid Gibson *
23be6026838e45b67800ac803f4ad8cca3cde57d6dDavid Gibson * Alternatively,
24be6026838e45b67800ac803f4ad8cca3cde57d6dDavid Gibson *
25be6026838e45b67800ac803f4ad8cca3cde57d6dDavid Gibson *  b) Redistribution and use in source and binary forms, with or
26be6026838e45b67800ac803f4ad8cca3cde57d6dDavid Gibson *     without modification, are permitted provided that the following
27be6026838e45b67800ac803f4ad8cca3cde57d6dDavid Gibson *     conditions are met:
28be6026838e45b67800ac803f4ad8cca3cde57d6dDavid Gibson *
29be6026838e45b67800ac803f4ad8cca3cde57d6dDavid Gibson *     1. Redistributions of source code must retain the above
30be6026838e45b67800ac803f4ad8cca3cde57d6dDavid Gibson *        copyright notice, this list of conditions and the following
31be6026838e45b67800ac803f4ad8cca3cde57d6dDavid Gibson *        disclaimer.
32be6026838e45b67800ac803f4ad8cca3cde57d6dDavid Gibson *     2. Redistributions in binary form must reproduce the above
33be6026838e45b67800ac803f4ad8cca3cde57d6dDavid Gibson *        copyright notice, this list of conditions and the following
34be6026838e45b67800ac803f4ad8cca3cde57d6dDavid Gibson *        disclaimer in the documentation and/or other materials
35be6026838e45b67800ac803f4ad8cca3cde57d6dDavid Gibson *        provided with the distribution.
36be6026838e45b67800ac803f4ad8cca3cde57d6dDavid Gibson *
37be6026838e45b67800ac803f4ad8cca3cde57d6dDavid Gibson *     THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
38be6026838e45b67800ac803f4ad8cca3cde57d6dDavid Gibson *     CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
39be6026838e45b67800ac803f4ad8cca3cde57d6dDavid Gibson *     INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
40be6026838e45b67800ac803f4ad8cca3cde57d6dDavid Gibson *     MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
41be6026838e45b67800ac803f4ad8cca3cde57d6dDavid Gibson *     DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
42be6026838e45b67800ac803f4ad8cca3cde57d6dDavid Gibson *     CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
43be6026838e45b67800ac803f4ad8cca3cde57d6dDavid Gibson *     SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
44be6026838e45b67800ac803f4ad8cca3cde57d6dDavid Gibson *     NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
45be6026838e45b67800ac803f4ad8cca3cde57d6dDavid Gibson *     LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
46be6026838e45b67800ac803f4ad8cca3cde57d6dDavid Gibson *     HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
47be6026838e45b67800ac803f4ad8cca3cde57d6dDavid Gibson *     CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
48be6026838e45b67800ac803f4ad8cca3cde57d6dDavid Gibson *     OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
49be6026838e45b67800ac803f4ad8cca3cde57d6dDavid Gibson *     EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
50be6026838e45b67800ac803f4ad8cca3cde57d6dDavid Gibson */
51be6026838e45b67800ac803f4ad8cca3cde57d6dDavid Gibson#include "libfdt_env.h"
52be6026838e45b67800ac803f4ad8cca3cde57d6dDavid Gibson
53be6026838e45b67800ac803f4ad8cca3cde57d6dDavid Gibson#include <fdt.h>
54be6026838e45b67800ac803f4ad8cca3cde57d6dDavid Gibson#include <libfdt.h>
55be6026838e45b67800ac803f4ad8cca3cde57d6dDavid Gibson
56be6026838e45b67800ac803f4ad8cca3cde57d6dDavid Gibson#include "libfdt_internal.h"
57be6026838e45b67800ac803f4ad8cca3cde57d6dDavid Gibson
58be6026838e45b67800ac803f4ad8cca3cde57d6dDavid Gibsonint fdt_create_empty_tree(void *buf, int bufsize)
59be6026838e45b67800ac803f4ad8cca3cde57d6dDavid Gibson{
60be6026838e45b67800ac803f4ad8cca3cde57d6dDavid Gibson	int err;
61be6026838e45b67800ac803f4ad8cca3cde57d6dDavid Gibson
62be6026838e45b67800ac803f4ad8cca3cde57d6dDavid Gibson	err = fdt_create(buf, bufsize);
63be6026838e45b67800ac803f4ad8cca3cde57d6dDavid Gibson	if (err)
64be6026838e45b67800ac803f4ad8cca3cde57d6dDavid Gibson		return err;
65be6026838e45b67800ac803f4ad8cca3cde57d6dDavid Gibson
66be6026838e45b67800ac803f4ad8cca3cde57d6dDavid Gibson	err = fdt_finish_reservemap(buf);
67be6026838e45b67800ac803f4ad8cca3cde57d6dDavid Gibson	if (err)
68be6026838e45b67800ac803f4ad8cca3cde57d6dDavid Gibson		return err;
69be6026838e45b67800ac803f4ad8cca3cde57d6dDavid Gibson
70be6026838e45b67800ac803f4ad8cca3cde57d6dDavid Gibson	err = fdt_begin_node(buf, "");
71be6026838e45b67800ac803f4ad8cca3cde57d6dDavid Gibson	if (err)
72be6026838e45b67800ac803f4ad8cca3cde57d6dDavid Gibson		return err;
73be6026838e45b67800ac803f4ad8cca3cde57d6dDavid Gibson
74be6026838e45b67800ac803f4ad8cca3cde57d6dDavid Gibson	err =  fdt_end_node(buf);
75be6026838e45b67800ac803f4ad8cca3cde57d6dDavid Gibson	if (err)
76be6026838e45b67800ac803f4ad8cca3cde57d6dDavid Gibson		return err;
77be6026838e45b67800ac803f4ad8cca3cde57d6dDavid Gibson
78be6026838e45b67800ac803f4ad8cca3cde57d6dDavid Gibson	err = fdt_finish(buf);
79be6026838e45b67800ac803f4ad8cca3cde57d6dDavid Gibson	if (err)
80be6026838e45b67800ac803f4ad8cca3cde57d6dDavid Gibson		return err;
81be6026838e45b67800ac803f4ad8cca3cde57d6dDavid Gibson
82be6026838e45b67800ac803f4ad8cca3cde57d6dDavid Gibson	return fdt_open_into(buf, buf, bufsize);
83be6026838e45b67800ac803f4ad8cca3cde57d6dDavid Gibson}
84be6026838e45b67800ac803f4ad8cca3cde57d6dDavid Gibson
85