2010-01-29 09:02:12 +00:00
/ * arch/ a r m / p l a t - s a m s u n g / i n c l u d e / p l a t / d e b u g - m a c r o . S
2007-07-22 16:08:48 +01:00
*
* Copyright 2 0 0 5 , 2 0 0 7 S i m t e c E l e c t r o n i c s
* http : / / armlinux. s i m t e c . c o . u k /
* Ben D o o k s < b e n @simtec.co.uk>
*
* This p r o g r a m i s f r e e s o f t w a r e ; you can redistribute it and/or modify
* it u n d e r t h e t e r m s o f t h e G N U G e n e r a l P u b l i c L i c e n s e v e r s i o n 2 a s
* published b y t h e F r e e S o f t w a r e F o u n d a t i o n .
* /
2008-10-07 22:26:09 +01:00
# include < p l a t / r e g s - s e r i a l . h >
2007-07-22 16:08:48 +01:00
2011-05-11 16:27:51 +09:00
/* The S5PV210/S5PC110 implementations are as belows. */
2010-01-29 10:12:14 +09:00
.macro fifo_level_s5pv210 rd, r x
ldr \ r d , [ \ r x , # S 3 C 2 4 1 0 _ U F S T A T ]
and \ r d , \ r d , #S 5 P V 2 1 0 _ U F S T A T _ T X M A S K
.endm
.macro fifo_full_s5pv210 rd, r x
ldr \ r d , [ \ r x , # S 3 C 2 4 1 0 _ U F S T A T ]
tst \ r d , #S 5 P V 2 1 0 _ U F S T A T _ T X F U L L
.endm
2007-07-22 16:10:23 +01:00
/ * The S 3 C 2 4 4 0 i m p l e m e n t a t i o n s a r e u s e d b y d e f a u l t a s t h e y a r e t h e
* most w i d e l y r e - u s e d * /
.macro fifo_level_s3c2440 rd, r x
ldr \ r d , [ \ r x , # S 3 C 2 4 1 0 _ U F S T A T ]
and \ r d , \ r d , #S 3 C 2 4 4 0 _ U F S T A T _ T X M A S K
.endm
# ifndef f i f o _ l e v e l
2008-10-21 14:06:25 +01:00
# define f i f o _ l e v e l f i f o _ l e v e l _ s3 c24 4 0
2007-07-22 16:10:23 +01:00
# endif
.macro fifo_full_s3c2440 rd, r x
ldr \ r d , [ \ r x , # S 3 C 2 4 1 0 _ U F S T A T ]
tst \ r d , #S 3 C 2 4 4 0 _ U F S T A T _ T X F U L L
.endm
# ifndef f i f o _ f u l l
# define f i f o _ f u l l f i f o _ f u l l _ s3 c24 4 0
# endif
2007-07-22 16:08:48 +01:00
.macro senduart,r d ,r x
strb \ r d , [ \ r x , # S 3 C 2 4 1 0 _ U T X H ]
.endm
.macro busyuart, r d , r x
ldr \ r d , [ \ r x , # S 3 C 2 4 1 0 _ U F C O N ]
tst \ r d , #S 3 C 2 4 1 0 _ U F C O N _ F I F O M O D E @ fifo enabled?
beq 1 0 0 1 f @
@ FIFO enabled...
1003 :
fifo_ f u l l \ r d , \ r x
bne 1 0 0 3 b
b 1 0 0 2 f
1001 :
@ busy waiting for non fifo
ldr \ r d , [ \ r x , # S 3 C 2 4 1 0 _ U T R S T A T ]
tst \ r d , #S 3 C 2 4 1 0 _ U T R S T A T _ T X F E
beq 1 0 0 1 b
1002 : @ exit busyuart
.endm
.macro waituart,r d ,r x
ldr \ r d , [ \ r x , # S 3 C 2 4 1 0 _ U F C O N ]
tst \ r d , #S 3 C 2 4 1 0 _ U F C O N _ F I F O M O D E @ fifo enabled?
beq 1 0 0 1 f @
@ FIFO enabled...
1003 :
fifo_ l e v e l \ r d , \ r x
teq \ r d , #0
bne 1 0 0 3 b
b 1 0 0 2 f
1001 :
@ idle waiting for non fifo
ldr \ r d , [ \ r x , # S 3 C 2 4 1 0 _ U T R S T A T ]
tst \ r d , #S 3 C 2 4 1 0 _ U T R S T A T _ T X F E
beq 1 0 0 1 b
1002 : @ exit busyuart
.endm