| /* |
| * Copyright 2020, Data61, CSIRO (ABN 41 687 119 230) |
| * |
| * SPDX-License-Identifier: GPL-2.0-only |
| */ |
| |
| #include <stdio.h> |
| #include <stdint.h> |
| #include <ctype.h> |
| |
| void udelay(unsigned long us) |
| { |
| volatile int i; |
| for (; us > 0; us--) { |
| for (i = 0; i < 1000; i++) { |
| } |
| } |
| } |
| |
| unsigned long simple_strtoul(const char *cp, char **endp, |
| unsigned int base) |
| { |
| unsigned long result = 0; |
| unsigned long value; |
| |
| if (*cp == '0') { |
| cp++; |
| if ((*cp == 'x') && isxdigit(cp[1])) { |
| base = 16; |
| cp++; |
| } |
| |
| if (!base) { |
| base = 8; |
| } |
| } |
| |
| if (!base) { |
| base = 10; |
| } |
| |
| while (isxdigit(*cp) && (value = isdigit(*cp) ? *cp - '0' : (islower(*cp) |
| ? toupper(*cp) : *cp) - 'A' + 10) < base) { |
| result = result * base + value; |
| cp++; |
| } |
| |
| if (endp) { |
| *endp = (char *)cp; |
| } |
| |
| return result; |
| } |
| |