Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
torvalds
GitHub Repository: torvalds/linux
Path: blob/master/arch/arm/include/debug/samsung.S
26295 views
1
/* SPDX-License-Identifier: GPL-2.0 */
2
/*
3
* Copyright 2005, 2007 Simtec Electronics
4
* http://armlinux.simtec.co.uk/
5
* Ben Dooks <[email protected]>
6
*/
7
8
#include <linux/serial_s3c.h>
9
10
/* The S5PV210/S5PC110 implementations are as belows. */
11
12
.macro fifo_level_s5pv210 rd, rx
13
ldr \rd, [\rx, # S3C2410_UFSTAT]
14
ARM_BE8(rev \rd, \rd)
15
and \rd, \rd, #S5PV210_UFSTAT_TXMASK
16
.endm
17
18
.macro fifo_full_s5pv210 rd, rx
19
ldr \rd, [\rx, # S3C2410_UFSTAT]
20
ARM_BE8(rev \rd, \rd)
21
tst \rd, #S5PV210_UFSTAT_TXFULL
22
.endm
23
24
/* The S3C2440 implementations are used by default as they are the
25
* most widely re-used */
26
27
.macro fifo_level_s3c2440 rd, rx
28
ldr \rd, [\rx, # S3C2410_UFSTAT]
29
ARM_BE8(rev \rd, \rd)
30
and \rd, \rd, #S3C2440_UFSTAT_TXMASK
31
.endm
32
33
#ifndef fifo_level
34
#define fifo_level fifo_level_s3c2440
35
#endif
36
37
.macro fifo_full_s3c2440 rd, rx
38
ldr \rd, [\rx, # S3C2410_UFSTAT]
39
ARM_BE8(rev \rd, \rd)
40
tst \rd, #S3C2440_UFSTAT_TXFULL
41
.endm
42
43
#ifndef fifo_full
44
#define fifo_full fifo_full_s3c2440
45
#endif
46
47
.macro senduart,rd,rx
48
strb \rd, [\rx, # S3C2410_UTXH]
49
.endm
50
51
.macro busyuart, rd, rx
52
ldr \rd, [\rx, # S3C2410_UFCON]
53
ARM_BE8(rev \rd, \rd)
54
tst \rd, #S3C2410_UFCON_FIFOMODE @ fifo enabled?
55
beq 1001f @
56
@ FIFO enabled...
57
1003:
58
fifo_full \rd, \rx
59
bne 1003b
60
b 1002f
61
62
1001:
63
@ busy waiting for non fifo
64
ldr \rd, [\rx, # S3C2410_UTRSTAT]
65
ARM_BE8(rev \rd, \rd)
66
tst \rd, #S3C2410_UTRSTAT_TXFE
67
beq 1001b
68
69
1002: @ exit busyuart
70
.endm
71
72
.macro waituartcts,rd,rx
73
.endm
74
75
.macro waituarttxrdy,rd,rx
76
ldr \rd, [\rx, # S3C2410_UFCON]
77
ARM_BE8(rev \rd, \rd)
78
tst \rd, #S3C2410_UFCON_FIFOMODE @ fifo enabled?
79
beq 1001f @
80
@ FIFO enabled...
81
1003:
82
fifo_level \rd, \rx
83
teq \rd, #0
84
bne 1003b
85
b 1002f
86
1001:
87
@ idle waiting for non fifo
88
ldr \rd, [\rx, # S3C2410_UTRSTAT]
89
ARM_BE8(rev \rd, \rd)
90
tst \rd, #S3C2410_UTRSTAT_TXFE
91
beq 1001b
92
93
1002: @ exit busyuart
94
.endm
95
96