diff options
author | Joel Sherrill <joel.sherrill@OARcorp.com> | 2007-09-06 15:22:42 +0000 |
---|---|---|
committer | Joel Sherrill <joel.sherrill@OARcorp.com> | 2007-09-06 15:22:42 +0000 |
commit | 30a8915ffd4559fa9fff53b6a69e4b8950fa7474 (patch) | |
tree | 8c38effed9c00059379a208a59459a0451e6a1ce /c | |
parent | 2007-09-06 Daniel Hellstrom <daniel@gaisler.com> (diff) | |
download | rtems-30a8915ffd4559fa9fff53b6a69e4b8950fa7474.tar.bz2 |
2007-09-06 Daniel Hellstrom <daniel@gaisler.com>
* amba/amba.c: Add missing part of previous patch.
* clock/ckinit.c: Update previous patch.
Diffstat (limited to 'c')
-rw-r--r-- | c/src/lib/libbsp/sparc/leon3/ChangeLog | 5 | ||||
-rw-r--r-- | c/src/lib/libbsp/sparc/leon3/amba/amba.c | 46 | ||||
-rw-r--r-- | c/src/lib/libbsp/sparc/leon3/clock/ckinit.c | 8 |
3 files changed, 23 insertions, 36 deletions
diff --git a/c/src/lib/libbsp/sparc/leon3/ChangeLog b/c/src/lib/libbsp/sparc/leon3/ChangeLog index e38d52c2a5..197e0c03c5 100644 --- a/c/src/lib/libbsp/sparc/leon3/ChangeLog +++ b/c/src/lib/libbsp/sparc/leon3/ChangeLog @@ -1,5 +1,10 @@ 2007-09-06 Daniel Hellstrom <daniel@gaisler.com> + * amba/amba.c: Add missing part of previous patch. + * clock/ckinit.c: Update previous patch. + +2007-09-06 Daniel Hellstrom <daniel@gaisler.com> + * pci/pci.c: New file missed on previous commit. 2007-09-06 Daniel Hellstrom <daniel@gaisler.com> diff --git a/c/src/lib/libbsp/sparc/leon3/amba/amba.c b/c/src/lib/libbsp/sparc/leon3/amba/amba.c index c0477ccc9b..1fcc226820 100644 --- a/c/src/lib/libbsp/sparc/leon3/amba/amba.c +++ b/c/src/lib/libbsp/sparc/leon3/amba/amba.c @@ -22,7 +22,6 @@ amba_confarea_type amba_conf; volatile LEON3_IrqCtrl_Regs_Map *LEON3_IrqCtrl_Regs; int LEON3_Cpu_Index = 0; -static int apb_init = 0; /* * bsp_leon3_predriver_hook @@ -41,51 +40,34 @@ asm(" .text \n" "retl \n" "mov %asr17, %o0\n" ); - - + + extern rtems_configuration_table Configuration; void bsp_leon3_predriver_hook(void) { - unsigned int iobar, conf; int i; unsigned int tmp; + amba_apb_device dev; /* Scan the AMBA Plug&Play info at the default LEON3 area */ amba_scan(&amba_conf,LEON3_IO_AREA,NULL); /* Find LEON3 Interrupt controler */ - i = 0; - while (i < amba_conf.apbslv.devnr) - { - conf = amba_get_confword(amba_conf.apbslv, i, 0); - if ((amba_vendor(conf) == VENDOR_GAISLER) && (amba_device(conf) == GAISLER_IRQMP)) - { - iobar = amba_apb_get_membar(amba_conf.apbslv, i); - LEON3_IrqCtrl_Regs = (volatile LEON3_IrqCtrl_Regs_Map *) amba_iobar_start(amba_conf.apbslv.apbmst[i], iobar); - /* asm("mov %%asr17, %0": : "r" (tmp)); */ - if (Configuration.User_multiprocessing_table != NULL) - { - tmp = getasr17(); - LEON3_Cpu_Index = (tmp >> 28) & 3; - } - break; + i = amba_find_apbslv(&amba_conf,VENDOR_GAISLER,GAISLER_IRQMP,&dev); + if ( i > 0 ){ + /* Found APB IRQ_MP Interrupt Controller */ + LEON3_IrqCtrl_Regs = (volatile LEON3_IrqCtrl_Regs_Map *) dev.start; + if (Configuration.User_multiprocessing_table != NULL) { + tmp = getasr17(); + LEON3_Cpu_Index = (tmp >> 28) & 3; } - i++; } + /* find GP Timer */ - i = 0; - while (i < amba_conf.apbslv.devnr) - { - conf = amba_get_confword(amba_conf.apbslv, i, 0); - if ((amba_vendor(conf) == VENDOR_GAISLER) && - (amba_device(conf) == GAISLER_GPTIMER)) { - iobar = amba_apb_get_membar(amba_conf.apbslv, i); - LEON3_Timer_Regs = (volatile LEON3_Timer_Regs_Map *) - amba_iobar_start(amba_conf.apbslv.apbmst[i], iobar); - break; - } - i++; + i = amba_find_apbslv(&amba_conf,VENDOR_GAISLER,GAISLER_GPTIMER,&dev); + if ( i > 0 ){ + LEON3_Timer_Regs = (volatile LEON3_Timer_Regs_Map *) dev.start; } } diff --git a/c/src/lib/libbsp/sparc/leon3/clock/ckinit.c b/c/src/lib/libbsp/sparc/leon3/clock/ckinit.c index 9054200436..d9f2acb6fe 100644 --- a/c/src/lib/libbsp/sparc/leon3/clock/ckinit.c +++ b/c/src/lib/libbsp/sparc/leon3/clock/ckinit.c @@ -48,11 +48,11 @@ static int clkirq; int cnt; \ amba_apb_device dev; \ \ - /* Find LEON3 Interrupt controler */ \ - cnt = amba_find_apbslv(&amba_conf,VENDOR_GAISLER,GAISLER_IRQMP,&dev); \ + /* Find LEON3 GP Timer */ \ + cnt = amba_find_apbslv(&amba_conf,VENDOR_GAISLER,GAISLER_GPTIMER,&dev); \ if ( cnt > 0 ){ \ - /* Found APB IRQ_MP Interrupt Controller */ \ - LEON3_IrqCtrl_Regs = (volatile LEON3_IrqCtrl_Regs_Map *) dev.start; \ + /* Found APB GPTIMER Timer */ \ + LEON3_Timer_Regs = (volatile LEON3_Timer_Regs_Map *) dev.start; \ clkirq = (LEON3_Timer_Regs->status & 0xfc) >> 3; \ \ if (Configuration.User_multiprocessing_table != NULL) { \ |