Skip to content

Commit

Permalink
Merge of master.kernel.org:/home/rmk/linux-2.6-serial.git
Browse files Browse the repository at this point in the history
  • Loading branch information
Linus Torvalds committed May 21, 2005
2 parents 10f02d1 + 857dde2 commit 3d15e4a
Showing 1 changed file with 12 additions and 5 deletions.
17 changes: 12 additions & 5 deletions drivers/serial/8250.c
Original file line number Diff line number Diff line change
Expand Up @@ -682,8 +682,6 @@ static void autoconfig_16550a(struct uart_8250_port *up)
* from EXCR1. Switch back to bank 0, change it in MCR. Then
* switch back to bank 2, read it from EXCR1 again and check
* it's changed. If so, set baud_base in EXCR2 to 921600. -- dwmw2
* On PowerPC we don't want to change baud_base, as we have
* a number of different divisors. -- Tom Rini
*/
serial_outp(up, UART_LCR, 0);
status1 = serial_in(up, UART_MCR);
Expand All @@ -699,16 +697,25 @@ static void autoconfig_16550a(struct uart_8250_port *up)
serial_outp(up, UART_MCR, status1);

if ((status2 ^ status1) & UART_MCR_LOOP) {
#ifndef CONFIG_PPC
unsigned short quot;

serial_outp(up, UART_LCR, 0xE0);

quot = serial_inp(up, UART_DLM) << 8;
quot += serial_inp(up, UART_DLL);
quot <<= 3;

status1 = serial_in(up, 0x04); /* EXCR1 */
status1 &= ~0xB0; /* Disable LOCK, mask out PRESL[01] */
status1 |= 0x10; /* 1.625 divisor for baud_base --> 921600 */
serial_outp(up, 0x04, status1);

serial_outp(up, UART_DLL, quot & 0xff);
serial_outp(up, UART_DLM, quot >> 8);

serial_outp(up, UART_LCR, 0);
up->port.uartclk = 921600*16;
#endif

up->port.uartclk = 921600*16;
up->port.type = PORT_NS16550A;
up->capabilities |= UART_NATSEMI;
return;
Expand Down

0 comments on commit 3d15e4a

Please sign in to comment.