1/*
2 * Copyright 2020, Data61, CSIRO (ABN 41 687 119 230)
3 *
4 * SPDX-License-Identifier: GPL-2.0-only
5 */
6
7#include <config.h>
8#include <stdint.h>
9#include <util.h>
10#include <machine/io.h>
11#include <plat/machine/devices_gen.h>
12
13#define UART_WFIFO  0x0
14#define UART_RFIFO  0x4
15#define UART_STATUS 0xC
16
17#define UART_TX_FULL        BIT(21)
18#define UART_RX_EMPTY       BIT(20)
19
20#define UART_REG(x) ((volatile uint32_t *)(UART_PPTR + (x)))
21
22#if defined(CONFIG_DEBUG_BUILD) || defined(CONFIG_PRINTING)
23void putDebugChar(unsigned char c)
24{
25    while ((*UART_REG(UART_STATUS) & UART_TX_FULL));
26
27    /* Add character to the buffer. */
28    *UART_REG(UART_WFIFO) = c;
29}
30#endif
31
32#ifdef CONFIG_DEBUG_BUILD
33unsigned char getDebugChar(void)
34{
35    while ((*UART_REG(UART_STATUS) & UART_RX_EMPTY));
36    return *UART_REG(UART_RFIFO);
37}
38#endif /* CONFIG_DEBUG_BUILD */
39