aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/serial
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2009-06-19 20:40:40 -0400
committerLinus Torvalds <torvalds@linux-foundation.org>2009-06-19 20:40:40 -0400
commit773d7a09e1a1349a5319ac8665e9c612c6aa27d8 (patch)
tree3b2272bb3cfcab04ba6459cba116e577278c9392 /drivers/serial
parent17fad5209e6b55148dbd20156cdaf2c7e67faa40 (diff)
parentb71a107c66ad952c9d35ec046a803efc89a80556 (diff)
Merge branch 'merge' of git://git.kernel.org/pub/scm/linux/kernel/git/benh/powerpc
* 'merge' of git://git.kernel.org/pub/scm/linux/kernel/git/benh/powerpc: (35 commits) powerpc/5121: make clock debug output more readable powerpc/5xxx: Add common mpc5xxx_get_bus_frequency() function powerpc/5200: Update pcm030.dts to add i2c eeprom and delete cruft powerpc/5200: convert mpc52xx_psc_spi to use cs_control callback fbdev/xilinxfb: Fix improper casting and tighen up probe path usb/ps3: Add missing annotations powerpc: Add memory clobber to mtspr() powerpc: Fix invalid construct in our CPU selection Kconfig ps3rom: Use ps3_system_bus_[gs]et_drvdata() instead of direct access powerpc: Add configurable -Werror for arch/powerpc of_serial: Add UPF_FIXED_TYPE flag drivers/hvc: Add missing __devexit_p() net/ps3: gelic - Add missing annotations powerpc: Introduce macro spin_event_timeout() powerpc/warp: Fix ISA_DMA_THRESHOLD default powerpc/bootwrapper: Custom build options for XPedite52xx targets powerpc/85xx: Add defconfig for X-ES MPC85xx boards powerpc/85xx: Add dts files for X-ES MPC85xx boards powerpc/85xx: Add platform support for X-ES MPC85xx boards 83xx: add support for the kmeter1 board. ...
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