From bfa3e55b440e120739d2b4dd4cb57e6b40752113 Mon Sep 17 00:00:00 2001 From: Chin Liang See Date: Sat, 17 Oct 2015 08:30:32 -0500 Subject: [PATCH] lib, fdt: Adding fdtdec_get_uint function Adding fdtdec_get_uint function which is the unsigned version for fdtdec_get_int Signed-off-by: Chin Liang See Cc: Dinh Nguyen Cc: Dinh Nguyen Cc: Marek Vasut Cc: Stefan Roese Cc: Vikas Manocha Cc: Jagannadh Teki Cc: Pavel Machek Cc: Heiko Schocher --- include/fdtdec.h | 13 +++++++++++++ lib/fdtdec_common.c | 18 ++++++++++++++++++ 2 files changed, 31 insertions(+) diff --git a/include/fdtdec.h b/include/fdtdec.h index 2de6dda04c..d51e643ac3 100644 --- a/include/fdtdec.h +++ b/include/fdtdec.h @@ -489,6 +489,19 @@ int fdtdec_get_pci_bar32(const void *blob, int node, s32 fdtdec_get_int(const void *blob, int node, const char *prop_name, s32 default_val); +/** + * Unsigned version of fdtdec_get_int. The property must have at least + * 4 bytes of data. The value of the first cell is returned. + * + * @param blob FDT blob + * @param node node to examine + * @param prop_name name of property to find + * @param default_val default value to return if the property is not found + * @return unsigned integer value, if found, or default_val if not + */ +unsigned int fdtdec_get_uint(const void *blob, int node, const char *prop_name, + unsigned int default_val); + /** * Get a variable-sized number from a property * diff --git a/lib/fdtdec_common.c b/lib/fdtdec_common.c index 757931a9cb..63b704a3d7 100644 --- a/lib/fdtdec_common.c +++ b/lib/fdtdec_common.c @@ -36,3 +36,21 @@ int fdtdec_get_int(const void *blob, int node, const char *prop_name, debug("(not found)\n"); return default_val; } + +unsigned int fdtdec_get_uint(const void *blob, int node, const char *prop_name, + unsigned int default_val) +{ + const int *cell; + int len; + + debug("%s: %s: ", __func__, prop_name); + cell = fdt_getprop(blob, node, prop_name, &len); + if (cell && len >= sizeof(unsigned int)) { + unsigned int val = fdt32_to_cpu(cell[0]); + + debug("%#x (%d)\n", val, val); + return val; + } + debug("(not found)\n"); + return default_val; +}