Thread (26 messages) 26 messages, 11 authors, 2011-11-14

Re: [PATCH] atmel_serial: RS485: receiving enabled when sending data

From: Greg KH <hidden>
Date: 2011-08-23 15:40:18
Also in: linux-arm-kernel, lkml

On Tue, Aug 23, 2011 at 10:30:46AM +0200, Claudio Scordino wrote:
Il 22/08/2011 23:18, Greg KH ha scritto:
quoted
On Mon, Aug 15, 2011 at 04:28:15PM +0200, Bernhard Roth wrote:
quoted
Hello!

By default the atmel_serial driver in RS485 mode disables receiving
data until all data in the send buffer has been sent. This flag
allows to receive data even whilst sending data. This is very useful
to

- check if the data has been sent correctly over the RS485 bus
- assure that no collision happened
- check for short circuits/termination issues on the RS485 bus

Usually this functionality is realized by hardware, wether
controlling the RX-Enable pin of the RS485 transceiver with RTS
(driver control signal) or pulling it LOW permanently. The present
atmel_serial driver makes this impossible, thus requiring following
patch.

Usage example:

     struct serial_rs485     rs485;

     memset(&rs485, 0, sizeof(rs485));
     rs485.flags = SER_RS485_ENABLED | SER_RS485_RX_DURING_TX;
     ioctl(fd, TIOCSRS485,&rs485);




atmel_serial: RS485: receiving enabled when sending data

By default the atmel_serial driver in RS485 mode disables receiving
data until
all data in the send buffer has been sent. This flag allows to receive data
even whilst sending data.

Signed-off-by: Bernhard Roth<redacted>
Signed-off-by: Claudio Scordino<redacted>
---
  drivers/tty/serial/atmel_serial.c |   17 ++++++++++-------
  include/linux/serial.h            |    1 +
  2 files changed, 11 insertions(+), 7 deletions(-)
diff --git a/drivers/tty/serial/atmel_serial.c
b/drivers/tty/serial/atmel_serial.c
index af9b781..5f6c745 100644
--- a/drivers/tty/serial/atmel_serial.c
+++ b/drivers/tty/serial/atmel_serial.c
@@ -339,8 +339,9 @@ static void atmel_stop_tx(struct uart_port *port)
      /* Disable interrupts */
      UART_PUT_IDR(port, atmel_port->tx_done_mask);

-    if (atmel_port->rs485.flags&  SER_RS485_ENABLED)
-        atmel_start_rx(port);
+    if ((atmel_port->rs485.flags&  SER_RS485_ENABLED)&&
+        !(atmel_port->rs485.flags&  SER_RS485_RX_DURING_TX))
+            atmel_start_rx(port);
Can you fix your email client to not strip patches of tabs and resend
this so that I can apply it?

thanks,

greg k-h
Hi Greg,

    please find below the patch with the right tabs.

Remind however that the main author of the patch is Bernhard, not me.
Then properly send the patch so that this is shown.  Please just add a:

From: foo <redacted>

as the first line of the patch changelog portion and git will fix things
up correctly.  Documentation/SubmittingPatches describes this in detail.

Care to resend your updated version, with this corrected author
information, so I get it right?

thanks,

greg k-h
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help