diff options
Diffstat (limited to 'libfdt')
| -rw-r--r-- | libfdt/libfdt.h | 197 | ||||
| -rw-r--r-- | libfdt/libfdt_address.c | 165 | ||||
| -rw-r--r-- | libfdt/libfdt_empty_tree.c | 32 | ||||
| -rw-r--r-- | libfdt/libfdt_env.h | 55 | ||||
| -rw-r--r-- | libfdt/libfdt_strerror.c | 76 |
5 files changed, 233 insertions, 292 deletions
diff --git a/libfdt/libfdt.h b/libfdt/libfdt.h index dbd27fc..5019eb2 100644 --- a/libfdt/libfdt.h +++ b/libfdt/libfdt.h @@ -1,6 +1,6 @@ /* ------------------------------------------- - Copyright (C) 2024, Amlal EL Mahrouss, all rights reserved. + Copyright (C) 2024, Amlal EL Mahrouss, all rights reserved. ------------------------------------------- */ @@ -10,129 +10,121 @@ #define FDT_FIRST_SUPPORTED_VERSION (0x02) #define FDT_LAST_COMPATIBLE_VERSION (0x10) -#define FDT_LAST_SUPPORTED_VERSION (0x11) - -#define FDT_ERR_NOTFOUND (1U) -#define FDT_ERR_EXISTS (2U) -#define FDT_ERR_NOSPACE (3U) -#define FDT_ERR_BADOFFSET (4U) -#define FDT_ERR_BADPATH (5U) -#define FDT_ERR_BADPHANDLE (6U) -#define FDT_ERR_BADSTATE (7U) -#define FDT_ERR_TRUNCATED (8U) -#define FDT_ERR_BADMAGIC (9U) -#define FDT_ERR_BADVERSION (10U) +#define FDT_LAST_SUPPORTED_VERSION (0x11) + +#define FDT_ERR_NOTFOUND (1U) +#define FDT_ERR_EXISTS (2U) +#define FDT_ERR_NOSPACE (3U) +#define FDT_ERR_BADOFFSET (4U) +#define FDT_ERR_BADPATH (5U) +#define FDT_ERR_BADPHANDLE (6U) +#define FDT_ERR_BADSTATE (7U) +#define FDT_ERR_TRUNCATED (8U) +#define FDT_ERR_BADMAGIC (9U) +#define FDT_ERR_BADVERSION (10U) #define FDT_ERR_BADSTRUCTURE (11U) -#define FDT_ERR_BADLAYOUT (12U) -#define FDT_ERR_INTERNAL (13U) -#define FDT_ERR_BADNCELLS (14U) -#define FDT_ERR_BADVALUE (15U) -#define FDT_ERR_BADOVERLAY (16U) -#define FDT_ERR_NOPHANDLES (17U) -#define FDT_ERR_BADFLAGS (18U) -#define FDT_ERR_ALIGNMENT (19U) +#define FDT_ERR_BADLAYOUT (12U) +#define FDT_ERR_INTERNAL (13U) +#define FDT_ERR_BADNCELLS (14U) +#define FDT_ERR_BADVALUE (15U) +#define FDT_ERR_BADOVERLAY (16U) +#define FDT_ERR_NOPHANDLES (17U) +#define FDT_ERR_BADFLAGS (18U) +#define FDT_ERR_ALIGNMENT (19U) #define FDT_ERR_MAX (FDT_ERR_ALIGNMENT) #define FDT_MAX_PHANDLE (0xfffffffe) -#define FDT_MAGIC 0xd00dfeed /* 4: version, 4: total size */ +#define FDT_MAGIC 0xd00dfeed /* 4: version, 4: total size */ #define FDT_TAGSIZE sizeof(fdt32_t) -struct fdt_header -{ - fdt32_t magic; /* magic word FDT_MAGIC */ - fdt32_t totalsize; /* total size of DT block */ - fdt32_t off_dt_struct; /* offset to structure */ - fdt32_t off_dt_strings; /* offset to strings */ - fdt32_t off_mem_rsvmap; /* offset to memory reserve map */ - fdt32_t version; /* format version */ - fdt32_t last_cocb_version; /* last compatible version */ - - /* version 2 fields below */ - fdt32_t boot_cpuid_phys; /* Which physical CPU id we're - booting on */ - /* version 3 fields below */ - fdt32_t size_dt_strings; /* size of the strings block */ - - /* version 17 fields below */ - fdt32_t size_dt_struct; /* size of the structure block */ +struct fdt_header { + fdt32_t magic; /* magic word FDT_MAGIC */ + fdt32_t totalsize; /* total size of DT block */ + fdt32_t off_dt_struct; /* offset to structure */ + fdt32_t off_dt_strings; /* offset to strings */ + fdt32_t off_mem_rsvmap; /* offset to memory reserve map */ + fdt32_t version; /* format version */ + fdt32_t last_cocb_version; /* last compatible version */ + + /* version 2 fields below */ + fdt32_t boot_cpuid_phys; /* Which physical CPU id we're + booting on */ + /* version 3 fields below */ + fdt32_t size_dt_strings; /* size of the strings block */ + + /* version 17 fields below */ + fdt32_t size_dt_struct; /* size of the structure block */ }; -struct fdt_reserve_entry -{ - fdt64_t address; - fdt64_t size; +struct fdt_reserve_entry { + fdt64_t address; + fdt64_t size; }; -struct fdt_node_header -{ - fdt32_t tag; - char name[]; +struct fdt_node_header { + fdt32_t tag; + char name[]; }; -struct fdt_property -{ - fdt32_t tag; - fdt32_t len; - fdt32_t nameoff; - char data[]; +struct fdt_property { + fdt32_t tag; + fdt32_t len; + fdt32_t nameoff; + char data[]; }; const void* fdt_offset_ptr(const void* fdt, int offset, unsigned int checklen); -static inline voidptr_t fdt_offset_ptr_w(const voidptr_t fdt, int32_t offset, uint32_t checklen) -{ - return (voidptr_t)(fdt_offset_ptr(fdt, offset, checklen)); +static inline voidptr_t fdt_offset_ptr_w(const voidptr_t fdt, int32_t offset, uint32_t checklen) { + return (voidptr_t) (fdt_offset_ptr(fdt, offset, checklen)); } /* * External helpers to access words from a device tree blob. */ -static inline uint16_t fdt16_ld(const fdt16_t* p) -{ - const uint8_t* bp = (const uint8_t*)p; +static inline uint16_t fdt16_ld(const fdt16_t* p) { + const uint8_t* bp = (const uint8_t*) p; - return ((uint16_t)bp[0] << 8) | bp[1]; + return ((uint16_t) bp[0] << 8) | bp[1]; } -static inline uint32_t fdt32_ld(const fdt32_t* p) -{ - const uint8_t* bp = (const uint8_t*)p; +static inline uint32_t fdt32_ld(const fdt32_t* p) { + const uint8_t* bp = (const uint8_t*) p; - return ((uint32_t)bp[0] << 24) | ((uint32_t)bp[1] << 16) | ((uint32_t)bp[2] << 8) | bp[3]; + return ((uint32_t) bp[0] << 24) | ((uint32_t) bp[1] << 16) | ((uint32_t) bp[2] << 8) | bp[3]; } -static inline void fdt32_st(void* property, uint32_t value) -{ - uint8_t* bp = (uint8_t*)property; +static inline void fdt32_st(void* property, uint32_t value) { + uint8_t* bp = (uint8_t*) property; - bp[0] = value >> 24; - bp[1] = (value >> 16) & 0xff; - bp[2] = (value >> 8) & 0xff; - bp[3] = value & 0xff; + bp[0] = value >> 24; + bp[1] = (value >> 16) & 0xff; + bp[2] = (value >> 8) & 0xff; + bp[3] = value & 0xff; } -static inline uint64_t fdt64_ld(const fdt64_t* p) -{ - const uint8_t* bp = (const uint8_t*)p; +static inline uint64_t fdt64_ld(const fdt64_t* p) { + const uint8_t* bp = (const uint8_t*) p; - return ((uint64_t)bp[0] << 56) | ((uint64_t)bp[1] << 48) | ((uint64_t)bp[2] << 40) | ((uint64_t)bp[3] << 32) | ((uint64_t)bp[4] << 24) | ((uint64_t)bp[5] << 16) | ((uint64_t)bp[6] << 8) | bp[7]; + return ((uint64_t) bp[0] << 56) | ((uint64_t) bp[1] << 48) | ((uint64_t) bp[2] << 40) | + ((uint64_t) bp[3] << 32) | ((uint64_t) bp[4] << 24) | ((uint64_t) bp[5] << 16) | + ((uint64_t) bp[6] << 8) | bp[7]; } -static inline void fdt64_st(void* property, uint64_t value) -{ - uint8_t* bp = (uint8_t*)property; - - bp[0] = value >> 56; - bp[1] = (value >> 48) & 0xff; - bp[2] = (value >> 40) & 0xff; - bp[3] = (value >> 32) & 0xff; - bp[4] = (value >> 24) & 0xff; - bp[5] = (value >> 16) & 0xff; - bp[6] = (value >> 8) & 0xff; - bp[7] = value & 0xff; +static inline void fdt64_st(void* property, uint64_t value) { + uint8_t* bp = (uint8_t*) property; + + bp[0] = value >> 56; + bp[1] = (value >> 48) & 0xff; + bp[2] = (value >> 40) & 0xff; + bp[3] = (value >> 32) & 0xff; + bp[4] = (value >> 24) & 0xff; + bp[5] = (value >> 16) & 0xff; + bp[6] = (value >> 8) & 0xff; + bp[7] = value & 0xff; } // @@ -155,25 +147,24 @@ int fdt_first_subnode(const void* fdt, int offset); int fdt_next_subnode(const void* fdt, int offset); -#define fdt_get_header(fdt, field) (fdt32_ld(&((const struct fdt_header*)(fdt))->field)) +#define fdt_get_header(fdt, field) (fdt32_ld(&((const struct fdt_header*) (fdt))->field)) -#define fdt_magic(fdt) (fdt_get_header(fdt, magic)) -#define fdt_totalsize(fdt) (fdt_get_header(fdt, totalsize)) -#define fdt_off_dt_struct(fdt) (fdt_get_header(fdt, off_dt_struct)) -#define fdt_off_dt_strings(fdt) (fdt_get_header(fdt, off_dt_strings)) -#define fdt_off_mem_rsvmap(fdt) (fdt_get_header(fdt, off_mem_rsvmap)) -#define fdt_version(fdt) (fdt_get_header(fdt, version)) +#define fdt_magic(fdt) (fdt_get_header(fdt, magic)) +#define fdt_totalsize(fdt) (fdt_get_header(fdt, totalsize)) +#define fdt_off_dt_struct(fdt) (fdt_get_header(fdt, off_dt_struct)) +#define fdt_off_dt_strings(fdt) (fdt_get_header(fdt, off_dt_strings)) +#define fdt_off_mem_rsvmap(fdt) (fdt_get_header(fdt, off_mem_rsvmap)) +#define fdt_version(fdt) (fdt_get_header(fdt, version)) #define fdt_last_cocb_version(fdt) (fdt_get_header(fdt, last_cocb_version)) -#define fdt_boot_cpuid_phys(fdt) (fdt_get_header(fdt, boot_cpuid_phys)) -#define fdt_size_dt_strings(fdt) (fdt_get_header(fdt, size_dt_strings)) -#define fdt_size_dt_struct(fdt) (fdt_get_header(fdt, size_dt_struct)) +#define fdt_boot_cpuid_phys(fdt) (fdt_get_header(fdt, boot_cpuid_phys)) +#define fdt_size_dt_strings(fdt) (fdt_get_header(fdt, size_dt_strings)) +#define fdt_size_dt_struct(fdt) (fdt_get_header(fdt, size_dt_struct)) #define fdt_set_hdr_(name) \ - static inline void fdt_set_##name(void* fdt, uint32_t val) \ - { \ - struct fdt_header* fdth = (struct fdt_header*)fdt; \ - fdth->name = cpu_to_fdt32(val); \ - } + static inline void fdt_set_##name(void* fdt, uint32_t val) { \ + struct fdt_header* fdth = (struct fdt_header*) fdt; \ + fdth->name = cpu_to_fdt32(val); \ + } fdt_set_hdr_(magic); fdt_set_hdr_(totalsize); diff --git a/libfdt/libfdt_address.c b/libfdt/libfdt_address.c index 8d0af55..a9950dc 100644 --- a/libfdt/libfdt_address.c +++ b/libfdt/libfdt_address.c @@ -1,13 +1,14 @@ /* ------------------------------------------- - Copyright (C) 2024, Amlal EL Mahrouss, all rights reserved. + Copyright (C) 2024, Amlal EL Mahrouss, all rights reserved. ------------------------------------------- */ #include <libfdt/libfdt_env.h> extern fdt32_t* fdt_getprop(const void* fdt, int nodeoffset, const char* name, int* len); -extern fdt32_t* fdt_append_prop(const void* fdt, int nodeoffset, const char* name, uint8_t* data, int32_t len); +extern fdt32_t* fdt_append_prop(const void* fdt, int nodeoffset, const char* name, uint8_t* data, + int32_t len); #ifndef FDT_MAX_NCELLS #define FDT_MAX_NCELLS (4) @@ -25,110 +26,86 @@ extern fdt32_t* fdt_append_prop(const void* fdt, int nodeoffset, const char* nam #define FDT_BAD_VALUE (15) #endif -static int fdt_cells(const void* fdt, int nodeoffset, const char* name) -{ - const fdt32_t* c = null; - uint32_t val = 0; - int len = 0; +static int fdt_cells(const void* fdt, int nodeoffset, const char* name) { + const fdt32_t* c = null; + uint32_t val = 0; + int len = 0; - c = fdt_getprop(fdt, nodeoffset, name, &len); - if (c == null) - return len; + c = fdt_getprop(fdt, nodeoffset, name, &len); + if (c == null) return len; - if (len != sizeof(*c)) - return len; + if (len != sizeof(*c)) return len; - val = fdt32_to_cpu(*c); - if (val > FDT_MAX_NCELLS) - return -FDT_BAD_NCELLS; + val = fdt32_to_cpu(*c); + if (val > FDT_MAX_NCELLS) return -FDT_BAD_NCELLS; - return (int)val; + return (int) val; } -int fdt_address_cells(const void* fdt, int nodeoffset) -{ - int val = 0; - val = fdt_cells(fdt, nodeoffset, "#address-cells"); - if (val == 0) - return -FDT_BAD_NCELLS; +int fdt_address_cells(const void* fdt, int nodeoffset) { + int val = 0; + val = fdt_cells(fdt, nodeoffset, "#address-cells"); + if (val == 0) return -FDT_BAD_NCELLS; - if (val == -FDT_NOT_FOUND) - return 2; + if (val == -FDT_NOT_FOUND) return 2; - return (int)val; + return (int) val; } -int fdt_size_cells(const void* fdt, int nodeoffset) -{ - int val = 0; - val = fdt_cells(fdt, nodeoffset, "#size-cells"); +int fdt_size_cells(const void* fdt, int nodeoffset) { + int val = 0; + val = fdt_cells(fdt, nodeoffset, "#size-cells"); - if (val == -FDT_NOT_FOUND) - return 2; + if (val == -FDT_NOT_FOUND) return 2; - return (int)val; + return (int) val; } -int fdt_append_prop_addr_range(void* fdt, int parent, int nodeoffset, const char* name, uint64_t addr, uint64_t size) -{ - int addr_cells, size_cells, ret; - uint8_t data[sizeof(fdt64_t) * 2], *prop; - - ret = fdt_address_cells(fdt, nodeoffset); - if (ret < 0) - return ret; - - addr_cells = ret; - - ret = fdt_size_cells(fdt, nodeoffset); - if (ret < 0) - return ret; - - size_cells = ret; - - // check address validity - prop = data; - if (addr_cells == 1) - { - // seems to do a check according to two parameters. - // addr > __UINT32_MAX__ detects any out of range addresses? - // ((__UINT32_MAX__ + 1 - addr) < size check if it's lower than it's size - - if ((addr > __UINT32_MAX__) || ((__UINT32_MAX__ + 1 - addr) < size)) - return -FDT_BAD_VALUE; - - // finally set the flat device tree. - fdt32_st(prop, (uint32_t)addr); - } - else if (addr_cells == 2) - { - // no need to check, apparently. - fdt64_st(prop, addr); - } - else - { - return -FDT_BAD_NCELLS; - } - - // access size - prop += addr_cells * sizeof(fdt32_t); - - if (size_cells == 1) - { - if (size > __UINT32_MAX__) - return -FDT_BAD_VALUE; - - fdt32_st(prop, (uint32_t)size); - } - else if (size_cells == 2) - { - fdt64_st(prop, size); - } - else - { - return -FDT_BAD_NCELLS; - } - - return fdt_append_prop(fdt, nodeoffset, name, data, - (addr_cells + size_cells) * sizeof(fdt32_t)); +int fdt_append_prop_addr_range(void* fdt, int parent, int nodeoffset, const char* name, + uint64_t addr, uint64_t size) { + int addr_cells, size_cells, ret; + uint8_t data[sizeof(fdt64_t) * 2], *prop; + + ret = fdt_address_cells(fdt, nodeoffset); + if (ret < 0) return ret; + + addr_cells = ret; + + ret = fdt_size_cells(fdt, nodeoffset); + if (ret < 0) return ret; + + size_cells = ret; + + // check address validity + prop = data; + if (addr_cells == 1) { + // seems to do a check according to two parameters. + // addr > __UINT32_MAX__ detects any out of range addresses? + // ((__UINT32_MAX__ + 1 - addr) < size check if it's lower than it's size + + if ((addr > __UINT32_MAX__) || ((__UINT32_MAX__ + 1 - addr) < size)) return -FDT_BAD_VALUE; + + // finally set the flat device tree. + fdt32_st(prop, (uint32_t) addr); + } else if (addr_cells == 2) { + // no need to check, apparently. + fdt64_st(prop, addr); + } else { + return -FDT_BAD_NCELLS; + } + + // access size + prop += addr_cells * sizeof(fdt32_t); + + if (size_cells == 1) { + if (size > __UINT32_MAX__) return -FDT_BAD_VALUE; + + fdt32_st(prop, (uint32_t) size); + } else if (size_cells == 2) { + fdt64_st(prop, size); + } else { + return -FDT_BAD_NCELLS; + } + + return fdt_append_prop(fdt, nodeoffset, name, data, (addr_cells + size_cells) * sizeof(fdt32_t)); } diff --git a/libfdt/libfdt_empty_tree.c b/libfdt/libfdt_empty_tree.c index 2edfcc2..0cc854f 100644 --- a/libfdt/libfdt_empty_tree.c +++ b/libfdt/libfdt_empty_tree.c @@ -1,6 +1,6 @@ /* ------------------------------------------- - Copyright (C) 2024, Amlal EL Mahrouss, all rights reserved. + Copyright (C) 2024, Amlal EL Mahrouss, all rights reserved. ------------------------------------------- */ @@ -14,8 +14,7 @@ extern int fdt_finish(void* buf); extern int fdt_finish_reverse_map(void* buf); #define fdt_check_err(err) \ - if (err) \ - return err + if (err) return err /** * @brief creates a empty tree with a specified buffer and size. @@ -25,25 +24,24 @@ extern int fdt_finish_reverse_map(void* buf); * @return int */ -int fdt_create_empty_tree(void* buf, int bufsize) -{ - int err; - err = fdt_create(buf, bufsize); - fdt_check_err(err); +int fdt_create_empty_tree(void* buf, int bufsize) { + int err; + err = fdt_create(buf, bufsize); + fdt_check_err(err); - err = fdt_finish_reverse_map(buf); - fdt_check_err(err); + err = fdt_finish_reverse_map(buf); + fdt_check_err(err); - err = fdt_begin_node(buf, ""); - fdt_check_err(err); + err = fdt_begin_node(buf, ""); + fdt_check_err(err); - err = fdt_end_node(buf); - fdt_check_err(err); + err = fdt_end_node(buf); + fdt_check_err(err); - err = fdt_finish(buf); - fdt_check_err(err); + err = fdt_finish(buf); + fdt_check_err(err); - return fdt_open_into(buf, buf, bufsize); + return fdt_open_into(buf, buf, bufsize); } #undef fdt_check_err diff --git a/libfdt/libfdt_env.h b/libfdt/libfdt_env.h index bc8f389..6c5616c 100644 --- a/libfdt/libfdt_env.h +++ b/libfdt/libfdt_env.h @@ -1,6 +1,6 @@ /* ------------------------------------------- - Copyright (C) 2024, Amlal EL Mahrouss, all rights reserved. + Copyright (C) 2024, Amlal EL Mahrouss, all rights reserved. ------------------------------------------- */ @@ -10,7 +10,7 @@ #include <lib/boot.h> #ifdef __USE_SPARSE__ -#define FDT_FORCE __attribute__((force)) +#define FDT_FORCE __attribute__((force)) #define FDT_BITWISE __attribute__((bitwise)) #else #define FDT_FORCE @@ -21,43 +21,38 @@ typedef uint16_t FDT_BITWISE fdt16_t; typedef uint32_t FDT_BITWISE fdt32_t; typedef uint64_t FDT_BITWISE fdt64_t; -#define EXTRACT_BYTE(x, n) ((unsigned long long)((uint8_t*)&x)[n]) -#define CPU_TO_FDT16(x) ((EXTRACT_BYTE(x, 0) << 8) | EXTRACT_BYTE(x, 1)) -#define CPU_TO_FDT32(x) ((EXTRACT_BYTE(x, 0) << 24) | (EXTRACT_BYTE(x, 1) << 16) | \ - (EXTRACT_BYTE(x, 2) << 8) | EXTRACT_BYTE(x, 3)) -#define CPU_TO_FDT64(x) ((EXTRACT_BYTE(x, 0) << 56) | (EXTRACT_BYTE(x, 1) << 48) | \ - (EXTRACT_BYTE(x, 2) << 40) | (EXTRACT_BYTE(x, 3) << 32) | \ - (EXTRACT_BYTE(x, 4) << 24) | (EXTRACT_BYTE(x, 5) << 16) | \ - (EXTRACT_BYTE(x, 6) << 8) | EXTRACT_BYTE(x, 7)) - -static inline uint16_t fdt16_to_cpu(fdt16_t x) -{ - return (FDT_FORCE uint16_t)CPU_TO_FDT16(x); +#define EXTRACT_BYTE(x, n) ((unsigned long long) ((uint8_t*) &x)[n]) +#define CPU_TO_FDT16(x) ((EXTRACT_BYTE(x, 0) << 8) | EXTRACT_BYTE(x, 1)) +#define CPU_TO_FDT32(x) \ + ((EXTRACT_BYTE(x, 0) << 24) | (EXTRACT_BYTE(x, 1) << 16) | (EXTRACT_BYTE(x, 2) << 8) | \ + EXTRACT_BYTE(x, 3)) +#define CPU_TO_FDT64(x) \ + ((EXTRACT_BYTE(x, 0) << 56) | (EXTRACT_BYTE(x, 1) << 48) | (EXTRACT_BYTE(x, 2) << 40) | \ + (EXTRACT_BYTE(x, 3) << 32) | (EXTRACT_BYTE(x, 4) << 24) | (EXTRACT_BYTE(x, 5) << 16) | \ + (EXTRACT_BYTE(x, 6) << 8) | EXTRACT_BYTE(x, 7)) + +static inline uint16_t fdt16_to_cpu(fdt16_t x) { + return (FDT_FORCE uint16_t) CPU_TO_FDT16(x); } -static inline fdt16_t cpu_to_fdt16(uint16_t x) -{ - return (FDT_FORCE fdt16_t)CPU_TO_FDT16(x); +static inline fdt16_t cpu_to_fdt16(uint16_t x) { + return (FDT_FORCE fdt16_t) CPU_TO_FDT16(x); } -static inline uint32_t fdt32_to_cpu(fdt32_t x) -{ - return (FDT_FORCE uint32_t)CPU_TO_FDT32(x); +static inline uint32_t fdt32_to_cpu(fdt32_t x) { + return (FDT_FORCE uint32_t) CPU_TO_FDT32(x); } -static inline fdt32_t cpu_to_fdt32(uint32_t x) -{ - return (FDT_FORCE fdt32_t)CPU_TO_FDT32(x); +static inline fdt32_t cpu_to_fdt32(uint32_t x) { + return (FDT_FORCE fdt32_t) CPU_TO_FDT32(x); } -static inline uint64_t fdt64_to_cpu(fdt64_t x) -{ - return (FDT_FORCE uint64_t)CPU_TO_FDT64(x); +static inline uint64_t fdt64_to_cpu(fdt64_t x) { + return (FDT_FORCE uint64_t) CPU_TO_FDT64(x); } -static inline fdt64_t cpu_to_fdt64(uint64_t x) -{ - return (FDT_FORCE fdt64_t)CPU_TO_FDT64(x); +static inline fdt64_t cpu_to_fdt64(uint64_t x) { + return (FDT_FORCE fdt64_t) CPU_TO_FDT64(x); } #undef CPU_TO_FDT64 @@ -65,4 +60,4 @@ static inline fdt64_t cpu_to_fdt64(uint64_t x) #undef CPU_TO_FDT16 #undef EXTRACT_BYTE -#endif //!__CB_FDT_H__ +#endif //!__CB_FDT_H__ diff --git a/libfdt/libfdt_strerror.c b/libfdt/libfdt_strerror.c index c4a1abd..accd58a 100644 --- a/libfdt/libfdt_strerror.c +++ b/libfdt/libfdt_strerror.c @@ -1,49 +1,36 @@ /* ------------------------------------------- - Copyright (C) 2024, Amlal EL Mahrouss, all rights reserved. + Copyright (C) 2024, Amlal EL Mahrouss, all rights reserved. ------------------------------------------- */ -#include <libfdt/libfdt_env.h> #include <libfdt/libfdt.h> +#include <libfdt/libfdt_env.h> /***********************************************************************************/ /* @brief FDT error reporting system */ /***********************************************************************************/ /// @brief Error information structure. -struct fdt_err -{ - const char* e_str; +struct fdt_err { + const char* e_str; }; #define fdt_error(VAL) \ - [(VAL)] = { \ - .e_str = #VAL, \ - } + [(VAL)] = { \ + .e_str = #VAL, \ + } static struct fdt_err cb_fdtErrTbl[] = { - fdt_error(FDT_ERR_NOTFOUND), - fdt_error(FDT_ERR_EXISTS), - fdt_error(FDT_ERR_NOSPACE), + fdt_error(FDT_ERR_NOTFOUND), fdt_error(FDT_ERR_EXISTS), fdt_error(FDT_ERR_NOSPACE), - fdt_error(FDT_ERR_BADOFFSET), - fdt_error(FDT_ERR_BADPATH), - fdt_error(FDT_ERR_BADPHANDLE), - fdt_error(FDT_ERR_BADSTATE), + fdt_error(FDT_ERR_BADOFFSET), fdt_error(FDT_ERR_BADPATH), fdt_error(FDT_ERR_BADPHANDLE), + fdt_error(FDT_ERR_BADSTATE), - fdt_error(FDT_ERR_TRUNCATED), - fdt_error(FDT_ERR_BADMAGIC), - fdt_error(FDT_ERR_BADVERSION), - fdt_error(FDT_ERR_BADSTRUCTURE), - fdt_error(FDT_ERR_BADLAYOUT), - fdt_error(FDT_ERR_INTERNAL), - fdt_error(FDT_ERR_BADNCELLS), - fdt_error(FDT_ERR_BADVALUE), - fdt_error(FDT_ERR_BADOVERLAY), - fdt_error(FDT_ERR_NOPHANDLES), - fdt_error(FDT_ERR_BADFLAGS), - fdt_error(FDT_ERR_ALIGNMENT), + fdt_error(FDT_ERR_TRUNCATED), fdt_error(FDT_ERR_BADMAGIC), fdt_error(FDT_ERR_BADVERSION), + fdt_error(FDT_ERR_BADSTRUCTURE), fdt_error(FDT_ERR_BADLAYOUT), fdt_error(FDT_ERR_INTERNAL), + fdt_error(FDT_ERR_BADNCELLS), fdt_error(FDT_ERR_BADVALUE), fdt_error(FDT_ERR_BADOVERLAY), + fdt_error(FDT_ERR_NOPHANDLES), fdt_error(FDT_ERR_BADFLAGS), fdt_error(FDT_ERR_ALIGNMENT), }; #define fdt_error_length() mpux_array_size(cb_fdtErrTbl) @@ -51,25 +38,18 @@ static struct fdt_err cb_fdtErrTbl[] = { /// @brief Returns the error value as a string. /// @param errval /// @return -const char* fdt_strerror(int32_t errval) -{ - if (errval > 0) - { - return ("<valid offset/length>"); - } - else if (errval == 0) - { - return ("<no error>"); - } - else if (-errval < fdt_error_length()) - { - const char* serr = cb_fdtErrTbl[errval].e_str; - - if (serr != null) - { - return serr; - } - } - - return ("<unknown error>"); +const char* fdt_strerror(int32_t errval) { + if (errval > 0) { + return ("<valid offset/length>"); + } else if (errval == 0) { + return ("<no error>"); + } else if (-errval < fdt_error_length()) { + const char* serr = cb_fdtErrTbl[errval].e_str; + + if (serr != null) { + return serr; + } + } + + return ("<unknown error>"); } |
