Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
L
linux
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Kirill Smelkov
linux
Commits
8ee3f402
Commit
8ee3f402
authored
Nov 19, 2005
by
Linus Torvalds
Browse files
Options
Browse Files
Download
Plain Diff
Merge master.kernel.org:/home/rmk/linux-2.6-serial
parents
3b762d32
832f4ede
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
27 additions
and
24 deletions
+27
-24
drivers/serial/amba-pl011.c
drivers/serial/amba-pl011.c
+22
-23
drivers/serial/sa1100.c
drivers/serial/sa1100.c
+0
-1
include/asm-arm/hardware/amba_serial.h
include/asm-arm/hardware/amba_serial.h
+5
-0
No files found.
drivers/serial/amba-pl011.c
View file @
8ee3f402
...
...
@@ -49,7 +49,6 @@
#include <linux/serial.h>
#include <asm/io.h>
#include <asm/irq.h>
#include <asm/sizes.h>
#include <asm/hardware/amba.h>
#include <asm/hardware/clock.h>
...
...
@@ -63,7 +62,8 @@
#define AMBA_ISR_PASS_LIMIT 256
#define UART_DUMMY_RSR_RX 256
#define UART_DR_ERROR (UART011_DR_OE|UART011_DR_BE|UART011_DR_PE|UART011_DR_FE)
#define UART_DUMMY_DR_RX (1 << 16)
/*
* We wrap our port structure around the generic uart_port.
...
...
@@ -116,7 +116,7 @@ pl011_rx_chars(struct uart_amba_port *uap)
#endif
{
struct
tty_struct
*
tty
=
uap
->
port
.
info
->
tty
;
unsigned
int
status
,
ch
,
flag
,
rsr
,
max_count
=
256
;
unsigned
int
status
,
ch
,
flag
,
max_count
=
256
;
status
=
readw
(
uap
->
port
.
membase
+
UART01x_FR
);
while
((
status
&
UART01x_FR_RXFE
)
==
0
&&
max_count
--
)
{
...
...
@@ -129,7 +129,7 @@ pl011_rx_chars(struct uart_amba_port *uap)
*/
}
ch
=
readw
(
uap
->
port
.
membase
+
UART01x_DR
);
ch
=
readw
(
uap
->
port
.
membase
+
UART01x_DR
)
|
UART_DUMMY_DR_RX
;
flag
=
TTY_NORMAL
;
uap
->
port
.
icount
.
rx
++
;
...
...
@@ -137,34 +137,33 @@ pl011_rx_chars(struct uart_amba_port *uap)
* Note that the error handling code is
* out of the main execution path
*/
rsr
=
readw
(
uap
->
port
.
membase
+
UART01x_RSR
)
|
UART_DUMMY_RSR_RX
;
if
(
unlikely
(
rsr
&
UART01x_RSR_ANY
))
{
if
(
rsr
&
UART01x_RSR_BE
)
{
rsr
&=
~
(
UART01x_RSR_FE
|
UART01x_RSR_PE
);
if
(
unlikely
(
ch
&
UART_DR_ERROR
))
{
if
(
ch
&
UART011_DR_BE
)
{
ch
&=
~
(
UART011_DR_FE
|
UART011_DR_PE
);
uap
->
port
.
icount
.
brk
++
;
if
(
uart_handle_break
(
&
uap
->
port
))
goto
ignore_char
;
}
else
if
(
rsr
&
UART01x_RS
R_PE
)
}
else
if
(
ch
&
UART011_D
R_PE
)
uap
->
port
.
icount
.
parity
++
;
else
if
(
rsr
&
UART01x_RS
R_FE
)
else
if
(
ch
&
UART011_D
R_FE
)
uap
->
port
.
icount
.
frame
++
;
if
(
rsr
&
UART01x_RS
R_OE
)
if
(
ch
&
UART011_D
R_OE
)
uap
->
port
.
icount
.
overrun
++
;
rsr
&=
uap
->
port
.
read_status_mask
;
ch
&=
uap
->
port
.
read_status_mask
;
if
(
rsr
&
UART01x_RS
R_BE
)
if
(
ch
&
UART011_D
R_BE
)
flag
=
TTY_BREAK
;
else
if
(
rsr
&
UART01x_RS
R_PE
)
else
if
(
ch
&
UART011_D
R_PE
)
flag
=
TTY_PARITY
;
else
if
(
rsr
&
UART01x_RS
R_FE
)
else
if
(
ch
&
UART011_D
R_FE
)
flag
=
TTY_FRAME
;
}
if
(
uart_handle_sysrq_char
(
&
uap
->
port
,
ch
,
regs
))
goto
ignore_char
;
uart_insert_char
(
&
uap
->
port
,
rsr
,
UART01x_RS
R_OE
,
ch
,
flag
);
uart_insert_char
(
&
uap
->
port
,
ch
,
UART011_D
R_OE
,
ch
,
flag
);
ignore_char:
status
=
readw
(
uap
->
port
.
membase
+
UART01x_FR
);
...
...
@@ -476,33 +475,33 @@ pl011_set_termios(struct uart_port *port, struct termios *termios,
*/
uart_update_timeout
(
port
,
termios
->
c_cflag
,
baud
);
port
->
read_status_mask
=
UART01
x_RSR_OE
;
port
->
read_status_mask
=
UART01
1_DR_OE
|
255
;
if
(
termios
->
c_iflag
&
INPCK
)
port
->
read_status_mask
|=
UART01
x_RSR_FE
|
UART01x_RS
R_PE
;
port
->
read_status_mask
|=
UART01
1_DR_FE
|
UART011_D
R_PE
;
if
(
termios
->
c_iflag
&
(
BRKINT
|
PARMRK
))
port
->
read_status_mask
|=
UART01
x_RS
R_BE
;
port
->
read_status_mask
|=
UART01
1_D
R_BE
;
/*
* Characters to ignore
*/
port
->
ignore_status_mask
=
0
;
if
(
termios
->
c_iflag
&
IGNPAR
)
port
->
ignore_status_mask
|=
UART01
x_RSR_FE
|
UART01x_RS
R_PE
;
port
->
ignore_status_mask
|=
UART01
1_DR_FE
|
UART011_D
R_PE
;
if
(
termios
->
c_iflag
&
IGNBRK
)
{
port
->
ignore_status_mask
|=
UART01
x_RS
R_BE
;
port
->
ignore_status_mask
|=
UART01
1_D
R_BE
;
/*
* If we're ignoring parity and break indicators,
* ignore overruns too (for real raw support).
*/
if
(
termios
->
c_iflag
&
IGNPAR
)
port
->
ignore_status_mask
|=
UART01
x_RS
R_OE
;
port
->
ignore_status_mask
|=
UART01
1_D
R_OE
;
}
/*
* Ignore all characters if CREAD is not set.
*/
if
((
termios
->
c_cflag
&
CREAD
)
==
0
)
port
->
ignore_status_mask
|=
UART_DUMMY_
RS
R_RX
;
port
->
ignore_status_mask
|=
UART_DUMMY_
D
R_RX
;
if
(
UART_ENABLE_MS
(
port
,
termios
->
c_cflag
))
pl011_enable_ms
(
port
);
...
...
drivers/serial/sa1100.c
View file @
8ee3f402
...
...
@@ -161,7 +161,6 @@ static void sa1100_stop_tx(struct uart_port *port)
static
void
sa1100_start_tx
(
struct
uart_port
*
port
)
{
struct
sa1100_port
*
sport
=
(
struct
sa1100_port
*
)
port
;
unsigned
long
flags
;
u32
utcr3
;
utcr3
=
UART_GET_UTCR3
(
sport
);
...
...
include/asm-arm/hardware/amba_serial.h
View file @
8ee3f402
...
...
@@ -50,6 +50,11 @@
#define UART011_ICR 0x44
/* Interrupt clear register. */
#define UART011_DMACR 0x48
/* DMA control register. */
#define UART011_DR_OE (1 << 11)
#define UART011_DR_BE (1 << 10)
#define UART011_DR_PE (1 << 9)
#define UART011_DR_FE (1 << 8)
#define UART01x_RSR_OE 0x08
#define UART01x_RSR_BE 0x04
#define UART01x_RSR_PE 0x02
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment