From: Wolfram Sang <w.sang@pengutronix.de>
To: linux-serial@vger.kernel.org
Cc: linux-kernel@vger.kernel.org, Greg KH <gregkh@suse.de>,
Alan Cox <alan@linux.intel.com>,
Claudio Scordino <claudio@evidence.eu.com>,
Wolfram Sang <w.sang@pengutronix.de>
Subject: [PATCH RESEND 3/8] serial: 8250: save rs485_flags per instance
Date: Fri, 9 Dec 2011 18:07:15 +0100 [thread overview]
Message-ID: <1323450440-414-4-git-send-email-w.sang@pengutronix.de> (raw)
In-Reply-To: <1323450440-414-1-git-send-email-w.sang@pengutronix.de>
When set, save RS485 related flags in the private struct. This avoids
mangling with chip registers when reading back the RS485 config. Also,
features can check their configuration at runtime which will be needed
for a later patch.
Signed-off-by: Wolfram Sang <w.sang@pengutronix.de>
---
drivers/tty/serial/8250.c | 16 +++++-----------
1 files changed, 5 insertions(+), 11 deletions(-)
diff --git a/drivers/tty/serial/8250.c b/drivers/tty/serial/8250.c
index 920b4df..b5d3248 100644
--- a/drivers/tty/serial/8250.c
+++ b/drivers/tty/serial/8250.c
@@ -154,6 +154,7 @@ struct uart_8250_port {
unsigned char lsr_saved_flags;
#define MSR_SAVE_FLAGS UART_MSR_ANY_DELTA
unsigned char msr_saved_flags;
+ __u32 rs485_flags; /* copied from IOCTL */
};
struct irq_info {
@@ -2729,28 +2730,21 @@ static int serial8250_ioctl_port(struct uart_port *port,
serial_outp(up, UART_FCTR, fctr);
serial_outp(up, UART_LCR, lcr);
spin_unlock_irqrestore(&up->port.lock, flags);
+
+ up->rs485_flags = rs485ctrl.flags;
+
return 0;
}
case TIOCGRS485:
{
struct serial_rs485 rs485ctrl;
- unsigned char lcr;
if (port->type != PORT_16850)
return -ENOTTY;
memset(&rs485ctrl, 0, sizeof(rs485ctrl));
-
- spin_lock_irqsave(&up->port.lock, flags);
- lcr = serial_inp(up, UART_LCR);
- serial_outp(up, UART_LCR, UART_LCR_CONF_MODE_B);
- if (serial_inp(up, UART_FCTR) & UART_FCTR_RS485)
- rs485ctrl.flags = SER_RS485_ENABLED;
- else
- rs485ctrl.flags = 0;
- serial_outp(up, UART_LCR, lcr);
- spin_unlock_irqrestore(&up->port.lock, flags);
+ rs485ctrl.flags = up->rs485_flags;
if (copy_to_user((struct serial_rs485 *)arg, &rs485ctrl,
sizeof(rs485ctrl)))
--
1.7.7.3
next prev parent reply other threads:[~2011-12-09 17:07 UTC|newest]
Thread overview: 14+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-12-09 17:07 [PATCH RESEND 0/8] serial: 8250: support hw-based RS485 direction control Wolfram Sang
2011-12-09 17:07 ` [PATCH RESEND 1/8] serial: 8250: replace hardcoded 0xbf with #define Wolfram Sang
2011-12-09 18:58 ` Alan Cox
2011-12-09 17:07 ` [PATCH RESEND 2/8] serial: 8250: Add ioctl to enable auto rs485 mode with some Exar UARTs Wolfram Sang
2011-12-09 19:00 ` Alan Cox
2011-12-09 17:07 ` Wolfram Sang [this message]
2011-12-09 19:10 ` [PATCH RESEND 3/8] serial: 8250: save rs485_flags per instance Alan Cox
2011-12-09 17:07 ` [PATCH RESEND 4/8] serial: 8250: add RX_DURING_TX capability to RS485 mode Wolfram Sang
2011-12-09 17:07 ` [PATCH RESEND 5/8] serial: 8250: reject delaying RTS with RS485 Wolfram Sang
2011-12-09 17:07 ` [PATCH RESEND 6/8] serial: 8250: update rs485 flags with polarity settings Wolfram Sang
2011-12-09 19:13 ` Alan Cox
2011-12-09 17:07 ` [PATCH RESEND 7/8] serial: 8250: add Exar 16V2750 support Wolfram Sang
2011-12-09 17:07 ` [PATCH RESEND 8/8] serial: 8250: fix comment about accessing EMSR Wolfram Sang
2011-12-12 14:42 ` [PATCH RESEND 0/8] serial: 8250: support hw-based RS485 direction control Claudio Scordino
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1323450440-414-4-git-send-email-w.sang@pengutronix.de \
--to=w.sang@pengutronix.de \
--cc=alan@linux.intel.com \
--cc=claudio@evidence.eu.com \
--cc=gregkh@suse.de \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-serial@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).