diff options
author | Vitaly Bordug <vbordug@ru.mvista.com> | 2007-01-24 14:40:49 -0500 |
---|---|---|
committer | Paul Mackerras <paulus@samba.org> | 2007-02-06 20:00:32 -0500 |
commit | f25222b99542bcadf1cc53cc9aa0e304849242ca (patch) | |
tree | 4eca1d2753c1abcc1f6700db3c64a63d1afa2d08 /drivers | |
parent | 1473ae6cab7f47dde4c14f397371b2ad94457d3a (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')
-rw-r--r-- | drivers/serial/cpm_uart/cpm_uart_cpm1.c | 15 |
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; |