xref: /openbmc/linux/arch/arm/include/debug/samsung.S (revision cbecf716ca618fd44feda6bd9a64a8179d031fc5)
1f947153fSKrzysztof Kozlowski/* SPDX-License-Identifier: GPL-2.0 */
2f947153fSKrzysztof Kozlowski/*
3a2e40710SArnd Bergmann * Copyright 2005, 2007 Simtec Electronics
4a2e40710SArnd Bergmann *	http://armlinux.simtec.co.uk/
5a2e40710SArnd Bergmann *	Ben Dooks <ben@simtec.co.uk>
6a2e40710SArnd Bergmann */
7a2e40710SArnd Bergmann
8be670dafSSachin Kamat#include <linux/serial_s3c.h>
9a2e40710SArnd Bergmann
10a2e40710SArnd Bergmann/* The S5PV210/S5PC110 implementations are as belows. */
11a2e40710SArnd Bergmann
12a2e40710SArnd Bergmann	.macro fifo_level_s5pv210 rd, rx
13a2e40710SArnd Bergmann		ldr	\rd, [\rx, # S3C2410_UFSTAT]
144fdfa862SBen DooksARM_BE8(rev \rd, \rd)
15a2e40710SArnd Bergmann		and	\rd, \rd, #S5PV210_UFSTAT_TXMASK
16a2e40710SArnd Bergmann	.endm
17a2e40710SArnd Bergmann
18a2e40710SArnd Bergmann	.macro  fifo_full_s5pv210 rd, rx
19a2e40710SArnd Bergmann		ldr	\rd, [\rx, # S3C2410_UFSTAT]
204fdfa862SBen DooksARM_BE8(rev \rd, \rd)
21a2e40710SArnd Bergmann		tst	\rd, #S5PV210_UFSTAT_TXFULL
22a2e40710SArnd Bergmann	.endm
23a2e40710SArnd Bergmann
24a2e40710SArnd Bergmann/* The S3C2440 implementations are used by default as they are the
25a2e40710SArnd Bergmann * most widely re-used */
26a2e40710SArnd Bergmann
27a2e40710SArnd Bergmann	.macro fifo_level_s3c2440 rd, rx
28a2e40710SArnd Bergmann		ldr	\rd, [\rx, # S3C2410_UFSTAT]
294fdfa862SBen DooksARM_BE8(rev \rd, \rd)
30a2e40710SArnd Bergmann		and	\rd, \rd, #S3C2440_UFSTAT_TXMASK
31a2e40710SArnd Bergmann	.endm
32a2e40710SArnd Bergmann
33a2e40710SArnd Bergmann#ifndef fifo_level
34a2e40710SArnd Bergmann#define fifo_level fifo_level_s3c2440
35a2e40710SArnd Bergmann#endif
36a2e40710SArnd Bergmann
37a2e40710SArnd Bergmann	.macro  fifo_full_s3c2440 rd, rx
38a2e40710SArnd Bergmann		ldr	\rd, [\rx, # S3C2410_UFSTAT]
394fdfa862SBen DooksARM_BE8(rev \rd, \rd)
40a2e40710SArnd Bergmann		tst	\rd, #S3C2440_UFSTAT_TXFULL
41a2e40710SArnd Bergmann	.endm
42a2e40710SArnd Bergmann
43a2e40710SArnd Bergmann#ifndef fifo_full
44a2e40710SArnd Bergmann#define fifo_full fifo_full_s3c2440
45a2e40710SArnd Bergmann#endif
46a2e40710SArnd Bergmann
47a2e40710SArnd Bergmann	.macro	senduart,rd,rx
48a2e40710SArnd Bergmann		strb 	\rd, [\rx, # S3C2410_UTXH]
49a2e40710SArnd Bergmann	.endm
50a2e40710SArnd Bergmann
51a2e40710SArnd Bergmann	.macro	busyuart, rd, rx
52a2e40710SArnd Bergmann		ldr	\rd, [\rx, # S3C2410_UFCON]
534fdfa862SBen DooksARM_BE8(rev \rd, \rd)
54a2e40710SArnd Bergmann		tst	\rd, #S3C2410_UFCON_FIFOMODE	@ fifo enabled?
55a2e40710SArnd Bergmann		beq	1001f				@
56a2e40710SArnd Bergmann		@ FIFO enabled...
57a2e40710SArnd Bergmann1003:
58a2e40710SArnd Bergmann		fifo_full \rd, \rx
59a2e40710SArnd Bergmann		bne	1003b
60a2e40710SArnd Bergmann		b	1002f
61a2e40710SArnd Bergmann
62a2e40710SArnd Bergmann1001:
63a2e40710SArnd Bergmann		@ busy waiting for non fifo
64a2e40710SArnd Bergmann		ldr	\rd, [\rx, # S3C2410_UTRSTAT]
654fdfa862SBen DooksARM_BE8(rev \rd, \rd)
66a2e40710SArnd Bergmann		tst	\rd, #S3C2410_UTRSTAT_TXFE
67a2e40710SArnd Bergmann		beq	1001b
68a2e40710SArnd Bergmann
69a2e40710SArnd Bergmann1002:		@ exit busyuart
70a2e40710SArnd Bergmann	.endm
71a2e40710SArnd Bergmann
72*2c50a570SLinus Walleij	.macro	waituartcts,rd,rx
73*2c50a570SLinus Walleij	.endm
74*2c50a570SLinus Walleij
75*2c50a570SLinus Walleij	.macro	waituarttxrdy,rd,rx
76a2e40710SArnd Bergmann		ldr	\rd, [\rx, # S3C2410_UFCON]
774fdfa862SBen DooksARM_BE8(rev \rd, \rd)
78a2e40710SArnd Bergmann		tst	\rd, #S3C2410_UFCON_FIFOMODE	@ fifo enabled?
79a2e40710SArnd Bergmann		beq	1001f				@
80a2e40710SArnd Bergmann		@ FIFO enabled...
81a2e40710SArnd Bergmann1003:
82a2e40710SArnd Bergmann		fifo_level \rd, \rx
83a2e40710SArnd Bergmann		teq	\rd, #0
84a2e40710SArnd Bergmann		bne	1003b
85a2e40710SArnd Bergmann		b	1002f
86a2e40710SArnd Bergmann1001:
87a2e40710SArnd Bergmann		@ idle waiting for non fifo
88a2e40710SArnd Bergmann		ldr	\rd, [\rx, # S3C2410_UTRSTAT]
894fdfa862SBen DooksARM_BE8(rev \rd, \rd)
90a2e40710SArnd Bergmann		tst	\rd, #S3C2410_UTRSTAT_TXFE
91a2e40710SArnd Bergmann		beq	1001b
92a2e40710SArnd Bergmann
93a2e40710SArnd Bergmann1002:		@ exit busyuart
94a2e40710SArnd Bergmann	.endm
95