From: Jiang Lu <lu.ji...@windriver.com> This is based on the cputable.c from LSI. Currently our kernel only support ACP 3448 SoC. But all the ACP 34xx SoC are using a 476 core, and just have minor differences. They also use the same reference board. Adding these cpu entries in cputable will make our kernel boot on all these 34xx silicons.
Signed-off-by: Kevin Hao <kexin....@windriver.com> --- arch/powerpc/include/asm/reg.h | 1 + arch/powerpc/kernel/cputable.c | 58 ++++++++++++++++++++++++++++++++++++------ arch/powerpc/kernel/head_44x.S | 3 +++ 3 files changed, 54 insertions(+), 8 deletions(-) diff --git a/arch/powerpc/include/asm/reg.h b/arch/powerpc/include/asm/reg.h index cae0ed7..b40b2f5 100644 --- a/arch/powerpc/include/asm/reg.h +++ b/arch/powerpc/include/asm/reg.h @@ -957,6 +957,7 @@ #define PVR_405GP 0x40110000 #define PVR_476 0x11a52000 #define PVR_476FPE 0x7ff50000 +#define PVR_476X2 0x11b22080 #define PVR_STB03XXX 0x40310000 #define PVR_NP405H 0x41410000 #define PVR_NP405L 0x41610000 diff --git a/arch/powerpc/kernel/cputable.c b/arch/powerpc/kernel/cputable.c index 31a3dd0..dbd8354 100644 --- a/arch/powerpc/kernel/cputable.c +++ b/arch/powerpc/kernel/cputable.c @@ -1831,9 +1831,23 @@ static struct cpu_spec __initdata cpu_specs[] = { .platform = "ppc440", }, { /* 476 DD2 core */ + .pvr_mask = 0x800fffff, + .pvr_value = 0x00052080, + .cpu_name = "476, DD2", + .cpu_features = CPU_FTRS_47X | CPU_FTR_476_DD2, + .cpu_user_features = COMMON_USER_BOOKE | + PPC_FEATURE_HAS_FPU, + .mmu_features = MMU_FTR_TYPE_47x | + MMU_FTR_USE_TLBIVAX_BCAST | MMU_FTR_LOCK_BCAST_INVAL, + .icache_bsize = 32, + .dcache_bsize = 128, + .machine_check = machine_check_47x, + .platform = "ppc470", + }, + { /* X2 DD2 core */ .pvr_mask = 0xffffffff, - .pvr_value = 0x11a52080, - .cpu_name = "476", + .pvr_value = 0x11b22080, + .cpu_name = "476, X2 DD2", .cpu_features = CPU_FTRS_47X | CPU_FTR_476_DD2, .cpu_user_features = COMMON_USER_BOOKE | PPC_FEATURE_HAS_FPU, @@ -1859,9 +1873,37 @@ static struct cpu_spec __initdata cpu_specs[] = { .platform = "ppc470", }, { /* 476 iss */ - .pvr_mask = 0xffff0000, - .pvr_value = 0x00050000, - .cpu_name = "476", + .pvr_mask = 0xffffffff, + .pvr_value = 0x12b520c0, + .cpu_name = "476", + .cpu_features = CPU_FTRS_47X | CPU_FTR_476_DD2, + .cpu_user_features = COMMON_USER_BOOKE | + PPC_FEATURE_HAS_FPU, + .mmu_features = MMU_FTR_TYPE_47x | + MMU_FTR_USE_TLBIVAX_BCAST | MMU_FTR_LOCK_BCAST_INVAL, + .icache_bsize = 32, + .dcache_bsize = 128, + .machine_check = machine_check_47x, + .platform = "ppc470", + }, + { /* 476 DD3 core */ + .pvr_mask = 0xffff20c0, + .pvr_value = 0x11a520c0, + .cpu_name = "476, DD3", + .cpu_features = CPU_FTRS_47X, + .cpu_user_features = COMMON_USER_BOOKE | + PPC_FEATURE_HAS_FPU, + .mmu_features = MMU_FTR_TYPE_47x | + MMU_FTR_USE_TLBIVAX_BCAST | MMU_FTR_LOCK_BCAST_INVAL, + .icache_bsize = 32, + .dcache_bsize = 128, + .machine_check = machine_check_47x, + .platform = "ppc470", + }, + { /* 476 ACP25xx */ + .pvr_mask = 0x7ff520c1, + .pvr_value = 0x7ff520c1, + .cpu_name = "476, ACP25xx", .cpu_features = CPU_FTRS_47X, .cpu_user_features = COMMON_USER_BOOKE | PPC_FEATURE_HAS_FPU, @@ -1873,9 +1915,9 @@ static struct cpu_spec __initdata cpu_specs[] = { .platform = "ppc470", }, { /* 476 others */ - .pvr_mask = 0xffff0000, - .pvr_value = 0x11a50000, - .cpu_name = "476", + .pvr_mask = 0x800f0000, + .pvr_value = 0x00050000, + .cpu_name = "476, Other", .cpu_features = CPU_FTRS_47X, .cpu_user_features = COMMON_USER_BOOKE | PPC_FEATURE_HAS_FPU, diff --git a/arch/powerpc/kernel/head_44x.S b/arch/powerpc/kernel/head_44x.S index 4aa3bd3..d1b0e79 100644 --- a/arch/powerpc/kernel/head_44x.S +++ b/arch/powerpc/kernel/head_44x.S @@ -824,6 +824,9 @@ _GLOBAL(init_cpu_state) /* We use the PVR to differenciate 44x cores from 476 */ mfspr r3,SPRN_PVR srwi r3,r3,16 + /* Some X2 chips had a PVR that doesn't conform to the standard */ + cmplwi cr0,r3,PVR_476X2@h + beq head_start_47x cmplwi cr0,r3,PVR_476FPE@h beq head_start_47x cmplwi cr0,r3,PVR_476@h -- 1.8.3 _______________________________________________ linux-yocto mailing list linux-yocto@yoctoproject.org https://lists.yoctoproject.org/listinfo/linux-yocto