1/* 2 * This file does the necessary interface mapping between the bootwrapper 3 * device tree operations and the interface provided by shared source 4 * files flatdevicetree.[ch]. 5 * 6 * Author: Mark A. Greer <mgreer@mvista.com> 7 * 8 * 2006 (c) MontaVista Software, Inc. This file is licensed under 9 * the terms of the GNU General Public License version 2. This program 10 * is licensed "as is" without any warranty of any kind, whether express 11 * or implied. 12 */ 13#include <stddef.h> 14#include "flatdevtree.h" 15#include "ops.h" 16 17static struct ft_cxt cxt; 18 19static void *fdtm_finddevice(const char *name) 20{ 21 return ft_find_device(&cxt, name); 22} 23 24static int fdtm_getprop(const void *phandle, const char *propname, 25 void *buf, const int buflen) 26{ 27 return ft_get_prop(&cxt, phandle, propname, buf, buflen); 28} 29 30static int fdtm_setprop(const void *phandle, const char *propname, 31 const void *buf, const int buflen) 32{ 33 return ft_set_prop(&cxt, phandle, propname, buf, buflen); 34} 35 36static void *fdtm_get_parent(const void *phandle) 37{ 38 return ft_get_parent(&cxt, phandle); 39} 40 41static void *fdtm_create_node(const void *phandle, const char *name) 42{ 43 return ft_create_node(&cxt, phandle, name); 44} 45 46static void *fdtm_find_node_by_prop_value(const void *prev, 47 const char *propname, 48 const char *propval, 49 int proplen) 50{ 51 return ft_find_node_by_prop_value(&cxt, prev, propname, 52 propval, proplen); 53} 54 55static unsigned long fdtm_finalize(void) 56{ 57 ft_end_tree(&cxt); 58 return (unsigned long)cxt.bph; 59} 60 61int ft_init(void *dt_blob, unsigned int max_size, unsigned int max_find_device) 62{ 63 dt_ops.finddevice = fdtm_finddevice; 64 dt_ops.getprop = fdtm_getprop; 65 dt_ops.setprop = fdtm_setprop; 66 dt_ops.get_parent = fdtm_get_parent; 67 dt_ops.create_node = fdtm_create_node; 68 dt_ops.find_node_by_prop_value = fdtm_find_node_by_prop_value; 69 dt_ops.finalize = fdtm_finalize; 70 71 return ft_open(&cxt, dt_blob, max_size, max_find_device, 72 platform_ops.realloc); 73} 74