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
nexedi
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