Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
xiphi1978
linux
提交
d195ea4b
L
linux
项目概览
xiphi1978
/
linux
通知
2
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
L
linux
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
d195ea4b
编写于
1月 31, 2006
作者:
L
Linus Torvalds
浏览文件
操作
浏览文件
下载
差异文件
Merge master.kernel.org:/home/rmk/linux-2.6-serial
上级
bb4bc81a
df7559d3
变更
14
隐藏空白更改
内联
并排
Showing
14 changed file
with
123 addition
and
126 deletion
+123
-126
drivers/misc/ibmasm/uart.c
drivers/misc/ibmasm/uart.c
+1
-1
drivers/serial/21285.c
drivers/serial/21285.c
+1
-1
drivers/serial/8250.c
drivers/serial/8250.c
+6
-13
drivers/serial/Kconfig
drivers/serial/Kconfig
+1
-1
drivers/serial/amba-pl010.c
drivers/serial/amba-pl010.c
+2
-2
drivers/serial/clps711x.c
drivers/serial/clps711x.c
+2
-2
drivers/serial/imx.c
drivers/serial/imx.c
+2
-2
drivers/serial/sa1100.c
drivers/serial/sa1100.c
+3
-3
drivers/serial/serial_core.c
drivers/serial/serial_core.c
+9
-7
drivers/serial/serial_lh7a40x.c
drivers/serial/serial_lh7a40x.c
+3
-3
drivers/serial/sh-sci.c
drivers/serial/sh-sci.c
+48
-48
drivers/serial/sunsu.c
drivers/serial/sunsu.c
+7
-7
include/linux/serial_8250.h
include/linux/serial_8250.h
+1
-1
include/linux/serial_core.h
include/linux/serial_core.h
+37
-35
未找到文件。
drivers/misc/ibmasm/uart.c
浏览文件 @
d195ea4b
...
...
@@ -50,7 +50,7 @@ void ibmasm_register_uart(struct service_processor *sp)
memset
(
&
uport
,
0
,
sizeof
(
struct
uart_port
));
uport
.
irq
=
sp
->
irq
;
uport
.
uartclk
=
3686400
;
uport
.
flags
=
UPF_
AUTOPROBE
|
UPF_
SHARE_IRQ
;
uport
.
flags
=
UPF_SHARE_IRQ
;
uport
.
iotype
=
UPIO_MEM
;
uport
.
membase
=
iomem_base
;
...
...
drivers/serial/21285.c
浏览文件 @
d195ea4b
...
...
@@ -366,7 +366,7 @@ static struct uart_port serial21285_port = {
.
irq
=
NO_IRQ
,
.
fifosize
=
16
,
.
ops
=
&
serial21285_ops
,
.
flags
=
ASYNC
_BOOT_AUTOCONF
,
.
flags
=
UPF
_BOOT_AUTOCONF
,
};
static
void
serial21285_setup_ports
(
void
)
...
...
drivers/serial/8250.c
浏览文件 @
d195ea4b
...
...
@@ -31,7 +31,6 @@
#include <linux/init.h>
#include <linux/console.h>
#include <linux/sysrq.h>
#include <linux/mca.h>
#include <linux/delay.h>
#include <linux/platform_device.h>
#include <linux/tty.h>
...
...
@@ -2026,12 +2025,6 @@ static void serial8250_config_port(struct uart_port *port, int flags)
int
probeflags
=
PROBE_ANY
;
int
ret
;
/*
* Don't probe for MCA ports on non-MCA machines.
*/
if
(
up
->
port
.
flags
&
UPF_BOOT_ONLYMCA
&&
!
MCA_bus
)
return
;
/*
* Find the region that we can probe for. This in turn
* tells us whether we can probe for the type of port.
...
...
@@ -2164,7 +2157,7 @@ serial8250_register_ports(struct uart_driver *drv, struct device *dev)
/*
* Wait for transmitter & holding register to empty
*/
static
inline
void
wait_for_xmitr
(
struct
uart_8250_port
*
up
)
static
inline
void
wait_for_xmitr
(
struct
uart_8250_port
*
up
,
int
bits
)
{
unsigned
int
status
,
tmout
=
10000
;
...
...
@@ -2178,7 +2171,7 @@ static inline void wait_for_xmitr(struct uart_8250_port *up)
if
(
--
tmout
==
0
)
break
;
udelay
(
1
);
}
while
((
status
&
BOTH_EMPTY
)
!=
BOTH_EMPTY
);
}
while
((
status
&
bits
)
!=
bits
);
/* Wait up to 1s for flow control if necessary */
if
(
up
->
port
.
flags
&
UPF_CONS_FLOW
)
{
...
...
@@ -2218,7 +2211,7 @@ serial8250_console_write(struct console *co, const char *s, unsigned int count)
* Now, do each character
*/
for
(
i
=
0
;
i
<
count
;
i
++
,
s
++
)
{
wait_for_xmitr
(
up
);
wait_for_xmitr
(
up
,
UART_LSR_THRE
);
/*
* Send the character out.
...
...
@@ -2226,7 +2219,7 @@ serial8250_console_write(struct console *co, const char *s, unsigned int count)
*/
serial_out
(
up
,
UART_TX
,
*
s
);
if
(
*
s
==
10
)
{
wait_for_xmitr
(
up
);
wait_for_xmitr
(
up
,
UART_LSR_THRE
);
serial_out
(
up
,
UART_TX
,
13
);
}
}
...
...
@@ -2235,8 +2228,8 @@ serial8250_console_write(struct console *co, const char *s, unsigned int count)
* Finally, wait for transmitter to become empty
* and restore the IER
*/
wait_for_xmitr
(
up
);
serial_out
(
up
,
UART_IER
,
ier
);
wait_for_xmitr
(
up
,
BOTH_EMPTY
);
serial_out
(
up
,
UART_IER
,
ier
|
UART_IER_THRI
);
}
static
int
serial8250_console_setup
(
struct
console
*
co
,
char
*
options
)
...
...
drivers/serial/Kconfig
浏览文件 @
d195ea4b
...
...
@@ -23,7 +23,7 @@ config SERIAL_8250
work.)
To compile this driver as a module, choose M here: the
module will be called
serial
.
module will be called
8250
.
[WARNING: Do not compile this driver as a module if you are using
non-standard serial ports, since the configuration information will
be lost when the driver is unloaded. This limitation may be lifted
...
...
drivers/serial/amba-pl010.c
浏览文件 @
d195ea4b
...
...
@@ -566,7 +566,7 @@ static struct uart_amba_port amba_ports[UART_NR] = {
.
uartclk
=
14745600
,
.
fifosize
=
16
,
.
ops
=
&
amba_pl010_pops
,
.
flags
=
ASYNC
_BOOT_AUTOCONF
,
.
flags
=
UPF
_BOOT_AUTOCONF
,
.
line
=
0
,
},
.
dtr_mask
=
1
<<
5
,
...
...
@@ -581,7 +581,7 @@ static struct uart_amba_port amba_ports[UART_NR] = {
.
uartclk
=
14745600
,
.
fifosize
=
16
,
.
ops
=
&
amba_pl010_pops
,
.
flags
=
ASYNC
_BOOT_AUTOCONF
,
.
flags
=
UPF
_BOOT_AUTOCONF
,
.
line
=
1
,
},
.
dtr_mask
=
1
<<
7
,
...
...
drivers/serial/clps711x.c
浏览文件 @
d195ea4b
...
...
@@ -410,7 +410,7 @@ static struct uart_port clps711x_ports[UART_NR] = {
.
fifosize
=
16
,
.
ops
=
&
clps711x_pops
,
.
line
=
0
,
.
flags
=
ASYNC
_BOOT_AUTOCONF
,
.
flags
=
UPF
_BOOT_AUTOCONF
,
},
{
.
iobase
=
SYSCON2
,
...
...
@@ -419,7 +419,7 @@ static struct uart_port clps711x_ports[UART_NR] = {
.
fifosize
=
16
,
.
ops
=
&
clps711x_pops
,
.
line
=
1
,
.
flags
=
ASYNC
_BOOT_AUTOCONF
,
.
flags
=
UPF
_BOOT_AUTOCONF
,
}
};
...
...
drivers/serial/imx.c
浏览文件 @
d195ea4b
...
...
@@ -674,7 +674,7 @@ static struct imx_port imx_ports[] = {
.
irq
=
UART1_MINT_RX
,
.
uartclk
=
16000000
,
.
fifosize
=
8
,
.
flags
=
ASYNC
_BOOT_AUTOCONF
,
.
flags
=
UPF
_BOOT_AUTOCONF
,
.
ops
=
&
imx_pops
,
.
line
=
0
,
},
...
...
@@ -690,7 +690,7 @@ static struct imx_port imx_ports[] = {
.
irq
=
UART2_MINT_RX
,
.
uartclk
=
16000000
,
.
fifosize
=
8
,
.
flags
=
ASYNC
_BOOT_AUTOCONF
,
.
flags
=
UPF
_BOOT_AUTOCONF
,
.
ops
=
&
imx_pops
,
.
line
=
1
,
},
...
...
drivers/serial/sa1100.c
浏览文件 @
d195ea4b
...
...
@@ -665,21 +665,21 @@ void __init sa1100_register_uart(int idx, int port)
sa1100_ports
[
idx
].
port
.
membase
=
(
void
__iomem
*
)
&
Ser1UTCR0
;
sa1100_ports
[
idx
].
port
.
mapbase
=
_Ser1UTCR0
;
sa1100_ports
[
idx
].
port
.
irq
=
IRQ_Ser1UART
;
sa1100_ports
[
idx
].
port
.
flags
=
ASYNC
_BOOT_AUTOCONF
;
sa1100_ports
[
idx
].
port
.
flags
=
UPF
_BOOT_AUTOCONF
;
break
;
case
2
:
sa1100_ports
[
idx
].
port
.
membase
=
(
void
__iomem
*
)
&
Ser2UTCR0
;
sa1100_ports
[
idx
].
port
.
mapbase
=
_Ser2UTCR0
;
sa1100_ports
[
idx
].
port
.
irq
=
IRQ_Ser2ICP
;
sa1100_ports
[
idx
].
port
.
flags
=
ASYNC
_BOOT_AUTOCONF
;
sa1100_ports
[
idx
].
port
.
flags
=
UPF
_BOOT_AUTOCONF
;
break
;
case
3
:
sa1100_ports
[
idx
].
port
.
membase
=
(
void
__iomem
*
)
&
Ser3UTCR0
;
sa1100_ports
[
idx
].
port
.
mapbase
=
_Ser3UTCR0
;
sa1100_ports
[
idx
].
port
.
irq
=
IRQ_Ser3UART
;
sa1100_ports
[
idx
].
port
.
flags
=
ASYNC
_BOOT_AUTOCONF
;
sa1100_ports
[
idx
].
port
.
flags
=
UPF
_BOOT_AUTOCONF
;
break
;
default:
...
...
drivers/serial/serial_core.c
浏览文件 @
d195ea4b
...
...
@@ -332,7 +332,7 @@ uart_get_baud_rate(struct uart_port *port, struct termios *termios,
struct
termios
*
old
,
unsigned
int
min
,
unsigned
int
max
)
{
unsigned
int
try
,
baud
,
altbaud
=
38400
;
u
nsigned
in
t
flags
=
port
->
flags
&
UPF_SPD_MASK
;
u
pf_
t
flags
=
port
->
flags
&
UPF_SPD_MASK
;
if
(
flags
==
UPF_SPD_HI
)
altbaud
=
57600
;
...
...
@@ -615,8 +615,9 @@ static int uart_set_info(struct uart_state *state,
struct
serial_struct
new_serial
;
struct
uart_port
*
port
=
state
->
port
;
unsigned
long
new_port
;
unsigned
int
change_irq
,
change_port
,
old_flags
,
closing_wait
;
unsigned
int
change_irq
,
change_port
,
closing_wait
;
unsigned
int
old_custom_divisor
,
close_delay
;
upf_t
old_flags
,
new_flags
;
int
retval
=
0
;
if
(
copy_from_user
(
&
new_serial
,
newinfo
,
sizeof
(
new_serial
)))
...
...
@@ -655,6 +656,7 @@ static int uart_set_info(struct uart_state *state,
new_serial
.
type
!=
port
->
type
;
old_flags
=
port
->
flags
;
new_flags
=
new_serial
.
flags
;
old_custom_divisor
=
port
->
custom_divisor
;
if
(
!
capable
(
CAP_SYS_ADMIN
))
{
...
...
@@ -664,10 +666,10 @@ static int uart_set_info(struct uart_state *state,
(
close_delay
!=
state
->
close_delay
)
||
(
closing_wait
!=
state
->
closing_wait
)
||
(
new_serial
.
xmit_fifo_size
!=
port
->
fifosize
)
||
(((
new_
serial
.
flags
^
old_flags
)
&
~
UPF_USR_MASK
)
!=
0
))
(((
new_flags
^
old_flags
)
&
~
UPF_USR_MASK
)
!=
0
))
goto
exit
;
port
->
flags
=
((
port
->
flags
&
~
UPF_USR_MASK
)
|
(
new_
serial
.
flags
&
UPF_USR_MASK
));
(
new_flags
&
UPF_USR_MASK
));
port
->
custom_divisor
=
new_serial
.
custom_divisor
;
goto
check_and_exit
;
}
...
...
@@ -764,7 +766,7 @@ static int uart_set_info(struct uart_state *state,
port
->
irq
=
new_serial
.
irq
;
port
->
uartclk
=
new_serial
.
baud_base
*
16
;
port
->
flags
=
(
port
->
flags
&
~
UPF_CHANGE_MASK
)
|
(
new_
serial
.
flags
&
UPF_CHANGE_MASK
);
(
new_flags
&
UPF_CHANGE_MASK
);
port
->
custom_divisor
=
new_serial
.
custom_divisor
;
state
->
close_delay
=
close_delay
;
state
->
closing_wait
=
closing_wait
;
...
...
@@ -1870,7 +1872,7 @@ int uart_suspend_port(struct uart_driver *drv, struct uart_port *port)
mutex_lock
(
&
state
->
mutex
);
if
(
state
->
info
&&
state
->
info
->
flags
&
UIF_INITIALIZED
)
{
struct
uart_ops
*
ops
=
port
->
ops
;
const
struct
uart_ops
*
ops
=
port
->
ops
;
spin_lock_irq
(
&
port
->
lock
);
ops
->
stop_tx
(
port
);
...
...
@@ -1932,7 +1934,7 @@ int uart_resume_port(struct uart_driver *drv, struct uart_port *port)
}
if
(
state
->
info
&&
state
->
info
->
flags
&
UIF_INITIALIZED
)
{
struct
uart_ops
*
ops
=
port
->
ops
;
const
struct
uart_ops
*
ops
=
port
->
ops
;
int
ret
;
ops
->
set_mctrl
(
port
,
0
);
...
...
drivers/serial/serial_lh7a40x.c
浏览文件 @
d195ea4b
...
...
@@ -506,7 +506,7 @@ static struct uart_port_lh7a40x lh7a40x_ports[DEV_NR] = {
.
uartclk
=
14745600
/
2
,
.
fifosize
=
16
,
.
ops
=
&
lh7a40x_uart_ops
,
.
flags
=
ASYNC
_BOOT_AUTOCONF
,
.
flags
=
UPF
_BOOT_AUTOCONF
,
.
line
=
0
,
},
},
...
...
@@ -519,7 +519,7 @@ static struct uart_port_lh7a40x lh7a40x_ports[DEV_NR] = {
.
uartclk
=
14745600
/
2
,
.
fifosize
=
16
,
.
ops
=
&
lh7a40x_uart_ops
,
.
flags
=
ASYNC
_BOOT_AUTOCONF
,
.
flags
=
UPF
_BOOT_AUTOCONF
,
.
line
=
1
,
},
},
...
...
@@ -532,7 +532,7 @@ static struct uart_port_lh7a40x lh7a40x_ports[DEV_NR] = {
.
uartclk
=
14745600
/
2
,
.
fifosize
=
16
,
.
ops
=
&
lh7a40x_uart_ops
,
.
flags
=
ASYNC
_BOOT_AUTOCONF
,
.
flags
=
UPF
_BOOT_AUTOCONF
,
.
line
=
2
,
},
},
...
...
drivers/serial/sh-sci.c
浏览文件 @
d195ea4b
...
...
@@ -1113,10 +1113,10 @@ static struct sci_port sci_ports[SCI_NPORTS] = {
.
port
=
{
.
membase
=
(
void
*
)
0xfffffe80
,
.
mapbase
=
0xfffffe80
,
.
iotype
=
SERIAL_
IO_MEM
,
.
iotype
=
UP
IO_MEM
,
.
irq
=
25
,
.
ops
=
&
sci_uart_ops
,
.
flags
=
ASYNC
_BOOT_AUTOCONF
,
.
flags
=
UPF
_BOOT_AUTOCONF
,
.
line
=
0
,
},
.
type
=
PORT_SCI
,
...
...
@@ -1128,10 +1128,10 @@ static struct sci_port sci_ports[SCI_NPORTS] = {
.
port
=
{
.
membase
=
(
void
*
)
SCIF0
,
.
mapbase
=
SCIF0
,
.
iotype
=
SERIAL_
IO_MEM
,
.
iotype
=
UP
IO_MEM
,
.
irq
=
55
,
.
ops
=
&
sci_uart_ops
,
.
flags
=
ASYNC
_BOOT_AUTOCONF
,
.
flags
=
UPF
_BOOT_AUTOCONF
,
.
line
=
0
,
},
.
type
=
PORT_SCIF
,
...
...
@@ -1142,10 +1142,10 @@ static struct sci_port sci_ports[SCI_NPORTS] = {
.
port
=
{
.
membase
=
(
void
*
)
SCIF2
,
.
mapbase
=
SCIF2
,
.
iotype
=
SERIAL_
IO_MEM
,
.
iotype
=
UP
IO_MEM
,
.
irq
=
59
,
.
ops
=
&
sci_uart_ops
,
.
flags
=
ASYNC
_BOOT_AUTOCONF
,
.
flags
=
UPF
_BOOT_AUTOCONF
,
.
line
=
1
,
},
.
type
=
PORT_SCIF
,
...
...
@@ -1157,10 +1157,10 @@ static struct sci_port sci_ports[SCI_NPORTS] = {
.
port
=
{
.
membase
=
(
void
*
)
0xfffffe80
,
.
mapbase
=
0xfffffe80
,
.
iotype
=
SERIAL_
IO_MEM
,
.
iotype
=
UP
IO_MEM
,
.
irq
=
25
,
.
ops
=
&
sci_uart_ops
,
.
flags
=
ASYNC
_BOOT_AUTOCONF
,
.
flags
=
UPF
_BOOT_AUTOCONF
,
.
line
=
0
,
},
.
type
=
PORT_SCI
,
...
...
@@ -1171,10 +1171,10 @@ static struct sci_port sci_ports[SCI_NPORTS] = {
.
port
=
{
.
membase
=
(
void
*
)
0xa4000150
,
.
mapbase
=
0xa4000150
,
.
iotype
=
SERIAL_
IO_MEM
,
.
iotype
=
UP
IO_MEM
,
.
irq
=
59
,
.
ops
=
&
sci_uart_ops
,
.
flags
=
ASYNC
_BOOT_AUTOCONF
,
.
flags
=
UPF
_BOOT_AUTOCONF
,
.
line
=
1
,
},
.
type
=
PORT_SCIF
,
...
...
@@ -1185,10 +1185,10 @@ static struct sci_port sci_ports[SCI_NPORTS] = {
.
port
=
{
.
membase
=
(
void
*
)
0xa4000140
,
.
mapbase
=
0xa4000140
,
.
iotype
=
SERIAL_
IO_MEM
,
.
iotype
=
UP
IO_MEM
,
.
irq
=
55
,
.
ops
=
&
sci_uart_ops
,
.
flags
=
ASYNC
_BOOT_AUTOCONF
,
.
flags
=
UPF
_BOOT_AUTOCONF
,
.
line
=
2
,
},
.
type
=
PORT_IRDA
,
...
...
@@ -1200,10 +1200,10 @@ static struct sci_port sci_ports[SCI_NPORTS] = {
.
port
=
{
.
membase
=
(
void
*
)
0xA4430000
,
.
mapbase
=
0xA4430000
,
.
iotype
=
SERIAL_
IO_MEM
,
.
iotype
=
UP
IO_MEM
,
.
irq
=
25
,
.
ops
=
&
sci_uart_ops
,
.
flags
=
ASYNC
_BOOT_AUTOCONF
,
.
flags
=
UPF
_BOOT_AUTOCONF
,
.
line
=
0
,
},
.
type
=
PORT_SCIF
,
...
...
@@ -1215,10 +1215,10 @@ static struct sci_port sci_ports[SCI_NPORTS] = {
.
port
=
{
.
membase
=
(
void
*
)
0xffe00000
,
.
mapbase
=
0xffe00000
,
.
iotype
=
SERIAL_
IO_MEM
,
.
iotype
=
UP
IO_MEM
,
.
irq
=
25
,
.
ops
=
&
sci_uart_ops
,
.
flags
=
ASYNC
_BOOT_AUTOCONF
,
.
flags
=
UPF
_BOOT_AUTOCONF
,
.
line
=
0
,
},
.
type
=
PORT_SCIF
,
...
...
@@ -1230,10 +1230,10 @@ static struct sci_port sci_ports[SCI_NPORTS] = {
.
port
=
{
.
membase
=
(
void
*
)
0xffe80000
,
.
mapbase
=
0xffe80000
,
.
iotype
=
SERIAL_
IO_MEM
,
.
iotype
=
UP
IO_MEM
,
.
irq
=
43
,
.
ops
=
&
sci_uart_ops
,
.
flags
=
ASYNC
_BOOT_AUTOCONF
,
.
flags
=
UPF
_BOOT_AUTOCONF
,
.
line
=
0
,
},
.
type
=
PORT_SCIF
,
...
...
@@ -1245,10 +1245,10 @@ static struct sci_port sci_ports[SCI_NPORTS] = {
.
port
=
{
.
membase
=
(
void
*
)
0xffe00000
,
.
mapbase
=
0xffe00000
,
.
iotype
=
SERIAL_
IO_MEM
,
.
iotype
=
UP
IO_MEM
,
.
irq
=
25
,
.
ops
=
&
sci_uart_ops
,
.
flags
=
ASYNC
_BOOT_AUTOCONF
,
.
flags
=
UPF
_BOOT_AUTOCONF
,
.
line
=
0
,
},
.
type
=
PORT_SCI
,
...
...
@@ -1259,10 +1259,10 @@ static struct sci_port sci_ports[SCI_NPORTS] = {
.
port
=
{
.
membase
=
(
void
*
)
0xffe80000
,
.
mapbase
=
0xffe80000
,
.
iotype
=
SERIAL_
IO_MEM
,
.
iotype
=
UP
IO_MEM
,
.
irq
=
43
,
.
ops
=
&
sci_uart_ops
,
.
flags
=
ASYNC
_BOOT_AUTOCONF
,
.
flags
=
UPF
_BOOT_AUTOCONF
,
.
line
=
1
,
},
.
type
=
PORT_SCIF
,
...
...
@@ -1274,10 +1274,10 @@ static struct sci_port sci_ports[SCI_NPORTS] = {
.
port
=
{
.
membase
=
(
void
*
)
0xfe600000
,
.
mapbase
=
0xfe600000
,
.
iotype
=
SERIAL_
IO_MEM
,
.
iotype
=
UP
IO_MEM
,
.
irq
=
55
,
.
ops
=
&
sci_uart_ops
,
.
flags
=
ASYNC
_BOOT_AUTOCONF
,
.
flags
=
UPF
_BOOT_AUTOCONF
,
.
line
=
0
,
},
.
type
=
PORT_SCIF
,
...
...
@@ -1288,10 +1288,10 @@ static struct sci_port sci_ports[SCI_NPORTS] = {
.
port
=
{
.
membase
=
(
void
*
)
0xfe610000
,
.
mapbase
=
0xfe610000
,
.
iotype
=
SERIAL_
IO_MEM
,
.
iotype
=
UP
IO_MEM
,
.
irq
=
75
,
.
ops
=
&
sci_uart_ops
,
.
flags
=
ASYNC
_BOOT_AUTOCONF
,
.
flags
=
UPF
_BOOT_AUTOCONF
,
.
line
=
1
,
},
.
type
=
PORT_SCIF
,
...
...
@@ -1302,10 +1302,10 @@ static struct sci_port sci_ports[SCI_NPORTS] = {
.
port
=
{
.
membase
=
(
void
*
)
0xfe620000
,
.
mapbase
=
0xfe620000
,
.
iotype
=
SERIAL_
IO_MEM
,
.
iotype
=
UP
IO_MEM
,
.
irq
=
79
,
.
ops
=
&
sci_uart_ops
,
.
flags
=
ASYNC
_BOOT_AUTOCONF
,
.
flags
=
UPF
_BOOT_AUTOCONF
,
.
line
=
2
,
},
.
type
=
PORT_SCIF
,
...
...
@@ -1317,10 +1317,10 @@ static struct sci_port sci_ports[SCI_NPORTS] = {
.
port
=
{
.
membase
=
(
void
*
)
0xffe80000
,
.
mapbase
=
0xffe80000
,
.
iotype
=
SERIAL_
IO_MEM
,
.
iotype
=
UP
IO_MEM
,
.
irq
=
43
,
.
ops
=
&
sci_uart_ops
,
.
flags
=
ASYNC
_BOOT_AUTOCONF
,
.
flags
=
UPF
_BOOT_AUTOCONF
,
.
line
=
0
,
},
.
type
=
PORT_SCIF
,
...
...
@@ -1332,10 +1332,10 @@ static struct sci_port sci_ports[SCI_NPORTS] = {
.
port
=
{
.
membase
=
(
void
*
)
0xffe00000
,
.
mapbase
=
0xffe00000
,
.
iotype
=
SERIAL_
IO_MEM
,
.
iotype
=
UP
IO_MEM
,
.
irq
=
26
,
.
ops
=
&
sci_uart_ops
,
.
flags
=
ASYNC
_BOOT_AUTOCONF
,
.
flags
=
UPF
_BOOT_AUTOCONF
,
.
line
=
0
,
},
.
type
=
PORT_SCIF
,
...
...
@@ -1346,10 +1346,10 @@ static struct sci_port sci_ports[SCI_NPORTS] = {
.
port
=
{
.
membase
=
(
void
*
)
0xffe80000
,
.
mapbase
=
0xffe80000
,
.
iotype
=
SERIAL_
IO_MEM
,
.
iotype
=
UP
IO_MEM
,
.
irq
=
43
,
.
ops
=
&
sci_uart_ops
,
.
flags
=
ASYNC
_BOOT_AUTOCONF
,
.
flags
=
UPF
_BOOT_AUTOCONF
,
.
line
=
1
,
},
.
type
=
PORT_SCIF
,
...
...
@@ -1359,10 +1359,10 @@ static struct sci_port sci_ports[SCI_NPORTS] = {
#elif defined(CONFIG_CPU_SUBTYPE_SH5_101) || defined(CONFIG_CPU_SUBTYPE_SH5_103)
{
.
port
=
{
.
iotype
=
SERIAL_
IO_MEM
,
.
iotype
=
UP
IO_MEM
,
.
irq
=
42
,
.
ops
=
&
sci_uart_ops
,
.
flags
=
ASYNC
_BOOT_AUTOCONF
,
.
flags
=
UPF
_BOOT_AUTOCONF
,
.
line
=
0
,
},
.
type
=
PORT_SCIF
,
...
...
@@ -1374,10 +1374,10 @@ static struct sci_port sci_ports[SCI_NPORTS] = {
.
port
=
{
.
membase
=
(
void
*
)
0x00ffffb0
,
.
mapbase
=
0x00ffffb0
,
.
iotype
=
SERIAL_
IO_MEM
,
.
iotype
=
UP
IO_MEM
,
.
irq
=
54
,
.
ops
=
&
sci_uart_ops
,
.
flags
=
ASYNC
_BOOT_AUTOCONF
,
.
flags
=
UPF
_BOOT_AUTOCONF
,
.
line
=
0
,
},
.
type
=
PORT_SCI
,
...
...
@@ -1388,10 +1388,10 @@ static struct sci_port sci_ports[SCI_NPORTS] = {
.
port
=
{
.
membase
=
(
void
*
)
0x00ffffb8
,
.
mapbase
=
0x00ffffb8
,
.
iotype
=
SERIAL_
IO_MEM
,
.
iotype
=
UP
IO_MEM
,
.
irq
=
58
,
.
ops
=
&
sci_uart_ops
,
.
flags
=
ASYNC
_BOOT_AUTOCONF
,
.
flags
=
UPF
_BOOT_AUTOCONF
,
.
line
=
1
,
},
.
type
=
PORT_SCI
,
...
...
@@ -1402,10 +1402,10 @@ static struct sci_port sci_ports[SCI_NPORTS] = {
.
port
=
{
.
membase
=
(
void
*
)
0x00ffffc0
,
.
mapbase
=
0x00ffffc0
,
.
iotype
=
SERIAL_
IO_MEM
,
.
iotype
=
UP
IO_MEM
,
.
irq
=
62
,
.
ops
=
&
sci_uart_ops
,
.
flags
=
ASYNC
_BOOT_AUTOCONF
,
.
flags
=
UPF
_BOOT_AUTOCONF
,
.
line
=
2
,
},
.
type
=
PORT_SCI
,
...
...
@@ -1417,10 +1417,10 @@ static struct sci_port sci_ports[SCI_NPORTS] = {
.
port
=
{
.
membase
=
(
void
*
)
0x00ffff78
,
.
mapbase
=
0x00ffff78
,
.
iotype
=
SERIAL_
IO_MEM
,
.
iotype
=
UP
IO_MEM
,
.
irq
=
90
,
.
ops
=
&
sci_uart_ops
,
.
flags
=
ASYNC
_BOOT_AUTOCONF
,
.
flags
=
UPF
_BOOT_AUTOCONF
,
.
line
=
0
,
},
.
type
=
PORT_SCI
,
...
...
@@ -1431,10 +1431,10 @@ static struct sci_port sci_ports[SCI_NPORTS] = {
.
port
=
{
.
membase
=
(
void
*
)
0x00ffff80
,
.
mapbase
=
0x00ffff80
,
.
iotype
=
SERIAL_
IO_MEM
,
.
iotype
=
UP
IO_MEM
,
.
irq
=
94
,
.
ops
=
&
sci_uart_ops
,
.
flags
=
ASYNC
_BOOT_AUTOCONF
,
.
flags
=
UPF
_BOOT_AUTOCONF
,
.
line
=
1
,
},
.
type
=
PORT_SCI
,
...
...
@@ -1445,10 +1445,10 @@ static struct sci_port sci_ports[SCI_NPORTS] = {
.
port
=
{
.
membase
=
(
void
*
)
0x00ffff88
,
.
mapbase
=
0x00ffff88
,
.
iotype
=
SERIAL_
IO_MEM
,
.
iotype
=
UP
IO_MEM
,
.
irq
=
98
,
.
ops
=
&
sci_uart_ops
,
.
flags
=
ASYNC
_BOOT_AUTOCONF
,
.
flags
=
UPF
_BOOT_AUTOCONF
,
.
line
=
2
,
},
.
type
=
PORT_SCI
,
...
...
drivers/serial/sunsu.c
浏览文件 @
d195ea4b
...
...
@@ -669,7 +669,7 @@ static int sunsu_startup(struct uart_port *port)
* if it is, then bail out, because there's likely no UART
* here.
*/
if
(
!
(
up
->
port
.
flags
&
ASYNC
_BUGGY_UART
)
&&
if
(
!
(
up
->
port
.
flags
&
UPF
_BUGGY_UART
)
&&
(
serial_inp
(
up
,
UART_LSR
)
==
0xff
))
{
printk
(
"ttyS%d: LSR safety check engaged!
\n
"
,
up
->
port
.
line
);
return
-
ENODEV
;
...
...
@@ -707,7 +707,7 @@ static int sunsu_startup(struct uart_port *port)
up
->
ier
=
UART_IER_RLSI
|
UART_IER_RDI
;
serial_outp
(
up
,
UART_IER
,
up
->
ier
);
if
(
up
->
port
.
flags
&
ASYNC
_FOURPORT
)
{
if
(
up
->
port
.
flags
&
UPF
_FOURPORT
)
{
unsigned
int
icp
;
/*
* Enable interrupts on the AST Fourport board
...
...
@@ -740,7 +740,7 @@ static void sunsu_shutdown(struct uart_port *port)
serial_outp
(
up
,
UART_IER
,
0
);
spin_lock_irqsave
(
&
up
->
port
.
lock
,
flags
);
if
(
up
->
port
.
flags
&
ASYNC
_FOURPORT
)
{
if
(
up
->
port
.
flags
&
UPF
_FOURPORT
)
{
/* reset interrupts on the AST Fourport board */
inb
((
up
->
port
.
iobase
&
0xfe0
)
|
0x1f
);
up
->
port
.
mctrl
|=
TIOCM_OUT1
;
...
...
@@ -1132,7 +1132,7 @@ static void sunsu_autoconfig(struct uart_sunsu_port *up)
spin_lock_irqsave
(
&
up
->
port
.
lock
,
flags
);
if
(
!
(
up
->
port
.
flags
&
ASYNC
_BUGGY_UART
))
{
if
(
!
(
up
->
port
.
flags
&
UPF
_BUGGY_UART
))
{
/*
* Do a simple existence test first; if we fail this, there's
* no point trying anything else.
...
...
@@ -1170,7 +1170,7 @@ static void sunsu_autoconfig(struct uart_sunsu_port *up)
* manufacturer would be stupid enough to design a board
* that conflicts with COM 1-4 --- we hope!
*/
if
(
!
(
up
->
port
.
flags
&
ASYNC
_SKIP_TEST
))
{
if
(
!
(
up
->
port
.
flags
&
UPF
_SKIP_TEST
))
{
serial_outp
(
up
,
UART_MCR
,
UART_MCR_LOOP
|
0x0A
);
status1
=
serial_inp
(
up
,
UART_MSR
)
&
0xF0
;
serial_outp
(
up
,
UART_MCR
,
save_mcr
);
...
...
@@ -1371,7 +1371,7 @@ static __inline__ void wait_for_xmitr(struct uart_sunsu_port *up)
}
while
((
status
&
BOTH_EMPTY
)
!=
BOTH_EMPTY
);
/* Wait up to 1s for flow control if necessary */
if
(
up
->
port
.
flags
&
ASYNC
_CONS_FLOW
)
{
if
(
up
->
port
.
flags
&
UPF
_CONS_FLOW
)
{
tmout
=
1000000
;
while
(
--
tmout
&&
((
serial_in
(
up
,
UART_MSR
)
&
UART_MSR_CTS
)
==
0
))
...
...
@@ -1513,7 +1513,7 @@ static int __init sunsu_serial_init(void)
up
->
su_type
==
SU_PORT_KBD
)
continue
;
up
->
port
.
flags
|=
ASYNC
_BOOT_AUTOCONF
;
up
->
port
.
flags
|=
UPF
_BOOT_AUTOCONF
;
up
->
port
.
type
=
PORT_UNKNOWN
;
up
->
port
.
uartclk
=
(
SU_BASE_BAUD
*
16
);
...
...
include/linux/serial_8250.h
浏览文件 @
d195ea4b
...
...
@@ -26,7 +26,7 @@ struct plat_serial8250_port {
unsigned
char
regshift
;
/* register shift */
unsigned
char
iotype
;
/* UPIO_* */
unsigned
char
hub6
;
u
nsigned
int
flags
;
/* UPF_* flags */
u
pf_t
flags
;
/* UPF_* flags */
};
/*
...
...
include/linux/serial_core.h
浏览文件 @
d195ea4b
...
...
@@ -203,6 +203,8 @@ struct uart_icount {
__u32
buf_overrun
;
};
typedef
unsigned
int
__bitwise__
upf_t
;
struct
uart_port
{
spinlock_t
lock
;
/* port lock */
unsigned
int
iobase
;
/* in/out[bwl] */
...
...
@@ -230,36 +232,34 @@ struct uart_port {
unsigned
long
sysrq
;
/* sysrq timeout */
#endif
unsigned
int
flags
;
#define UPF_FOURPORT (1 << 1)
#define UPF_SAK (1 << 2)
#define UPF_SPD_MASK (0x1030)
#define UPF_SPD_HI (0x0010)
#define UPF_SPD_VHI (0x0020)
#define UPF_SPD_CUST (0x0030)
#define UPF_SPD_SHI (0x1000)
#define UPF_SPD_WARP (0x1010)
#define UPF_SKIP_TEST (1 << 6)
#define UPF_AUTO_IRQ (1 << 7)
#define UPF_HARDPPS_CD (1 << 11)
#define UPF_LOW_LATENCY (1 << 13)
#define UPF_BUGGY_UART (1 << 14)
#define UPF_AUTOPROBE (1 << 15)
#define UPF_MAGIC_MULTIPLIER (1 << 16)
#define UPF_BOOT_ONLYMCA (1 << 22)
#define UPF_CONS_FLOW (1 << 23)
#define UPF_SHARE_IRQ (1 << 24)
#define UPF_BOOT_AUTOCONF (1 << 28)
#define UPF_IOREMAP (1 << 31)
#define UPF_CHANGE_MASK (0x17fff)
#define UPF_USR_MASK (UPF_SPD_MASK|UPF_LOW_LATENCY)
upf_t
flags
;
#define UPF_FOURPORT ((__force upf_t) (1 << 1))
#define UPF_SAK ((__force upf_t) (1 << 2))
#define UPF_SPD_MASK ((__force upf_t) (0x1030))
#define UPF_SPD_HI ((__force upf_t) (0x0010))
#define UPF_SPD_VHI ((__force upf_t) (0x0020))
#define UPF_SPD_CUST ((__force upf_t) (0x0030))
#define UPF_SPD_SHI ((__force upf_t) (0x1000))
#define UPF_SPD_WARP ((__force upf_t) (0x1010))
#define UPF_SKIP_TEST ((__force upf_t) (1 << 6))
#define UPF_AUTO_IRQ ((__force upf_t) (1 << 7))
#define UPF_HARDPPS_CD ((__force upf_t) (1 << 11))
#define UPF_LOW_LATENCY ((__force upf_t) (1 << 13))
#define UPF_BUGGY_UART ((__force upf_t) (1 << 14))
#define UPF_MAGIC_MULTIPLIER ((__force upf_t) (1 << 16))
#define UPF_CONS_FLOW ((__force upf_t) (1 << 23))
#define UPF_SHARE_IRQ ((__force upf_t) (1 << 24))
#define UPF_BOOT_AUTOCONF ((__force upf_t) (1 << 28))
#define UPF_IOREMAP ((__force upf_t) (1 << 31))
#define UPF_CHANGE_MASK ((__force upf_t) (0x17fff))
#define UPF_USR_MASK ((__force upf_t) (UPF_SPD_MASK|UPF_LOW_LATENCY))
unsigned
int
mctrl
;
/* current modem ctrl settings */
unsigned
int
timeout
;
/* character-based timeout */
unsigned
int
type
;
/* port type */
struct
uart_ops
*
ops
;
const
struct
uart_ops
*
ops
;
unsigned
int
custom_divisor
;
unsigned
int
line
;
/* port index */
unsigned
long
mapbase
;
/* for ioremap */
...
...
@@ -289,6 +289,9 @@ struct uart_state {
};
#define UART_XMIT_SIZE PAGE_SIZE
typedef
unsigned
int
__bitwise__
uif_t
;
/*
* This is the state information which is only valid when the port
* is open; it may be freed by the core driver once the device has
...
...
@@ -298,17 +301,16 @@ struct uart_state {
struct
uart_info
{
struct
tty_struct
*
tty
;
struct
circ_buf
xmit
;
u
nsigned
int
flags
;
u
if_t
flags
;
/*
* These are the flags that specific to info->flags, and reflect our
* internal state. They can not be accessed via port->flags. Low
* level drivers must not change these, but may query them instead.
* Definitions for info->flags. These are _private_ to serial_core, and
* are specific to this structure. They may be queried by low level drivers.
*/
#define UIF_CHECK_CD (
1 << 25
)
#define UIF_CTS_FLOW (
1 << 26
)
#define UIF_NORMAL_ACTIVE (
1 << 29
)
#define UIF_INITIALIZED (
1 << 31
)
#define UIF_CHECK_CD (
(__force uif_t) (1 << 25)
)
#define UIF_CTS_FLOW (
(__force uif_t) (1 << 26)
)
#define UIF_NORMAL_ACTIVE (
(__force uif_t) (1 << 29)
)
#define UIF_INITIALIZED (
(__force uif_t) (1 << 31)
)
int
blocked_open
;
...
...
@@ -430,7 +432,7 @@ static inline int uart_handle_break(struct uart_port *port)
port
->
sysrq
=
0
;
}
#endif
if
(
info
->
flags
&
UPF_SAK
)
if
(
port
->
flags
&
UPF_SAK
)
do_SAK
(
info
->
tty
);
return
0
;
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录