1243ce5d5SMadhukar 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), 41243ce5d5SMadhukar Pappireddy FDT_ERRTABENT(FDT_ERR_BADFLAGS), 42*94b2f94bSDaniel Boulby FDT_ERRTABENT(FDT_ERR_ALIGNMENT), 43630b011fSAntonio Nino Diaz }; 443b456661SAndre Przywara #define FDT_ERRTABSIZE ((int)(sizeof(fdt_errtable) / sizeof(fdt_errtable[0]))) 45630b011fSAntonio Nino Diaz 46630b011fSAntonio Nino Diaz const char *fdt_strerror(int errval) 47630b011fSAntonio Nino Diaz { 48630b011fSAntonio Nino Diaz if (errval > 0) 49630b011fSAntonio Nino Diaz return "<valid offset/length>"; 50630b011fSAntonio Nino Diaz else if (errval == 0) 51630b011fSAntonio Nino Diaz return "<no error>"; 523b456661SAndre Przywara else if (-errval < FDT_ERRTABSIZE) { 53630b011fSAntonio Nino Diaz const char *s = fdt_errtable[-errval].str; 54630b011fSAntonio Nino Diaz 55630b011fSAntonio Nino Diaz if (s) 56630b011fSAntonio Nino Diaz return s; 57630b011fSAntonio Nino Diaz } 58630b011fSAntonio Nino Diaz 59630b011fSAntonio Nino Diaz return "<unknown error>"; 60630b011fSAntonio Nino Diaz } 61