linux-serial.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 00/13] Blackfin SPORT UART updates
@ 2010-03-09 17:25 Mike Frysinger
  2010-03-09 17:25 ` [PATCH 03/13] serial: bfin_sport_uart: remove unused peripheral pin lists Mike Frysinger
                   ` (5 more replies)
  0 siblings, 6 replies; 14+ messages in thread
From: Mike Frysinger @ 2010-03-09 17:25 UTC (permalink / raw)
  To: linux-serial, Alan Cox; +Cc: Andrew Morton, linux-kernel, uclinux-dist-devel

I was waiting for the mondo SPORT UART patch to be merged, so now that
that's done, we can push up the rest.

All of this stuff is fine for 2.6.34 or 2.6.35.  I don't believe any of
these are "really important" bugfixes.

Mike Frysinger (4):
  serial: bfin_sport_uart: drop useless status masks
  serial: bfin_sport_uart: pull in bfin_sport.h for SPORT defines
  serial: bfin_sport_uart: drop the experimental markings
  serial: bfin_sport_uart: drop redundant cpu depends

Sonic Zhang (9):
  serial: bfin_sport_uart: work around anomaly 05000473 (make 32bit
    fifo read atomic)
  serial: bfin_sport_uart: shorten the SPORT TX waiting loop
  serial: bfin_sport_uart: remove unused peripheral pin lists
  serial: bfin_sport_uart: add missing mapbase initialization
  serial: bfin_sport_uart: rename early platform driver class string
  serial: bfin_sport_uart: add support for CTS/RTS via GPIOs
  serial: bfin_sport_uart: protect changes to uart_port
  serial: bfin_sport_uart: zero sport_uart_port if allocated
    dynamically
  serial: bfin_sport_uart: only enable SPORT TX if data is to be sent

 drivers/serial/Kconfig           |   30 +++++-
 drivers/serial/bfin_sport_uart.c |  206 ++++++++++++++++++++++++++------------
 drivers/serial/bfin_sport_uart.h |   27 +++++-
 3 files changed, 194 insertions(+), 69 deletions(-)


^ permalink raw reply	[flat|nested] 14+ messages in thread

* [PATCH 01/13] serial: bfin_sport_uart: work around anomaly 05000473 (make 32bit fifo read atomic)
       [not found] ` <1268155540-8241-1-git-send-email-vapier-aBrp7R+bbdUdnm+yROfE0A@public.gmane.org>
@ 2010-03-09 17:25   ` Mike Frysinger
  2010-03-09 17:25   ` [PATCH 02/13] serial: bfin_sport_uart: shorten the SPORT TX waiting loop Mike Frysinger
                     ` (6 subsequent siblings)
  7 siblings, 0 replies; 14+ messages in thread
From: Mike Frysinger @ 2010-03-09 17:25 UTC (permalink / raw)
  To: linux-serial-u79uwXL29TY76Z2rM5mHXA, Alan Cox
  Cc: uclinux-dist-devel-ZG0+EudsQA8dtHy/vicBwGD2FQJk+8+b,
	Andrew Morton, linux-kernel-u79uwXL29TY76Z2rM5mHXA

From: Sonic Zhang <sonic.zhang-OyLXuOCK7orQT0dZR+AlfA@public.gmane.org>

We cannot let a 32-bit RX FIFO read be interrupted otherwise a fake RX
underflow error might be generated.

URL: http://blackfin.uclinux.org/gf/tracker/5145
Signed-off-by: Sonic Zhang <sonic.zhang-OyLXuOCK7orQT0dZR+AlfA@public.gmane.org>
Signed-off-by: Mike Frysinger <vapier-aBrp7R+bbdUdnm+yROfE0A@public.gmane.org>
---
 drivers/serial/bfin_sport_uart.h |   16 +++++++++++++++-
 1 files changed, 15 insertions(+), 1 deletions(-)

diff --git a/drivers/serial/bfin_sport_uart.h b/drivers/serial/bfin_sport_uart.h
index abe0361..9791fcc 100644
--- a/drivers/serial/bfin_sport_uart.h
+++ b/drivers/serial/bfin_sport_uart.h
@@ -37,7 +37,21 @@
 #define SPORT_GET_TFSDIV(sport)		bfin_read16(((sport)->port.membase + OFFSET_TFSDIV))
 #define SPORT_GET_TX(sport)		bfin_read16(((sport)->port.membase + OFFSET_TX))
 #define SPORT_GET_RX(sport)		bfin_read16(((sport)->port.membase + OFFSET_RX))
-#define SPORT_GET_RX32(sport)		bfin_read32(((sport)->port.membase + OFFSET_RX))
+/*
+ * If another interrupt fires while doing a 32-bit read from RX FIFO,
+ * a fake RX underflow error will be generated.  So disable interrupts
+ * to prevent interruption while reading the FIFO.
+ */
+#define SPORT_GET_RX32(sport) \
+({ \
+	unsigned int __ret; \
+	if (ANOMALY_05000473) \
+		local_irq_disable(); \
+	__ret = bfin_read32((sport)->port.membase + OFFSET_RX); \
+	if (ANOMALY_05000473) \
+		local_irq_enable(); \
+	__ret; \
+})
 #define SPORT_GET_RCR1(sport)		bfin_read16(((sport)->port.membase + OFFSET_RCR1))
 #define SPORT_GET_RCR2(sport)		bfin_read16(((sport)->port.membase + OFFSET_RCR2))
 #define SPORT_GET_RCLKDIV(sport)	bfin_read16(((sport)->port.membase + OFFSET_RCLKDIV))
-- 
1.7.0.2

^ permalink raw reply related	[flat|nested] 14+ messages in thread

* [PATCH 02/13] serial: bfin_sport_uart: shorten the SPORT TX waiting loop
       [not found] ` <1268155540-8241-1-git-send-email-vapier-aBrp7R+bbdUdnm+yROfE0A@public.gmane.org>
  2010-03-09 17:25   ` [PATCH 01/13] serial: bfin_sport_uart: work around anomaly 05000473 (make 32bit fifo read atomic) Mike Frysinger
