powerpc: add support for the Freescale P1022DS reference board
[oweals/u-boot.git] / arch / powerpc / cpu / mpc85xx / mp.c
index 826bf32d4d53567491fe75ff7837a30116c3699c..e05257cf04abd8bba157db911c950df2568e7a20 100644 (file)
@@ -77,6 +77,13 @@ int cpu_disable(int nr)
 
        return 0;
 }
+
+int is_core_disabled(int nr) {
+       ccsr_gur_t *gur = (void *)(CONFIG_SYS_MPC85xx_GUTS_ADDR);
+       u32 coredisrl = in_be32(&gur->coredisrl);
+
+       return (coredisrl & (1 << nr));
+}
 #else
 int cpu_disable(int nr)
 {
@@ -96,6 +103,22 @@ int cpu_disable(int nr)
 
        return 0;
 }
+
+int is_core_disabled(int nr) {
+       ccsr_gur_t *gur = (void *)(CONFIG_SYS_MPC85xx_GUTS_ADDR);
+       u32 devdisr = in_be32(&gur->devdisr);
+
+       switch (nr) {
+       case 0:
+               return (devdisr & MPC85xx_DEVDISR_CPU0);
+       case 1:
+               return (devdisr & MPC85xx_DEVDISR_CPU1);
+       default:
+               printf("Invalid cpu number for disable %d\n", nr);
+       }
+
+       return 0;
+}
 #endif
 
 static u8 boot_entry_map[4] = {
@@ -105,7 +128,7 @@ static u8 boot_entry_map[4] = {
        BOOT_ENTRY_R6_LOWER,
 };
 
-int cpu_release(int nr, int argc, char *argv[])
+int cpu_release(int nr, int argc, char * const argv[])
 {
        u32 i, val, *table = (u32 *)get_spin_virt_addr() + nr * NUM_BOOT_ENTRY;
        u64 boot_addr;