Skip to content

Commit

Permalink
CRIS: Fix RS485 delay handling.
Browse files Browse the repository at this point in the history
Very recently, the RS485 interface has been fixed by adding two further
fields (see commit 1b63318).

Check the value of the flag SER_RS485_RTS_BEFORE_SEND before delaying.

Signed-off-by: Claudio Scordino <claudio@evidence.eu.com>
Signed-off-by: Jesper Nilsson <jesper.nilsson@axis.com>
  • Loading branch information
Jesper Nilsson committed Oct 28, 2010
1 parent 94479c0 commit c7213fc
Showing 1 changed file with 14 additions and 7 deletions.
21 changes: 14 additions & 7 deletions drivers/serial/crisv10.c
Original file line number Diff line number Diff line change
Expand Up @@ -1411,11 +1411,12 @@ e100_enable_rs485(struct tty_struct *tty, struct serial_rs485 *r)
CONFIG_ETRAX_RS485_LTC1387_RXEN_PORT_G_BIT, 1);
#endif

info->rs485.flags = r->flags;
if (r->delay_rts_before_send >= 1000)
info->rs485 = *r;

/* Maximum delay before RTS equal to 1000 */
if (info->rs485.delay_rts_before_send >= 1000)
info->rs485.delay_rts_before_send = 1000;
else
info->rs485.delay_rts_before_send = r->delay_rts_before_send;

/* printk("rts: on send = %i, after = %i, enabled = %i",
info->rs485.rts_on_send,
info->rs485.rts_after_sent,
Expand Down Expand Up @@ -3234,9 +3235,9 @@ rs_write(struct tty_struct *tty,
e100_disable_rx(info);
e100_enable_rx_irq(info);
#endif

if (info->rs485.delay_rts_before_send > 0)
msleep(info->rs485.delay_rts_before_send);
if ((info->rs485.flags & SER_RS485_RTS_BEFORE_SEND) &&
(info->rs485.delay_rts_before_send > 0))
msleep(info->rs485.delay_rts_before_send);
}
#endif /* CONFIG_ETRAX_RS485 */

Expand Down Expand Up @@ -3694,6 +3695,11 @@ rs_ioctl(struct tty_struct *tty, struct file * file,

rs485data.delay_rts_before_send = rs485ctrl.delay_rts_before_send;
rs485data.flags = 0;
if (rs485data.delay_rts_before_send != 0)
rs485data.flags |= SER_RS485_RTS_BEFORE_SEND;
else
rs485data.flags &= ~(SER_RS485_RTS_BEFORE_SEND);

if (rs485ctrl.enabled)
rs485data.flags |= SER_RS485_ENABLED;
else
Expand Down Expand Up @@ -4527,6 +4533,7 @@ static int __init rs_init(void)
/* Set sane defaults */
info->rs485.flags &= ~(SER_RS485_RTS_ON_SEND);
info->rs485.flags |= SER_RS485_RTS_AFTER_SEND;
info->rs485.flags &= ~(SER_RS485_RTS_BEFORE_SEND);
info->rs485.delay_rts_before_send = 0;
info->rs485.flags &= ~(SER_RS485_ENABLED);
#endif
Expand Down

0 comments on commit c7213fc

Please sign in to comment.