Commit | Line | Data |
---|---|---|
c116c1d7 | 1 | /* arch/arm/plat-samsung/include/plat/debug-macro.S |
498e03b6 BD |
2 | * |
3 | * Copyright 2005, 2007 Simtec Electronics | |
4 | * http://armlinux.simtec.co.uk/ | |
5 | * Ben Dooks <ben@simtec.co.uk> | |
6 | * | |
7 | * This program is free software; you can redistribute it and/or modify | |
8 | * it under the terms of the GNU General Public License version 2 as | |
9 | * published by the Free Software Foundation. | |
10 | */ | |
11 | ||
be670daf | 12 | #include <linux/serial_s3c.h> |
498e03b6 | 13 | |
a73ddc61 | 14 | /* The S5PV210/S5PC110 implementations are as belows. */ |
5f7f6a4a KK |
15 | |
16 | .macro fifo_level_s5pv210 rd, rx | |
2815774b | 17 | ldr \rd, [\rx, # S3C2410_UFSTAT] |
5f7f6a4a KK |
18 | and \rd, \rd, #S5PV210_UFSTAT_TXMASK |
19 | .endm | |
20 | ||
21 | .macro fifo_full_s5pv210 rd, rx | |
2815774b | 22 | ldr \rd, [\rx, # S3C2410_UFSTAT] |
5f7f6a4a KK |
23 | tst \rd, #S5PV210_UFSTAT_TXFULL |
24 | .endm | |
25 | ||
cbc4dbff BD |
26 | /* The S3C2440 implementations are used by default as they are the |
27 | * most widely re-used */ | |
28 | ||
29 | .macro fifo_level_s3c2440 rd, rx | |
2815774b | 30 | ldr \rd, [\rx, # S3C2410_UFSTAT] |
cbc4dbff BD |
31 | and \rd, \rd, #S3C2440_UFSTAT_TXMASK |
32 | .endm | |
33 | ||
34 | #ifndef fifo_level | |
f0c9eb4e | 35 | #define fifo_level fifo_level_s3c2440 |
cbc4dbff BD |
36 | #endif |
37 | ||
38 | .macro fifo_full_s3c2440 rd, rx | |
2815774b | 39 | ldr \rd, [\rx, # S3C2410_UFSTAT] |
cbc4dbff BD |
40 | tst \rd, #S3C2440_UFSTAT_TXFULL |
41 | .endm | |
42 | ||
43 | #ifndef fifo_full | |
44 | #define fifo_full fifo_full_s3c2440 | |
45 | #endif | |
498e03b6 BD |
46 | |
47 | .macro senduart,rd,rx | |
2815774b | 48 | strb \rd, [\rx, # S3C2410_UTXH] |
498e03b6 BD |
49 | .endm |
50 | ||
51 | .macro busyuart, rd, rx | |
2815774b | 52 | ldr \rd, [\rx, # S3C2410_UFCON] |
498e03b6 BD |
53 | tst \rd, #S3C2410_UFCON_FIFOMODE @ fifo enabled? |
54 | beq 1001f @ | |
55 | @ FIFO enabled... | |
56 | 1003: | |
57 | fifo_full \rd, \rx | |
58 | bne 1003b | |
59 | b 1002f | |
60 | ||
61 | 1001: | |
62 | @ busy waiting for non fifo | |
2815774b | 63 | ldr \rd, [\rx, # S3C2410_UTRSTAT] |
498e03b6 BD |
64 | tst \rd, #S3C2410_UTRSTAT_TXFE |
65 | beq 1001b | |
66 | ||
67 | 1002: @ exit busyuart | |
68 | .endm | |
69 | ||
70 | .macro waituart,rd,rx | |
2815774b | 71 | ldr \rd, [\rx, # S3C2410_UFCON] |
498e03b6 BD |
72 | tst \rd, #S3C2410_UFCON_FIFOMODE @ fifo enabled? |
73 | beq 1001f @ | |
74 | @ FIFO enabled... | |
75 | 1003: | |
76 | fifo_level \rd, \rx | |
77 | teq \rd, #0 | |
78 | bne 1003b | |
79 | b 1002f | |
80 | 1001: | |
81 | @ idle waiting for non fifo | |
2815774b | 82 | ldr \rd, [\rx, # S3C2410_UTRSTAT] |
498e03b6 BD |
83 | tst \rd, #S3C2410_UTRSTAT_TXFE |
84 | beq 1001b | |
85 | ||
86 | 1002: @ exit busyuart | |
87 | .endm |