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