@@ -1411,11 +1411,12 @@ e100_enable_rs485(struct tty_struct *tty, struct serial_rs485 *r)
1411
1411
CONFIG_ETRAX_RS485_LTC1387_RXEN_PORT_G_BIT , 1 );
1412
1412
#endif
1413
1413
1414
- info -> rs485 .flags = r -> flags ;
1415
- if (r -> delay_rts_before_send >= 1000 )
1414
+ info -> rs485 = * r ;
1415
+
1416
+ /* Maximum delay before RTS equal to 1000 */
1417
+ if (info -> rs485 .delay_rts_before_send >= 1000 )
1416
1418
info -> rs485 .delay_rts_before_send = 1000 ;
1417
- else
1418
- info -> rs485 .delay_rts_before_send = r -> delay_rts_before_send ;
1419
+
1419
1420
/* printk("rts: on send = %i, after = %i, enabled = %i",
1420
1421
info->rs485.rts_on_send,
1421
1422
info->rs485.rts_after_sent,
@@ -3234,9 +3235,9 @@ rs_write(struct tty_struct *tty,
3234
3235
e100_disable_rx (info );
3235
3236
e100_enable_rx_irq (info );
3236
3237
#endif
3237
-
3238
- if (info -> rs485 .delay_rts_before_send > 0 )
3239
- msleep (info -> rs485 .delay_rts_before_send );
3238
+ if (( info -> rs485 . flags & SER_RS485_RTS_BEFORE_SEND ) &&
3239
+ (info -> rs485 .delay_rts_before_send > 0 ) )
3240
+ msleep (info -> rs485 .delay_rts_before_send );
3240
3241
}
3241
3242
#endif /* CONFIG_ETRAX_RS485 */
3242
3243
@@ -3694,6 +3695,11 @@ rs_ioctl(struct tty_struct *tty, struct file * file,
3694
3695
3695
3696
rs485data .delay_rts_before_send = rs485ctrl .delay_rts_before_send ;
3696
3697
rs485data .flags = 0 ;
3698
+ if (rs485data .delay_rts_before_send != 0 )
3699
+ rs485data .flags |= SER_RS485_RTS_BEFORE_SEND ;
3700
+ else
3701
+ rs485data .flags &= ~(SER_RS485_RTS_BEFORE_SEND );
3702
+
3697
3703
if (rs485ctrl .enabled )
3698
3704
rs485data .flags |= SER_RS485_ENABLED ;
3699
3705
else
@@ -3731,7 +3737,7 @@ rs_ioctl(struct tty_struct *tty, struct file * file,
3731
3737
/* This is the ioctl to get RS485 data from user-space */
3732
3738
if (copy_to_user ((struct serial_rs485 * ) arg ,
3733
3739
rs485data ,
3734
- sizeof (serial_rs485 )))
3740
+ sizeof (struct serial_rs485 )))
3735
3741
return - EFAULT ;
3736
3742
break ;
3737
3743
}
@@ -4527,6 +4533,7 @@ static int __init rs_init(void)
4527
4533
/* Set sane defaults */
4528
4534
info -> rs485 .flags &= ~(SER_RS485_RTS_ON_SEND );
4529
4535
info -> rs485 .flags |= SER_RS485_RTS_AFTER_SEND ;
4536
+ info -> rs485 .flags &= ~(SER_RS485_RTS_BEFORE_SEND );
4530
4537
info -> rs485 .delay_rts_before_send = 0 ;
4531
4538
info -> rs485 .flags &= ~(SER_RS485_ENABLED );
4532
4539
#endif
0 commit comments