diff options
| author | mattis fjallstrom <mattis@acm.org> | 2015-07-02 01:19:37 -0700 |
|---|---|---|
| committer | mattis fjallstrom <mattis@acm.org> | 2015-07-02 01:40:14 -0700 |
| commit | b40c8de18d0f070cb1182f18d643bb6c8917be0e (patch) | |
| tree | d8390ee12e475b26363a425e47bde005e541cfe6 /drivers/tty/serial/omap-serial.c | |
| parent | a935b06ef32a95efb0d5ddb80d8e69cdefa575dd (diff) | |
| parent | 69a77a4d2e92d81f45249f09126bd5d2c36a0b5d (diff) | |
| download | olio-linux-3.10-b40c8de18d0f070cb1182f18d643bb6c8917be0e.tar.xz olio-linux-3.10-b40c8de18d0f070cb1182f18d643bb6c8917be0e.zip | |
Moved from Invensense accelerometer to ST.
Change-Id: If42c1a612784368bea2f77d2ef8722a31f9a4f34
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); |