1 /* SPDX-License-Identifier: GPL-2.0 */
3 * Copyright 2005, 2007 Simtec Electronics
4 * http://armlinux.simtec.co.uk/
5 * Ben Dooks <ben@simtec.co.uk>
8 #include <linux/serial_s3c.h>
10 /* The S5PV210/S5PC110 implementations are as belows. */
12 .macro fifo_level_s5pv210 rd, rx
13 ldr \rd, [\rx, # S3C2410_UFSTAT]
15 and \rd, \rd, #S5PV210_UFSTAT_TXMASK
18 .macro fifo_full_s5pv210 rd, rx
19 ldr \rd, [\rx, # S3C2410_UFSTAT]
21 tst \rd, #S5PV210_UFSTAT_TXFULL
24 /* The S3C2440 implementations are used by default as they are the
25 * most widely re-used */
27 .macro fifo_level_s3c2440 rd, rx
28 ldr \rd, [\rx, # S3C2410_UFSTAT]
30 and \rd, \rd, #S3C2440_UFSTAT_TXMASK
34 #define fifo_level fifo_level_s3c2440
37 .macro fifo_full_s3c2440 rd, rx
38 ldr \rd, [\rx, # S3C2410_UFSTAT]
40 tst \rd, #S3C2440_UFSTAT_TXFULL
44 #define fifo_full fifo_full_s3c2440
48 strb \rd, [\rx, # S3C2410_UTXH]
51 .macro busyuart, rd, rx
52 ldr \rd, [\rx, # S3C2410_UFCON]
54 tst \rd, #S3C2410_UFCON_FIFOMODE @ fifo enabled?
63 @ busy waiting for non fifo
64 ldr \rd, [\rx, # S3C2410_UTRSTAT]
66 tst \rd, #S3C2410_UTRSTAT_TXFE
73 ldr \rd, [\rx, # S3C2410_UFCON]
75 tst \rd, #S3C2410_UFCON_FIFOMODE @ fifo enabled?
84 @ idle waiting for non fifo
85 ldr \rd, [\rx, # S3C2410_UTRSTAT]
87 tst \rd, #S3C2410_UTRSTAT_TXFE