1*243ce5d5SMadhukar Pappireddy // SPDX-License-Identifier: (GPL-2.0-or-later OR BSD-2-Clause) 2630b011fSAntonio Nino Diaz /* 3630b011fSAntonio Nino Diaz * libfdt - Flat Device Tree manipulation 4630b011fSAntonio Nino Diaz * Copyright (C) 2006 David Gibson, IBM Corporation. 5630b011fSAntonio Nino Diaz * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 6630b011fSAntonio Nino Diaz */ 7630b011fSAntonio Nino Diaz #include "libfdt_env.h" 8630b011fSAntonio Nino Diaz 9630b011fSAntonio Nino Diaz #include <fdt.h> 10630b011fSAntonio Nino Diaz #include <libfdt.h> 11630b011fSAntonio Nino Diaz 12630b011fSAntonio Nino Diaz #include "libfdt_internal.h" 13630b011fSAntonio Nino Diaz 14630b011fSAntonio Nino Diaz struct fdt_errtabent { 15630b011fSAntonio Nino Diaz const char *str; 16630b011fSAntonio Nino Diaz }; 17630b011fSAntonio Nino Diaz 18630b011fSAntonio Nino Diaz #define FDT_ERRTABENT(val) \ 19630b011fSAntonio Nino Diaz [(val)] = { .str = #val, } 20630b011fSAntonio Nino Diaz 21630b011fSAntonio Nino Diaz static struct fdt_errtabent fdt_errtable[] = { 22630b011fSAntonio Nino Diaz FDT_ERRTABENT(FDT_ERR_NOTFOUND), 23630b011fSAntonio Nino Diaz FDT_ERRTABENT(FDT_ERR_EXISTS), 24630b011fSAntonio Nino Diaz FDT_ERRTABENT(FDT_ERR_NOSPACE), 25630b011fSAntonio Nino Diaz 26630b011fSAntonio Nino Diaz FDT_ERRTABENT(FDT_ERR_BADOFFSET), 27630b011fSAntonio Nino Diaz FDT_ERRTABENT(FDT_ERR_BADPATH), 28630b011fSAntonio Nino Diaz FDT_ERRTABENT(FDT_ERR_BADPHANDLE), 29630b011fSAntonio Nino Diaz FDT_ERRTABENT(FDT_ERR_BADSTATE), 30630b011fSAntonio Nino Diaz 31630b011fSAntonio Nino Diaz FDT_ERRTABENT(FDT_ERR_TRUNCATED), 32630b011fSAntonio Nino Diaz FDT_ERRTABENT(FDT_ERR_BADMAGIC), 33630b011fSAntonio Nino Diaz FDT_ERRTABENT(FDT_ERR_BADVERSION), 34630b011fSAntonio Nino Diaz FDT_ERRTABENT(FDT_ERR_BADSTRUCTURE), 35630b011fSAntonio Nino Diaz FDT_ERRTABENT(FDT_ERR_BADLAYOUT), 36630b011fSAntonio Nino Diaz FDT_ERRTABENT(FDT_ERR_INTERNAL), 37630b011fSAntonio Nino Diaz FDT_ERRTABENT(FDT_ERR_BADNCELLS), 38630b011fSAntonio Nino Diaz FDT_ERRTABENT(FDT_ERR_BADVALUE), 39630b011fSAntonio Nino Diaz FDT_ERRTABENT(FDT_ERR_BADOVERLAY), 40630b011fSAntonio Nino Diaz FDT_ERRTABENT(FDT_ERR_NOPHANDLES), 41*243ce5d5SMadhukar Pappireddy FDT_ERRTABENT(FDT_ERR_BADFLAGS), 42630b011fSAntonio Nino Diaz }; 43630b011fSAntonio Nino Diaz #define FDT_ERRTABSIZE (sizeof(fdt_errtable) / sizeof(fdt_errtable[0])) 44630b011fSAntonio Nino Diaz 45630b011fSAntonio Nino Diaz const char *fdt_strerror(int errval) 46630b011fSAntonio Nino Diaz { 47630b011fSAntonio Nino Diaz if (errval > 0) 48630b011fSAntonio Nino Diaz return "<valid offset/length>"; 49630b011fSAntonio Nino Diaz else if (errval == 0) 50630b011fSAntonio Nino Diaz return "<no error>"; 51630b011fSAntonio Nino Diaz else if (errval > -FDT_ERRTABSIZE) { 52630b011fSAntonio Nino Diaz const char *s = fdt_errtable[-errval].str; 53630b011fSAntonio Nino Diaz 54630b011fSAntonio Nino Diaz if (s) 55630b011fSAntonio Nino Diaz return s; 56630b011fSAntonio Nino Diaz } 57630b011fSAntonio Nino Diaz 58630b011fSAntonio Nino Diaz return "<unknown error>"; 59630b011fSAntonio Nino Diaz } 60