aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/serial/cpm_uart
diff options
context:
space:
mode:
authorVitaly Bordug <vbordug@ru.mvista.com>2007-01-24 14:40:49 -0500
committerPaul Mackerras <paulus@samba.org>2007-02-06 20:00:32 -0500
commitf25222b99542bcadf1cc53cc9aa0e304849242ca (patch)
tree4eca1d2753c1abcc1f6700db3c64a63d1afa2d08 /drivers/serial/cpm_uart
parent1473ae6cab7f47dde4c14f397371b2ad94457d3a (diff)
[POWERPC] cpm_uart: OF-related fix for CPM1
This makes cpm uart able to work using OF-passed parameters in case of CPM stuff (found on most mpc8xx reference and custom boards). The idea is to keep ppc stuff working yet making it able to be used for powerpc. Signed-off-by: Vitaly Bordug <vbordug@ru.mvista.com> Signed-off-by: Paul Mackerras <paulus@samba.org>
Diffstat (limited to 'drivers/serial/cpm_uart')
-rw-r--r--drivers/serial/cpm_uart/cpm_uart_cpm1.c15
1 files changed, 8 insertions, 7 deletions
diff --git a/drivers/serial/cpm_uart/cpm_uart_cpm1.c b/drivers/serial/cpm_uart/cpm_uart_cpm1.c
index 08e55fdc882a..925fb607d8c4 100644
--- a/drivers/serial/cpm_uart/cpm_uart_cpm1.c
+++ b/drivers/serial/cpm_uart/cpm_uart_cpm1.c
@@ -40,6 +40,7 @@
40 40
41#include <asm/io.h> 41#include <asm/io.h>
42#include <asm/irq.h> 42#include <asm/irq.h>
43#include <asm/fs_pd.h>
43 44
44#include <linux/serial_core.h> 45#include <linux/serial_core.h>
45#include <linux/kernel.h> 46#include <linux/kernel.h>
@@ -145,7 +146,7 @@ int cpm_uart_allocbuf(struct uart_cpm_port *pinfo, unsigned int is_con)
145 /* was hostalloc but changed cause it blows away the */ 146 /* was hostalloc but changed cause it blows away the */
146 /* large tlb mapping when pinning the kernel area */ 147 /* large tlb mapping when pinning the kernel area */
147 mem_addr = (u8 *) cpm_dpram_addr(cpm_dpalloc(memsz, 8)); 148 mem_addr = (u8 *) cpm_dpram_addr(cpm_dpalloc(memsz, 8));
148 dma_addr = (u32)mem_addr; 149 dma_addr = (u32)cpm_dpram_phys(mem_addr);
149 } else 150 } else
150 mem_addr = dma_alloc_coherent(NULL, memsz, &dma_addr, 151 mem_addr = dma_alloc_coherent(NULL, memsz, &dma_addr,
151 GFP_KERNEL); 152 GFP_KERNEL);
@@ -205,7 +206,7 @@ int __init cpm_uart_init_portdesc(void)
205 (unsigned long)&cpmp->cp_smc[0]; 206 (unsigned long)&cpmp->cp_smc[0];
206 cpm_uart_ports[UART_SMC1].smcp->smc_smcm |= (SMCM_RX | SMCM_TX); 207 cpm_uart_ports[UART_SMC1].smcp->smc_smcm |= (SMCM_RX | SMCM_TX);
207 cpm_uart_ports[UART_SMC1].smcp->smc_smcmr &= ~(SMCMR_REN | SMCMR_TEN); 208 cpm_uart_ports[UART_SMC1].smcp->smc_smcmr &= ~(SMCMR_REN | SMCMR_TEN);
208 cpm_uart_ports[UART_SMC1].port.uartclk = (((bd_t *) __res)->bi_intfreq); 209 cpm_uart_ports[UART_SMC1].port.uartclk = uart_clock();
209 cpm_uart_port_map[cpm_uart_nr++] = UART_SMC1; 210 cpm_uart_port_map[cpm_uart_nr++] = UART_SMC1;
210#endif 211#endif
211 212
@@ -217,7 +218,7 @@ int __init cpm_uart_init_portdesc(void)
217 (unsigned long)&cpmp->cp_smc[1]; 218 (unsigned long)&cpmp->cp_smc[1];
218 cpm_uart_ports[UART_SMC2].smcp->smc_smcm |= (SMCM_RX | SMCM_TX); 219 cpm_uart_ports[UART_SMC2].smcp->smc_smcm |= (SMCM_RX | SMCM_TX);
219 cpm_uart_ports[UART_SMC2].smcp->smc_smcmr &= ~(SMCMR_REN | SMCMR_TEN); 220 cpm_uart_ports[UART_SMC2].smcp->smc_smcmr &= ~(SMCMR_REN | SMCMR_TEN);
220 cpm_uart_ports[UART_SMC2].port.uartclk = (((bd_t *) __res)->bi_intfreq); 221 cpm_uart_ports[UART_SMC2].port.uartclk = uart_clock();
221 cpm_uart_port_map[cpm_uart_nr++] = UART_SMC2; 222 cpm_uart_port_map[cpm_uart_nr++] = UART_SMC2;
222#endif 223#endif
223 224
@@ -231,7 +232,7 @@ int __init cpm_uart_init_portdesc(void)
231 ~(UART_SCCM_TX | UART_SCCM_RX); 232 ~(UART_SCCM_TX | UART_SCCM_RX);
232 cpm_uart_ports[UART_SCC1].sccp->scc_gsmrl &= 233 cpm_uart_ports[UART_SCC1].sccp->scc_gsmrl &=
233 ~(SCC_GSMRL_ENR | SCC_GSMRL_ENT); 234 ~(SCC_GSMRL_ENR | SCC_GSMRL_ENT);
234 cpm_uart_ports[UART_SCC1].port.uartclk = (((bd_t *) __res)->bi_intfreq); 235 cpm_uart_ports[UART_SCC1].port.uartclk = uart_clock();
235 cpm_uart_port_map[cpm_uart_nr++] = UART_SCC1; 236 cpm_uart_port_map[cpm_uart_nr++] = UART_SCC1;
236#endif 237#endif
237 238
@@ -245,7 +246,7 @@ int __init cpm_uart_init_portdesc(void)
245 ~(UART_SCCM_TX | UART_SCCM_RX); 246 ~(UART_SCCM_TX | UART_SCCM_RX);
246 cpm_uart_ports[UART_SCC2].sccp->scc_gsmrl &= 247 cpm_uart_ports[UART_SCC2].sccp->scc_gsmrl &=
247 ~(SCC_GSMRL_ENR | SCC_GSMRL_ENT); 248 ~(SCC_GSMRL_ENR | SCC_GSMRL_ENT);
248 cpm_uart_ports[UART_SCC2].port.uartclk = (((bd_t *) __res)->bi_intfreq); 249 cpm_uart_ports[UART_SCC2].port.uartclk = uart_clock();
249 cpm_uart_port_map[cpm_uart_nr++] = UART_SCC2; 250 cpm_uart_port_map[cpm_uart_nr++] = UART_SCC2;
250#endif 251#endif
251 252
@@ -259,7 +260,7 @@ int __init cpm_uart_init_portdesc(void)
259 ~(UART_SCCM_TX | UART_SCCM_RX); 260 ~(UART_SCCM_TX | UART_SCCM_RX);
260 cpm_uart_ports[UART_SCC3].sccp->scc_gsmrl &= 261 cpm_uart_ports[UART_SCC3].sccp->scc_gsmrl &=
261 ~(SCC_GSMRL_ENR | SCC_GSMRL_ENT); 262 ~(SCC_GSMRL_ENR | SCC_GSMRL_ENT);
262 cpm_uart_ports[UART_SCC3].port.uartclk = (((bd_t *) __res)->bi_intfreq); 263 cpm_uart_ports[UART_SCC3].port.uartclk = uart_clock();
263 cpm_uart_port_map[cpm_uart_nr++] = UART_SCC3; 264 cpm_uart_port_map[cpm_uart_nr++] = UART_SCC3;
264#endif 265#endif
265 266
@@ -273,7 +274,7 @@ int __init cpm_uart_init_portdesc(void)
273 ~(UART_SCCM_TX | UART_SCCM_RX); 274 ~(UART_SCCM_TX | UART_SCCM_RX);
274 cpm_uart_ports[UART_SCC4].sccp->scc_gsmrl &= 275 cpm_uart_ports[UART_SCC4].sccp->scc_gsmrl &=
275 ~(SCC_GSMRL_ENR | SCC_GSMRL_ENT); 276 ~(SCC_GSMRL_ENR | SCC_GSMRL_ENT);
276 cpm_uart_ports[UART_SCC4].port.uartclk = (((bd_t *) __res)->bi_intfreq); 277 cpm_uart_ports[UART_SCC4].port.uartclk = uart_clock();
277 cpm_uart_port_map[cpm_uart_nr++] = UART_SCC4; 278 cpm_uart_port_map[cpm_uart_nr++] = UART_SCC4;
278#endif 279#endif
279 return 0; 280 return 0;