From: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
To: linux-serial@vger.kernel.org
Cc: linux-kernel@vger.kernel.org, linux-omap@vger.kernel.org,
linux-arm-kernel@lists.infradead.org, tony@atomide.com,
balbi@ti.com, Vinod Koul <vinod.koul@intel.com>,
Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
Sebastian Andrzej Siewior <bigeasy@linutronix.de>
Subject: [PATCH 01/15] tty: serial: 8250_core: allow to overwrite & export serial8250_startup()
Date: Fri, 15 Aug 2014 19:42:29 +0200 [thread overview]
Message-ID: <1408124563-31541-2-git-send-email-bigeasy@linutronix.de> (raw)
In-Reply-To: <1408124563-31541-1-git-send-email-bigeasy@linutronix.de>
The OMAP version of the 8250 can actually use 1:1 serial8250_startup().
However it needs to be extended by a wake up irq which should to be
requested & enabled at ->startup() time and disabled at ->shutdown() time.
v2…v3: properly copy callbacks
v1…v2: add shutdown callback
Acked-by: Alan Cox <alan@linux.intel.com>
Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
---
drivers/tty/serial/8250/8250_core.c | 26 ++++++++++++++++++++++++--
include/linux/serial_8250.h | 2 ++
include/linux/serial_core.h | 2 ++
3 files changed, 28 insertions(+), 2 deletions(-)
diff --git a/drivers/tty/serial/8250/8250_core.c b/drivers/tty/serial/8250/8250_core.c
index e2ad13a..dde1331 100644
--- a/drivers/tty/serial/8250/8250_core.c
+++ b/drivers/tty/serial/8250/8250_core.c
@@ -1929,7 +1929,7 @@ static void serial8250_put_poll_char(struct uart_port *port,
#endif /* CONFIG_CONSOLE_POLL */
-static int serial8250_startup(struct uart_port *port)
+int serial8250_do_startup(struct uart_port *port)
{
struct uart_8250_port *up = up_to_u8250p(port);
unsigned long flags;
@@ -2180,8 +2180,17 @@ static int serial8250_startup(struct uart_port *port)
return 0;
}
+EXPORT_SYMBOL_GPL(serial8250_do_startup);
-static void serial8250_shutdown(struct uart_port *port)
+static int serial8250_startup(struct uart_port *port)
+{
+ if (port->startup)
+ return port->startup(port);
+ else
+ return serial8250_do_startup(port);
+}
+
+void serial8250_do_shutdown(struct uart_port *port)
{
struct uart_8250_port *up = up_to_u8250p(port);
unsigned long flags;
@@ -2231,6 +2240,15 @@ static void serial8250_shutdown(struct uart_port *port)
if (port->irq)
serial_unlink_irq_chain(up);
}
+EXPORT_SYMBOL_GPL(serial8250_do_shutdown);
+
+static void serial8250_shutdown(struct uart_port *port)
+{
+ if (port->shutdown)
+ port->shutdown(port);
+ else
+ serial8250_do_shutdown(port);
+}
static unsigned int serial8250_get_divisor(struct uart_port *port, unsigned int baud)
{
@@ -3428,6 +3446,10 @@ int serial8250_register_8250_port(struct uart_8250_port *up)
/* Possibly override set_termios call */
if (up->port.set_termios)
uart->port.set_termios = up->port.set_termios;
+ if (up->port.startup)
+ uart->port.startup = up->port.startup;
+ if (up->port.shutdown)
+ uart->port.shutdown = up->port.shutdown;
if (up->port.pm)
uart->port.pm = up->port.pm;
if (up->port.handle_break)
diff --git a/include/linux/serial_8250.h b/include/linux/serial_8250.h
index f93649e..c3aa004 100644
--- a/include/linux/serial_8250.h
+++ b/include/linux/serial_8250.h
@@ -121,6 +121,8 @@ extern void serial8250_early_out(struct uart_port *port, int offset, int value);
extern int setup_early_serial8250_console(char *cmdline);
extern void serial8250_do_set_termios(struct uart_port *port,
struct ktermios *termios, struct ktermios *old);
+extern int serial8250_do_startup(struct uart_port *port);
+extern void serial8250_do_shutdown(struct uart_port *port);
extern void serial8250_do_pm(struct uart_port *port, unsigned int state,
unsigned int oldstate);
extern int fsl8250_handle_irq(struct uart_port *port);
diff --git a/include/linux/serial_core.h b/include/linux/serial_core.h
index cf3a1e7..f3ea531 100644
--- a/include/linux/serial_core.h
+++ b/include/linux/serial_core.h
@@ -122,6 +122,8 @@ struct uart_port {
void (*set_termios)(struct uart_port *,
struct ktermios *new,
struct ktermios *old);
+ int (*startup)(struct uart_port *port);
+ void (*shutdown)(struct uart_port *port);
int (*handle_irq)(struct uart_port *);
void (*pm)(struct uart_port *, unsigned int state,
unsigned int old);
--
2.0.1
--
To unsubscribe from this list: send the line "unsubscribe linux-serial" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
next prev parent reply other threads:[~2014-08-15 17:42 UTC|newest]
Thread overview: 66+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-08-15 17:42 [PATCH v7] 8250-core based serial driver for OMAP + DMA Sebastian Andrzej Siewior
2014-08-15 17:42 ` Sebastian Andrzej Siewior [this message]
2014-08-15 17:42 ` [PATCH 02/15] tty: serial: 8250_core: allow to set ->throttle / ->unthrottle callbacks Sebastian Andrzej Siewior
2014-08-15 17:42 ` [PATCH 03/15] tty: serial: 8250_core: add run time pm Sebastian Andrzej Siewior
2014-08-20 9:23 ` Frans Klaver
2014-08-20 9:39 ` Frans Klaver
2014-09-01 14:48 ` Sebastian Andrzej Siewior
2014-08-15 17:42 ` [PATCH 04/15] tty: serial: 8250_core: read only RX if there is something in the FIFO Sebastian Andrzej Siewior
2014-08-15 17:42 ` [PATCH 05/15] tty: serial: Add 8250-core based omap driver Sebastian Andrzej Siewior
2014-08-15 18:37 ` Lennart Sorensen
2014-08-15 19:27 ` Sebastian Andrzej Siewior
2014-08-15 19:33 ` Lennart Sorensen
2014-08-15 20:20 ` Sebastian Andrzej Siewior
2014-08-15 21:07 ` Tony Lindgren
2014-08-15 22:44 ` Tony Lindgren
2014-08-29 15:49 ` Sebastian Andrzej Siewior
2014-08-29 16:08 ` Tony Lindgren
2014-08-21 11:00 ` Sebastian Andrzej Siewior
2014-08-21 18:38 ` Tony Lindgren
2014-08-18 13:46 ` Heikki Krogerus
2014-09-01 13:31 ` Sebastian Andrzej Siewior
2014-08-15 17:42 ` [PATCH 06/15] tty: serial: 8250_dma: handle error on TX submit Sebastian Andrzej Siewior
2014-08-18 13:57 ` Heikki Krogerus
2014-09-01 14:38 ` Sebastian Andrzej Siewior
2014-08-15 17:42 ` [PATCH 07/15] tty: serial: 8250_dma: enqueue RX dma again on completion Sebastian Andrzej Siewior
2014-08-18 10:52 ` One Thousand Gnomes
2014-08-29 15:52 ` Sebastian Andrzej Siewior
2014-08-15 17:42 ` [PATCH 08/15] dmaengine: edma: fix two faults which happen with the 8250_dma user Sebastian Andrzej Siewior
2014-08-15 17:42 ` [PATCH 09/15] dmaengine: omap-dma: complete the transfer on terminate_all Sebastian Andrzej Siewior
2014-08-15 17:42 ` [PATCH 10/15] tty: serial: 8250_dma: Add a TX trigger workaround for AM33xx Sebastian Andrzej Siewior
2014-08-15 17:42 ` [PATCH 11/15] tty: serial: 8250_dma: handle the when UART response while DMA remains idle Sebastian Andrzej Siewior
2014-08-15 17:42 ` [PATCH 12/15] tty: serial: 8250_dma: add pm runtime Sebastian Andrzej Siewior
2014-08-15 17:42 ` [PATCH 13/15] arm: dts: am33xx: add DMA properties for UART Sebastian Andrzej Siewior
2014-08-15 17:42 ` [PATCH 14/15] arm: dts: dra7: " Sebastian Andrzej Siewior
2014-08-15 17:42 ` [PATCH 15/15] tty: serial: 8250: omap: add dma support Sebastian Andrzej Siewior
2014-08-15 21:02 ` Tony Lindgren
2014-08-21 8:34 ` Sebastian Andrzej Siewior
2014-08-21 18:44 ` Tony Lindgren
2014-08-27 19:54 ` Sebastian Andrzej Siewior
2014-08-27 20:23 ` Tony Lindgren
2014-08-28 8:23 ` Sebastian Andrzej Siewior
2014-08-28 16:46 ` Tony Lindgren
2014-08-28 19:37 ` Sebastian Andrzej Siewior
2014-08-28 22:54 ` Tony Lindgren
2014-08-29 9:32 ` Sebastian Andrzej Siewior
2014-08-29 15:55 ` Felipe Balbi
2014-08-29 16:12 ` Tony Lindgren
2014-08-29 16:31 ` Sebastian Andrzej Siewior
2014-09-01 17:47 ` Sebastian Andrzej Siewior
2014-09-02 3:05 ` Sebastian Reichel
2014-09-02 16:55 ` Tony Lindgren
2014-09-02 18:39 ` Sebastian Andrzej Siewior
2014-09-02 20:15 ` Tony Lindgren
2014-09-02 20:38 ` Sebastian Reichel
2014-09-03 16:46 ` Sebastian Andrzej Siewior
2014-09-03 17:48 ` Tony Lindgren
2014-09-04 13:44 ` Sebastian Andrzej Siewior
2014-09-04 14:52 ` Tony Lindgren
2014-09-04 14:56 ` Sebastian Andrzej Siewior
2014-09-04 16:25 ` Tony Lindgren
2014-08-15 18:17 ` [PATCH v7] 8250-core based serial driver for OMAP + DMA Lennart Sorensen
2014-08-15 19:14 ` Sebastian Andrzej Siewior
2014-08-15 20:28 ` Tony Lindgren
2014-08-17 20:35 ` Sebastian Andrzej Siewior
2014-08-18 15:15 ` Peter Hurley
2014-08-18 16:37 ` Felipe Balbi
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=1408124563-31541-2-git-send-email-bigeasy@linutronix.de \
--to=bigeasy@linutronix.de \
--cc=balbi@ti.com \
--cc=gregkh@linuxfoundation.org \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-omap@vger.kernel.org \
--cc=linux-serial@vger.kernel.org \
--cc=tony@atomide.com \
--cc=vinod.koul@intel.com \
/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).