summaryrefslogtreecommitdiffstats
path: root/drivers/char/cyclades.c
diff options
context:
space:
mode:
authorJiri Slaby <jirislaby@gmail.com>2009-09-19 13:13:17 -0700
committerLive-CD User <linux@linux.site>2009-09-19 13:13:17 -0700
commit46fb782522092f772c6ce2b129f201ca6e1e15a2 (patch)
treef43fd041a790c8b20d09498a4c6b9baf40138a1b /drivers/char/cyclades.c
parent3aeea5b92210083c7cffd4f08a0bb141d3f2d574 (diff)
downloadlinux-46fb782522092f772c6ce2b129f201ca6e1e15a2.tar.gz
linux-46fb782522092f772c6ce2b129f201ca6e1e15a2.tar.bz2
linux-46fb782522092f772c6ce2b129f201ca6e1e15a2.zip
cyclades: remove more duplicated code
Remove duplicated code from cy_set_line_char. There were 2 if branches with same contents except flags. Branch only for the flags computation and use them in the only copy of the code. Signed-off-by: Jiri Slaby <jirislaby@gmail.com> Signed-off-by: Alan Cox <alan@linux.intel.com> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Diffstat (limited to 'drivers/char/cyclades.c')
-rw-r--r--drivers/char/cyclades.c45
1 files changed, 14 insertions, 31 deletions
diff --git a/drivers/char/cyclades.c b/drivers/char/cyclades.c
index cf2874a89c8c..f518e0b5b47d 100644
--- a/drivers/char/cyclades.c
+++ b/drivers/char/cyclades.c
@@ -2057,6 +2057,8 @@ static void cy_set_line_char(struct cyclades_port *info, struct tty_struct *tty)
channel = info->line - card->first_line;
if (!cy_is_Z(card)) {
+ u32 cflags;
+
/* baud rate */
baud = tty_get_baud_rate(tty);
if (baud == 38400 && (info->port.flags & ASYNC_SPD_MASK) ==
@@ -2198,37 +2200,18 @@ static void cy_set_line_char(struct cyclades_port *info, struct tty_struct *tty)
(info->default_timeout ? info->default_timeout : 0x02));
/* 10ms rx timeout */
- if (C_CLOCAL(tty)) {
- /* without modem intr */
- cyy_writeb(info, CySRER,
- cyy_readb(info, CySRER) | CyMdmCh);
- /* act on 1->0 modem transitions */
- if ((cflag & CRTSCTS) && info->rflow) {
- cyy_writeb(info, CyMCOR1,
- (CyCTS | rflow_thr[i]));
- } else {
- cyy_writeb(info, CyMCOR1,
- CyCTS);
- }
- /* act on 0->1 modem transitions */
- cyy_writeb(info, CyMCOR2, CyCTS);
- } else {
- /* without modem intr */
- cyy_writeb(info, CySRER,
- cyy_readb(info, CySRER) | CyMdmCh);
- /* act on 1->0 modem transitions */
- if ((cflag & CRTSCTS) && info->rflow) {
- cyy_writeb(info, CyMCOR1,
- (CyDSR | CyCTS | CyRI | CyDCD |
- rflow_thr[i]));
- } else {
- cyy_writeb(info, CyMCOR1,
- CyDSR | CyCTS | CyRI | CyDCD);
- }
- /* act on 0->1 modem transitions */
- cyy_writeb(info, CyMCOR2,
- CyDSR | CyCTS | CyRI | CyDCD);
- }
+ cflags = CyCTS;
+ if (!C_CLOCAL(tty))
+ cflags |= CyDSR | CyRI | CyDCD;
+ /* without modem intr */
+ cyy_writeb(info, CySRER, cyy_readb(info, CySRER) | CyMdmCh);
+ /* act on 1->0 modem transitions */
+ if ((cflag & CRTSCTS) && info->rflow)
+ cyy_writeb(info, CyMCOR1, cflags | rflow_thr[i]);
+ else
+ cyy_writeb(info, CyMCOR1, cflags);
+ /* act on 0->1 modem transitions */
+ cyy_writeb(info, CyMCOR2, cflags);
if (i == 0) /* baud rate is zero, turn off line */
cyy_change_rts_dtr(info, 0, TIOCM_DTR);