• Home
  • History
  • Annotate
  • Line#
  • Navigate
  • Raw
  • Download
  • only in /netgear-R7000-V1.0.7.12_1.2.5/components/opensource/linux/linux-2.6.36/arch/arm/mach-s3c2410/include/mach/
1/* arch/arm/mach-s3c2410/include/mach/debug-macro.S
2 *
3 * Debugging macro include header
4 *
5 *  Copyright (C) 1994-1999 Russell King
6 *  Copyright (C) 2005 Simtec Electronics
7 *
8 *  Moved from linux/arch/arm/kernel/debug.S by Ben Dooks
9 *
10 * This program is free software; you can redistribute it and/or modify
11 * it under the terms of the GNU General Public License version 2 as
12 * published by the Free Software Foundation.
13*/
14
15#include <mach/map.h>
16#include <mach/regs-gpio.h>
17#include <plat/regs-serial.h>
18
19#define S3C2410_UART1_OFF (0x4000)
20#define SHIFT_2440TXF (14-9)
21
22	.macro addruart, rx, tmp
23		mrc	p15, 0, \rx, c1, c0
24		tst	\rx, #1
25		ldreq	\rx, = S3C24XX_PA_UART
26		ldrne	\rx, = S3C24XX_VA_UART
27#if CONFIG_DEBUG_S3C_UART != 0
28		add	\rx, \rx, #(S3C2410_UART1_OFF * CONFIG_DEBUG_S3C_UART)
29#endif
30	.endm
31
32	.macro fifo_full_s3c24xx rd, rx
33		@ check for arm920 vs arm926. currently assume all arm926
34		@ devices have an 64 byte FIFO identical to the s3c2440
35		mrc	p15, 0, \rd, c0, c0
36		and	\rd, \rd, #0xff0
37		teq	\rd, #0x260
38		beq	1004f
39		mrc	p15, 0, \rd, c1, c0
40		tst	\rd, #1
41		addeq	\rd, \rx, #(S3C24XX_PA_GPIO - S3C24XX_PA_UART)
42		addne	\rd, \rx, #(S3C24XX_VA_GPIO - S3C24XX_VA_UART)
43		bic	\rd, \rd, #0xff000
44		ldr	\rd, [ \rd, # S3C2410_GSTATUS1 - S3C2410_GPIOREG(0) ]
45		and	\rd, \rd, #0x00ff0000
46		teq	\rd, #0x00440000		@ is it 2440?
471004:
48		ldr	\rd, [ \rx, # S3C2410_UFSTAT ]
49		moveq	\rd, \rd, lsr #SHIFT_2440TXF
50		tst	\rd, #S3C2410_UFSTAT_TXFULL
51	.endm
52
53	.macro  fifo_full_s3c2410 rd, rx
54		ldr	\rd, [ \rx, # S3C2410_UFSTAT ]
55		tst	\rd, #S3C2410_UFSTAT_TXFULL
56	.endm
57
58/* fifo level reading */
59
60	.macro fifo_level_s3c24xx rd, rx
61		@ check for arm920 vs arm926. currently assume all arm926
62		@ devices have an 64 byte FIFO identical to the s3c2440
63		mrc	p15, 0, \rd, c0, c0
64		and	\rd, \rd, #0xff0
65		teq	\rd, #0x260
66		beq	10000f
67		mrc	p15, 0, \rd, c1, c0
68		tst	\rd, #1
69		addeq	\rd, \rx, #(S3C24XX_PA_GPIO - S3C24XX_PA_UART)
70		addne	\rd, \rx, #(S3C24XX_VA_GPIO - S3C24XX_VA_UART)
71		bic	\rd, \rd, #0xff000
72		ldr	\rd, [ \rd, # S3C2410_GSTATUS1 - S3C2410_GPIOREG(0) ]
73		and	\rd, \rd, #0x00ff0000
74		teq	\rd, #0x00440000		@ is it 2440?
75
7610000:
77		ldr	\rd, [ \rx, # S3C2410_UFSTAT ]
78		andne	\rd, \rd, #S3C2410_UFSTAT_TXMASK
79		andeq	\rd, \rd, #S3C2440_UFSTAT_TXMASK
80	.endm
81
82	.macro fifo_level_s3c2410 rd, rx
83		ldr	\rd, [ \rx, # S3C2410_UFSTAT ]
84		and	\rd, \rd, #S3C2410_UFSTAT_TXMASK
85	.endm
86
87/* Select the correct implementation depending on the configuration. The
88 * S3C2440 will get selected by default, as these are the most widely
89 * used variants of these
90*/
91
92#if defined(CONFIG_CPU_LLSERIAL_S3C2410_ONLY)
93#define fifo_full  fifo_full_s3c2410
94#define fifo_level fifo_level_s3c2410
95#elif !defined(CONFIG_CPU_LLSERIAL_S3C2440_ONLY)
96#define fifo_full  fifo_full_s3c24xx
97#define fifo_level fifo_level_s3c24xx
98#endif
99
100/* include the reset of the code which will do the work */
101
102#include <plat/debug-macro.S>
103