aboutsummaryrefslogtreecommitdiffstats
path: root/arch/powerpc
diff options
context:
space:
mode:
authorStefan Roese <sr@denx.de>2008-02-23 16:07:41 -0500
committerJosh Boyer <jwboyer@linux.vnet.ibm.com>2008-03-26 08:19:16 -0400
commit464076a4b328946528998513c4ef799fd60de588 (patch)
tree5531bbf03e91426a89060c5317498789b57b4c69 /arch/powerpc
parentecc6cd73b7ccfa10c1f07d017fc7f62fe78eaab5 (diff)
[POWERPC] 4xx: Add AMCC 460EX/460GT support to cputable.c & cpu_setup_44x.S
This patch adds basic support for the AMCC 460EX/460GT PPC's to arch/powerpc. Currently those PPC's are still based on a 440 core and *not* a 460 core. Here some basic features of those SoC's: 460EX: - Up to 1.2GHz, 32kB L1 I-cache and D-cache, 256kB L2-cache, FPU - 1 * PCI (max 66MHz), 2 * PCIe (one 4-lane, one 1-lane) - 2 * GBit Ethernet with TCP/IP acceleration - USB 2.0 Host/Device OTG and Host interface - SATA controller - Optional security feature 460GT (only changes to 460EX): - 4 * GBit Ethernet with TCP/IP acceleration - RapidIO - No SATA - No USB Signed-off-by: Stefan Roese <sr@denx.de> Signed-off-by: Josh Boyer <jwboyer@linux.vnet.ibm.com>
Diffstat (limited to 'arch/powerpc')
-rw-r--r--arch/powerpc/kernel/cpu_setup_44x.S5
-rw-r--r--arch/powerpc/kernel/cputable.c28
2 files changed, 31 insertions, 2 deletions
diff --git a/arch/powerpc/kernel/cpu_setup_44x.S b/arch/powerpc/kernel/cpu_setup_44x.S
index 6250443ab9c9..5465e8de0e61 100644
--- a/arch/powerpc/kernel/cpu_setup_44x.S
+++ b/arch/powerpc/kernel/cpu_setup_44x.S
@@ -3,7 +3,7 @@
3 * Valentine Barshak <vbarshak@ru.mvista.com> 3 * Valentine Barshak <vbarshak@ru.mvista.com>
4 * MontaVista Software, Inc (c) 2007 4 * MontaVista Software, Inc (c) 2007
5 * 5 *
6 * Based on cpu_setup_6xx code by 6 * Based on cpu_setup_6xx code by
7 * Benjamin Herrenschmidt <benh@kernel.crashing.org> 7 * Benjamin Herrenschmidt <benh@kernel.crashing.org>
8 * 8 *
9 * This program is free software; you can redistribute it and/or 9 * This program is free software; you can redistribute it and/or
@@ -32,6 +32,9 @@ _GLOBAL(__setup_cpu_440grx)
32 bl __fixup_440A_mcheck 32 bl __fixup_440A_mcheck
33 mtlr r4 33 mtlr r4
34 blr 34 blr
35_GLOBAL(__setup_cpu_460ex)
36_GLOBAL(__setup_cpu_460gt)
37 b __init_fpu_44x
35_GLOBAL(__setup_cpu_440gx) 38_GLOBAL(__setup_cpu_440gx)
36_GLOBAL(__setup_cpu_440spe) 39_GLOBAL(__setup_cpu_440spe)
37 b __fixup_440A_mcheck 40 b __fixup_440A_mcheck
diff --git a/arch/powerpc/kernel/cputable.c b/arch/powerpc/kernel/cputable.c
index 2a8f5cc5184f..26ffb44e2701 100644
--- a/arch/powerpc/kernel/cputable.c
+++ b/arch/powerpc/kernel/cputable.c
@@ -36,6 +36,8 @@ extern void __setup_cpu_440epx(unsigned long offset, struct cpu_spec* spec);
36extern void __setup_cpu_440gx(unsigned long offset, struct cpu_spec* spec); 36extern void __setup_cpu_440gx(unsigned long offset, struct cpu_spec* spec);
37extern void __setup_cpu_440grx(unsigned long offset, struct cpu_spec* spec); 37extern void __setup_cpu_440grx(unsigned long offset, struct cpu_spec* spec);
38extern void __setup_cpu_440spe(unsigned long offset, struct cpu_spec* spec); 38extern void __setup_cpu_440spe(unsigned long offset, struct cpu_spec* spec);
39extern void __setup_cpu_460ex(unsigned long offset, struct cpu_spec* spec);
40extern void __setup_cpu_460gt(unsigned long offset, struct cpu_spec* spec);
39extern void __setup_cpu_603(unsigned long offset, struct cpu_spec* spec); 41extern void __setup_cpu_603(unsigned long offset, struct cpu_spec* spec);
40extern void __setup_cpu_604(unsigned long offset, struct cpu_spec* spec); 42extern void __setup_cpu_604(unsigned long offset, struct cpu_spec* spec);
41extern void __setup_cpu_750(unsigned long offset, struct cpu_spec* spec); 43extern void __setup_cpu_750(unsigned long offset, struct cpu_spec* spec);
@@ -1397,6 +1399,30 @@ static struct cpu_spec __initdata cpu_specs[] = {
1397 .machine_check = machine_check_440A, 1399 .machine_check = machine_check_440A,
1398 .platform = "ppc440", 1400 .platform = "ppc440",
1399 }, 1401 },
1402 { /* 460EX */
1403 .pvr_mask = 0xffff0002,
1404 .pvr_value = 0x13020002,
1405 .cpu_name = "460EX",
1406 .cpu_features = CPU_FTRS_44X,
1407 .cpu_user_features = COMMON_USER_BOOKE | PPC_FEATURE_HAS_FPU,
1408 .icache_bsize = 32,
1409 .dcache_bsize = 32,
1410 .cpu_setup = __setup_cpu_460ex,
1411 .machine_check = machine_check_440A,
1412 .platform = "ppc440",
1413 },
1414 { /* 460GT */
1415 .pvr_mask = 0xffff0002,
1416 .pvr_value = 0x13020000,
1417 .cpu_name = "460GT",
1418 .cpu_features = CPU_FTRS_44X,
1419 .cpu_user_features = COMMON_USER_BOOKE | PPC_FEATURE_HAS_FPU,
1420 .icache_bsize = 32,
1421 .dcache_bsize = 32,
1422 .cpu_setup = __setup_cpu_460gt,
1423 .machine_check = machine_check_440A,
1424 .platform = "ppc440",
1425 },
1400#endif /* CONFIG_44x */ 1426#endif /* CONFIG_44x */
1401#ifdef CONFIG_FSL_BOOKE 1427#ifdef CONFIG_FSL_BOOKE
1402#ifdef CONFIG_E200 1428#ifdef CONFIG_E200
@@ -1512,7 +1538,7 @@ struct cpu_spec * __init identify_cpu(unsigned long offset, unsigned int pvr)
1512 *t = *s; 1538 *t = *s;
1513 *PTRRELOC(&cur_cpu_spec) = &the_cpu_spec; 1539 *PTRRELOC(&cur_cpu_spec) = &the_cpu_spec;
1514#if defined(CONFIG_PPC64) || defined(CONFIG_BOOKE) 1540#if defined(CONFIG_PPC64) || defined(CONFIG_BOOKE)
1515 /* ppc64 and booke expect identify_cpu to also call 1541 /* ppc64 and booke expect identify_cpu to also call
1516 * setup_cpu for that processor. I will consolidate 1542 * setup_cpu for that processor. I will consolidate
1517 * that at a later time, for now, just use #ifdef. 1543 * that at a later time, for now, just use #ifdef.
1518 * we also don't need to PTRRELOC the function pointer 1544 * we also don't need to PTRRELOC the function pointer