From: Arnd Bergmann <arnd@arndb.de>
To: Greg Kroah-Hartman <gregkh@suse.de>
Cc: linux-kernel@vger.kernel.org, Alan Cox <alan@lxorguk.ukuu.org.uk>,
Arnd Bergmann <arnd@arndb.de>,
linux-serial@vger.kernel.org
Subject: [PATCH 6/7] serial/8250: sanitize fourport handling
Date: Mon, 27 Jun 2011 23:45:19 +0200 [thread overview]
Message-ID: <1309211120-2803-7-git-send-email-arnd@arndb.de> (raw)
In-Reply-To: <1309211120-2803-1-git-send-email-arnd@arndb.de>
Support for AST fourport cards is always built into
the 8250 driver, even if CONFIG_SERIAL_8250_FOURPORT
is disabled. This introduces a set of macros for
accessing the special interrupt control register on
the fourport card, so that support is left out
when the option is disabled, without adding more #ifdef
lines to the driver itself.
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
Cc: Greg Kroah-Hartman <gregkh@suse.de>
Cc: linux-serial@vger.kernel.org
---
drivers/tty/serial/8250.c | 18 +++++++-----------
drivers/tty/serial/8250.h | 8 ++++++++
2 files changed, 15 insertions(+), 11 deletions(-)
diff --git a/drivers/tty/serial/8250.c b/drivers/tty/serial/8250.c
index 0ddba34..2b06c27 100644
--- a/drivers/tty/serial/8250.c
+++ b/drivers/tty/serial/8250.c
@@ -995,15 +995,13 @@ static void autoconfig_irq(struct uart_8250_port *up)
{
unsigned char save_mcr, save_ier;
unsigned char save_ICP = 0;
- unsigned int ICP = 0;
unsigned long irqs;
int irq;
if (up->port.flags & UPF_FOURPORT) {
- ICP = (up->port.iobase & 0xfe0) | 0x1f;
- save_ICP = inb_p(ICP);
- outb_p(0x80, ICP);
- (void) inb_p(ICP);
+ save_ICP = fourport_icp_in(up);
+ fourport_icp_out(up, 0x80);
+ (void) fourport_icp_in(up);
}
/* forget possible initially masked and pending IRQ */
@@ -1035,7 +1033,7 @@ static void autoconfig_irq(struct uart_8250_port *up)
serial_outp(up, UART_IER, save_ier);
if (up->port.flags & UPF_FOURPORT)
- outb_p(save_ICP, ICP);
+ fourport_icp_out(up, save_ICP);
up->port.irq = (irq > 0) ? irq : 0;
}
@@ -1914,13 +1912,11 @@ dont_test_tx_en:
serial_outp(up, UART_IER, up->ier);
if (up->port.flags & UPF_FOURPORT) {
- unsigned int icp;
/*
* Enable interrupts on the AST Fourport board
*/
- icp = (up->port.iobase & 0xfe0) | 0x01f;
- outb_p(0x80, icp);
- (void) inb_p(icp);
+ fourport_icp_out(up, 0x80);
+ (void) fourport_icp_in(up);
}
return 0;
@@ -1941,7 +1937,7 @@ static void serial8250_shutdown(struct uart_port *port)
spin_lock_irqsave(&up->port.lock, flags);
if (up->port.flags & UPF_FOURPORT) {
/* reset interrupts on the AST Fourport board */
- inb((up->port.iobase & 0xfe0) | 0x1f);
+ (void) fourport_icp_in(up);
up->port.mctrl |= TIOCM_OUT1;
} else
up->port.mctrl &= ~TIOCM_OUT2;
diff --git a/drivers/tty/serial/8250.h b/drivers/tty/serial/8250.h
index 6edf4a6..1fc46fe 100644
--- a/drivers/tty/serial/8250.h
+++ b/drivers/tty/serial/8250.h
@@ -60,6 +60,14 @@ struct serial8250_config {
#define SERIAL8250_SHARE_IRQS 0
#endif
+#if defined(CONFIG_SERIAL_8250_FOURPORT) || defined(CONFIG_SERIAL_8250_FOURPORT_MODULE)
+# define fourport_icp_in(up) inb_p((up->port.iobase & 0xfe0) | 0x01f)
+# define fourport_icp_out(up, v) outb_p(v, (up->port.iobase & 0xfe0) | 0x01f)
+#else
+# define fourport_icp_in(up) (0)
+# define fourport_icp_out(up, v) do { } while (0)
+#endif
+
#if defined(__alpha__) && !defined(CONFIG_PCI)
/*
* Digital did something really horribly wrong with the OUT1 and OUT2
--
1.7.5.4
next prev parent reply other threads:[~2011-06-27 21:46 UTC|newest]
Thread overview: 34+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-06-27 21:45 [PATCH 0/7] serial/8250: I/O accessor cleanups Arnd Bergmann
2011-06-27 21:45 ` [PATCH 1/7] serial/8250: remove obsolete RM9000 port type Arnd Bergmann
2011-06-27 21:45 ` [PATCH 2/7] serial/8250: move alchemy I/O handler to platform code Arnd Bergmann
2011-06-28 8:06 ` Manuel Lauss
2011-06-28 11:29 ` Manuel Lauss
2011-06-28 15:36 ` Manuel Lauss
2011-06-28 17:07 ` Arnd Bergmann
2011-06-27 21:45 ` [PATCH 3/7] serial/8250: move UPIO_TSI to powerpc Arnd Bergmann
2011-06-27 23:51 ` David Daney
2011-09-01 6:02 ` Benjamin Herrenschmidt
2011-09-01 8:28 ` Arnd Bergmann
2011-06-27 21:45 ` [PATCH 4/7] serial/8250: move DWAP support to arch/mips Arnd Bergmann
2011-06-27 22:15 ` Jamie Iles
2011-06-28 5:43 ` Arnd Bergmann
2011-06-28 10:06 ` Alan Cox
2011-06-28 10:48 ` Arnd Bergmann
2011-06-27 21:45 ` [PATCH 5/7] serial/8250: remove obsolete and broken PORT_RSA support Arnd Bergmann
2011-06-28 10:11 ` Alan Cox
2011-06-27 21:45 ` Arnd Bergmann [this message]
2011-06-28 10:10 ` [PATCH 6/7] serial/8250: sanitize fourport handling Alan Cox
2011-06-28 12:07 ` Arnd Bergmann
2011-06-27 21:45 ` [PATCH 7/7] serial/8250: make PIO support optional Arnd Bergmann
2011-06-28 10:05 ` Alan Cox
2011-06-28 11:52 ` Arnd Bergmann
2011-06-28 12:22 ` Alan Cox
2011-07-04 16:35 ` Arnd Bergmann
2011-07-04 17:02 ` Alan Cox
2011-07-04 19:27 ` Arnd Bergmann
2011-07-04 19:53 ` Alan Cox
2011-07-04 20:37 ` Arnd Bergmann
2011-07-04 21:55 ` Alan Cox
2011-07-04 21:54 ` Arnd Bergmann
2011-06-28 10:11 ` Alan Cox
2011-06-27 23:57 ` [PATCH 0/7] serial/8250: I/O accessor cleanups David Daney
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=1309211120-2803-7-git-send-email-arnd@arndb.de \
--to=arnd@arndb.de \
--cc=alan@lxorguk.ukuu.org.uk \
--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).