Andrew Geissler | 9347dd4 | 2023-03-03 12:38:41 -0600 | [diff] [blame^] | 1 | From f0ece5e8cac761a76a86df7204bae7c6ef09215f Mon Sep 17 00:00:00 2001 |
Brad Bishop | bec4ebc | 2022-08-03 09:55:16 -0400 | [diff] [blame] | 2 | From: Jaxson Han <jaxson.han@arm.com> |
| 3 | Date: Wed, 29 Dec 2021 10:50:21 +0800 |
| 4 | Subject: [PATCH] platform: Add print_hex func |
| 5 | |
| 6 | Refine the print functions, and add a new print_hex func to print hex |
| 7 | numbers. |
| 8 | |
| 9 | Issue-Id: SCM-3814 |
| 10 | Upstream-Status: Inappropriate [other] |
| 11 | Implementation pending further discussion |
| 12 | Signed-off-by: Jaxson Han <jaxson.han@arm.com> |
| 13 | Change-Id: Ic960345d9ef0b41d81d30c4a4dbd9c31139907c4 |
| 14 | --- |
| 15 | common/platform.c | 33 +++++++++++++++++++++++++-------- |
| 16 | 1 file changed, 25 insertions(+), 8 deletions(-) |
| 17 | |
| 18 | diff --git a/common/platform.c b/common/platform.c |
| 19 | index d11f568..8269392 100644 |
| 20 | --- a/common/platform.c |
| 21 | +++ b/common/platform.c |
| 22 | @@ -30,20 +30,37 @@ |
| 23 | #define V2M_SYS(reg) ((void *)SYSREGS_BASE + V2M_SYS_##reg) |
| 24 | #endif |
| 25 | |
| 26 | -static void print_string(const char *str) |
| 27 | +static void print_char(const char c) |
| 28 | { |
| 29 | uint32_t flags; |
| 30 | + do { |
| 31 | + flags = raw_readl(PL011(UARTFR)); |
| 32 | + } while (flags & PL011_UARTFR_FIFO_FULL); |
| 33 | |
| 34 | + raw_writel(c, PL011(UARTDR)); |
| 35 | + |
| 36 | + do { |
| 37 | + flags = raw_readl(PL011(UARTFR)); |
| 38 | + } while (flags & PL011_UARTFR_BUSY); |
| 39 | +} |
| 40 | + |
| 41 | +void print_string(const char *str) |
| 42 | +{ |
| 43 | while (*str) { |
| 44 | - do |
| 45 | - flags = raw_readl(PL011(UARTFR)); |
| 46 | - while (flags & PL011_UARTFR_FIFO_FULL); |
| 47 | + print_char(*str++); |
| 48 | + } |
| 49 | +} |
| 50 | |
| 51 | - raw_writel(*str++, PL011(UARTDR)); |
| 52 | +#define HEX_CHARS_PER_INT (2 * sizeof(int)) |
| 53 | + |
| 54 | +void print_hex(unsigned int val) |
| 55 | +{ |
| 56 | |
| 57 | - do |
| 58 | - flags = raw_readl(PL011(UARTFR)); |
| 59 | - while (flags & PL011_UARTFR_BUSY); |
| 60 | + const char hex_chars[16] = "0123456789abcdef"; |
| 61 | + int i; |
| 62 | + for (i = HEX_CHARS_PER_INT - 1; i >= 0; i--) { |
| 63 | + int v = (val >> (4 * i)) & 0xf; |
| 64 | + print_char(hex_chars[v]); |
| 65 | } |
| 66 | } |
| 67 | |