Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openanolis
cloud-kernel
提交
97af1128
cloud-kernel
项目概览
openanolis
/
cloud-kernel
1 年多 前同步成功
通知
160
Star
36
Fork
7
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
10
列表
看板
标记
里程碑
合并请求
2
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
cloud-kernel
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
10
Issue
10
列表
看板
标记
里程碑
合并请求
2
合并请求
2
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
提交
97af1128
编写于
4月 26, 2005
作者:
L
Linus Torvalds
浏览文件
操作
浏览文件
下载
差异文件
Automatic merge of kernel.org:/home/rmk/linux-2.6-serial.git
上级
1e14c33f
2b49abac
变更
8
隐藏空白更改
内联
并排
Showing
8 changed file
with
83 addition
and
110 deletion
+83
-110
drivers/serial/21285.c
drivers/serial/21285.c
+1
-1
drivers/serial/8250_hp300.c
drivers/serial/8250_hp300.c
+27
-26
drivers/serial/amba-pl010.c
drivers/serial/amba-pl010.c
+1
-1
drivers/serial/amba-pl011.c
drivers/serial/amba-pl011.c
+1
-1
drivers/serial/clps711x.c
drivers/serial/clps711x.c
+27
-38
drivers/serial/s3c2410.c
drivers/serial/s3c2410.c
+1
-1
drivers/serial/sa1100.c
drivers/serial/sa1100.c
+24
-41
drivers/serial/serial_lh7a40x.c
drivers/serial/serial_lh7a40x.c
+1
-1
未找到文件。
drivers/serial/21285.c
浏览文件 @
97af1128
...
...
@@ -110,7 +110,7 @@ static irqreturn_t serial21285_rx_chars(int irq, void *dev_id, struct pt_regs *r
port
->
icount
.
rx
++
;
rxs
=
*
CSR_RXSTAT
|
RXSTAT_DUMMY_READ
;
if
(
rxs
&
RXSTAT_ANYERR
)
{
if
(
unlikely
(
rxs
&
RXSTAT_ANYERR
)
)
{
if
(
rxs
&
RXSTAT_PARITY
)
port
->
icount
.
parity
++
;
else
if
(
rxs
&
RXSTAT_FRAME
)
...
...
drivers/serial/8250_hp300.c
浏览文件 @
97af1128
...
...
@@ -9,15 +9,15 @@
#include <linux/init.h>
#include <linux/string.h>
#include <linux/kernel.h>
#include <linux/tty.h>
#include <linux/serial.h>
#include <linux/serialP.h>
#include <linux/serial_core.h>
#include <linux/delay.h>
#include <linux/dio.h>
#include <linux/console.h>
#include <asm/io.h>
#include "8250.h"
#if !defined(CONFIG_HPDCA) && !defined(CONFIG_HPAPCI)
#warning CONFIG_8250 defined but neither CONFIG_HPDCA nor CONFIG_HPAPCI defined, are you sure?
#endif
...
...
@@ -163,7 +163,7 @@ int __init hp300_setup_serial_console(void)
static
int
__devinit
hpdca_init_one
(
struct
dio_dev
*
d
,
const
struct
dio_device_id
*
ent
)
{
struct
serial_struct
serial_req
;
struct
uart_port
port
;
int
line
;
#ifdef CONFIG_SERIAL_8250_CONSOLE
...
...
@@ -172,21 +172,22 @@ static int __devinit hpdca_init_one(struct dio_dev *d,
return
0
;
}
#endif
memset
(
&
serial_req
,
0
,
sizeof
(
struct
serial_struc
t
));
memset
(
&
port
,
0
,
sizeof
(
struct
uart_por
t
));
/* Memory mapped I/O */
serial_req
.
io_type
=
SERIAL_IO_MEM
;
serial_req
.
flags
=
UPF_SKIP_TEST
|
UPF_SHARE_IRQ
|
UPF_BOOT_AUTOCONF
;
serial_req
.
irq
=
d
->
ipl
;
serial_req
.
baud_base
=
HPDCA_BAUD_BASE
;
serial_req
.
iomap_base
=
(
d
->
resource
.
start
+
UART_OFFSET
);
serial_req
.
iomem_base
=
(
char
*
)(
serial_req
.
iomap_base
+
DIO_VIRADDRBASE
);
serial_req
.
iomem_reg_shift
=
1
;
line
=
register_serial
(
&
serial_req
);
port
.
iotype
=
UPIO_MEM
;
port
.
flags
=
UPF_SKIP_TEST
|
UPF_SHARE_IRQ
|
UPF_BOOT_AUTOCONF
;
port
.
irq
=
d
->
ipl
;
port
.
uartclk
=
HPDCA_BAUD_BASE
*
16
;
port
.
mapbase
=
(
d
->
resource
.
start
+
UART_OFFSET
);
port
.
membase
=
(
char
*
)(
port
.
mapbase
+
DIO_VIRADDRBASE
);
port
.
regshift
=
1
;
port
.
dev
=
&
d
->
dev
;
line
=
serial8250_register_port
(
&
port
);
if
(
line
<
0
)
{
printk
(
KERN_NOTICE
"8250_hp300: register_serial() DCA scode %d"
" irq %d failed
\n
"
,
d
->
scode
,
serial_req
.
irq
);
" irq %d failed
\n
"
,
d
->
scode
,
port
.
irq
);
return
-
ENOMEM
;
}
...
...
@@ -209,7 +210,7 @@ static int __init hp300_8250_init(void)
#ifdef CONFIG_HPAPCI
int
line
;
unsigned
long
base
;
struct
serial_struct
serial_req
;
struct
uart_port
uport
;
struct
hp300_port
*
port
;
int
i
;
#endif
...
...
@@ -251,25 +252,25 @@ static int __init hp300_8250_init(void)
if
(
!
port
)
return
-
ENOMEM
;
memset
(
&
serial_req
,
0
,
sizeof
(
struct
serial_struc
t
));
memset
(
&
uport
,
0
,
sizeof
(
struct
uart_por
t
));
base
=
(
FRODO_BASE
+
FRODO_APCI_OFFSET
(
i
));
/* Memory mapped I/O */
serial_req
.
io_type
=
SERIAL_
IO_MEM
;
serial_req
.
flags
=
UPF_SKIP_TEST
|
UPF_SHARE_IRQ
|
UPF_BOOT_AUTOCONF
;
uport
.
iotype
=
UP
IO_MEM
;
uport
.
flags
=
UPF_SKIP_TEST
|
UPF_SHARE_IRQ
|
UPF_BOOT_AUTOCONF
;
/* XXX - no interrupt support yet */
serial_req
.
irq
=
0
;
serial_req
.
baud_base
=
HPAPCI_BAUD_BASE
;
serial_req
.
iomap_
base
=
base
;
serial_req
.
iomem_base
=
(
char
*
)(
serial_req
.
iomap_
base
+
DIO_VIRADDRBASE
);
serial_req
.
iomem_reg_
shift
=
2
;
uport
.
irq
=
0
;
uport
.
uartclk
=
HPAPCI_BAUD_BASE
*
16
;
uport
.
map
base
=
base
;
uport
.
membase
=
(
char
*
)(
base
+
DIO_VIRADDRBASE
);
uport
.
reg
shift
=
2
;
line
=
register_serial
(
&
serial_req
);
line
=
serial8250_register_port
(
&
uport
);
if
(
line
<
0
)
{
printk
(
KERN_NOTICE
"8250_hp300: register_serial() APCI %d"
" irq %d failed
\n
"
,
i
,
serial_req
.
irq
);
" irq %d failed
\n
"
,
i
,
uport
.
irq
);
kfree
(
port
);
continue
;
}
...
...
@@ -299,7 +300,7 @@ static void __devexit hpdca_remove_one(struct dio_dev *d)
/* Disable board-interrupts */
out_8
(
d
->
resource
.
start
+
DIO_VIRADDRBASE
+
DCA_IC
,
0
);
}
unregister_serial
(
line
);
serial8250_unregister_port
(
line
);
}
#endif
...
...
@@ -309,7 +310,7 @@ static void __exit hp300_8250_exit(void)
struct
hp300_port
*
port
,
*
to_free
;
for
(
port
=
hp300_ports
;
port
;
)
{
unregister_serial
(
port
->
line
);
serial8250_unregister_port
(
port
->
line
);
to_free
=
port
;
port
=
port
->
next
;
kfree
(
to_free
);
...
...
drivers/serial/amba-pl010.c
浏览文件 @
97af1128
...
...
@@ -172,7 +172,7 @@ pl010_rx_chars(struct uart_port *port)
* out of the main execution path
*/
rsr
=
UART_GET_RSR
(
port
)
|
UART_DUMMY_RSR_RX
;
if
(
rsr
&
UART01x_RSR_ANY
)
{
if
(
unlikely
(
rsr
&
UART01x_RSR_ANY
)
)
{
if
(
rsr
&
UART01x_RSR_BE
)
{
rsr
&=
~
(
UART01x_RSR_FE
|
UART01x_RSR_PE
);
port
->
icount
.
brk
++
;
...
...
drivers/serial/amba-pl011.c
浏览文件 @
97af1128
...
...
@@ -137,7 +137,7 @@ pl011_rx_chars(struct uart_amba_port *uap)
* out of the main execution path
*/
rsr
=
readw
(
uap
->
port
.
membase
+
UART01x_RSR
)
|
UART_DUMMY_RSR_RX
;
if
(
rsr
&
UART01x_RSR_ANY
)
{
if
(
unlikely
(
rsr
&
UART01x_RSR_ANY
)
)
{
if
(
rsr
&
UART01x_RSR_BE
)
{
rsr
&=
~
(
UART01x_RSR_FE
|
UART01x_RSR_PE
);
uap
->
port
.
icount
.
brk
++
;
...
...
drivers/serial/clps711x.c
浏览文件 @
97af1128
...
...
@@ -116,54 +116,43 @@ static irqreturn_t clps711xuart_int_rx(int irq, void *dev_id, struct pt_regs *re
* Note that the error handling code is
* out of the main execution path
*/
if
(
ch
&
UART_ANY_ERR
)
goto
handle_error
;
if
(
unlikely
(
ch
&
UART_ANY_ERR
))
{
if
(
ch
&
UARTDR_PARERR
)
port
->
icount
.
parity
++
;
else
if
(
ch
&
UARTDR_FRMERR
)
port
->
icount
.
frame
++
;
if
(
ch
&
UARTDR_OVERR
)
port
->
icount
.
overrun
++
;
if
(
uart_handle_sysrq_char
(
port
,
ch
,
regs
))
goto
ignore_char
;
ch
&=
port
->
read_status_mask
;
error_return:
tty_insert_flip_char
(
tty
,
ch
,
flg
);
ignore_char:
status
=
clps_readl
(
SYSFLG
(
port
));
}
out:
tty_flip_buffer_push
(
tty
);
return
IRQ_HANDLED
;
if
(
ch
&
UARTDR_PARERR
)
flg
=
TTY_PARITY
;
else
if
(
ch
&
UARTDR_FRMERR
)
flg
=
TTY_FRAME
;
handle_error:
if
(
ch
&
UARTDR_PARERR
)
port
->
icount
.
parity
++
;
else
if
(
ch
&
UARTDR_FRMERR
)
port
->
icount
.
frame
++
;
if
(
ch
&
UARTDR_OVERR
)
port
->
icount
.
overrun
++
;
if
(
ch
&
port
->
ignore_status_mask
)
{
if
(
++
ignored
>
100
)
goto
out
;
goto
ignore_char
;
}
ch
&=
port
->
read_status_mask
;
#ifdef SUPPORT_SYSRQ
port
->
sysrq
=
0
;
#endif
}
if
(
ch
&
UARTDR_PARERR
)
flg
=
TTY_PARITY
;
else
if
(
ch
&
UARTDR_FRMERR
)
flg
=
TTY_FRAME
;
if
(
uart_handle_sysrq_char
(
port
,
ch
,
regs
))
goto
ignore_char
;
if
(
ch
&
UARTDR_OVERR
)
{
/*
* CHECK: does overrun affect the current character?
* ASSUMPTION: it does not.
*/
tty_insert_flip_char
(
tty
,
ch
,
flg
);
ch
=
0
;
flg
=
TTY_OVERRUN
;
if
((
ch
&
port
->
ignore_status_mask
&
~
RXSTAT_OVERRUN
)
==
0
)
tty_insert_flip_char
(
tty
,
ch
,
flg
);
if
((
ch
&
~
port
->
ignore_status_mask
&
RXSTAT_OVERRUN
)
==
0
)
tty_insert_flip_char
(
tty
,
0
,
TTY_OVERRUN
);
ignore_char:
status
=
clps_readl
(
SYSFLG
(
port
));
}
#ifdef SUPPORT_SYSRQ
port
->
sysrq
=
0
;
#endif
goto
error_return
;
tty_flip_buffer_push
(
tty
);
return
IRQ_HANDLED
;
}
static
irqreturn_t
clps711xuart_int_tx
(
int
irq
,
void
*
dev_id
,
struct
pt_regs
*
regs
)
...
...
drivers/serial/s3c2410.c
浏览文件 @
97af1128
...
...
@@ -364,7 +364,7 @@ s3c24xx_serial_rx_chars(int irq, void *dev_id, struct pt_regs *regs)
flag
=
TTY_NORMAL
;
port
->
icount
.
rx
++
;
if
(
u
erstat
&
S3C2410_UERSTAT_ANY
)
{
if
(
u
nlikely
(
uerstat
&
S3C2410_UERSTAT_ANY
)
)
{
dbg
(
"rxerr: port ch=0x%02x, rxs=0x%08x
\n
"
,
ch
,
uerstat
);
...
...
drivers/serial/sa1100.c
浏览文件 @
97af1128
...
...
@@ -214,56 +214,39 @@ sa1100_rx_chars(struct sa1100_port *sport, struct pt_regs *regs)
* note that the error handling code is
* out of the main execution path
*/
if
(
status
&
UTSR1_TO_SM
(
UTSR1_PRE
|
UTSR1_FRE
|
UTSR1_ROR
))
goto
handle_error
;
if
(
status
&
UTSR1_TO_SM
(
UTSR1_PRE
|
UTSR1_FRE
|
UTSR1_ROR
))
{
if
(
status
&
UTSR1_TO_SM
(
UTSR1_PRE
))
sport
->
port
.
icount
.
parity
++
;
else
if
(
status
&
UTSR1_TO_SM
(
UTSR1_FRE
))
sport
->
port
.
icount
.
frame
++
;
if
(
status
&
UTSR1_TO_SM
(
UTSR1_ROR
))
sport
->
port
.
icount
.
overrun
++
;
status
&=
sport
->
port
.
read_status_mask
;
if
(
status
&
UTSR1_TO_SM
(
UTSR1_PRE
))
flg
=
TTY_PARITY
;
else
if
(
status
&
UTSR1_TO_SM
(
UTSR1_FRE
))
flg
=
TTY_FRAME
;
#ifdef SUPPORT_SYSRQ
sport
->
port
.
sysrq
=
0
;
#endif
}
if
(
uart_handle_sysrq_char
(
&
sport
->
port
,
ch
,
regs
))
goto
ignore_char
;
error_return:
tty_insert_flip_char
(
tty
,
ch
,
flg
);
if
((
status
&
port
->
ignore_status_mask
&
~
UTSR1_TO_SM
(
UTSR1_ROR
))
==
0
)
tty_insert_flip_char
(
tty
,
ch
,
flg
);
if
(
status
&
~
port
->
ignore_status_mask
&
UTSR1_TO_SM
(
UTSR1_ROR
))
tty_insert_flip_char
(
tty
,
0
,
TTY_OVERRUN
);
ignore_char:
status
=
UTSR1_TO_SM
(
UART_GET_UTSR1
(
sport
))
|
UTSR0_TO_SM
(
UART_GET_UTSR0
(
sport
));
}
out:
tty_flip_buffer_push
(
tty
);
return
;
handle_error:
if
(
status
&
UTSR1_TO_SM
(
UTSR1_PRE
))
sport
->
port
.
icount
.
parity
++
;
else
if
(
status
&
UTSR1_TO_SM
(
UTSR1_FRE
))
sport
->
port
.
icount
.
frame
++
;
if
(
status
&
UTSR1_TO_SM
(
UTSR1_ROR
))
sport
->
port
.
icount
.
overrun
++
;
if
(
status
&
sport
->
port
.
ignore_status_mask
)
{
if
(
++
ignored
>
100
)
goto
out
;
goto
ignore_char
;
}
status
&=
sport
->
port
.
read_status_mask
;
if
(
status
&
UTSR1_TO_SM
(
UTSR1_PRE
))
flg
=
TTY_PARITY
;
else
if
(
status
&
UTSR1_TO_SM
(
UTSR1_FRE
))
flg
=
TTY_FRAME
;
if
(
status
&
UTSR1_TO_SM
(
UTSR1_ROR
))
{
/*
* overrun does *not* affect the character
* we read from the FIFO
*/
tty_insert_flip_char
(
tty
,
ch
,
flg
);
ch
=
0
;
flg
=
TTY_OVERRUN
;
}
#ifdef SUPPORT_SYSRQ
sport
->
port
.
sysrq
=
0
;
#endif
goto
error_return
;
}
static
void
sa1100_tx_chars
(
struct
sa1100_port
*
sport
)
...
...
drivers/serial/serial_lh7a40x.c
浏览文件 @
97af1128
...
...
@@ -162,7 +162,7 @@ lh7a40xuart_rx_chars (struct uart_port* port)
flag
=
TTY_NORMAL
;
++
port
->
icount
.
rx
;
if
(
data
&
RxError
)
{
/* Quick check, short-circuit */
if
(
unlikely
(
data
&
RxError
)
)
{
/* Quick check, short-circuit */
if
(
data
&
RxBreak
)
{
data
&=
~
(
RxFramingError
|
RxParityError
);
++
port
->
icount
.
brk
;
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录