mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-28 18:51:56 -04:00
Merge branch 'omap2-upstream' into devel
This commit is contained in:
commit
adf6d34e46
737 changed files with 24475 additions and 14528 deletions
|
|
@ -1214,13 +1214,6 @@ static struct pciserial_board pci_boards[] __devinitdata = {
|
|||
.base_baud = 115200,
|
||||
.uart_offset = 8,
|
||||
},
|
||||
[pbn_b0_8_115200] = {
|
||||
.flags = FL_BASE0,
|
||||
.num_ports = 8,
|
||||
.base_baud = 115200,
|
||||
.uart_offset = 8,
|
||||
},
|
||||
|
||||
[pbn_b0_1_921600] = {
|
||||
.flags = FL_BASE0,
|
||||
.num_ports = 1,
|
||||
|
|
|
|||
|
|
@ -96,6 +96,7 @@
|
|||
|
||||
/* PDC registers */
|
||||
#define UART_PUT_PTCR(port,v) __raw_writel(v, (port)->membase + ATMEL_PDC_PTCR)
|
||||
#define UART_GET_TCR(port) __raw_readl((port)->membase + ATMEL_PDC_TCR)
|
||||
#define UART_GET_PTSR(port) __raw_readl((port)->membase + ATMEL_PDC_PTSR)
|
||||
|
||||
#define UART_PUT_RPR(port,v) __raw_writel(v, (port)->membase + ATMEL_PDC_RPR)
|
||||
|
|
@ -106,6 +107,7 @@
|
|||
|
||||
#define UART_PUT_TPR(port,v) __raw_writel(v, (port)->membase + ATMEL_PDC_TPR)
|
||||
#define UART_PUT_TCR(port,v) __raw_writel(v, (port)->membase + ATMEL_PDC_TCR)
|
||||
#define UART_GET_TCR(port) __raw_readl((port)->membase + ATMEL_PDC_TCR)
|
||||
|
||||
static int (*atmel_open_hook)(struct uart_port *);
|
||||
static void (*atmel_close_hook)(struct uart_port *);
|
||||
|
|
@ -562,17 +564,22 @@ static void atmel_tx_dma(struct uart_port *port)
|
|||
struct atmel_dma_buffer *pdc = &atmel_port->pdc_tx;
|
||||
int count;
|
||||
|
||||
/* nothing left to transmit? */
|
||||
if (UART_GET_TCR(port))
|
||||
return;
|
||||
|
||||
xmit->tail += pdc->ofs;
|
||||
xmit->tail &= UART_XMIT_SIZE - 1;
|
||||
|
||||
port->icount.tx += pdc->ofs;
|
||||
pdc->ofs = 0;
|
||||
|
||||
if (!uart_circ_empty(xmit)) {
|
||||
/* more to transmit - setup next transfer */
|
||||
/* more to transmit - setup next transfer */
|
||||
|
||||
/* disable PDC transmit */
|
||||
UART_PUT_PTCR(port, ATMEL_PDC_TXTDIS);
|
||||
/* disable PDC transmit */
|
||||
UART_PUT_PTCR(port, ATMEL_PDC_TXTDIS);
|
||||
|
||||
if (!uart_circ_empty(xmit)) {
|
||||
dma_sync_single_for_device(port->dev,
|
||||
pdc->dma_addr,
|
||||
pdc->dma_size,
|
||||
|
|
@ -586,11 +593,6 @@ static void atmel_tx_dma(struct uart_port *port)
|
|||
/* re-enable PDC transmit and interrupts */
|
||||
UART_PUT_PTCR(port, ATMEL_PDC_TXTEN);
|
||||
UART_PUT_IER(port, ATMEL_US_ENDTX | ATMEL_US_TXBUFE);
|
||||
} else {
|
||||
/* nothing left to transmit - disable the transmitter */
|
||||
|
||||
/* disable PDC transmit */
|
||||
UART_PUT_PTCR(port, ATMEL_PDC_TXTDIS);
|
||||
}
|
||||
|
||||
if (uart_circ_chars_pending(xmit) < WAKEUP_CHARS)
|
||||
|
|
@ -1274,6 +1276,7 @@ static void atmel_console_write(struct console *co, const char *s, u_int count)
|
|||
{
|
||||
struct uart_port *port = &atmel_ports[co->index].uart;
|
||||
unsigned int status, imr;
|
||||
unsigned int pdc_tx;
|
||||
|
||||
/*
|
||||
* First, save IMR and then disable interrupts
|
||||
|
|
@ -1281,6 +1284,10 @@ static void atmel_console_write(struct console *co, const char *s, u_int count)
|
|||
imr = UART_GET_IMR(port);
|
||||
UART_PUT_IDR(port, ATMEL_US_RXRDY | ATMEL_US_TXRDY);
|
||||
|
||||
/* Store PDC transmit status and disable it */
|
||||
pdc_tx = UART_GET_PTSR(port) & ATMEL_PDC_TXTEN;
|
||||
UART_PUT_PTCR(port, ATMEL_PDC_TXTDIS);
|
||||
|
||||
uart_console_write(port, s, count, atmel_console_putchar);
|
||||
|
||||
/*
|
||||
|
|
@ -1290,6 +1297,11 @@ static void atmel_console_write(struct console *co, const char *s, u_int count)
|
|||
do {
|
||||
status = UART_GET_CSR(port);
|
||||
} while (!(status & ATMEL_US_TXRDY));
|
||||
|
||||
/* Restore PDC transmit status */
|
||||
if (pdc_tx)
|
||||
UART_PUT_PTCR(port, ATMEL_PDC_TXTEN);
|
||||
|
||||
/* set interrupts back the way they were */
|
||||
UART_PUT_IER(port, imr);
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue