diff options
Diffstat (limited to 'drivers')
| -rw-r--r-- | drivers/serial/cpm_uart/cpm_uart_cpm1.c | 32 |
1 files changed, 31 insertions, 1 deletions
diff --git a/drivers/serial/cpm_uart/cpm_uart_cpm1.c b/drivers/serial/cpm_uart/cpm_uart_cpm1.c index de26cf7b003c..7911912f50c7 100644 --- a/drivers/serial/cpm_uart/cpm_uart_cpm1.c +++ b/drivers/serial/cpm_uart/cpm_uart_cpm1.c | |||
| @@ -94,12 +94,42 @@ void smc1_lineif(struct uart_cpm_port *pinfo) | |||
| 94 | ((immap_t *)IMAP_ADDR)->im_ioport.iop_paodr &= ~iobits; | 94 | ((immap_t *)IMAP_ADDR)->im_ioport.iop_paodr &= ~iobits; |
| 95 | } | 95 | } |
| 96 | 96 | ||
| 97 | #ifdef CONFIG_MPC885ADS | ||
| 98 | /* Enable SMC1 transceivers */ | ||
| 99 | { | ||
| 100 | volatile uint __iomem *bcsr1 = ioremap(BCSR1, 4); | ||
| 101 | uint tmp; | ||
| 102 | |||
| 103 | tmp = in_be32(bcsr1); | ||
| 104 | tmp &= ~BCSR1_RS232EN_1; | ||
| 105 | out_be32(bcsr1, tmp); | ||
| 106 | iounmap(bcsr1); | ||
| 107 | } | ||
| 108 | #endif | ||
| 109 | |||
| 97 | pinfo->brg = 1; | 110 | pinfo->brg = 1; |
| 98 | } | 111 | } |
| 99 | 112 | ||
| 100 | void smc2_lineif(struct uart_cpm_port *pinfo) | 113 | void smc2_lineif(struct uart_cpm_port *pinfo) |
| 101 | { | 114 | { |
| 102 | /* XXX SMC2: insert port configuration here */ | 115 | #ifdef CONFIG_MPC885ADS |
| 116 | volatile cpm8xx_t *cp = cpmp; | ||
| 117 | volatile uint __iomem *bcsr1; | ||
| 118 | uint tmp; | ||
| 119 | |||
| 120 | cp->cp_pepar |= 0x00000c00; | ||
| 121 | cp->cp_pedir &= ~0x00000c00; | ||
| 122 | cp->cp_peso &= ~0x00000400; | ||
| 123 | cp->cp_peso |= 0x00000800; | ||
| 124 | |||
| 125 | /* Enable SMC2 transceivers */ | ||
| 126 | bcsr1 = ioremap(BCSR1, 4); | ||
| 127 | tmp = in_be32(bcsr1); | ||
| 128 | tmp &= ~BCSR1_RS232EN_2; | ||
| 129 | out_be32(bcsr1, tmp); | ||
| 130 | iounmap(bcsr1); | ||
| 131 | #endif | ||
| 132 | |||
| 103 | pinfo->brg = 2; | 133 | pinfo->brg = 2; |
| 104 | } | 134 | } |
| 105 | 135 | ||
