[POWERPC] PowerPC 440EPx: Sequoia board support

AMCC PPC440EPx Sequoia board support.

Signed-off-by: Valentine Barshak <vbarshak@ru.mvista.com>
Acked-by: David Gibson <david@gibson.dropbear.id.au>
Signed-off-by: Josh Boyer <jwboyer@linux.vnet.ibm.com>
This commit is contained in:
Valentine Barshak 2007-08-29 17:40:30 +04:00 committed by Josh Boyer
parent 38a5d6c9e7
commit 15fc993e31
5 changed files with 102 additions and 2 deletions

View File

@ -1132,6 +1132,24 @@ static struct cpu_spec cpu_specs[] = {
.dcache_bsize = 32, .dcache_bsize = 32,
.platform = "ppc440", .platform = "ppc440",
}, },
{ /* 440EPX */
.pvr_mask = 0xf0000ffb,
.pvr_value = 0x200008D0,
.cpu_name = "440EPX",
.cpu_features = CPU_FTRS_44X,
.cpu_user_features = COMMON_USER_BOOKE | PPC_FEATURE_HAS_FPU,
.icache_bsize = 32,
.dcache_bsize = 32,
},
{ /* 440GRX */
.pvr_mask = 0xf0000ffb,
.pvr_value = 0x200008D8,
.cpu_name = "440GRX",
.cpu_features = CPU_FTRS_44X,
.cpu_user_features = COMMON_USER_BOOKE,
.icache_bsize = 32,
.dcache_bsize = 32,
},
{ /* 440GP Rev. B */ { /* 440GP Rev. B */
.pvr_mask = 0xf0000fff, .pvr_mask = 0xf0000fff,
.pvr_value = 0x40000440, .pvr_value = 0x40000440,

View File

@ -217,7 +217,7 @@ skpinv: addi r4,r4,1 /* Increment */
lis r4,interrupt_base@h /* IVPR only uses the high 16-bits */ lis r4,interrupt_base@h /* IVPR only uses the high 16-bits */
mtspr SPRN_IVPR,r4 mtspr SPRN_IVPR,r4
#ifdef CONFIG_440EP #if defined(CONFIG_440EP) || defined(CONFIG_440EPX)
/* Clear DAPUIB flag in CCR0 (enable APU between CPU and FPU) */ /* Clear DAPUIB flag in CCR0 (enable APU between CPU and FPU) */
mfspr r2,SPRN_CCR0 mfspr r2,SPRN_CCR0
lis r3,0xffef lis r3,0xffef

View File

@ -14,6 +14,14 @@ config EBONY
help help
This option enables support for the IBM PPC440GP evaluation board. This option enables support for the IBM PPC440GP evaluation board.
config SEQUOIA
bool "Sequoia"
depends on 44x
default n
select 440EPX
help
This option enables support for the AMCC PPC440EPX evaluation board.
#config LUAN #config LUAN
# bool "Luan" # bool "Luan"
# depends on 44x # depends on 44x
@ -37,6 +45,13 @@ config 440EP
select IBM440EP_ERR42 select IBM440EP_ERR42
# select IBM_NEW_EMAC_ZMII # select IBM_NEW_EMAC_ZMII
config 440EPX
bool
select PPC_FPU
# Disabled until the new EMAC Driver is merged.
# select IBM_NEW_EMAC_EMAC4
# select IBM_NEW_EMAC_ZMII
config 440GP config 440GP
bool bool
# Disabled until the new EMAC Driver is merged. # Disabled until the new EMAC Driver is merged.
@ -50,7 +65,7 @@ config 440SP
config 440A config 440A
bool bool
depends on 440GX depends on 440GX || 440EPX
default y default y
# 44x errata/workaround config symbols, selected by the CPU models above # 44x errata/workaround config symbols, selected by the CPU models above

View File

@ -1,3 +1,4 @@
obj-$(CONFIG_44x) := misc_44x.o obj-$(CONFIG_44x) := misc_44x.o
obj-$(CONFIG_EBONY) += ebony.o obj-$(CONFIG_EBONY) += ebony.o
obj-$(CONFIG_BAMBOO) += bamboo.o obj-$(CONFIG_BAMBOO) += bamboo.o
obj-$(CONFIG_SEQUOIA) += sequoia.o

View File

@ -0,0 +1,66 @@
/*
* Sequoia board specific routines
*
* Valentine Barshak <vbarshak@ru.mvista.com>
* Copyright 2007 MontaVista Software Inc.
*
* Based on the Bamboo code by
* Josh Boyer <jwboyer@linux.vnet.ibm.com>
* Copyright 2007 IBM Corporation
*
* This program is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License as published by the
* Free Software Foundation; either version 2 of the License, or (at your
* option) any later version.
*/
#include <linux/init.h>
#include <asm/machdep.h>
#include <asm/prom.h>
#include <asm/udbg.h>
#include <asm/time.h>
#include <asm/uic.h>
#include <asm/of_platform.h>
#include "44x.h"
static struct of_device_id sequoia_of_bus[] = {
{ .compatible = "ibm,plb4", },
{ .compatible = "ibm,opb", },
{ .compatible = "ibm,ebc", },
{},
};
static int __init sequoia_device_probe(void)
{
if (!machine_is(sequoia))
return 0;
of_platform_bus_probe(NULL, sequoia_of_bus, NULL);
return 0;
}
device_initcall(sequoia_device_probe);
static int __init sequoia_probe(void)
{
unsigned long root = of_get_flat_dt_root();
if (!of_flat_dt_is_compatible(root, "amcc,sequoia"))
return 0;
return 1;
}
static void __init sequoia_setup_arch(void)
{
}
define_machine(sequoia) {
.name = "Sequoia",
.probe = sequoia_probe,
.setup_arch = sequoia_setup_arch,
.progress = udbg_progress,
.init_IRQ = uic_init_tree,
.get_irq = uic_get_irq,
.restart = ppc44x_reset_system,
.calibrate_decr = generic_calibrate_decr,
};