From: Greg Kroah-Hartman <gregkh@suse.de>
To: linux-serial@vger.kernel.org
Cc: Stephen Warren <swarren@nvidia.com>,
Laxman Dewangan <ldewangan@nvidia.com>,
Greg Kroah-Hartman <gregkh@suse.de>
Subject: [PATCH 46/48] tty/serial: Add explicit PORT_TEGRA type
Date: Mon, 23 May 2011 12:10:52 -0700 [thread overview]
Message-ID: <1306177854-18172-46-git-send-email-gregkh@suse.de> (raw)
In-Reply-To: <1306177854-18172-1-git-send-email-gregkh@suse.de>
From: Stephen Warren <swarren@nvidia.com>
Tegra's UART is currently auto-detected as PORT_XSCALE due to register
bit UART_IER.UUE being writable. However, the Tegra documentation states
that this register bit is reserved. Hence, we should not program it.
Instead, the documentation specifies that the UART is 16550 compatible.
However, Tegra does need register bit UART_IER.RTOIE set, which is not
enabled by any 16550 port type. This was not noticed before, since
PORT_XSCALE enables CAP_UUE, which conflates both UUE and RTOIE bit
programming.
This change defines PORT_TEGRA that doesn't set UART_CAP_UUE, but does
set UART_CAP_RTOIE, which is a new capability indicating that the RTOIE
bit needs to be enabled.
Based-on-code-by: Laxman Dewangan <ldewangan@nvidia.com>
Cc: Laxman Dewangan <ldewangan@nvidia.com>
Signed-off-by: Stephen Warren <swarren@nvidia.com>
Acked-by: Alan Cox <alan@linux.intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
---
drivers/tty/serial/8250.c | 14 ++++++++++++--
drivers/tty/serial/8250.h | 1 +
include/linux/serial_core.h | 3 ++-
include/linux/serial_reg.h | 1 +
4 files changed, 16 insertions(+), 3 deletions(-)
diff --git a/drivers/tty/serial/8250.c b/drivers/tty/serial/8250.c
index 54482d7..a5e290d 100644
--- a/drivers/tty/serial/8250.c
+++ b/drivers/tty/serial/8250.c
@@ -271,7 +271,7 @@ static const struct serial8250_config uart_config[] = {
.fifo_size = 32,
.tx_loadsz = 32,
.fcr = UART_FCR_ENABLE_FIFO | UART_FCR_R_TRIG_10,
- .flags = UART_CAP_FIFO | UART_CAP_UUE,
+ .flags = UART_CAP_FIFO | UART_CAP_UUE | UART_CAP_RTOIE,
},
[PORT_RM9000] = {
.name = "RM9000",
@@ -301,6 +301,14 @@ static const struct serial8250_config uart_config[] = {
.fcr = UART_FCR_ENABLE_FIFO | UART_FCR_R_TRIG_10,
.flags = UART_CAP_FIFO | UART_CAP_AFE,
},
+ [PORT_TEGRA] = {
+ .name = "Tegra",
+ .fifo_size = 32,
+ .tx_loadsz = 8,
+ .fcr = UART_FCR_ENABLE_FIFO | UART_FCR_R_TRIG_01 |
+ UART_FCR_T_TRIG_01,
+ .flags = UART_CAP_FIFO | UART_CAP_RTOIE,
+ },
};
#if defined(CONFIG_MIPS_ALCHEMY)
@@ -2403,7 +2411,9 @@ serial8250_do_set_termios(struct uart_port *port, struct ktermios *termios,
UART_ENABLE_MS(&up->port, termios->c_cflag))
up->ier |= UART_IER_MSI;
if (up->capabilities & UART_CAP_UUE)
- up->ier |= UART_IER_UUE | UART_IER_RTOIE;
+ up->ier |= UART_IER_UUE;
+ if (up->capabilities & UART_CAP_RTOIE)
+ up->ier |= UART_IER_RTOIE;
serial_out(up, UART_IER, up->ier);
diff --git a/drivers/tty/serial/8250.h b/drivers/tty/serial/8250.h
index d13b586..6edf4a6 100644
--- a/drivers/tty/serial/8250.h
+++ b/drivers/tty/serial/8250.h
@@ -42,6 +42,7 @@ struct serial8250_config {
#define UART_CAP_SLEEP (1 << 10) /* UART has IER sleep */
#define UART_CAP_AFE (1 << 11) /* MCR-based hw flow control */
#define UART_CAP_UUE (1 << 12) /* UART needs IER bit 6 set (Xscale) */
+#define UART_CAP_RTOIE (1 << 13) /* UART needs IER bit 4 set (Xscale, Tegra) */
#define UART_BUG_QUOT (1 << 0) /* UART has buggy quot LSB */
#define UART_BUG_TXEN (1 << 1) /* UART has buggy TX IIR status */
diff --git a/include/linux/serial_core.h b/include/linux/serial_core.h
index 95d479b..a5c3114 100644
--- a/include/linux/serial_core.h
+++ b/include/linux/serial_core.h
@@ -45,7 +45,8 @@
#define PORT_OCTEON 17 /* Cavium OCTEON internal UART */
#define PORT_AR7 18 /* Texas Instruments AR7 internal UART */
#define PORT_U6_16550A 19 /* ST-Ericsson U6xxx internal UART */
-#define PORT_MAX_8250 19 /* max port ID */
+#define PORT_TEGRA 20 /* NVIDIA Tegra internal UART */
+#define PORT_MAX_8250 20 /* max port ID */
/*
* ARM specific type numbers. These are not currently guaranteed
diff --git a/include/linux/serial_reg.h b/include/linux/serial_reg.h
index 3ecb71a..5f66e84 100644
--- a/include/linux/serial_reg.h
+++ b/include/linux/serial_reg.h
@@ -57,6 +57,7 @@
* ST16C654: 8 16 56 60 8 16 32 56 PORT_16654
* TI16C750: 1 16 32 56 xx xx xx xx PORT_16750
* TI16C752: 8 16 56 60 8 16 32 56
+ * Tegra: 1 4 8 14 16 8 4 1 PORT_TEGRA
*/
#define UART_FCR_R_TRIG_00 0x00
#define UART_FCR_R_TRIG_01 0x40
--
1.7.4.2
next prev parent reply other threads:[~2011-05-23 19:12 UTC|newest]
Thread overview: 69+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-05-23 19:05 [GIT PATCH] TTY/serial driver patches for .40 Greg KH
2011-05-23 19:06 ` [PATCH 01/48] vt: remove uneeded retval check before tty->ops->open inside tty_open Greg Kroah-Hartman
2011-05-23 19:06 ` [PATCH 02/48] vt: Add K_OFF return value to vt_ioctl KDGKBMODE Greg Kroah-Hartman
2011-05-23 19:06 ` [PATCH 03/48] drivers/tty/vt/vt_ioctl.c: repair insane ?: expression Greg Kroah-Hartman
2011-05-23 19:06 ` [PATCH 04/48] tty: VT, remove unused variable Greg Kroah-Hartman
2011-05-23 19:06 ` [PATCH 05/48] TTY: serial_core, " Greg Kroah-Hartman
2011-05-23 19:06 ` [PATCH 06/48] Char: cyclades, fix " Greg Kroah-Hartman
2011-05-23 19:06 ` [PATCH 07/48] TTY: VT, remove unused variables Greg Kroah-Hartman
2011-05-23 19:06 ` [PATCH 08/48] Char: moxa, " Greg Kroah-Hartman
2011-05-23 19:06 ` [PATCH 09/48] TTY: rocket, " Greg Kroah-Hartman
2011-05-23 19:06 ` [PATCH 10/48] TTY: unify tty_init_dev fail path handling Greg Kroah-Hartman
2011-05-23 19:06 ` [PATCH 11/48] TTY: unify pty_install " Greg Kroah-Hartman
2011-05-23 19:06 ` [PATCH 12/48] TTY: unify pty_unix98_install " Greg Kroah-Hartman
2011-05-23 19:06 ` [PATCH 13/48] TTY: introduce deinit helpers for proper ldisc shutdown Greg Kroah-Hartman
2011-05-23 19:10 ` [PATCH 01/48] vt: remove uneeded retval check before tty->ops->open inside tty_open Greg Kroah-Hartman
2011-05-23 19:10 ` [PATCH 02/48] vt: Add K_OFF return value to vt_ioctl KDGKBMODE Greg Kroah-Hartman
2011-05-23 19:10 ` [PATCH 03/48] drivers/tty/vt/vt_ioctl.c: repair insane ?: expression Greg Kroah-Hartman
2011-05-23 19:10 ` [PATCH 04/48] tty: VT, remove unused variable Greg Kroah-Hartman
2011-05-23 19:10 ` [PATCH 05/48] TTY: serial_core, " Greg Kroah-Hartman
2011-05-23 19:10 ` [PATCH 06/48] Char: cyclades, fix " Greg Kroah-Hartman
2011-05-23 19:10 ` [PATCH 07/48] TTY: VT, remove unused variables Greg Kroah-Hartman
2011-05-23 19:10 ` [PATCH 08/48] Char: moxa, " Greg Kroah-Hartman
2011-05-23 19:10 ` [PATCH 09/48] TTY: rocket, " Greg Kroah-Hartman
2011-05-23 19:10 ` [PATCH 10/48] TTY: unify tty_init_dev fail path handling Greg Kroah-Hartman
2011-05-23 19:10 ` [PATCH 11/48] TTY: unify pty_install " Greg Kroah-Hartman
2011-05-23 19:10 ` [PATCH 12/48] TTY: unify pty_unix98_install " Greg Kroah-Hartman
2011-05-23 19:10 ` [PATCH 13/48] TTY: introduce deinit helpers for proper ldisc shutdown Greg Kroah-Hartman
2011-05-23 19:10 ` [PATCH 14/48] TTY: plug in deinitialize_tty_struct Greg Kroah-Hartman
2011-05-23 19:10 ` [PATCH 15/48] TTY: fix fail path in tty_open Greg Kroah-Hartman
2011-05-23 19:10 ` [PATCH 16/48] serial: altera_uart: Scan for a free port if platform device id is -1 Greg Kroah-Hartman
2011-05-23 19:10 ` [PATCH 17/48] Char: moxa, do not touch NORMAL_ACTIVE bit Greg Kroah-Hartman
2011-05-23 19:10 ` [PATCH 18/48] serial: core, move termios handling to uart_startup Greg Kroah-Hartman
2011-05-23 19:10 ` [PATCH 19/48] serial: core, do not set DTR/RTS twice on startup Greg Kroah-Hartman
2011-05-23 19:10 ` [PATCH 20/48] serial: core, remove uart_update_termios Greg Kroah-Hartman
2011-05-23 19:10 ` [PATCH 21/48] tty: remove invalid location line in file header Greg Kroah-Hartman
2011-05-23 19:10 ` [PATCH 22/48] Serial: ifx6x60c: Remove duplicate includes of linux/tty.h Greg Kroah-Hartman
2011-05-23 19:10 ` [PATCH 23/48] tty: Clean console safely Greg Kroah-Hartman
2011-05-23 19:10 ` [PATCH 24/48] Serial: Remove unused code Greg Kroah-Hartman
2011-05-23 19:10 ` [PATCH 25/48] tty: make receive_buf() return the amout of bytes received Greg Kroah-Hartman
2011-05-23 19:10 ` [PATCH 26/48] Char: nozomi, use GFP_KERNEL for kfifo allocation Greg Kroah-Hartman
2011-05-23 19:10 ` [PATCH 27/48] Char: nozomi, remove port.count checks Greg Kroah-Hartman
2011-05-23 19:10 ` [PATCH 28/48] Char: nozomi, remove useless tty_sem Greg Kroah-Hartman
2011-05-23 19:10 ` [PATCH 29/48] Char: moxa, fix locking in moxa_write Greg Kroah-Hartman
2011-05-23 19:10 ` [PATCH 30/48] TTY: serial_core, remove invalid test Greg Kroah-Hartman
2011-05-23 19:10 ` [PATCH 31/48] TTY: serial_core, remove superfluous set_task_state Greg Kroah-Hartman
2011-05-23 19:10 ` [PATCH 32/48] TTY: tty_io, annotate locking functions Greg Kroah-Hartman
2011-05-23 19:10 ` [PATCH 33/48] drivers/tty/moxa.c: Put correct tty value Greg Kroah-Hartman
2011-05-23 19:10 ` [PATCH 34/48] n_gsm: Use print_hex_dump_bytes Greg Kroah-Hartman
2011-05-23 19:10 ` [PATCH 35/48] tty/serial: add support for Xilinx PS UART Greg Kroah-Hartman
2011-05-23 19:10 ` [PATCH 36/48] parport: Use request_muxed_region for IT87 probe and lock Greg Kroah-Hartman
2011-05-23 19:10 ` [PATCH 37/48] pch_uart: Support new device ML7223 IOH Greg Kroah-Hartman
2011-05-23 19:10 ` [PATCH 38/48] ASoC: Update cx20442 for TTY API change Greg Kroah-Hartman
2011-05-23 19:10 ` [PATCH 39/48] 8250_pci: Add support for the Digi/IBM PCIe 2-port Adapter Greg Kroah-Hartman
2011-05-23 19:10 ` [PATCH 40/48] pch_phub: Support new device ML7223 Greg Kroah-Hartman
2011-05-23 19:10 ` [PATCH 41/48] tty: Remove to support serial for S5P6442 Greg Kroah-Hartman
2011-05-23 19:10 ` [PATCH 42/48] export kernel call get_task_comm() Greg Kroah-Hartman
2011-05-23 19:10 ` [PATCH 43/48] Kernel documentation for the PTI feature Greg Kroah-Hartman
2011-05-23 19:10 ` [PATCH 44/48] Intel PTI implementaiton of MIPI 1149.7 Greg Kroah-Hartman
2011-05-23 19:10 ` [PATCH 45/48] n_tracerouter and n_tracesink ldisc additions Greg Kroah-Hartman
2011-05-23 19:10 ` Greg Kroah-Hartman [this message]
2011-05-23 19:10 ` [PATCH 47/48] tty/serial: Fix break handling for PORT_TEGRA Greg Kroah-Hartman
2011-05-23 19:10 ` [PATCH 48/48] serial: 8250_pci: add support for Cronyx Omega PCI multiserial board Greg Kroah-Hartman
2011-05-23 19:27 ` [GIT PATCH] TTY/serial driver patches for .40 Linus Torvalds
2011-05-23 19:43 ` Greg KH
2011-05-26 10:54 ` Guennadi Liakhovetski
2011-05-27 1:00 ` Greg KH
2011-05-30 22:04 ` Peter Hüwe
2011-05-30 22:37 ` Peter Hüwe
2011-05-31 10:24 ` Guennadi Liakhovetski
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=1306177854-18172-46-git-send-email-gregkh@suse.de \
--to=gregkh@suse.de \
--cc=ldewangan@nvidia.com \
--cc=linux-serial@vger.kernel.org \
--cc=swarren@nvidia.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).