@ 2010-03-09 17:25   ` Mike Frysinger
  2010-03-09 17:25   ` [PATCH 05/13] serial: bfin_sport_uart: rename early platform driver class string Mike Frysinger
                     ` (5 subsequent siblings)
  7 siblings, 0 replies; 14+ messages in thread
From: Mike Frysinger @ 2010-03-09 17:25 UTC (permalink / raw)
  To: linux-serial-u79uwXL29TY76Z2rM5mHXA, Alan Cox
  Cc: uclinux-dist-devel-ZG0+EudsQA8dtHy/vicBwGD2FQJk+8+b,
	Andrew Morton, linux-kernel-u79uwXL29TY76Z2rM5mHXA

From: Sonic Zhang <sonic.zhang-OyLXuOCK7orQT0dZR+AlfA@public.gmane.org>

The waiting loop to stop SPORT TX from TX interrupt is too long.  This may
block the SPORT RX interrupts and cause the RX FIFO to overflow. So, do
stop sport TX only after the last char in TX FIFO is moved into the shift
register.

Signed-off-by: Sonic Zhang <sonic.zhang-OyLXuOCK7orQT0dZR+AlfA@public.gmane.org>
Signed-off-by: Mike Frysinger <vapier-aBrp7R+bbdUdnm+yROfE0A@public.gmane.org>
---
 drivers/serial/bfin_sport_uart.c |    8 +++++++-
 1 files changed, 7 insertions(+), 1 deletions(-)

diff --git a/drivers/serial/bfin_sport_uart.c b/drivers/serial/bfin_sport_uart.c
index 7c72888..c34f02c 100644
--- a/drivers/serial/bfin_sport_uart.c
+++ b/drivers/serial/bfin_sport_uart.c
@@ -270,7 +270,13 @@ static void sport_uart_tx_chars(struct sport_uart_port *up)
 	}
 
 	if (uart_circ_empty(xmit) || uart_tx_stopped(&up->port)) {
-		sport_stop_tx(&up->port);
+		/* The waiting loop to stop SPORT TX from TX interrupt is
+		 * too long. This may block SPORT RX interrupts and cause
+		 * RX FIFO overflow. So, do stop sport TX only after the last
+		 * char in TX FIFO is moved into the shift register.
+		 */
+		if (SPORT_GET_STAT(up) & TXHRE)
+			sport_stop_tx(&up->port);
 		return;
 	}
 
-- 
1.7.0.2

^ permalink raw reply related	[flat|nested] 14+ messages in thread

* [PATCH 03/13] serial: bfin_sport_uart: remove unused peripheral pin lists
  2010-03-09 17:25 [PATCH 00/13] Blackfin SPORT UART updates Mike Frysinger
@ 2010-03-09 17:25 ` Mike Frysinger
  2010-03-09 17:25 ` [PATCH 04/13] serial: bfin_sport_uart: add missing mapbase initialization Mike Frysinger
                   ` (4 subsequent siblings)
  5 siblings, 0 replies; 14+ messages in thread
From: Mike Frysinger @ 2010-03-09 17:25 UTC (permalink / raw)
  To: linux-serial, Alan Cox
  Cc: Andrew Morton, linux-kernel, uclinux-dist-devel, Sonic Zhang

From: Sonic Zhang <sonic.zhang@analog.com>

All the resources are in the boards files now.

Signed-off-by: Sonic Zhang <sonic.zhang@analog.com>
Signed-off-by: Mike Frysinger <vapier@gentoo.org>
---
 drivers/serial/bfin_sport_uart.c |   21 ---------------------
 1 files changed, 0 insertions(+), 21 deletions(-)

diff --git a/drivers/serial/bfin_sport_uart.c b/drivers/serial/bfin_sport_uart.c
index c34f02c..8b0df19 100644
--- a/drivers/serial/bfin_sport_uart.c
+++ b/drivers/serial/bfin_sport_uart.c
@@ -38,27 +38,6 @@
 
 #include "bfin_sport_uart.h"
 
-#ifdef CONFIG_SERIAL_BFIN_SPORT0_UART
-unsigned short bfin_uart_pin_req_sport0[] =
-	{P_SPORT0_TFS, P_SPORT0_DTPRI, P_SPORT0_TSCLK, P_SPORT0_RFS, \
-	 P_SPORT0_DRPRI, P_SPORT0_RSCLK, P_SPORT0_DRSEC, P_SPORT0_DTSEC, 0};
-#endif
-#ifdef CONFIG_SERIAL_BFIN_SPORT1_UART
-unsigned short bfin_uart_pin_req_sport1[] =
-	{P_SPORT1_TFS, P_SPORT1_DTPRI, P_SPORT1_TSCLK, P_SPORT1_RFS, \
-	P_SPORT1_DRPRI, P_SPORT1_RSCLK, P_SPORT1_DRSEC, P_SPORT1_DTSEC, 0};
-#endif
-#ifdef CONFIG_SERIAL_BFIN_SPORT2_UART
-unsigned short bfin_uart_pin_req_sport2[] =
-	{P_SPORT2_TFS, P_SPORT2_DTPRI, P_SPORT2_TSCLK, P_SPORT2_RFS, \
-	P_SPORT2_DRPRI, P_SPORT2_RSCLK, P_SPORT2_DRSEC, P_SPORT2_DTSEC, 0};
-#endif
-#ifdef CONFIG_SERIAL_BFIN_SPORT3_UART
-unsigned short bfin_uart_pin_req_sport3[] =
-	{P_SPORT3_TFS, P_SPORT3_DTPRI, P_SPORT3_TSCLK, P_SPORT3_RFS, \
-	P_SPORT3_DRPRI, P_SPORT3_RSCLK, P_SPORT3_DRSEC, P_SPORT3_DTSEC, 0};
-#endif
-
 struct sport_uart_port {
 	struct uart_port	port;
 	int			err_irq;
-- 
1.7.0.2

^ permalink raw reply related	[flat|nested] 14+ messages in thread

* [PATCH 04/13] serial: bfin_sport_uart: add missing mapbase initialization
  2010-03-09 17:25 [PATCH 00/13] Blackfin SPORT UART updates Mike Frysinger
  2010-03-09 17:25 ` [PATCH 03/13] serial: bfin_sport_uart: remove unused peripheral pin lists Mike Frysinger
@ 2010-03-09 17:25 ` Mike Frysinger
  2010-03-09 17:25 ` [PATCH 06/13] serial: bfin_sport_uart: add support for CTS/RTS via GPIOs Mike Frysinger
                   ` (3 subsequent siblings)
  5 siblings, 0 replies; 14+ messages in thread
From: Mike Frysinger @ 2010-03-09 17:25 UTC (permalink / raw)
  To: linux-serial, Alan Cox
  Cc: Andrew Morton, linux-kernel, uclinux-dist-devel, Sonic Zhang

From: Sonic Zhang <sonic.zhang@analog.com>

The driver doesn't care about this, but the common serial core wants it.

Signed-off-by: Sonic Zhang <sonic.zhang@analog.com>
Signed-off-by: Mike Frysinger <vapier@gentoo.org>
---
 drivers/serial/bfin_sport_uart.c |    3 ++-
 1 files changed, 2 insertions(+), 1 deletions(-)

diff --git a/drivers/serial/bfin_sport_uart.c b/drivers/serial/bfin_sport_uart.c
index 8b0df19..18bc4a3 100644
--- a/drivers/serial/bfin_sport_uart.c
+++ b/drivers/serial/bfin_sport_uart.c
@@ -711,6 +711,7 @@ static int __devinit sport_uart_probe(struct platform_device *pdev)
 			ret = -ENXIO;
 			goto out_error_free_peripherals;
 		}
