aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/serial
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/serial')
-rw-r--r--drivers/serial/mpc52xx_uart.c5
-rw-r--r--drivers/serial/of_serial.c2
-rw-r--r--drivers/serial/ucc_uart.c19
3 files changed, 17 insertions, 9 deletions
diff --git a/drivers/serial/mpc52xx_uart.c b/drivers/serial/mpc52xx_uart.c
index b3feb6198d57..abbd146c50d9 100644
--- a/drivers/serial/mpc52xx_uart.c
+++ b/drivers/serial/mpc52xx_uart.c
@@ -76,7 +76,6 @@
76#include <linux/of_platform.h> 76#include <linux/of_platform.h>
77 77
78#include <asm/mpc52xx.h> 78#include <asm/mpc52xx.h>
79#include <asm/mpc512x.h>
80#include <asm/mpc52xx_psc.h> 79#include <asm/mpc52xx_psc.h>
81 80
82#if defined(CONFIG_SERIAL_MPC52xx_CONSOLE) && defined(CONFIG_MAGIC_SYSRQ) 81#if defined(CONFIG_SERIAL_MPC52xx_CONSOLE) && defined(CONFIG_MAGIC_SYSRQ)
@@ -254,7 +253,7 @@ static unsigned long mpc52xx_getuartclk(void *p)
254 * but the generic serial code assumes 16 253 * but the generic serial code assumes 16
255 * so return ipb freq / 2 254 * so return ipb freq / 2
256 */ 255 */
257 return mpc52xx_find_ipb_freq(p) / 2; 256 return mpc5xxx_get_bus_frequency(p) / 2;
258} 257}
259 258
260static struct psc_ops mpc52xx_psc_ops = { 259static struct psc_ops mpc52xx_psc_ops = {
@@ -391,7 +390,7 @@ static void mpc512x_psc_cw_restore_ints(struct uart_port *port)
391 390
392static unsigned long mpc512x_getuartclk(void *p) 391static unsigned long mpc512x_getuartclk(void *p)
393{ 392{
394 return mpc512x_find_ips_freq(p); 393 return mpc5xxx_get_bus_frequency(p);
395} 394}
396 395
397static struct psc_ops mpc512x_psc_ops = { 396static struct psc_ops mpc512x_psc_ops = {
diff --git a/drivers/serial/of_serial.c b/drivers/serial/of_serial.c
index 54483cd3529e..02406ba6da1c 100644
--- a/drivers/serial/of_serial.c
+++ b/drivers/serial/of_serial.c
@@ -67,7 +67,7 @@ static int __devinit of_platform_serial_setup(struct of_device *ofdev,
67 port->type = type; 67 port->type = type;
68 port->uartclk = *clk; 68 port->uartclk = *clk;
69 port->flags = UPF_SHARE_IRQ | UPF_BOOT_AUTOCONF | UPF_IOREMAP 69 port->flags = UPF_SHARE_IRQ | UPF_BOOT_AUTOCONF | UPF_IOREMAP
70 | UPF_FIXED_PORT; 70 | UPF_FIXED_PORT | UPF_FIXED_TYPE;
71 port->dev = &ofdev->dev; 71 port->dev = &ofdev->dev;
72 /* If current-speed was set, then try not to change it. */ 72 /* If current-speed was set, then try not to change it. */
73 if (spd) 73 if (spd)
diff --git a/drivers/serial/ucc_uart.c b/drivers/serial/ucc_uart.c
index 7de66c06b05d..e945e780b5c9 100644
--- a/drivers/serial/ucc_uart.c
+++ b/drivers/serial/ucc_uart.c
@@ -681,22 +681,27 @@ static void qe_uart_init_ucc(struct uart_qe_port *qe_port)
681 out_be16(&uccup->rccm, 0xc0ff); 681 out_be16(&uccup->rccm, 0xc0ff);
682 682
683 /* Configure the GUMR registers for UART */ 683 /* Configure the GUMR registers for UART */
684 if (soft_uart) 684 if (soft_uart) {
685 /* Soft-UART requires a 1X multiplier for TX */ 685 /* Soft-UART requires a 1X multiplier for TX */
686 clrsetbits_be32(&uccp->gumr_l, 686 clrsetbits_be32(&uccp->gumr_l,
687 UCC_SLOW_GUMR_L_MODE_MASK | UCC_SLOW_GUMR_L_TDCR_MASK | 687 UCC_SLOW_GUMR_L_MODE_MASK | UCC_SLOW_GUMR_L_TDCR_MASK |
688 UCC_SLOW_GUMR_L_RDCR_MASK, 688 UCC_SLOW_GUMR_L_RDCR_MASK,
689 UCC_SLOW_GUMR_L_MODE_UART | UCC_SLOW_GUMR_L_TDCR_1 | 689 UCC_SLOW_GUMR_L_MODE_UART | UCC_SLOW_GUMR_L_TDCR_1 |
690 UCC_SLOW_GUMR_L_RDCR_16); 690 UCC_SLOW_GUMR_L_RDCR_16);
691 else 691
692 clrsetbits_be32(&uccp->gumr_h, UCC_SLOW_GUMR_H_RFW,
693 UCC_SLOW_GUMR_H_TRX | UCC_SLOW_GUMR_H_TTX);
694 } else {
692 clrsetbits_be32(&uccp->gumr_l, 695 clrsetbits_be32(&uccp->gumr_l,
693 UCC_SLOW_GUMR_L_MODE_MASK | UCC_SLOW_GUMR_L_TDCR_MASK | 696 UCC_SLOW_GUMR_L_MODE_MASK | UCC_SLOW_GUMR_L_TDCR_MASK |
694 UCC_SLOW_GUMR_L_RDCR_MASK, 697 UCC_SLOW_GUMR_L_RDCR_MASK,
695 UCC_SLOW_GUMR_L_MODE_UART | UCC_SLOW_GUMR_L_TDCR_16 | 698 UCC_SLOW_GUMR_L_MODE_UART | UCC_SLOW_GUMR_L_TDCR_16 |
696 UCC_SLOW_GUMR_L_RDCR_16); 699 UCC_SLOW_GUMR_L_RDCR_16);
697 700
698 clrsetbits_be32(&uccp->gumr_h, UCC_SLOW_GUMR_H_RFW, 701 clrsetbits_be32(&uccp->gumr_h,
699 UCC_SLOW_GUMR_H_TRX | UCC_SLOW_GUMR_H_TTX); 702 UCC_SLOW_GUMR_H_TRX | UCC_SLOW_GUMR_H_TTX,
703 UCC_SLOW_GUMR_H_RFW);
704 }
700 705
701#ifdef LOOPBACK 706#ifdef LOOPBACK
702 clrsetbits_be32(&uccp->gumr_l, UCC_SLOW_GUMR_L_DIAG_MASK, 707 clrsetbits_be32(&uccp->gumr_l, UCC_SLOW_GUMR_L_DIAG_MASK,
@@ -706,7 +711,7 @@ static void qe_uart_init_ucc(struct uart_qe_port *qe_port)
706 UCC_SLOW_GUMR_H_CDS); 711 UCC_SLOW_GUMR_H_CDS);
707#endif 712#endif
708 713
709 /* Enable rx interrupts and clear all pending events. */ 714 /* Disable rx interrupts and clear all pending events. */
710 out_be16(&uccp->uccm, 0); 715 out_be16(&uccp->uccm, 0);
711 out_be16(&uccp->ucce, 0xffff); 716 out_be16(&uccp->ucce, 0xffff);
712 out_be16(&uccp->udsr, 0x7e7e); 717 out_be16(&uccp->udsr, 0x7e7e);
@@ -765,6 +770,10 @@ static void qe_uart_init_ucc(struct uart_qe_port *qe_port)
765 cecr_subblock = ucc_slow_get_qe_cr_subblock(qe_port->ucc_num); 770 cecr_subblock = ucc_slow_get_qe_cr_subblock(qe_port->ucc_num);
766 qe_issue_cmd(QE_INIT_TX_RX, cecr_subblock, 771 qe_issue_cmd(QE_INIT_TX_RX, cecr_subblock,
767 QE_CR_PROTOCOL_UNSPECIFIED, 0); 772 QE_CR_PROTOCOL_UNSPECIFIED, 0);
773 } else {
774 cecr_subblock = ucc_slow_get_qe_cr_subblock(qe_port->ucc_num);
775 qe_issue_cmd(QE_INIT_TX_RX, cecr_subblock,
776 QE_CR_PROTOCOL_UART, 0);
768 } 777 }
769} 778}
770 779