diff options
author | Russell King <rmk@dyn-67.arm.linux.org.uk> | 2006-03-16 15:40:25 -0500 |
---|---|---|
committer | Russell King <rmk+kernel@arm.linux.org.uk> | 2006-03-21 17:05:57 -0500 |
commit | 268099e3ccca5a988632ce18abd21d809d632ddc (patch) | |
tree | eb060cc006e441742b1035d1a69e4d2d79e83e22 | |
parent | 22398f57b6372f3150f9ebb4b6d0aa4bf98c5dfb (diff) |
[ARM] Collect 8250-based debug implementations together
Several ARM machine implementations used an 8250 compatible port for
debugging purposes, and indepdently implemented the low level debug
macros every time. Provide a common implementation and convert these
implementations to use this version.
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
-rw-r--r-- | include/asm-arm/arch-cl7500/debug-macro.S | 14 | ||||
-rw-r--r-- | include/asm-arm/arch-ebsa110/debug-macro.S | 19 | ||||
-rw-r--r-- | include/asm-arm/arch-ebsa285/debug-macro.S | 18 | ||||
-rw-r--r-- | include/asm-arm/arch-iop3xx/debug-macro.S | 19 | ||||
-rw-r--r-- | include/asm-arm/arch-ixp4xx/debug-macro.S | 15 | ||||
-rw-r--r-- | include/asm-arm/arch-pxa/debug-macro.S | 17 | ||||
-rw-r--r-- | include/asm-arm/arch-rpc/debug-macro.S | 19 | ||||
-rw-r--r-- | include/asm-arm/hardware/debug-8250.S | 29 |
8 files changed, 47 insertions, 103 deletions
diff --git a/include/asm-arm/arch-cl7500/debug-macro.S b/include/asm-arm/arch-cl7500/debug-macro.S index a5d489d7955a..9a2b67d24098 100644 --- a/include/asm-arm/arch-cl7500/debug-macro.S +++ b/include/asm-arm/arch-cl7500/debug-macro.S | |||
@@ -17,15 +17,5 @@ | |||
17 | orr \rx, \rx, #0x00000be0 | 17 | orr \rx, \rx, #0x00000be0 |
18 | .endm | 18 | .endm |
19 | 19 | ||
20 | .macro senduart,rd,rx | 20 | #define UART_SHIFT 2 |
21 | strb \rd, [\rx] | 21 | #include <asm/hardware/debug-8250.S> |
22 | .endm | ||
23 | |||
24 | .macro busyuart,rd,rx | ||
25 | .endm | ||
26 | |||
27 | .macro waituart,rd,rx | ||
28 | 1001: ldrb \rd, [\rx, #0x14] | ||
29 | tst \rd, #0x20 | ||
30 | beq 1001b | ||
31 | .endm | ||
diff --git a/include/asm-arm/arch-ebsa110/debug-macro.S b/include/asm-arm/arch-ebsa110/debug-macro.S index dcd03a40c502..f61cadabe0ec 100644 --- a/include/asm-arm/arch-ebsa110/debug-macro.S +++ b/include/asm-arm/arch-ebsa110/debug-macro.S | |||
@@ -16,19 +16,6 @@ | |||
16 | orr \rx, \rx, #0x00000be0 | 16 | orr \rx, \rx, #0x00000be0 |
17 | .endm | 17 | .endm |
18 | 18 | ||
19 | .macro senduart,rd,rx | 19 | #define UART_SHIFT 2 |
20 | strb \rd, [\rx] | 20 | #define FLOW_CONTROL |
21 | .endm | 21 | #include <asm/hardware/debug-8250.h> |
22 | |||
23 | .macro busyuart,rd,rx | ||
24 | 1002: ldrb \rd, [\rx, #0x14] | ||
25 | and \rd, \rd, #0x60 | ||
26 | teq \rd, #0x60 | ||
27 | bne 1002b | ||
28 | .endm | ||
29 | |||
30 | .macro waituart,rd,rx | ||
31 | 1001: ldrb \rd, [\rx, #0x18] | ||
32 | tst \rd, #0x10 | ||
33 | beq 1001b | ||
34 | .endm | ||
diff --git a/include/asm-arm/arch-ebsa285/debug-macro.S b/include/asm-arm/arch-ebsa285/debug-macro.S index 97d15fc629af..b48cec4a0c45 100644 --- a/include/asm-arm/arch-ebsa285/debug-macro.S +++ b/include/asm-arm/arch-ebsa285/debug-macro.S | |||
@@ -23,22 +23,10 @@ | |||
23 | orr \rx, \rx, #0x000003f8 | 23 | orr \rx, \rx, #0x000003f8 |
24 | .endm | 24 | .endm |
25 | 25 | ||
26 | .macro senduart,rd,rx | 26 | #define UART_SHIFT 0 |
27 | strb \rd, [\rx] | 27 | #define FLOW_CONTROL |
28 | .endm | 28 | #include <asm/hardware/debug-8250.S> |
29 | 29 | ||
30 | .macro busyuart,rd,rx | ||
31 | 1002: ldrb \rd, [\rx, #0x5] | ||
32 | and \rd, \rd, #0x60 | ||
33 | teq \rd, #0x60 | ||
34 | bne 1002b | ||
35 | .endm | ||
36 | |||
37 | .macro waituart,rd,rx | ||
38 | 1001: ldrb \rd, [\rx, #0x6] | ||
39 | tst \rd, #0x10 | ||
40 | beq 1001b | ||
41 | .endm | ||
42 | #else | 30 | #else |
43 | /* For EBSA285 debugging */ | 31 | /* For EBSA285 debugging */ |
44 | .equ dc21285_high, ARMCSR_BASE & 0xff000000 | 32 | .equ dc21285_high, ARMCSR_BASE & 0xff000000 |
diff --git a/include/asm-arm/arch-iop3xx/debug-macro.S b/include/asm-arm/arch-iop3xx/debug-macro.S index cc15f80ebd9a..ce007e531994 100644 --- a/include/asm-arm/arch-iop3xx/debug-macro.S +++ b/include/asm-arm/arch-iop3xx/debug-macro.S | |||
@@ -28,21 +28,8 @@ | |||
28 | #endif | 28 | #endif |
29 | .endm | 29 | .endm |
30 | 30 | ||
31 | .macro senduart,rd,rx | ||
32 | strb \rd, [\rx] | ||
33 | .endm | ||
34 | |||
35 | .macro busyuart,rd,rx | ||
36 | 1002: ldrb \rd, [\rx, #0x5] | ||
37 | and \rd, \rd, #0x60 | ||
38 | teq \rd, #0x60 | ||
39 | bne 1002b | ||
40 | .endm | ||
41 | |||
42 | .macro waituart,rd,rx | ||
43 | #if !defined(CONFIG_ARCH_IQ80321) || !defined(CONFIG_ARCH_IQ31244) || !defined(CONFIG_ARCH_IQ80331) | 31 | #if !defined(CONFIG_ARCH_IQ80321) || !defined(CONFIG_ARCH_IQ31244) || !defined(CONFIG_ARCH_IQ80331) |
44 | 1001: ldrb \rd, [\rx, #0x6] | 32 | #define FLOW_CONTROL |
45 | tst \rd, #0x10 | ||
46 | beq 1001b | ||
47 | #endif | 33 | #endif |
48 | .endm | 34 | #define UART_SHIFT 0 |
35 | #include <asm/hardware/debug-8250.S> | ||
diff --git a/include/asm-arm/arch-ixp4xx/debug-macro.S b/include/asm-arm/arch-ixp4xx/debug-macro.S index 2e23651e217f..37bc8ef23e67 100644 --- a/include/asm-arm/arch-ixp4xx/debug-macro.S +++ b/include/asm-arm/arch-ixp4xx/debug-macro.S | |||
@@ -20,16 +20,5 @@ | |||
20 | @ byte writes used - Big Endian. | 20 | @ byte writes used - Big Endian. |
21 | .endm | 21 | .endm |
22 | 22 | ||
23 | .macro senduart,rd,rx | 23 | #define UART_SHIFT 2 |
24 | strb \rd, [\rx] | 24 | #include <asm/hardware/debug-8250.S> |
25 | .endm | ||
26 | |||
27 | .macro waituart,rd,rx | ||
28 | 1002: ldrb \rd, [\rx, #0x14] | ||
29 | and \rd, \rd, #0x60 @ check THRE and TEMT bits | ||
30 | teq \rd, #0x60 | ||
31 | bne 1002b | ||
32 | .endm | ||
33 | |||
34 | .macro busyuart,rd,rx | ||
35 | .endm | ||
diff --git a/include/asm-arm/arch-pxa/debug-macro.S b/include/asm-arm/arch-pxa/debug-macro.S index b6ec68879176..9012cbc0ad8b 100644 --- a/include/asm-arm/arch-pxa/debug-macro.S +++ b/include/asm-arm/arch-pxa/debug-macro.S | |||
@@ -21,18 +21,5 @@ | |||
21 | orr \rx, \rx, #0x00100000 | 21 | orr \rx, \rx, #0x00100000 |
22 | .endm | 22 | .endm |
23 | 23 | ||
24 | .macro senduart,rd,rx | 24 | #define UART_SHIFT 2 |
25 | str \rd, [\rx, #0] | 25 | #include <asm/hardware/debug-8250.S> |
26 | .endm | ||
27 | |||
28 | .macro busyuart,rd,rx | ||
29 | 1002: ldr \rd, [\rx, #0x14] | ||
30 | tst \rd, #(1 << 6) | ||
31 | beq 1002b | ||
32 | .endm | ||
33 | |||
34 | .macro waituart,rd,rx | ||
35 | 1001: ldr \rd, [\rx, #0x14] | ||
36 | tst \rd, #(1 << 5) | ||
37 | beq 1001b | ||
38 | .endm | ||
diff --git a/include/asm-arm/arch-rpc/debug-macro.S b/include/asm-arm/arch-rpc/debug-macro.S index 456d3d754c3d..c634c8d8f4a1 100644 --- a/include/asm-arm/arch-rpc/debug-macro.S +++ b/include/asm-arm/arch-rpc/debug-macro.S | |||
@@ -20,19 +20,6 @@ | |||
20 | orr \rx, \rx, #0x00000fe0 | 20 | orr \rx, \rx, #0x00000fe0 |
21 | .endm | 21 | .endm |
22 | 22 | ||
23 | .macro senduart,rd,rx | 23 | #define UART_SHIFT 2 |
24 | strb \rd, [\rx] | 24 | #define FLOW_CONTROL |
25 | .endm | 25 | #include <asm/hardware/debug-8250.S> |
26 | |||
27 | .macro busyuart,rd,rx | ||
28 | 1001: ldrb \rd, [\rx, #0x14] | ||
29 | and \rd, \rd, #0x60 | ||
30 | teq \rd, #0x60 | ||
31 | bne 1001b | ||
32 | .endm | ||
33 | |||
34 | .macro waituart,rd,rx | ||
35 | 1001: ldrb \rd, [\rx, #0x18] | ||
36 | tst \rd, #0x10 | ||
37 | beq 1001b | ||
38 | .endm | ||
diff --git a/include/asm-arm/hardware/debug-8250.S b/include/asm-arm/hardware/debug-8250.S new file mode 100644 index 000000000000..4594fea91ec1 --- /dev/null +++ b/include/asm-arm/hardware/debug-8250.S | |||
@@ -0,0 +1,29 @@ | |||
1 | /* | ||
2 | * linux/include/asm-arm/hardware/debug-8250.h | ||
3 | * | ||
4 | * Copyright (C) 1994-1999 Russell King | ||
5 | * | ||
6 | * This program is free software; you can redistribute it and/or modify | ||
7 | * it under the terms of the GNU General Public License version 2 as | ||
8 | * published by the Free Software Foundation. | ||
9 | */ | ||
10 | #include <linux/serial_reg.h> | ||
11 | |||
12 | .macro senduart,rd,rx | ||
13 | strb \rd, [\rx, #UART_TX << UART_SHIFT] | ||
14 | .endm | ||
15 | |||
16 | .macro busyuart,rd,rx | ||
17 | 1002: ldrb \rd, [\rx, #UART_LSR << UART_SHIFT] | ||
18 | and \rd, \rd, #UART_LSR_TEMT | UART_LSR_THRE | ||
19 | teq \rd, #UART_LSR_TEMT | UART_LSR_THRE | ||
20 | bne 1002b | ||
21 | .endm | ||
22 | |||
23 | .macro waituart,rd,rx | ||
24 | #ifdef FLOW_CONTROL | ||
25 | 1001: ldrb \rd, [\rx, #UART_MSR << UART_SHIFT] | ||
26 | tst \rd, #UART_MSR_CTS | ||
27 | beq 1001b | ||
28 | #endif | ||
29 | .endm | ||