xref: /linux/arch/arm/include/debug/meson.S (revision d8a00916b30313879c814144c18f27b8100bc401)
1*d8a00916SCarlo Caione/*
2*d8a00916SCarlo Caione * Copyright (C) 2014 Carlo Caione
3*d8a00916SCarlo Caione * Carlo Caione <carlo@caione.org>
4*d8a00916SCarlo Caione *
5*d8a00916SCarlo Caione * This program is free software; you can redistribute it and/or modify
6*d8a00916SCarlo Caione * it under the terms of the GNU General Public License version 2 as
7*d8a00916SCarlo Caione * published by the Free Software Foundation.
8*d8a00916SCarlo Caione */
9*d8a00916SCarlo Caione
10*d8a00916SCarlo Caione#define MESON_AO_UART_WFIFO		0x0
11*d8a00916SCarlo Caione#define MESON_AO_UART_STATUS		0xc
12*d8a00916SCarlo Caione
13*d8a00916SCarlo Caione#define MESON_AO_UART_TX_FIFO_EMPTY	(1 << 22)
14*d8a00916SCarlo Caione#define MESON_AO_UART_TX_FIFO_FULL	(1 << 21)
15*d8a00916SCarlo Caione
16*d8a00916SCarlo Caione	.macro	addruart, rp, rv, tmp
17*d8a00916SCarlo Caione	ldr	\rp, =(CONFIG_DEBUG_UART_PHYS)		@ physical
18*d8a00916SCarlo Caione	ldr	\rv, =(CONFIG_DEBUG_UART_VIRT)		@ virtual
19*d8a00916SCarlo Caione	.endm
20*d8a00916SCarlo Caione
21*d8a00916SCarlo Caione	.macro	senduart,rd,rx
22*d8a00916SCarlo Caione	str	\rd, [\rx, #MESON_AO_UART_WFIFO]
23*d8a00916SCarlo Caione	.endm
24*d8a00916SCarlo Caione
25*d8a00916SCarlo Caione	.macro	busyuart,rd,rx
26*d8a00916SCarlo Caione1002:	ldr	\rd, [\rx, #MESON_AO_UART_STATUS]
27*d8a00916SCarlo Caione	tst	\rd, #MESON_AO_UART_TX_FIFO_EMPTY
28*d8a00916SCarlo Caione	beq	1002b
29*d8a00916SCarlo Caione	.endm
30*d8a00916SCarlo Caione
31*d8a00916SCarlo Caione	.macro	waituart,rd,rx
32*d8a00916SCarlo Caione1001:	ldr	\rd, [\rx, #MESON_AO_UART_STATUS]
33*d8a00916SCarlo Caione	tst	\rd, #MESON_AO_UART_TX_FIFO_FULL
34*d8a00916SCarlo Caione	bne	1001b
35*d8a00916SCarlo Caione	.endm
36