From c16c3ca79abcb69a9e45f7c15f8358b3915c0e49 Mon Sep 17 00:00:00 2001
From: Mike Frysinger <michael.frysinger@analog.com>
Date: Mon, 11 Jun 2007 15:31:30 +0800
Subject: Blackfin serial driver: hook up our UARTs STP bit with userspaces
 CMSPAR

so we can now do spaced/marked parity

Signed-off-by: Mike Frysinger <michael.frysinger@analog.com>
Signed-off-by: Bryan Wu <bryan.wu@analog.com>
---
 drivers/serial/bfin_5xx.c | 2 ++
 1 file changed, 2 insertions(+)

(limited to 'drivers')

diff --git a/drivers/serial/bfin_5xx.c b/drivers/serial/bfin_5xx.c
index 787dc7168f3..aeb3cc23a81 100644
--- a/drivers/serial/bfin_5xx.c
+++ b/drivers/serial/bfin_5xx.c
@@ -629,6 +629,8 @@ bfin_serial_set_termios(struct uart_port *port, struct ktermios *termios,
 		lcr |= PEN;
 		if (!(termios->c_cflag & PARODD))
 			lcr |= EPS;
+		if (termios->c_cflag & CMSPAR)
+			lcr |= STP;
 	}
 
 	port->read_status_mask = OE;
-- 
cgit v1.2.3-18-g5258


From 9808901b6c63a1c850b072e624c228901a9eaf10 Mon Sep 17 00:00:00 2001
From: Mike Frysinger <michael.frysinger@analog.com>
Date: Mon, 11 Jun 2007 15:31:30 +0800
Subject: Blackfin serial driver: ignore framing and parity errors

if we get a break signal, we want to ignore framing and parity errors
because those will always be set (by nature of the signal)

Signed-off-by: Mike Frysinger <michael.frysinger@analog.com>
Signed-off-by: Bryan Wu <bryan.wu@analog.com>
---
 drivers/serial/bfin_5xx.c | 2 ++
 1 file changed, 2 insertions(+)

(limited to 'drivers')

diff --git a/drivers/serial/bfin_5xx.c b/drivers/serial/bfin_5xx.c
index aeb3cc23a81..9d356fc96a5 100644
--- a/drivers/serial/bfin_5xx.c
+++ b/drivers/serial/bfin_5xx.c
@@ -185,6 +185,7 @@ static void bfin_serial_rx_chars(struct bfin_serial_port *uart)
 		uart->port.icount.brk++;
 		if (uart_handle_break(&uart->port))
 			goto ignore_char;
+		status &= ~(PE | FE);
 	}
 	if (status & PE)
 		uart->port.icount.parity++;
@@ -341,6 +342,7 @@ static void bfin_serial_dma_rx_chars(struct bfin_serial_port *uart)
 		uart->port.icount.brk++;
 		if (uart_handle_break(&uart->port))
 			goto dma_ignore_char;
+		status &= ~(PE | FE);
 	}
 	if (status & PE)
 		uart->port.icount.parity++;
-- 
cgit v1.2.3-18-g5258


From cf68676222e54cd0a31efd968da00e65f9a0963f Mon Sep 17 00:00:00 2001
From: Mike Frysinger <michael.frysinger@analog.com>
Date: Mon, 11 Jun 2007 16:12:49 +0800
Subject: Blackfin serial driver: actually implement the break_ctl() function

Signed-off-by: Mike Frysinger <michael.frysinger@analog.com>
Signed-off-by: Bryan Wu <bryan.wu@analog.com>
---
 drivers/serial/bfin_5xx.c | 8 ++++++++
 1 file changed, 8 insertions(+)

(limited to 'drivers')

diff --git a/drivers/serial/bfin_5xx.c b/drivers/serial/bfin_5xx.c
index 9d356fc96a5..a9d20271782 100644
--- a/drivers/serial/bfin_5xx.c
+++ b/drivers/serial/bfin_5xx.c
@@ -519,6 +519,14 @@ static void bfin_serial_mctrl_check(struct bfin_serial_port *uart)
  */
 static void bfin_serial_break_ctl(struct uart_port *port, int break_state)
 {
+	struct bfin_serial_port *uart = (struct bfin_serial_port *)port;
+	u16 lcr = UART_GET_LCR(uart);
+	if (break_state)
+		lcr |= SB;
+	else
+		lcr &= ~SB;
+	UART_PUT_LCR(uart, lcr);
+	SSYNC();
 }
 
 static int bfin_serial_startup(struct uart_port *port)
-- 
cgit v1.2.3-18-g5258


From 19aa6382e3c927b8ec5caec7b74c3dc555101146 Mon Sep 17 00:00:00 2001
From: Mike Frysinger <michael.frysinger@analog.com>
Date: Mon, 11 Jun 2007 16:16:45 +0800
Subject: Blackfin serial driver: decouple PARODD and CMSPAR checking from
 PARENB

as the termios info does not stipulate that the former are dependent on the latter

Signed-off-by: Mike Frysinger <michael.frysinger@analog.com>
Signed-off-by: Bryan Wu <bryan.wu@analog.com>
---
 drivers/serial/bfin_5xx.c | 11 +++++------
 1 file changed, 5 insertions(+), 6 deletions(-)

(limited to 'drivers')

