Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
gsplhtlxg
clone-Linux
提交
01d70bb3
C
clone-Linux
项目概览
gsplhtlxg
/
clone-Linux
通知
2
Star
0
Fork
1
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
C
clone-Linux
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
01d70bb3
编写于
10月 15, 2012
作者:
R
Russell King
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
SERIAL: omap: serial_omap_configure_xonxoff() contents into set_termios
Signed-off-by:
N
Russell King
<
rmk+kernel@arm.linux.org.uk
>
上级
820344fe
变更
1
显示空白变更内容
内联
并排
Showing
1 changed file
with
53 addition
and
59 deletion
+53
-59
drivers/tty/serial/omap-serial.c
drivers/tty/serial/omap-serial.c
+53
-59
未找到文件。
drivers/tty/serial/omap-serial.c
浏览文件 @
01d70bb3
...
@@ -707,63 +707,6 @@ static void serial_omap_shutdown(struct uart_port *port)
...
@@ -707,63 +707,6 @@ static void serial_omap_shutdown(struct uart_port *port)
free_irq
(
up
->
port
.
irq
,
up
);
free_irq
(
up
->
port
.
irq
,
up
);
}
}
static
inline
void
serial_omap_configure_xonxoff
(
struct
uart_omap_port
*
up
,
struct
ktermios
*
termios
)
{
up
->
lcr
=
serial_in
(
up
,
UART_LCR
);
serial_out
(
up
,
UART_LCR
,
UART_LCR_CONF_MODE_B
);
up
->
efr
=
serial_in
(
up
,
UART_EFR
);
serial_out
(
up
,
UART_EFR
,
up
->
efr
&
~
UART_EFR_ECB
);
serial_out
(
up
,
UART_XON1
,
termios
->
c_cc
[
VSTART
]);
serial_out
(
up
,
UART_XOFF1
,
termios
->
c_cc
[
VSTOP
]);
/* clear SW control mode bits */
up
->
efr
&=
OMAP_UART_SW_CLR
;
/*
* IXON Flag:
* Enable XON/XOFF flow control on output.
* Transmit XON1, XOFF1
*/
if
(
termios
->
c_iflag
&
IXON
)
up
->
efr
|=
OMAP_UART_SW_TX
;
/*
* IXOFF Flag:
* Enable XON/XOFF flow control on input.
* Receiver compares XON1, XOFF1.
*/
if
(
termios
->
c_iflag
&
IXOFF
)
up
->
efr
|=
OMAP_UART_SW_RX
;
serial_out
(
up
,
UART_EFR
,
up
->
efr
|
UART_EFR_ECB
);
serial_out
(
up
,
UART_LCR
,
UART_LCR_CONF_MODE_A
);
up
->
mcr
=
serial_in
(
up
,
UART_MCR
);
/*
* IXANY Flag:
* Enable any character to restart output.
* Operation resumes after receiving any
* character after recognition of the XOFF character
*/
if
(
termios
->
c_iflag
&
IXANY
)
up
->
mcr
|=
UART_MCR_XONANY
;
else
up
->
mcr
&=
~
UART_MCR_XONANY
;
serial_out
(
up
,
UART_MCR
,
up
->
mcr
|
UART_MCR_TCRTLR
);
serial_out
(
up
,
UART_LCR
,
UART_LCR_CONF_MODE_B
);
serial_out
(
up
,
UART_TI752_TCR
,
OMAP_UART_TCR_TRIG
);
serial_out
(
up
,
UART_LCR
,
UART_LCR_CONF_MODE_A
);
serial_out
(
up
,
UART_MCR
,
up
->
mcr
&
~
UART_MCR_TCRTLR
);
serial_out
(
up
,
UART_LCR
,
UART_LCR_CONF_MODE_B
);
serial_out
(
up
,
UART_EFR
,
up
->
efr
);
serial_out
(
up
,
UART_LCR
,
up
->
lcr
);
}
static
void
serial_omap_uart_qos_work
(
struct
work_struct
*
work
)
static
void
serial_omap_uart_qos_work
(
struct
work_struct
*
work
)
{
{
struct
uart_omap_port
*
up
=
container_of
(
work
,
struct
uart_omap_port
,
struct
uart_omap_port
*
up
=
container_of
(
work
,
struct
uart_omap_port
,
...
@@ -984,8 +927,59 @@ serial_omap_set_termios(struct uart_port *port, struct ktermios *termios,
...
@@ -984,8 +927,59 @@ serial_omap_set_termios(struct uart_port *port, struct ktermios *termios,
}
}
/* Software Flow Control Configuration */
/* Software Flow Control Configuration */
if
(
up
->
port
.
flags
&
UPF_SOFT_FLOW
)
if
(
up
->
port
.
flags
&
UPF_SOFT_FLOW
)
{
serial_omap_configure_xonxoff
(
up
,
termios
);
up
->
lcr
=
serial_in
(
up
,
UART_LCR
);
serial_out
(
up
,
UART_LCR
,
UART_LCR_CONF_MODE_B
);
up
->
efr
=
serial_in
(
up
,
UART_EFR
);
serial_out
(
up
,
UART_EFR
,
up
->
efr
&
~
UART_EFR_ECB
);
serial_out
(
up
,
UART_XON1
,
termios
->
c_cc
[
VSTART
]);
serial_out
(
up
,
UART_XOFF1
,
termios
->
c_cc
[
VSTOP
]);
/* clear SW control mode bits */
up
->
efr
&=
OMAP_UART_SW_CLR
;
/*
* IXON Flag:
* Enable XON/XOFF flow control on output.
* Transmit XON1, XOFF1
*/
if
(
termios
->
c_iflag
&
IXON
)
up
->
efr
|=
OMAP_UART_SW_TX
;
/*
* IXOFF Flag:
* Enable XON/XOFF flow control on input.
* Receiver compares XON1, XOFF1.
*/
if
(
termios
->
c_iflag
&
IXOFF
)
up
->
efr
|=
OMAP_UART_SW_RX
;
serial_out
(
up
,
UART_EFR
,
up
->
efr
|
UART_EFR_ECB
);
serial_out
(
up
,
UART_LCR
,
UART_LCR_CONF_MODE_A
);
up
->
mcr
=
serial_in
(
up
,
UART_MCR
);
/*
* IXANY Flag:
* Enable any character to restart output.
* Operation resumes after receiving any
* character after recognition of the XOFF character
*/
if
(
termios
->
c_iflag
&
IXANY
)
up
->
mcr
|=
UART_MCR_XONANY
;
else
up
->
mcr
&=
~
UART_MCR_XONANY
;
serial_out
(
up
,
UART_MCR
,
up
->
mcr
|
UART_MCR_TCRTLR
);
serial_out
(
up
,
UART_LCR
,
UART_LCR_CONF_MODE_B
);
serial_out
(
up
,
UART_TI752_TCR
,
OMAP_UART_TCR_TRIG
);
serial_out
(
up
,
UART_LCR
,
UART_LCR_CONF_MODE_A
);
serial_out
(
up
,
UART_MCR
,
up
->
mcr
&
~
UART_MCR_TCRTLR
);
serial_out
(
up
,
UART_LCR
,
UART_LCR_CONF_MODE_B
);
serial_out
(
up
,
UART_EFR
,
up
->
efr
);
serial_out
(
up
,
UART_LCR
,
up
->
lcr
);
}
serial_omap_set_mctrl
(
&
up
->
port
,
up
->
port
.
mctrl
);
serial_omap_set_mctrl
(
&
up
->
port
,
up
->
port
.
mctrl
);
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录