of_pdt.h 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. /*
  2. * Definitions for building a device tree by calling into the
  3. * Open Firmware PROM.
  4. *
  5. * Copyright (C) 2010 Andres Salomon <dilinger@queued.net>
  6. *
  7. * This program is free software; you can redistribute it and/or
  8. * modify it under the terms of the GNU General Public License
  9. * as published by the Free Software Foundation; either version
  10. * 2 of the License, or (at your option) any later version.
  11. */
  12. #ifndef _LINUX_OF_PDT_H
  13. #define _LINUX_OF_PDT_H
  14. /* overridable operations for calling into the PROM */
  15. struct of_pdt_ops {
  16. /*
  17. * buf should be 32 bytes; return 0 on success.
  18. * If prev is NULL, the first property will be returned.
  19. */
  20. int (*nextprop)(phandle node, char *prev, char *buf);
  21. /* for both functions, return proplen on success; -1 on error */
  22. int (*getproplen)(phandle node, const char *prop);
  23. int (*getproperty)(phandle node, const char *prop, char *buf,
  24. int bufsize);
  25. /* phandles are 0 if no child or sibling exists */
  26. phandle (*getchild)(phandle parent);
  27. phandle (*getsibling)(phandle node);
  28. /* return 0 on success; fill in 'len' with number of bytes in path */
  29. int (*pkg2path)(phandle node, char *buf, const int buflen, int *len);
  30. };
  31. extern void *prom_early_alloc(unsigned long size);
  32. /* for building the device tree */
  33. extern void of_pdt_build_devicetree(phandle root_node, struct of_pdt_ops *ops);
  34. extern void (*of_pdt_build_more)(struct device_node *dp);
  35. #endif /* _LINUX_OF_PDT_H */