xref: /linux/arch/arm/include/debug/meson.S (revision cbecf716ca618fd44feda6bd9a64a8179d031fc5)
1d2912cb1SThomas Gleixner/* SPDX-License-Identifier: GPL-2.0-only */
2d8a00916SCarlo Caione/*
3d8a00916SCarlo Caione * Copyright (C) 2014 Carlo Caione
4d8a00916SCarlo Caione * Carlo Caione <carlo@caione.org>
5d8a00916SCarlo Caione */
6d8a00916SCarlo Caione
7d8a00916SCarlo Caione#define MESON_AO_UART_WFIFO		0x0
8d8a00916SCarlo Caione#define MESON_AO_UART_STATUS		0xc
9d8a00916SCarlo Caione
10d8a00916SCarlo Caione#define MESON_AO_UART_TX_FIFO_EMPTY	(1 << 22)
11d8a00916SCarlo Caione#define MESON_AO_UART_TX_FIFO_FULL	(1 << 21)
12d8a00916SCarlo Caione
13d8a00916SCarlo Caione	.macro	addruart, rp, rv, tmp
14d8a00916SCarlo Caione	ldr	\rp, =(CONFIG_DEBUG_UART_PHYS)		@ physical
15d8a00916SCarlo Caione	ldr	\rv, =(CONFIG_DEBUG_UART_VIRT)		@ virtual
16d8a00916SCarlo Caione	.endm
17d8a00916SCarlo Caione
18d8a00916SCarlo Caione	.macro	senduart,rd,rx
19d8a00916SCarlo Caione	str	\rd, [\rx, #MESON_AO_UART_WFIFO]
20d8a00916SCarlo Caione	.endm
21d8a00916SCarlo Caione
22d8a00916SCarlo Caione	.macro	busyuart,rd,rx
23d8a00916SCarlo Caione1002:	ldr	\rd, [\rx, #MESON_AO_UART_STATUS]
24d8a00916SCarlo Caione	tst	\rd, #MESON_AO_UART_TX_FIFO_EMPTY
25d8a00916SCarlo Caione	beq	1002b
26d8a00916SCarlo Caione	.endm
27d8a00916SCarlo Caione
28*2c50a570SLinus Walleij	.macro	waituartcts,rd,rx
29*2c50a570SLinus Walleij	.endm
30*2c50a570SLinus Walleij
31*2c50a570SLinus Walleij	.macro	waituarttxrdy,rd,rx
32d8a00916SCarlo Caione1001:	ldr	\rd, [\rx, #MESON_AO_UART_STATUS]
33d8a00916SCarlo Caione	tst	\rd, #MESON_AO_UART_TX_FIFO_FULL
34d8a00916SCarlo Caione	bne	1001b
35d8a00916SCarlo Caione	.endm
36