summaryrefslogtreecommitdiff
path: root/cpu/mpc86xx/cpu.c
diff options
context:
space:
mode:
authorPeter Tyser <ptyser@xes-inc.com>2009-05-21 12:09:59 -0500
committerKumar Gala <galak@kernel.crashing.org>2009-06-12 17:17:45 -0500
commitb1f12650d332eadac1306a772cab6096abee6ddd (patch)
tree63857048dbcf02afc024643d1997b884f8368a91 /cpu/mpc86xx/cpu.c
parent3bd8e532b5de20647aeaff94a1cbf33fb8b897b9 (diff)
downloadu-boot-imx-b1f12650d332eadac1306a772cab6096abee6ddd.zip
u-boot-imx-b1f12650d332eadac1306a772cab6096abee6ddd.tar.gz
u-boot-imx-b1f12650d332eadac1306a772cab6096abee6ddd.tar.bz2
fsl: Create common fsl_dma.h for 85xx and 86xx cpus
Break out DMA structures for the Freescale MPC85xx and MPC86xx cpus to reduce a large amount of code duplication Signed-off-by: Peter Tyser <ptyser@xes-inc.com> Signed-off-by: Kumar Gala <galak@kernel.crashing.org>
Diffstat (limited to 'cpu/mpc86xx/cpu.c')
-rw-r--r--cpu/mpc86xx/cpu.c27
1 files changed, 15 insertions, 12 deletions
diff --git a/cpu/mpc86xx/cpu.c b/cpu/mpc86xx/cpu.c
index 653a137..f35323a 100644
--- a/cpu/mpc86xx/cpu.c
+++ b/cpu/mpc86xx/cpu.c
@@ -183,10 +183,11 @@ void
dma_init(void)
{
volatile immap_t *immap = (immap_t *) CONFIG_SYS_IMMR;
- volatile ccsr_dma_t *dma = &immap->im_dma;
+ volatile ccsr_dma_t *dma_base = &immap->im_dma;
+ volatile fsl_dma_t *dma = &dma_base->dma[0];
- dma->satr0 = 0x00040000;
- dma->datr0 = 0x00040000;
+ dma->satr = 0x00040000;
+ dma->datr = 0x00040000;
asm("sync; isync");
}
@@ -194,12 +195,13 @@ uint
dma_check(void)
{
volatile immap_t *immap = (immap_t *) CONFIG_SYS_IMMR;
- volatile ccsr_dma_t *dma = &immap->im_dma;
- volatile uint status = dma->sr0;
+ volatile ccsr_dma_t *dma_base = &immap->im_dma;
+ volatile fsl_dma_t *dma = &dma_base->dma[0];
+ volatile uint status = dma->sr;
/* While the channel is busy, spin */
while ((status & 4) == 4) {
- status = dma->sr0;
+ status = dma->sr;
}
if (status != 0) {
@@ -212,14 +214,15 @@ int
dma_xfer(void *dest, uint count, void *src)
{
volatile immap_t *immap = (immap_t *) CONFIG_SYS_IMMR;
- volatile ccsr_dma_t *dma = &immap->im_dma;
+ volatile ccsr_dma_t *dma_base = &immap->im_dma;
+ volatile fsl_dma_t *dma = &dma_base->dma[0];
- dma->dar0 = (uint) dest;
- dma->sar0 = (uint) src;
- dma->bcr0 = count;
- dma->mr0 = 0xf000004;
+ dma->dar = (uint) dest;
+ dma->sar = (uint) src;
+ dma->bcr = count;
+ dma->mr = 0xf000004;
asm("sync;isync");
- dma->mr0 = 0xf000005;
+ dma->mr = 0xf000005;
asm("sync;isync");
return dma_check();
}