\r
#include "libfdt_internal.h"\r
\r
-int fdt_check_header(const void *fdt)\r
+int\r
+fdt_check_header (\r
+ const void *fdt\r
+ )\r
{\r
- if (fdt_magic(fdt) == FDT_MAGIC) {\r
- /* Complete tree */\r
- if (fdt_version(fdt) < FDT_FIRST_SUPPORTED_VERSION)\r
- return -FDT_ERR_BADVERSION;\r
- if (fdt_last_comp_version(fdt) > FDT_LAST_SUPPORTED_VERSION)\r
- return -FDT_ERR_BADVERSION;\r
- } else if (fdt_magic(fdt) == FDT_SW_MAGIC) {\r
- /* Unfinished sequential-write blob */\r
- if (fdt_size_dt_struct(fdt) == 0)\r
- return -FDT_ERR_BADSTATE;\r
- } else {\r
- return -FDT_ERR_BADMAGIC;\r
- }\r
-\r
- return 0;\r
+ if (fdt_magic (fdt) == FDT_MAGIC) {\r
+ /* Complete tree */\r
+ if (fdt_version (fdt) < FDT_FIRST_SUPPORTED_VERSION) {\r
+ return -FDT_ERR_BADVERSION;\r
+ }\r
+\r
+ if (fdt_last_comp_version (fdt) > FDT_LAST_SUPPORTED_VERSION) {\r
+ return -FDT_ERR_BADVERSION;\r
+ }\r
+ } else if (fdt_magic (fdt) == FDT_SW_MAGIC) {\r
+ /* Unfinished sequential-write blob */\r
+ if (fdt_size_dt_struct (fdt) == 0) {\r
+ return -FDT_ERR_BADSTATE;\r
+ }\r
+ } else {\r
+ return -FDT_ERR_BADMAGIC;\r
+ }\r
+\r
+ return 0;\r
}\r
\r
-const void *fdt_offset_ptr(const void *fdt, int offset, unsigned int len)\r
+const void *\r
+fdt_offset_ptr (\r
+ const void *fdt,\r
+ int offset,\r
+ unsigned int len\r
+ )\r
{\r
- unsigned absoffset = offset + fdt_off_dt_struct(fdt);\r
-\r
- if ((absoffset < offset)\r
- || ((absoffset + len) < absoffset)\r
- || (absoffset + len) > fdt_totalsize(fdt))\r
- return NULL;\r
-\r
- if (fdt_version(fdt) >= 0x11)\r
- if (((offset + len) < offset)\r
- || ((offset + len) > fdt_size_dt_struct(fdt)))\r
- return NULL;\r
-\r
- return _fdt_offset_ptr(fdt, offset);\r
+ unsigned absoffset = offset + fdt_off_dt_struct (fdt);\r
+\r
+ if ( (absoffset < offset)\r
+ || ((absoffset + len) < absoffset)\r
+ || ((absoffset + len) > fdt_totalsize (fdt)))\r
+ {\r
+ return NULL;\r
+ }\r
+\r
+ if (fdt_version (fdt) >= 0x11) {\r
+ if ( ((offset + len) < offset)\r
+ || ((offset + len) > fdt_size_dt_struct (fdt)))\r
+ {\r
+ return NULL;\r
+ }\r
+ }\r
+\r
+ return _fdt_offset_ptr (fdt, offset);\r
}\r
\r
-uint32_t fdt_next_tag(const void *fdt, int startoffset, int *nextoffset)\r
+uint32_t\r
+fdt_next_tag (\r
+ const void *fdt,\r
+ int startoffset,\r
+ int *nextoffset\r
+ )\r
{\r
- const fdt32_t *tagp, *lenp;\r
- uint32_t tag;\r
- int offset = startoffset;\r
- const char *p;\r
-\r
- *nextoffset = -FDT_ERR_TRUNCATED;\r
- tagp = fdt_offset_ptr(fdt, offset, FDT_TAGSIZE);\r
- if (!tagp)\r
- return FDT_END; /* premature end */\r
- tag = fdt32_to_cpu(*tagp);\r
- offset += FDT_TAGSIZE;\r
-\r
- *nextoffset = -FDT_ERR_BADSTRUCTURE;\r
- switch (tag) {\r
- case FDT_BEGIN_NODE:\r
- /* skip name */\r
- do {\r
- p = fdt_offset_ptr(fdt, offset++, 1);\r
- } while (p && (*p != '\0'));\r
- if (!p)\r
- return FDT_END; /* premature end */\r
- break;\r
-\r
- case FDT_PROP:\r
- lenp = fdt_offset_ptr(fdt, offset, sizeof(*lenp));\r
- if (!lenp)\r
- return FDT_END; /* premature end */\r
- /* skip-name offset, length and value */\r
- offset += sizeof(struct fdt_property) - FDT_TAGSIZE\r
- + fdt32_to_cpu(*lenp);\r
- break;\r
-\r
- case FDT_END:\r
- case FDT_END_NODE:\r
- case FDT_NOP:\r
- break;\r
-\r
- default:\r
- return FDT_END;\r
- }\r
-\r
- if (!fdt_offset_ptr(fdt, startoffset, offset - startoffset))\r
- return FDT_END; /* premature end */\r
-\r
- *nextoffset = FDT_TAGALIGN(offset);\r
- return tag;\r
+ const fdt32_t *tagp, *lenp;\r
+ uint32_t tag;\r
+ int offset = startoffset;\r
+ const char *p;\r
+\r
+ *nextoffset = -FDT_ERR_TRUNCATED;\r
+ tagp = fdt_offset_ptr (fdt, offset, FDT_TAGSIZE);\r
+ if (!tagp) {\r
+ return FDT_END; /* premature end */\r
+ }\r
+\r
+ tag = fdt32_to_cpu (*tagp);\r
+ offset += FDT_TAGSIZE;\r
+\r
+ *nextoffset = -FDT_ERR_BADSTRUCTURE;\r
+ switch (tag) {\r
+ case FDT_BEGIN_NODE:\r
+ /* skip name */\r
+ do {\r
+ p = fdt_offset_ptr (fdt, offset++, 1);\r
+ } while (p && (*p != '\0'));\r
+\r
+ if (!p) {\r
+ return FDT_END; /* premature end */\r
+ }\r
+\r
+ break;\r
+\r
+ case FDT_PROP:\r
+ lenp = fdt_offset_ptr (fdt, offset, sizeof (*lenp));\r
+ if (!lenp) {\r
+ return FDT_END; /* premature end */\r
+ }\r
+\r
+ /* skip-name offset, length and value */\r
+ offset += sizeof (struct fdt_property) - FDT_TAGSIZE\r
+ + fdt32_to_cpu (*lenp);\r
+ break;\r
+\r
+ case FDT_END:\r
+ case FDT_END_NODE:\r
+ case FDT_NOP:\r
+ break;\r
+\r
+ default:\r
+ return FDT_END;\r
+ }\r
+\r
+ if (!fdt_offset_ptr (fdt, startoffset, offset - startoffset)) {\r
+ return FDT_END; /* premature end */\r
+ }\r
+\r
+ *nextoffset = FDT_TAGALIGN (offset);\r
+ return tag;\r
}\r
\r
-int _fdt_check_node_offset(const void *fdt, int offset)\r
+int\r
+_fdt_check_node_offset (\r
+ const void *fdt,\r
+ int offset\r
+ )\r
{\r
- if ((offset < 0) || (offset % FDT_TAGSIZE)\r
- || (fdt_next_tag(fdt, offset, &offset) != FDT_BEGIN_NODE))\r
- return -FDT_ERR_BADOFFSET;\r
+ if ( (offset < 0) || (offset % FDT_TAGSIZE)\r
+ || (fdt_next_tag (fdt, offset, &offset) != FDT_BEGIN_NODE))\r
+ {\r
+ return -FDT_ERR_BADOFFSET;\r
+ }\r
\r
- return offset;\r
+ return offset;\r
}\r
\r
-int _fdt_check_prop_offset(const void *fdt, int offset)\r
+int\r
+_fdt_check_prop_offset (\r
+ const void *fdt,\r
+ int offset\r
+ )\r
{\r
- if ((offset < 0) || (offset % FDT_TAGSIZE)\r
- || (fdt_next_tag(fdt, offset, &offset) != FDT_PROP))\r
- return -FDT_ERR_BADOFFSET;\r
+ if ( (offset < 0) || (offset % FDT_TAGSIZE)\r
+ || (fdt_next_tag (fdt, offset, &offset) != FDT_PROP))\r
+ {\r
+ return -FDT_ERR_BADOFFSET;\r
+ }\r
\r
- return offset;\r
+ return offset;\r
}\r
\r
-int fdt_next_node(const void *fdt, int offset, int *depth)\r
+int\r
+fdt_next_node (\r
+ const void *fdt,\r
+ int offset,\r
+ int *depth\r
+ )\r
{\r
- int nextoffset = 0;\r
- uint32_t tag;\r
-\r
- if (offset >= 0)\r
- if ((nextoffset = _fdt_check_node_offset(fdt, offset)) < 0)\r
- return nextoffset;\r
-\r
- do {\r
- offset = nextoffset;\r
- tag = fdt_next_tag(fdt, offset, &nextoffset);\r
-\r
- switch (tag) {\r
- case FDT_PROP:\r
- case FDT_NOP:\r
- break;\r
-\r
- case FDT_BEGIN_NODE:\r
- if (depth)\r
- (*depth)++;\r
- break;\r
-\r
- case FDT_END_NODE:\r
- if (depth && ((--(*depth)) < 0))\r
- return nextoffset;\r
- break;\r
-\r
- case FDT_END:\r
- if ((nextoffset >= 0)\r
- || ((nextoffset == -FDT_ERR_TRUNCATED) && !depth))\r
- return -FDT_ERR_NOTFOUND;\r
- else\r
- return nextoffset;\r
- }\r
- } while (tag != FDT_BEGIN_NODE);\r
-\r
- return offset;\r
+ int nextoffset = 0;\r
+ uint32_t tag;\r
+\r
+ if (offset >= 0) {\r
+ if ((nextoffset = _fdt_check_node_offset (fdt, offset)) < 0) {\r
+ return nextoffset;\r
+ }\r
+ }\r
+\r
+ do {\r
+ offset = nextoffset;\r
+ tag = fdt_next_tag (fdt, offset, &nextoffset);\r
+\r
+ switch (tag) {\r
+ case FDT_PROP:\r
+ case FDT_NOP:\r
+ break;\r
+\r
+ case FDT_BEGIN_NODE:\r
+ if (depth) {\r
+ (*depth)++;\r
+ }\r
+\r
+ break;\r
+\r
+ case FDT_END_NODE:\r
+ if (depth && ((--(*depth)) < 0)) {\r
+ return nextoffset;\r
+ }\r
+\r
+ break;\r
+\r
+ case FDT_END:\r
+ if ( (nextoffset >= 0)\r
+ || ((nextoffset == -FDT_ERR_TRUNCATED) && !depth))\r
+ {\r
+ return -FDT_ERR_NOTFOUND;\r
+ } else {\r
+ return nextoffset;\r
+ }\r
+ }\r
+ } while (tag != FDT_BEGIN_NODE);\r
+\r
+ return offset;\r
}\r
\r
-int fdt_first_subnode(const void *fdt, int offset)\r
+int\r
+fdt_first_subnode (\r
+ const void *fdt,\r
+ int offset\r
+ )\r
{\r
- int depth = 0;\r
+ int depth = 0;\r
\r
- offset = fdt_next_node(fdt, offset, &depth);\r
- if (offset < 0 || depth != 1)\r
- return -FDT_ERR_NOTFOUND;\r
+ offset = fdt_next_node (fdt, offset, &depth);\r
+ if ((offset < 0) || (depth != 1)) {\r
+ return -FDT_ERR_NOTFOUND;\r
+ }\r
\r
- return offset;\r
+ return offset;\r
}\r
\r
-int fdt_next_subnode(const void *fdt, int offset)\r
+int\r
+fdt_next_subnode (\r
+ const void *fdt,\r
+ int offset\r
+ )\r
{\r
- int depth = 1;\r
-\r
- /*\r
- * With respect to the parent, the depth of the next subnode will be\r
- * the same as the last.\r
- */\r
- do {\r
- offset = fdt_next_node(fdt, offset, &depth);\r
- if (offset < 0 || depth < 1)\r
- return -FDT_ERR_NOTFOUND;\r
- } while (depth > 1);\r
-\r
- return offset;\r
+ int depth = 1;\r
+\r
+ /*\r
+ * With respect to the parent, the depth of the next subnode will be\r
+ * the same as the last.\r
+ */\r
+ do {\r
+ offset = fdt_next_node (fdt, offset, &depth);\r
+ if ((offset < 0) || (depth < 1)) {\r
+ return -FDT_ERR_NOTFOUND;\r
+ }\r
+ } while (depth > 1);\r
+\r
+ return offset;\r
}\r
\r
-const char *_fdt_find_string(const char *strtab, int tabsize, const char *s)\r
+const char *\r
+_fdt_find_string (\r
+ const char *strtab,\r
+ int tabsize,\r
+ const char *s\r
+ )\r
{\r
- int len = strlen(s) + 1;\r
- const char *last = strtab + tabsize - len;\r
- const char *p;\r
-\r
- for (p = strtab; p <= last; p++)\r
- if (memcmp(p, s, len) == 0)\r
- return p;\r
- return NULL;\r
+ int len = strlen (s) + 1;\r
+ const char *last = strtab + tabsize - len;\r
+ const char *p;\r
+\r
+ for (p = strtab; p <= last; p++) {\r
+ if (memcmp (p, s, len) == 0) {\r
+ return p;\r
+ }\r
+ }\r
+\r
+ return NULL;\r
}\r
\r
-int fdt_move(const void *fdt, void *buf, int bufsize)\r
+int\r
+fdt_move (\r
+ const void *fdt,\r
+ void *buf,\r
+ int bufsize\r
+ )\r
{\r
- FDT_CHECK_HEADER(fdt);\r
+ FDT_CHECK_HEADER (fdt);\r
\r
- if (fdt_totalsize(fdt) > bufsize)\r
- return -FDT_ERR_NOSPACE;\r
+ if (fdt_totalsize (fdt) > bufsize) {\r
+ return -FDT_ERR_NOSPACE;\r
+ }\r
\r
- memmove(buf, fdt, fdt_totalsize(fdt));\r
- return 0;\r
+ memmove (buf, fdt, fdt_totalsize (fdt));\r
+ return 0;\r
}\r