162306a36Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0-only */
262306a36Sopenharmony_ci/*
362306a36Sopenharmony_ci * Copyright (C) 2014 Carlo Caione
462306a36Sopenharmony_ci * Carlo Caione <carlo@caione.org>
562306a36Sopenharmony_ci */
662306a36Sopenharmony_ci
762306a36Sopenharmony_ci#define MESON_AO_UART_WFIFO		0x0
862306a36Sopenharmony_ci#define MESON_AO_UART_STATUS		0xc
962306a36Sopenharmony_ci
1062306a36Sopenharmony_ci#define MESON_AO_UART_TX_FIFO_EMPTY	(1 << 22)
1162306a36Sopenharmony_ci#define MESON_AO_UART_TX_FIFO_FULL	(1 << 21)
1262306a36Sopenharmony_ci
1362306a36Sopenharmony_ci	.macro	addruart, rp, rv, tmp
1462306a36Sopenharmony_ci	ldr	\rp, =(CONFIG_DEBUG_UART_PHYS)		@ physical
1562306a36Sopenharmony_ci	ldr	\rv, =(CONFIG_DEBUG_UART_VIRT)		@ virtual
1662306a36Sopenharmony_ci	.endm
1762306a36Sopenharmony_ci
1862306a36Sopenharmony_ci	.macro	senduart,rd,rx
1962306a36Sopenharmony_ci	str	\rd, [\rx, #MESON_AO_UART_WFIFO]
2062306a36Sopenharmony_ci	.endm
2162306a36Sopenharmony_ci
2262306a36Sopenharmony_ci	.macro	busyuart,rd,rx
2362306a36Sopenharmony_ci1002:	ldr	\rd, [\rx, #MESON_AO_UART_STATUS]
2462306a36Sopenharmony_ci	tst	\rd, #MESON_AO_UART_TX_FIFO_EMPTY
2562306a36Sopenharmony_ci	beq	1002b
2662306a36Sopenharmony_ci	.endm
2762306a36Sopenharmony_ci
2862306a36Sopenharmony_ci	.macro	waituartcts,rd,rx
2962306a36Sopenharmony_ci	.endm
3062306a36Sopenharmony_ci
3162306a36Sopenharmony_ci	.macro	waituarttxrdy,rd,rx
3262306a36Sopenharmony_ci1001:	ldr	\rd, [\rx, #MESON_AO_UART_STATUS]
3362306a36Sopenharmony_ci	tst	\rd, #MESON_AO_UART_TX_FIFO_FULL
3462306a36Sopenharmony_ci	bne	1001b
3562306a36Sopenharmony_ci	.endm
36