diff --git a/drivers/serial/bfin_5xx.c b/drivers/serial/bfin_5xx.c
index a9d20271782..22569bd5d82 100644
--- a/drivers/serial/bfin_5xx.c
+++ b/drivers/serial/bfin_5xx.c
@@ -635,13 +635,12 @@ bfin_serial_set_termios(struct uart_port *port, struct ktermios *termios,
 
 	if (termios->c_cflag & CSTOPB)
 		lcr |= STB;
-	if (termios->c_cflag & PARENB) {
+	if (termios->c_cflag & PARENB)
 		lcr |= PEN;
-		if (!(termios->c_cflag & PARODD))
-			lcr |= EPS;
-		if (termios->c_cflag & CMSPAR)
-			lcr |= STP;
-	}
+	if (!(termios->c_cflag & PARODD))
+		lcr |= EPS;
+	if (termios->c_cflag & CMSPAR)
+		lcr |= STP;
 
 	port->read_status_mask = OE;
 	if (termios->c_iflag & INPCK)
-- 
cgit v1.2.3-18-g5258


From 27bb9e79bcfedc1888d23c3c212c189fa8534fe7 Mon Sep 17 00:00:00 2001
From: Mike Frysinger <michael.frysinger@analog.com>
Date: Mon, 11 Jun 2007 15:31:30 +0800
Subject: Blackfin SPI driver: tweak spi cleanup function to match newer kernel
 changes

Signed-off-by: Mike Frysinger <michael.frysinger@analog.com>
Signed-off-by: Bryan Wu <bryan.wu@analog.com>
Cc: David Brownell <dbrownell@users.sourceforge.net>
---
 drivers/spi/spi_bfin5xx.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

(limited to 'drivers')

diff --git a/drivers/spi/spi_bfin5xx.c b/drivers/spi/spi_bfin5xx.c
index 7d2d9ec6cac..a2d4884752e 100644
--- a/drivers/spi/spi_bfin5xx.c
+++ b/drivers/spi/spi_bfin5xx.c
@@ -1082,7 +1082,7 @@ static int setup(struct spi_device *spi)
  */
 static void cleanup(struct spi_device *spi)
 {
-	struct chip_data *chip = spi_get_ctldata((struct spi_device *)spi);
+	struct chip_data *chip = spi_get_ctldata(spi);
 
 	kfree(chip);
 }
-- 
cgit v1.2.3-18-g5258


From d6fe89b0630080e2bd6ece20ff7b1b5c2647ed62 Mon Sep 17 00:00:00 2001
From: Bryan Wu <bryan.wu@analog.com>
Date: Mon, 11 Jun 2007 17:34:17 +0800
Subject: Blackfin SPI driver: fix bug SPI DMA incomplete transmission

SPI writes intermittently drop bytes at end of DMA transfer
http://blackfin.uclinux.org/gf/project/uclinux-dist/tracker/?action=TrackerItemEdit&tracker_item_id=3205
http://blackfin.uclinux.org/gf/project/uclinux-dist/tracker/?action=TrackerItemEdit&tracker_item_id=2892

Signed-off-by: Mike Frysinger <michael.frysinger@analog.com>
Signed-off-by: Bryan Wu <bryan.wu@analog.com>
---
 drivers/spi/spi_bfin5xx.c | 15 ++++++++++-----
 1 file changed, 10 insertions(+), 5 deletions(-)

(limited to 'drivers')

diff --git a/drivers/spi/spi_bfin5xx.c b/drivers/spi/spi_bfin5xx.c
index a2d4884752e..48587c27050 100644
--- a/drivers/spi/spi_bfin5xx.c
+++ b/drivers/spi/spi_bfin5xx.c
@@ -582,14 +582,19 @@ static irqreturn_t dma_irq_handler(int irq, void *dev_id)
 	dev_dbg(&drv_data->pdev->dev, "in dma_irq_handler\n");
 	clear_dma_irqstat(CH_SPI);
 
+	/* Wait for DMA to complete */
+	while (get_dma_curr_irqstat(CH_SPI) & DMA_RUN)
+		continue;
+
 	/*
-	 * wait for the last transaction shifted out.  yes, these two
-	 * while loops are supposed to be the same (see the HRM).
+	 * wait for the last transaction shifted out.  HRM states:
+	 * at this point there may still be data in the SPI DMA FIFO waiting
+	 * to be transmitted ... software needs to poll TXS in the SPI_STAT
+	 * register until it goes low for 2 successive reads
 	 */
 	if (drv_data->tx != NULL) {
-		while (bfin_read_SPI_STAT() & TXS)
-			continue;
-		while (bfin_read_SPI_STAT() & TXS)
+		while ((bfin_read_SPI_STAT() & TXS) ||
+		       (bfin_read_SPI_STAT() & TXS))
 			continue;
 	}
 
-- 
cgit v1.2.3-18-g5258


From c5760abde715dcd9ead66769e45d1896332e9d9c Mon Sep 17 00:00:00 2001
From: Jean-Christian de Rivaz <jc@eclis.ch>
Date: Mon, 11 Jun 2007 17:44:14 +0800
Subject: Blackfin SMC91X ethernet supporting driver: SMC91C111 LEDs are note
 drived in the kernel like in uboot

Signed-off-by: Jean-Christian de Rivaz <jc@eclis.ch>
Signed-off-by: Bryan Wu <bryan.wu@analog.com>
---
 drivers/net/smc91x.h | 2 ++
 1 file changed, 2 insertions(+)

(limited to 'drivers')

diff --git a/drivers/net/smc91x.h b/drivers/net/smc91x.h
index 506bffcbc6d..f8429449dc1 100644
--- a/drivers/net/smc91x.h
+++ b/drivers/net/smc91x.h
@@ -58,6 +58,8 @@
 #elif defined(CONFIG_BFIN)
 
 #define SMC_IRQ_FLAGS		IRQF_TRIGGER_HIGH
+#define RPC_LSA_DEFAULT		RPC_LED_100_10
+#define RPC_LSB_DEFAULT		RPC_LED_TX_RX
 
 # if defined (CONFIG_BFIN561_EZKIT)
 #define SMC_CAN_USE_8BIT	0
-- 
cgit v1.2.3-18-g5258