+		sport->port.mapbase = res->start;
 
 		sport->port.irq = platform_get_irq(pdev, 0);
 		if (sport->port.irq < 0) {
@@ -808,7 +809,7 @@ static int __init sport_uart_init(void)
 {
 	int ret;
 
-	pr_info("Serial: Blackfin uart over sport driver\n");
+	pr_info("Blackfin uart over sport driver\n");
 
 	ret = uart_register_driver(&sport_uart_reg);
 	if (ret) {
-- 
1.7.0.2


^ permalink raw reply related	[flat|nested] 14+ messages in thread

* [PATCH 05/13] serial: bfin_sport_uart: rename early platform driver class string
       [not found] ` <1268155540-8241-1-git-send-email-vapier-aBrp7R+bbdUdnm+yROfE0A@public.gmane.org>
  2010-03-09 17:25   ` [PATCH 01/13] serial: bfin_sport_uart: work around anomaly 05000473 (make 32bit fifo read atomic) Mike Frysinger
  2010-03-09 17:25   ` [PATCH 02/13] serial: bfin_sport_uart: shorten the SPORT TX waiting loop Mike Frysinger
@ 2010-03-09 17:25   ` Mike Frysinger
  2010-03-09 17:25   ` [PATCH 07/13] serial: bfin_sport_uart: protect changes to uart_port Mike Frysinger
                     ` (4 subsequent siblings)
  7 siblings, 0 replies; 14+ messages in thread
From: Mike Frysinger @ 2010-03-09 17:25 UTC (permalink / raw)
  To: linux-serial-u79uwXL29TY76Z2rM5mHXA, Alan Cox
  Cc: uclinux-dist-devel-ZG0+EudsQA8dtHy/vicBwGD2FQJk+8+b,
	Andrew Morton, linux-kernel-u79uwXL29TY76Z2rM5mHXA

From: Sonic Zhang <sonic.zhang-OyLXuOCK7orQT0dZR+AlfA@public.gmane.org>

Clarifies command line set up for devices between consoles and early
devices.

Signed-off-by: Sonic Zhang <sonic.zhang-OyLXuOCK7orQT0dZR+AlfA@public.gmane.org>
Signed-off-by: Mike Frysinger <vapier-aBrp7R+bbdUdnm+yROfE0A@public.gmane.org>
---
 drivers/serial/bfin_sport_uart.c |    7 +++++--
 1 files changed, 5 insertions(+), 2 deletions(-)

diff --git a/drivers/serial/bfin_sport_uart.c b/drivers/serial/bfin_sport_uart.c
index 18bc4a3..5101e38 100644
--- a/drivers/serial/bfin_sport_uart.c
+++ b/drivers/serial/bfin_sport_uart.c
@@ -526,6 +526,8 @@ struct uart_ops sport_uart_ops = {
 static struct sport_uart_port *bfin_sport_uart_ports[BFIN_SPORT_UART_MAX_PORTS];
 
 #ifdef CONFIG_SERIAL_BFIN_SPORT_CONSOLE
+#define CLASS_BFIN_SPORT_CONSOLE	"bfin-sport-console"
+
 static int __init
 sport_uart_console_setup(struct console *co, char *options)
 {
@@ -787,7 +789,7 @@ static struct platform_driver sport_uart_driver = {
 
 #ifdef CONFIG_SERIAL_BFIN_SPORT_CONSOLE
 static __initdata struct early_platform_driver early_sport_uart_driver = {
-	.class_str = DRV_NAME,
+	.class_str = CLASS_BFIN_SPORT_CONSOLE,
 	.pdrv = &sport_uart_driver,
 	.requested_id = EARLY_PLATFORM_ID_UNSET,
 };
@@ -796,7 +798,8 @@ static int __init sport_uart_rs_console_init(void)
 {
 	early_platform_driver_register(&early_sport_uart_driver, DRV_NAME);
 
-	early_platform_driver_probe(DRV_NAME, BFIN_SPORT_UART_MAX_PORTS, 0);
+	early_platform_driver_probe(CLASS_BFIN_SPORT_CONSOLE,
+		BFIN_SPORT_UART_MAX_PORTS, 0);
 
 	register_console(&sport_uart_console);
 
-- 
1.7.0.2

^ permalink raw reply related	[flat|nested] 14+ messages in thread

* [PATCH 06/13] serial: bfin_sport_uart: add support for CTS/RTS via GPIOs
  2010-03-09 17:25 [PATCH 00/13] Blackfin SPORT UART updates Mike Frysinger
  2010-03-09 17:25 ` [PATCH 03/13] serial: bfin_sport_uart: remove unused peripheral pin lists Mike Frysinger
  2010-03-09 17:25 ` [PATCH 04/13] serial: bfin_sport_uart: add missing mapbase initialization Mike Frysinger
@ 2010-03-09 17:25 ` Mike Frysinger
       [not found] ` <1268155540-8241-1-git-send-email-vapier-aBrp7R+bbdUdnm+yROfE0A@public.gmane.org>
                   ` (2 subsequent siblings)
  5 siblings, 0 replies; 14+ messages in thread
From: Mike Frysinger @ 2010-03-09 17:25 UTC (permalink / raw)
  To: linux-serial, Alan Cox
  Cc: Andrew Morton, linux-kernel, uclinux-dist-devel, Sonic Zhang

From: Sonic Zhang <sonic.zhang@analog.com>

Some people need flow control on their ports, so now boards can support
that via any GPIOs.

Signed-off-by: Sonic Zhang <sonic.zhang@analog.com>
Signed-off-by: Mike Frysinger <vapier@gentoo.org>
---
 drivers/serial/Kconfig           |   24 ++++++++
 drivers/serial/bfin_sport_uart.c |  111 ++++++++++++++++++++++++++++++++++----
 drivers/serial/bfin_sport_uart.h |   11 ++++
 3 files changed, 135 insertions(+), 11 deletions(-)

diff --git a/drivers/serial/Kconfig b/drivers/serial/Kconfig
index d6ff733..0d95b5f 100644
--- a/drivers/serial/Kconfig
+++ b/drivers/serial/Kconfig
@@ -1433,24 +1433,48 @@ config SERIAL_BFIN_SPORT0_UART
 	help
 	  Enable UART over SPORT0
 
+config SERIAL_BFIN_SPORT0_UART_CTSRTS
+	bool "Enable UART over SPORT0 hardware flow control"
+	depends on SERIAL_BFIN_SPORT0_UART
+	help
+	  Enable hardware flow control in the driver.
+
 config SERIAL_BFIN_SPORT1_UART
 	bool "Enable UART over SPORT1"
 	depends on SERIAL_BFIN_SPORT
 	help
 	  Enable UART over SPORT1
 
+config SERIAL_BFIN_SPORT1_UART_CTSRTS
+	bool "Enable UART over SPORT1 hardware flow control"
+	depends on SERIAL_BFIN_SPORT1_UART
+	help
+	  Enable hardware flow control in the driver.
+
 config SERIAL_BFIN_SPORT2_UART
 	bool "Enable UART over SPORT2"
 	depends on SERIAL_BFIN_SPORT && (BF54x || BF538 || BF539)
 	help
 	  Enable UART over SPORT2
 
+config SERIAL_BFIN_SPORT2_UART_CTSRTS
+	bool "Enable UART over SPORT2 hardware flow control"
+	depends on SERIAL_BFIN_SPORT2_UART
+	help
+	  Enable hardware flow control in the driver.
+
 config SERIAL_BFIN_SPORT3_UART
 	bool "Enable UART over SPORT3"
 	depends on SERIAL_BFIN_SPORT && (BF54x || BF538 || BF539)
 	help
 	  Enable UART over SPORT3
 
+config SERIAL_BFIN_SPORT3_UART_CTSRTS
+	bool "Enable UART over SPORT3 hardware flow control"
+	depends on SERIAL_BFIN_SPORT3_UART
+	help
+	  Enable hardware flow control in the driver.
+
 config SERIAL_TIMBERDALE
 	tristate "Support for timberdale UART"
 	select SERIAL_CORE
diff --git a/drivers/serial/bfin_sport_uart.c b/drivers/serial/bfin_sport_uart.c
index 5101e38..a720e63 100644
--- a/drivers/serial/bfin_sport_uart.c
+++ b/drivers/serial/bfin_sport_uart.c
@@ -47,6 +47,10 @@ struct sport_uart_port {
 	unsigned short		txmask2;
 	unsigned char		stopb;
 /*	unsigned char		parib; */
+#ifdef CONFIG_SERIAL_BFIN_SPORT_CTSRTS
+	int cts_pin;
+	int rts_pin;
+#endif
 };
 
 static void sport_uart_tx_chars(struct sport_uart_port *up);
@@ -197,6 +201,59 @@ static irqreturn_t sport_uart_err_irq(int irq, void *dev_id)
 	return IRQ_HANDLED;
 }
 
+#ifdef CONFIG_SERIAL_BFIN_SPORT_CTSRTS
+static unsigned int sport_get_mctrl(struct uart_port *port)
+{
+	struct sport_uart_port *up = (struct sport_uart_port *)port;
+	if (up->cts_pin < 0)
+		return TIOCM_CTS | TIOCM_DSR | TIOCM_CAR;
+
+	/* CTS PIN is negative assertive. */
+	if (SPORT_UART_GET_CTS(up))
+		return TIOCM_CTS | TIOCM_DSR | TIOCM_CAR;
+	else
+		return TIOCM_DSR | TIOCM_CAR;
+}
+
+static void sport_set_mctrl(struct uart_port *port, unsigned int mctrl)
+{
+	struct sport_uart_port *up = (struct sport_uart_port *)port;
+	if (up->rts_pin < 0)
+		return;
+
+	/* RTS PIN is negative assertive. */
+	if (mctrl & TIOCM_RTS)
+		SPORT_UART_ENABLE_RTS(up);
+	else
+		SPORT_UART_DISABLE_RTS(up);
+}
+
+/*
+ * Handle any change of modem status signal.
+ */
+static irqreturn_t sport_mctrl_cts_int(int irq, void *dev_id)
+{
+	struct sport_uart_port *up = (struct sport_uart_port *)dev_id;
+	unsigned int status;
+
+	status = sport_get_mctrl(&up->port);
+	uart_handle_cts_change(&up->port, status & TIOCM_CTS);
+
+	return IRQ_HANDLED;
+}
+#else
+static unsigned int sport_get_mctrl(struct uart_port *port)
+{
+	pr_debug("%s enter\n", __func__);
+	return TIOCM_CTS | TIOCM_CD | TIOCM_DSR;
+}
+
+static void sport_set_mctrl(struct uart_port *port, unsigned int mctrl)
+{
+	pr_debug("%s enter\n", __func__);
+}
+#endif
+
 /* Reqeust IRQ, Setup clock */
 static int sport_startup(struct uart_port *port)
 {
@@ -225,6 +282,21 @@ static int sport_startup(struct uart_port *port)
 		goto fail2;
 	}
 
+#ifdef CONFIG_SERIAL_BFIN_SPORT_CTSRTS
+	if (up->cts_pin >= 0) {
+		if (request_irq(gpio_to_irq(up->cts_pin),
+			sport_mctrl_cts_int,
+			IRQF_TRIGGER_RISING | IRQF_TRIGGER_FALLING |
+			IRQF_DISABLED, "BFIN_SPORT_UART_CTS", up)) {
+			up->cts_pin = -1;
+			dev_info(port->dev, "Unable to attach BlackFin UART \
+				over SPORT CTS interrupt. So, disable it.\n");
+		}
+	}
+	if (up->rts_pin >= 0)
+		gpio_direction_output(up->rts_pin, 0);
+#endif
+
 	return 0;
  fail2:
 	free_irq(up->port.irq+1, up);
@@ -282,17 +354,6 @@ static unsigned int sport_tx_empty(struct uart_port *port)
 		return 0;
 }
 
-static unsigned int sport_get_mctrl(struct uart_port *port)
-{
-	pr_debug("%s enter\n", __func__);
-	return (TIOCM_CTS | TIOCM_CD | TIOCM_DSR);
-}
-
-static void sport_set_mctrl(struct uart_port *port, unsigned int mctrl)
-{
-	pr_debug("%s enter\n", __func__);
-}
-
 static void sport_stop_tx(struct uart_port *port)
 {
 	struct sport_uart_port *up = (struct sport_uart_port *)port;
@@ -363,6 +424,10 @@ static void sport_shutdown(struct uart_port *port)
 	free_irq(up->port.irq, up);
 	free_irq(up->port.irq+1, up);
 	free_irq(up->err_irq, up);
+#ifdef CONFIG_SERIAL_BFIN_SPORT_CTSRTS
+	if (up->cts_pin >= 0)
+		free_irq(gpio_to_irq(up->cts_pin), up);
+#endif
 }
 
 static const char *sport_type(struct uart_port *port)
@@ -535,7 +600,11 @@ sport_uart_console_setup(struct console *co, char *options)
 	int baud = 57600;
 	int bits = 8;
 	int parity = 'n';
+# ifdef CONFIG_SERIAL_BFIN_SPORT_CTSRTS
+	int flow = 'r';
+# else
 	int flow = 'n';
+# endif
 
 	/* Check whether an invalid uart number has been specified */
 	if (co->index < 0 || co->index >= BFIN_SPORT_UART_MAX_PORTS)
@@ -728,6 +797,22 @@ static int __devinit sport_uart_probe(struct platform_device *pdev)
 			ret = -ENOENT;
 			goto out_error_unmap;
 		}
+#ifdef CONFIG_SERIAL_BFIN_SPORT_CTSRTS
+		res = platform_get_resource(pdev, IORESOURCE_IO, 0);
+		if (res == NULL)
+			sport->cts_pin = -1;
+		else
+			sport->cts_pin = res->start;
+
+		res = platform_get_resource(pdev, IORESOURCE_IO, 1);
+		if (res == NULL)
+			sport->rts_pin = -1;
+		else
+			sport->rts_pin = res->start;
+
+		if (sport->rts_pin >= 0)
+			gpio_request(sport->rts_pin, DRV_NAME);
+#endif
 	}
 
 #ifdef CONFIG_SERIAL_BFIN_SPORT_CONSOLE
@@ -766,6 +851,10 @@ static int __devexit sport_uart_remove(struct platform_device *pdev)
 
 	if (sport) {
 		uart_remove_one_port(&sport_uart_reg, &sport->port);
+#ifdef CONFIG_SERIAL_BFIN_CTSRTS
+		if (sport->rts_pin >= 0)
+			gpio_free(sport->rts_pin);
+#endif
 		iounmap(sport->port.membase);
 		peripheral_free_list(
 			(unsigned short *)pdev->dev.platform_data);
diff --git a/drivers/serial/bfin_sport_uart.h b/drivers/serial/bfin_sport_uart.h
index 9791fcc..9ce253e 100644
--- a/drivers/serial/bfin_sport_uart.h
+++ b/drivers/serial/bfin_sport_uart.h
@@ -72,4 +72,15 @@
 
 #define SPORT_TX_FIFO_SIZE	8
 
+#define SPORT_UART_GET_CTS(x)		gpio_get_value(x->cts_pin)
+#define SPORT_UART_DISABLE_RTS(x)	gpio_set_value(x->rts_pin, 1)
+#define SPORT_UART_ENABLE_RTS(x)	gpio_set_value(x->rts_pin, 0)
+
+#if defined(CONFIG_SERIAL_BFIN_SPORT0_UART_CTSRTS) \
+	|| defined(CONFIG_SERIAL_BFIN_SPORT1_UART_CTSRTS) \
+	|| defined(CONFIG_SERIAL_BFIN_SPORT2_UART_CTSRTS) \
+	|| defined(CONFIG_SERIAL_BFIN_SPORT3_UART_CTSRTS)
+# define CONFIG_SERIAL_BFIN_SPORT_CTSRTS
+#endif
+
 #endif /* _BFIN_SPORT_UART_H */
-- 
1.7.0.2


^ permalink raw reply related	[flat|nested] 14+ messages in thread

* [PATCH 07/13] serial: bfin_sport_uart: protect changes to uart_port
       [not found] ` <1268155540-8241-1-git-send-email-vapier-aBrp7R+bbdUdnm+yROfE0A@public.gmane.org>
                     ` (2 preceding siblings ...)
  2010-03-09 17:25   ` [PATCH 05/13] serial: bfin_sport_uart: rename early platform driver class string Mike Frysinger
@ 2010-03-09 17:25   ` Mike Frysinger
  2010-03-09 17:25   ` [PATCH 08/13] serial: bfin_sport_uart: zero sport_uart_port if allocated dynamically Mike Frysinger
                     ` (3 subsequent siblings)
  7 siblings, 0 replies; 14+ messages in thread
From: Mike Frysinger @ 2010-03-09 17:25 UTC (permalink / raw)
  To: linux-serial-u79uwXL29TY76Z2rM5mHXA, Alan Cox
  Cc: uclinux-dist-devel-ZG0+EudsQA8dtHy/vicBwGD2FQJk+8+b,
	Andrew Morton, linux-kernel-u79uwXL29TY76Z2rM5mHXA

From: Sonic Zhang <sonic.zhang-OyLXuOCK7orQT0dZR+AlfA@public.gmane.org>

Common serial API says we need to grab the port lock before modifying
the port state to prevent inconsistent state between threads.

Signed-off-by: Sonic Zhang <sonic.zhang-OyLXuOCK7orQT0dZR+AlfA@public.gmane.org>
Signed-off-by: Mike Frysinger <vapier-aBrp7R+bbdUdnm+yROfE0A@public.gmane.org>
---
 drivers/serial/bfin_sport_uart.c |    4 ++--
 1 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/drivers/serial/bfin_sport_uart.c b/drivers/serial/bfin_sport_uart.c
index a720e63..ba5a8b7 100644
--- a/drivers/serial/bfin_sport_uart.c
+++ b/drivers/serial/bfin_sport_uart.c
@@ -497,6 +497,8 @@ static void sport_set_termios(struct uart_port *port,
 		/* up->parib = 1; */
 	}
 
+	spin_lock_irqsave(&up->port.lock, flags);
+
 	port->read_status_mask = OE;
 	if (termios->c_iflag & INPCK)
 		port->read_status_mask |= (FE | PE);
@@ -537,8 +539,6 @@ static void sport_set_termios(struct uart_port *port,
 	/* uart baud rate */
 	port->uartclk = uart_get_baud_rate(port, termios, old, 0, get_sclk()/16);
 
-	spin_lock_irqsave(&up->port.lock, flags);
-
 	/* Disable UART */
 	SPORT_PUT_TCR1(up, SPORT_GET_TCR1(up) & ~TSPEN);
 	SPORT_PUT_RCR1(up, SPORT_GET_RCR1(up) & ~RSPEN);
-- 
1.7.0.2

^ permalink raw reply related	[flat|nested] 14+ messages in thread

* [PATCH 08/13] serial: bfin_sport_uart: zero sport_uart_port if allocated dynamically
       [not found] ` <1268155540-8241-1-git-send-email-vapier-aBrp7R+bbdUdnm+yROfE0A@public.gmane.org>
                     ` (3 preceding siblings ...)
  2010-03-09 17:25   ` [PATCH 07/13] serial: bfin_sport_uart: protect changes to uart_port Mike Frysinger
@ 2010-03-09 17:25   ` Mike Frysinger
  2010-03-09 17:25   ` [PATCH 09/13] serial: bfin_sport_uart: drop useless status masks Mike Frysinger
                     ` (2 subsequent siblings)
  7 siblings, 0 replies; 14+ messages in thread
From: Mike Frysinger @ 2010-03-09 17:25 UTC (permalink / raw)
  To: linux-serial-u79uwXL29TY76Z2rM5mHXA, Alan Cox
  Cc: uclinux-dist-devel-ZG0+EudsQA8dtHy/vicBwGD2FQJk+8+b,
	Andrew Morton, linux-kernel-u79uwXL29TY76Z2rM5mHXA

From: Sonic Zhang <sonic.zhang-OyLXuOCK7orQT0dZR+AlfA@public.gmane.org>

Need to initialize the SPORT state rather than using random memory.

Signed-off-by: Sonic Zhang <sonic.zhang-OyLXuOCK7orQT0dZR+AlfA@public.gmane.org>
Signed-off-by: Mike Frysinger <vapier-aBrp7R+bbdUdnm+yROfE0A@public.gmane.org>
---
 drivers/serial/bfin_sport_uart.c |    4 ++--
 1 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/drivers/serial/bfin_sport_uart.c b/drivers/serial/bfin_sport_uart.c
index ba5a8b7..871f6fd 100644
--- a/drivers/serial/bfin_sport_uart.c
+++ b/drivers/serial/bfin_sport_uart.c
@@ -745,11 +745,11 @@ static int __devinit sport_uart_probe(struct platform_device *pdev)
 
 	if (bfin_sport_uart_ports[pdev->id] == NULL) {
 		bfin_sport_uart_ports[pdev->id] =
-			kmalloc(sizeof(struct sport_uart_port), GFP_KERNEL);
+			kzalloc(sizeof(struct sport_uart_port), GFP_KERNEL);
 		sport = bfin_sport_uart_ports[pdev->id];
 		if (!sport) {
 			dev_err(&pdev->dev,
-				"Fail to kmalloc sport_uart_port\n");
+				"Fail to malloc sport_uart_port\n");
 			return -ENOMEM;
 		}
 
-- 
1.7.0.2

^ permalink raw reply related	[flat|nested] 14+ messages in thread

* [PATCH 09/13] serial: bfin_sport_uart: drop useless status masks
       [not found] ` <1268155540-8241-1-git-send-email-vapier-aBrp7R+bbdUdnm+yROfE0A@public.gmane.org>
                     ` (4 preceding siblings ...)
  2010-03-09 17:25   ` [PATCH 08/13] serial: bfin_sport_uart: zero sport_uart_port if allocated dynamically Mike Frysinger
@ 2010-03-09 17:25   ` Mike Frysinger
  2010-03-09 17:25   ` [PATCH 12/13] serial: bfin_sport_uart: drop the experimental markings Mike Frysinger
  2010-03-09 17:25   ` [PATCH 13/13] serial: bfin_sport_uart: drop redundant cpu depends Mike Frysinger
  7 siblings, 0 replies; 14+ messages in thread
From: Mike Frysinger @ 2010-03-09 17:25 UTC (permalink / raw)
  To: linux-serial-u79uwXL29TY76Z2rM5mHXA, Alan Cox
  Cc: uclinux-dist-devel-ZG0+EudsQA8dtHy/vicBwGD2FQJk+8+b,
	Andrew Morton, linux-kernel-u79uwXL29TY76Z2rM5mHXA

These were all copied over from the Blackfin UART driver, but they don't
make sense here because these bits are all specific to the Blackfin UART.

Signed-off-by: Mike Frysinger <vapier-aBrp7R+bbdUdnm+yROfE0A@public.gmane.org>
---
 drivers/serial/bfin_sport_uart.c |   17 +----------------
 1 files changed, 1 insertions(+), 16 deletions(-)

diff --git a/drivers/serial/bfin_sport_uart.c b/drivers/serial/bfin_sport_uart.c
index 871f6fd..1b22c59 100644
--- a/drivers/serial/bfin_sport_uart.c
+++ b/drivers/serial/bfin_sport_uart.c
@@ -499,27 +499,12 @@ static void sport_set_termios(struct uart_port *port,
 
 	spin_lock_irqsave(&up->port.lock, flags);
 
-	port->read_status_mask = OE;
-	if (termios->c_iflag & INPCK)
-		port->read_status_mask |= (FE | PE);
-	if (termios->c_iflag & (BRKINT | PARMRK))
-		port->read_status_mask |= BI;
+	port->read_status_mask = 0;
 
 	/*
 	 * Characters to ignore
 	 */
 	port->ignore_status_mask = 0;
-	if (termios->c_iflag & IGNPAR)
-		port->ignore_status_mask |= FE | PE;
-	if (termios->c_iflag & IGNBRK) {
-		port->ignore_status_mask |= BI;
-		/*
-		 * If we're ignoring parity and break indicators,
-		 * ignore overruns too (for real raw support).
-		 */
-		if (termios->c_iflag & IGNPAR)
-			port->ignore_status_mask |= OE;
-	}
 
 	/* RX extract mask */
 	up->rxmask = 0x01 | (((up->csize + up->stopb) * 2 - 1) << 0x8);
-- 
1.7.0.2

^ permalink raw reply related	[flat|nested] 14+ messages in thread

* [PATCH 10/13] serial: bfin_sport_uart: only enable SPORT TX if data is to be sent
  2010-03-09 17:25 [PATCH 00/13] Blackfin SPORT UART updates Mike Frysinger
                   ` (3 preceding siblings ...)
       [not found] ` <1268155540-8241-1-git-send-email-vapier-aBrp7R+bbdUdnm+yROfE0A@public.gmane.org>
@ 2010-03-09 17:25 ` Mike Frysinger
  2010-03-09 17:25 ` [PATCH 11/13] serial: bfin_sport_uart: pull in bfin_sport.h for SPORT defines Mike Frysinger
  5 siblings, 0 replies; 14+ messages in thread
From: Mike Frysinger @ 2010-03-09 17:25 UTC (permalink / raw)
  To: linux-serial, Alan Cox
  Cc: Andrew Morton, linux-kernel, uclinux-dist-devel, Sonic Zhang

From: Sonic Zhang <sonic.zhang@analog.com>

Rather than always turn on the SPORT TX interrupt, only do it when we've
actually queued up data for transmission.  This avoids useless interrupt
processing.

Signed-off-by: Sonic Zhang <sonic.zhang@analog.com>
Signed-off-by: Mike Frysinger <vapier@gentoo.org>
---
 drivers/serial/bfin_sport_uart.c |   30 +++++++++++++++++++++---------
 1 files changed, 21 insertions(+), 9 deletions(-)

diff --git a/drivers/serial/bfin_sport_uart.c b/drivers/serial/bfin_sport_uart.c
index 1b22c59..9d777e4 100644
--- a/drivers/serial/bfin_sport_uart.c
+++ b/drivers/serial/bfin_sport_uart.c
@@ -53,7 +53,7 @@ struct sport_uart_port {
 #endif
 };
 
-static void sport_uart_tx_chars(struct sport_uart_port *up);
+static int sport_uart_tx_chars(struct sport_uart_port *up);
 static void sport_stop_tx(struct uart_port *port);
 
 static inline void tx_one_byte(struct sport_uart_port *up, unsigned int value)
@@ -306,18 +306,24 @@ static int sport_startup(struct uart_port *port)
 	return ret;
 }
 
-static void sport_uart_tx_chars(struct sport_uart_port *up)
+/*
+ * sport_uart_tx_chars
+ *
+ * ret 1 means need to enable sport.
+ * ret 0 means do nothing.
+ */
+static int sport_uart_tx_chars(struct sport_uart_port *up)
 {
 	struct circ_buf *xmit = &up->port.state->xmit;
 
 	if (SPORT_GET_STAT(up) & TXF)
-		return;
+		return 0;
 
 	if (up->port.x_char) {
 		tx_one_byte(up, up->port.x_char);
 		up->port.icount.tx++;
 		up->port.x_char = 0;
-		return;
+		return 1;
 	}
 
 	if (uart_circ_empty(xmit) || uart_tx_stopped(&up->port)) {
@@ -328,7 +334,7 @@ static void sport_uart_tx_chars(struct sport_uart_port *up)
 		 */
 		if (SPORT_GET_STAT(up) & TXHRE)
 			sport_stop_tx(&up->port);
-		return;
+		return 0;
 	}
 
 	while(!(SPORT_GET_STAT(up) & TXF) && !uart_circ_empty(xmit)) {
@@ -339,6 +345,8 @@ static void sport_uart_tx_chars(struct sport_uart_port *up)
 
 	if (uart_circ_chars_pending(xmit) < WAKEUP_CHARS)
 		uart_write_wakeup(&up->port);
+
+	return 1;
 }
 
 static unsigned int sport_tx_empty(struct uart_port *port)
@@ -360,6 +368,9 @@ static void sport_stop_tx(struct uart_port *port)
 
 	pr_debug("%s enter\n", __func__);
 
+	if (!(SPORT_GET_TCR1(up) & TSPEN))
+		return;
+
 	/* Although the hold register is empty, last byte is still in shift
 	 * register and not sent out yet. So, put a dummy data into TX FIFO.
 	 * Then, sport tx stops when last byte is shift out and the dummy
@@ -382,11 +393,12 @@ static void sport_start_tx(struct uart_port *port)
 	pr_debug("%s enter\n", __func__);
 
 	/* Write data into SPORT FIFO before enable SPROT to transmit */
-	sport_uart_tx_chars(up);
+	if (sport_uart_tx_chars(up)) {
+		/* Enable transmit, then an interrupt will generated */
+		SPORT_PUT_TCR1(up, (SPORT_GET_TCR1(up) | TSPEN));
+		SSYNC();
+	}
 
-	/* Enable transmit, then an interrupt will generated */
-	SPORT_PUT_TCR1(up, (SPORT_GET_TCR1(up) | TSPEN));
-	SSYNC();
 	pr_debug("%s exit\n", __func__);
 }
 
-- 
1.7.0.2

^ permalink raw reply related	[flat|nested] 14+ messages in thread

* [PATCH 11/13] serial: bfin_sport_uart: pull in bfin_sport.h for SPORT defines
  2010-03-09 17:25 [PATCH 00/13] Blackfin SPORT UART updates Mike Frysinger
                   ` (4 preceding siblings ...)
  2010-03-09 17:25 ` [PATCH 10/13] serial: bfin_sport_uart: only enable SPORT TX if data is to be sent Mike Frysinger
@ 2010-03-09 17:25 ` Mike Frysinger
  5 siblings, 0 replies; 14+ messages in thread
From: Mike Frysinger @ 2010-03-09 17:25 UTC (permalink / raw)
  To: linux-serial, Alan Cox; +Cc: Andrew Morton, linux-kernel, uclinux-dist-devel

Now that the SPORT MMR defines have been unified, switch over to it.

Signed-off-by: Mike Frysinger <vapier@gentoo.org>
---
 drivers/serial/bfin_sport_uart.c |    1 +
 1 files changed, 1 insertions(+), 0 deletions(-)

diff --git a/drivers/serial/bfin_sport_uart.c b/drivers/serial/bfin_sport_uart.c
index 9d777e4..840faf5 100644
--- a/drivers/serial/bfin_sport_uart.c
+++ b/drivers/serial/bfin_sport_uart.c
@@ -33,6 +33,7 @@
 #include <linux/tty_flip.h>
 #include <linux/serial_core.h>
 
+#include <asm/bfin_sport.h>
 #include <asm/delay.h>
 #include <asm/portmux.h>
 
-- 
1.7.0.2


^ permalink raw reply related	[flat|nested] 14+ messages in thread

* [PATCH 12/13] serial: bfin_sport_uart: drop the experimental markings
       [not found] ` <1268155540-8241-1-git-send-email-vapier-aBrp7R+bbdUdnm+yROfE0A@public.gmane.org>
                     ` (5 preceding siblings ...)
  2010-03-09 17:25   ` [PATCH 09/13] serial: bfin_sport_uart: drop useless status masks Mike Frysinger
@ 2010-03-09 17:25   ` Mike Frysinger
  2010-03-09 17:25   ` [PATCH 13/13] serial: bfin_sport_uart: drop redundant cpu depends Mike Frysinger
  7 siblings, 0 replies; 14+ messages in thread
From: Mike Frysinger @ 2010-03-09 17:25 UTC (permalink / raw)
  To: linux-serial-u79uwXL29TY76Z2rM5mHXA, Alan Cox
  Cc: uclinux-dist-devel-ZG0+EudsQA8dtHy/vicBwGD2FQJk+8+b,
	Andrew Morton, linux-kernel-u79uwXL29TY76Z2rM5mHXA

Should be stable now ...

Signed-off-by: Mike Frysinger <vapier-aBrp7R+bbdUdnm+yROfE0A@public.gmane.org>
---
 drivers/serial/Kconfig |    4 ++--
 1 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/drivers/serial/Kconfig b/drivers/serial/Kconfig
index 0d95b5f..223a0e8 100644
--- a/drivers/serial/Kconfig
+++ b/drivers/serial/Kconfig
@@ -1413,8 +1413,8 @@ config SERIAL_SC26XX_CONSOLE
 	  Support for Console on SC2681/SC2692 serial ports.
 
 config SERIAL_BFIN_SPORT
-	tristate "Blackfin SPORT emulate UART (EXPERIMENTAL)"
-	depends on BLACKFIN && EXPERIMENTAL
+	tristate "Blackfin SPORT emulate UART"
+	depends on BLACKFIN
 	select SERIAL_CORE
 	help
 	  Enable SPORT emulate UART on Blackfin series.
-- 
1.7.0.2

^ permalink raw reply related	[flat|nested] 14+ messages in thread

* [PATCH 13/13] serial: bfin_sport_uart: drop redundant cpu depends
       [not found] ` <1268155540-8241-1-git-send-email-vapier-aBrp7R+bbdUdnm+yROfE0A@public.gmane.org>
                     ` (6 preceding siblings ...)
  2010-03-09 17:25   ` [PATCH 12/13] serial: bfin_sport_uart: drop the experimental markings Mike Frysinger
@ 2010-03-09 17:25   ` Mike Frysinger
  7 siblings, 0 replies; 14+ messages in thread
From: Mike Frysinger @ 2010-03-09 17:25 UTC (permalink / raw)
  To: linux-serial-u79uwXL29TY76Z2rM5mHXA, Alan Cox
  Cc: uclinux-dist-devel-ZG0+EudsQA8dtHy/vicBwGD2FQJk+8+b,
	Andrew Morton, linux-kernel-u79uwXL29TY76Z2rM5mHXA

The BF54xM procs imply the related BF54x define, so no need to check both.

Signed-off-by: Mike Frysinger <vapier-aBrp7R+bbdUdnm+yROfE0A@public.gmane.org>
---
 drivers/serial/Kconfig |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/drivers/serial/Kconfig b/drivers/serial/Kconfig
index 223a0e8..fc117b6 100644
--- a/drivers/serial/Kconfig
+++ b/drivers/serial/Kconfig
@@ -1429,7 +1429,7 @@ config SERIAL_BFIN_SPORT_CONSOLE
 
 config SERIAL_BFIN_SPORT0_UART
 	bool "Enable UART over SPORT0"
-	depends on SERIAL_BFIN_SPORT && !(BF542 || BF542M || BF544 || BF544M)
+	depends on SERIAL_BFIN_SPORT && !(BF542 || BF544)
 	help
 	  Enable UART over SPORT0
 
-- 
1.7.0.2

^ permalink raw reply related	[flat|nested] 14+ messages in thread

end of thread, other threads:[~2010-03-09 17:25 UTC | newest]

Thread overview: 14+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2010-03-09 17:25 [PATCH 00/13] Blackfin SPORT UART updates Mike Frysinger
2010-03-09 17:25 ` [PATCH 03/13] serial: bfin_sport_uart: remove unused peripheral pin lists Mike Frysinger
2010-03-09 17:25 ` [PATCH 04/13] serial: bfin_sport_uart: add missing mapbase initialization Mike Frysinger
2010-03-09 17:25 ` [PATCH 06/13] serial: bfin_sport_uart: add support for CTS/RTS via GPIOs Mike Frysinger
     [not found] ` <1268155540-8241-1-git-send-email-vapier-aBrp7R+bbdUdnm+yROfE0A@public.gmane.org>
2010-03-09 17:25   ` [PATCH 01/13] serial: bfin_sport_uart: work around anomaly 05000473 (make 32bit fifo read atomic) Mike Frysinger
2010-03-09 17:25   ` [PATCH 02/13] serial: bfin_sport_uart: shorten the SPORT TX waiting loop Mike Frysinger
2010-03-09 17:25   ` [PATCH 05/13] serial: bfin_sport_uart: rename early platform driver class string Mike Frysinger
2010-03-09 17:25   ` [PATCH 07/13] serial: bfin_sport_uart: protect changes to uart_port Mike Frysinger
2010-03-09 17:25   ` [PATCH 08/13] serial: bfin_sport_uart: zero sport_uart_port if allocated dynamically Mike Frysinger
2010-03-09 17:25   ` [PATCH 09/13] serial: bfin_sport_uart: drop useless status masks Mike Frysinger
2010-03-09 17:25   ` [PATCH 12/13] serial: bfin_sport_uart: drop the experimental markings Mike Frysinger
2010-03-09 17:25   ` [PATCH 13/13] serial: bfin_sport_uart: drop redundant cpu depends Mike Frysinger
2010-03-09 17:25 ` [PATCH 10/13] serial: bfin_sport_uart: only enable SPORT TX if data is to be sent Mike Frysinger
2010-03-09 17:25 ` [PATCH 11/13] serial: bfin_sport_uart: pull in bfin_sport.h for SPORT defines Mike Frysinger

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).