diff options
| author | mattis fjallstrom <mattis@acm.org> | 2015-07-23 17:15:27 -0700 | 
|---|---|---|
| committer | mattis fjallstrom <mattis@acm.org> | 2015-07-23 17:15:27 -0700 | 
| commit | 74d71e3bbccfdb208dd4385df5a636f889b3cd05 (patch) | |
| tree | 1da3047144075bed53290b018a675d9686c4fb69 /drivers/tty/serial/omap-serial.c | |
| parent | 5d1c09eedec0cf5fd486d240b4ede1c476ed6adf (diff) | |
| parent | cd0f92406cc231fda66c30312f48d12fab5ac614 (diff) | |
| download | olio-linux-3.10-74d71e3bbccfdb208dd4385df5a636f889b3cd05.tar.xz olio-linux-3.10-74d71e3bbccfdb208dd4385df5a636f889b3cd05.zip  | |
Merged bluetooth and ST mods from mattis_bt_work.
Change-Id: Ic904469eae89e5678a502e78309b30ab9715cd41
Diffstat (limited to 'drivers/tty/serial/omap-serial.c')
| -rw-r--r-- | drivers/tty/serial/omap-serial.c | 41 | 
1 files changed, 41 insertions, 0 deletions
diff --git a/drivers/tty/serial/omap-serial.c b/drivers/tty/serial/omap-serial.c index 3009a8909cc..9b19ae172c3 100644 --- a/drivers/tty/serial/omap-serial.c +++ b/drivers/tty/serial/omap-serial.c @@ -1109,7 +1109,14 @@ serial_omap_pm(struct uart_port *port, unsigned int state,  	pm_runtime_mark_last_busy(up->dev);  	pm_runtime_put_autosuspend(up->dev);  } +static void serial_omap_wake_peer(struct uart_port *port) +{ +       struct uart_omap_port *up = to_uart_omap_port(port); +       struct omap_uart_port_info *pdata = up->dev->platform_data; +       if (pdata->wake_peer) +               pdata->wake_peer(port); +}  static void serial_omap_release_port(struct uart_port *port)  {  	dev_dbg(port->dev, "serial_omap_release_port+\n"); @@ -1341,6 +1348,7 @@ static struct uart_ops serial_omap_pops = {  	.shutdown	= serial_omap_shutdown,  	.set_termios	= serial_omap_set_termios,  	.pm		= serial_omap_pm, +	.wake_peer 	= serial_omap_wake_peer,  	.type		= serial_omap_type,  	.release_port	= serial_omap_release_port,  	.request_port	= serial_omap_request_port, @@ -1860,6 +1868,39 @@ static void __exit serial_omap_exit(void)  	uart_unregister_driver(&serial_omap_reg);  } +/* Used by ext client device connected to uart to control uart */ +int omap_serial_ext_uart_enable(u8 port_id) +{ +       struct uart_omap_port *up; +       int err = 0; + +       if (port_id > OMAP_MAX_HSUART_PORTS) { +               pr_err("Invalid Port_id %d passed to %s\n", port_id, __func__); +               err = -ENODEV; +       } else { +               up = ui[port_id]; +               pm_runtime_get_sync(up->dev); +       } +       return err; +} + +int omap_serial_ext_uart_disable(u8 port_id) +{ +       struct uart_omap_port *up; +       int err = 0; + +       if (port_id > OMAP_MAX_HSUART_PORTS) { +               pr_err("Invalid Port_id %d passed to %s\n", port_id, __func__); +               err = -ENODEV; +       } else { +               up = ui[port_id]; +               pm_runtime_mark_last_busy(up->dev); +               pm_runtime_put_autosuspend(up->dev); +       } +       return err; +} + +  module_init(serial_omap_init);  module_exit(serial_omap_exit);  |