Merge tag 'regmap-fix-v4.8-rc7' of git://git.kernel.org/pub/scm/linux/kernel/git...
[sfrench/cifs-2.6.git] / arch / arm / include / debug / samsung.S
1 /* arch/arm/plat-samsung/include/plat/debug-macro.S
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
12 #include <linux/serial_s3c.h>
13
14 /* The S5PV210/S5PC110 implementations are as belows. */
15
16         .macro fifo_level_s5pv210 rd, rx
17                 ldr     \rd, [\rx, # S3C2410_UFSTAT]
18 ARM_BE8(rev \rd, \rd)
19                 and     \rd, \rd, #S5PV210_UFSTAT_TXMASK
20         .endm
21
22         .macro  fifo_full_s5pv210 rd, rx
23                 ldr     \rd, [\rx, # S3C2410_UFSTAT]
24 ARM_BE8(rev \rd, \rd)
25                 tst     \rd, #S5PV210_UFSTAT_TXFULL
26         .endm
27
28 /* The S3C2440 implementations are used by default as they are the
29  * most widely re-used */
30
31         .macro fifo_level_s3c2440 rd, rx
32                 ldr     \rd, [\rx, # S3C2410_UFSTAT]
33 ARM_BE8(rev \rd, \rd)
34                 and     \rd, \rd, #S3C2440_UFSTAT_TXMASK
35         .endm
36
37 #ifndef fifo_level
38 #define fifo_level fifo_level_s3c2440
39 #endif
40
41         .macro  fifo_full_s3c2440 rd, rx
42                 ldr     \rd, [\rx, # S3C2410_UFSTAT]
43 ARM_BE8(rev \rd, \rd)
44                 tst     \rd, #S3C2440_UFSTAT_TXFULL
45         .endm
46
47 #ifndef fifo_full
48 #define fifo_full fifo_full_s3c2440
49 #endif
50
51         .macro  senduart,rd,rx
52                 strb    \rd, [\rx, # S3C2410_UTXH]
53         .endm
54
55         .macro  busyuart, rd, rx
56                 ldr     \rd, [\rx, # S3C2410_UFCON]
57 ARM_BE8(rev \rd, \rd)
58                 tst     \rd, #S3C2410_UFCON_FIFOMODE    @ fifo enabled?
59                 beq     1001f                           @
60                 @ FIFO enabled...
61 1003:
62                 fifo_full \rd, \rx
63                 bne     1003b
64                 b       1002f
65
66 1001:
67                 @ busy waiting for non fifo
68                 ldr     \rd, [\rx, # S3C2410_UTRSTAT]
69 ARM_BE8(rev \rd, \rd)
70                 tst     \rd, #S3C2410_UTRSTAT_TXFE
71                 beq     1001b
72
73 1002:           @ exit busyuart
74         .endm
75
76         .macro  waituart,rd,rx
77                 ldr     \rd, [\rx, # S3C2410_UFCON]
78 ARM_BE8(rev \rd, \rd)
79                 tst     \rd, #S3C2410_UFCON_FIFOMODE    @ fifo enabled?
80                 beq     1001f                           @
81                 @ FIFO enabled...
82 1003:
83                 fifo_level \rd, \rx
84                 teq     \rd, #0
85                 bne     1003b
86                 b       1002f
87 1001:
88                 @ idle waiting for non fifo
89                 ldr     \rd, [\rx, # S3C2410_UTRSTAT]
90 ARM_BE8(rev \rd, \rd)
91                 tst     \rd, #S3C2410_UTRSTAT_TXFE
92                 beq     1001b
93
94 1002:           @ exit busyuart
95         .endm