aboutsummaryrefslogtreecommitdiffstats
path: root/tty.current
diff options
authorGreg Kroah-Hartman <gregkh@suse.de>2010-07-02 14:21:42 -0700
committerGreg Kroah-Hartman <gregkh@suse.de>2010-07-02 14:21:42 -0700
commitf3a20b368ebed936771e3516c240a77eed6bb918 (patch)
treea0555d279949ec8245b077a001a85919f8b78068 /tty.current
parentc23087dad116bf3266e64605046361d985e7f493 (diff)
downloadpatches-f3a20b368ebed936771e3516c240a77eed6bb918.tar.gz
patches merged with Linus now removed
Diffstat (limited to 'tty.current')
-rw-r--r--tty.current/serial-cpm_uart-implement-the-cpm_uart_early_write-function-for-console-poll.patch197
1 files changed, 0 insertions, 197 deletions
diff --git a/tty.current/serial-cpm_uart-implement-the-cpm_uart_early_write-function-for-console-poll.patch b/tty.current/serial-cpm_uart-implement-the-cpm_uart_early_write-function-for-console-poll.patch
deleted file mode 100644
index 161436af0d8f84..00000000000000
--- a/tty.current/serial-cpm_uart-implement-the-cpm_uart_early_write-function-for-console-poll.patch
+++ /dev/null
@@ -1,197 +0,0 @@
-From dongdong.deng@windriver.com Fri Jun 18 08:48:14 2010
-From: Dongdong Deng <dongdong.deng@windriver.com>
-Date: Thu, 17 Jun 2010 11:13:40 +0800
-Subject: serial: cpm_uart: implement the cpm_uart_early_write() function for console poll
-To: jason.wessel@windriver.com, gregkh@suse.de, galak@kernel.crashing.org, bruce.ashfield@windriver.com, dongdong.deng@windriver.com
-Cc: linux-kernel@vger.kernel.org
-Message-ID: <1276744420-7845-1-git-send-email-dongdong.deng@windriver.com>
-
-
-The cpm_uart_early_write() function which was used for console poll
-isn't implemented in the cpm uart driver.
-
-Implementing this function both fixes the build when CONFIG_CONSOLE_POLL
-is set and allows kgdboc to work via the cpm uart.
-
-Signed-off-by: Dongdong Deng <dongdong.deng@windriver.com>
-Reviewed-by: Bruce Ashfield <bruce.ashfield@windriver.com>
-Cc: stable <stable@kernel.org>
-Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
-
----
- drivers/serial/cpm_uart/cpm_uart_core.c | 143 +++++++++++++++++---------------
- 1 file changed, 79 insertions(+), 64 deletions(-)
-
---- a/drivers/serial/cpm_uart/cpm_uart_core.c
-+++ b/drivers/serial/cpm_uart/cpm_uart_core.c
-@@ -930,6 +930,83 @@ static void cpm_uart_config_port(struct
- }
- }
-
-+#if defined(CONFIG_CONSOLE_POLL) || defined(CONFIG_SERIAL_CPM_CONSOLE)
-+/*
-+ * Write a string to the serial port
-+ * Note that this is called with interrupts already disabled
-+ */
-+static void cpm_uart_early_write(struct uart_cpm_port *pinfo,
-+ const char *string, u_int count)
-+{
-+ unsigned int i;
-+ cbd_t __iomem *bdp, *bdbase;
-+ unsigned char *cpm_outp_addr;
-+
-+ /* Get the address of the host memory buffer.
-+ */
-+ bdp = pinfo->tx_cur;
-+ bdbase = pinfo->tx_bd_base;
-+
-+ /*
-+ * Now, do each character. This is not as bad as it looks
-+ * since this is a holding FIFO and not a transmitting FIFO.
-+ * We could add the complexity of filling the entire transmit
-+ * buffer, but we would just wait longer between accesses......
-+ */
-+ for (i = 0; i < count; i++, string++) {
-+ /* Wait for transmitter fifo to empty.
-+ * Ready indicates output is ready, and xmt is doing
-+ * that, not that it is ready for us to send.
-+ */
-+ while ((in_be16(&bdp->cbd_sc) & BD_SC_READY) != 0)
-+ ;
-+
-+ /* Send the character out.
-+ * If the buffer address is in the CPM DPRAM, don't
-+ * convert it.
-+ */
-+ cpm_outp_addr = cpm2cpu_addr(in_be32(&bdp->cbd_bufaddr),
-+ pinfo);
-+ *cpm_outp_addr = *string;
-+
-+ out_be16(&bdp->cbd_datlen, 1);
-+ setbits16(&bdp->cbd_sc, BD_SC_READY);
-+
-+ if (in_be16(&bdp->cbd_sc) & BD_SC_WRAP)
-+ bdp = bdbase;
-+ else
-+ bdp++;
-+
-+ /* if a LF, also do CR... */
-+ if (*string == 10) {
-+ while ((in_be16(&bdp->cbd_sc) & BD_SC_READY) != 0)
-+ ;
-+
-+ cpm_outp_addr = cpm2cpu_addr(in_be32(&bdp->cbd_bufaddr),
-+ pinfo);
-+ *cpm_outp_addr = 13;
-+
-+ out_be16(&bdp->cbd_datlen, 1);
-+ setbits16(&bdp->cbd_sc, BD_SC_READY);
-+
-+ if (in_be16(&bdp->cbd_sc) & BD_SC_WRAP)
-+ bdp = bdbase;
-+ else
-+ bdp++;
-+ }
-+ }
-+
-+ /*
-+ * Finally, Wait for transmitter & holding register to empty
-+ * and restore the IER
-+ */
-+ while ((in_be16(&bdp->cbd_sc) & BD_SC_READY) != 0)
-+ ;
-+
-+ pinfo->tx_cur = bdp;
-+}
-+#endif
-+
- #ifdef CONFIG_CONSOLE_POLL
- /* Serial polling routines for writing and reading from the uart while
- * in an interrupt or debug context.
-@@ -999,7 +1076,7 @@ static void cpm_put_poll_char(struct uar
- static char ch[2];
-
- ch[0] = (char)c;
-- cpm_uart_early_write(pinfo->port.line, ch, 1);
-+ cpm_uart_early_write(pinfo, ch, 1);
- }
- #endif /* CONFIG_CONSOLE_POLL */
-
-@@ -1130,9 +1207,6 @@ static void cpm_uart_console_write(struc
- u_int count)
- {
- struct uart_cpm_port *pinfo = &cpm_uart_ports[co->index];
-- unsigned int i;
-- cbd_t __iomem *bdp, *bdbase;
-- unsigned char *cp;
- unsigned long flags;
- int nolock = oops_in_progress;
-
-@@ -1142,66 +1216,7 @@ static void cpm_uart_console_write(struc
- spin_lock_irqsave(&pinfo->port.lock, flags);
- }
-
-- /* Get the address of the host memory buffer.
-- */
-- bdp = pinfo->tx_cur;
-- bdbase = pinfo->tx_bd_base;
--
-- /*
-- * Now, do each character. This is not as bad as it looks
-- * since this is a holding FIFO and not a transmitting FIFO.
-- * We could add the complexity of filling the entire transmit
-- * buffer, but we would just wait longer between accesses......
-- */
-- for (i = 0; i < count; i++, s++) {
-- /* Wait for transmitter fifo to empty.
-- * Ready indicates output is ready, and xmt is doing
-- * that, not that it is ready for us to send.
-- */
-- while ((in_be16(&bdp->cbd_sc) & BD_SC_READY) != 0)
-- ;
--
-- /* Send the character out.
-- * If the buffer address is in the CPM DPRAM, don't
-- * convert it.
-- */
-- cp = cpm2cpu_addr(in_be32(&bdp->cbd_bufaddr), pinfo);
-- *cp = *s;
--
-- out_be16(&bdp->cbd_datlen, 1);
-- setbits16(&bdp->cbd_sc, BD_SC_READY);
--
-- if (in_be16(&bdp->cbd_sc) & BD_SC_WRAP)
-- bdp = bdbase;
-- else
-- bdp++;
--
-- /* if a LF, also do CR... */
-- if (*s == 10) {
-- while ((in_be16(&bdp->cbd_sc) & BD_SC_READY) != 0)
-- ;
--
-- cp = cpm2cpu_addr(in_be32(&bdp->cbd_bufaddr), pinfo);
-- *cp = 13;
--
-- out_be16(&bdp->cbd_datlen, 1);
-- setbits16(&bdp->cbd_sc, BD_SC_READY);
--
-- if (in_be16(&bdp->cbd_sc) & BD_SC_WRAP)
-- bdp = bdbase;
-- else
-- bdp++;
-- }
-- }
--
-- /*
-- * Finally, Wait for transmitter & holding register to empty
-- * and restore the IER
-- */
-- while ((in_be16(&bdp->cbd_sc) & BD_SC_READY) != 0)
-- ;
--
-- pinfo->tx_cur = bdp;
-+ cpm_uart_early_write(pinfo, s, count);
-
- if (unlikely(nolock)) {
- local_irq_restore(flags);