[U-Boot-Users] [PATCH] Adds support for the PPC440x5 Processor on Virtex5 FX
Ricardo Ribalda Delgado
ricardo.ribalda at uam.es
Thu Jul 10 19:53:26 CEST 2008
Signed-off-by: Ricardo Ribalda Delgado <ricardo.ribalda at uam.es>
---
cpu/ppc4xx/4xx_enet.c | 2 +-
cpu/ppc4xx/4xx_uart.c | 4 ++++
cpu/ppc4xx/cpu.c | 5 +++++
cpu/ppc4xx/gpio.c | 5 +++++
cpu/ppc4xx/interrupts.c | 6 ++++++
cpu/ppc4xx/miiphy.c | 5 +++++
cpu/ppc4xx/speed.c | 5 ++++-
cpu/ppc4xx/start.S | 1 +
include/asm-ppc/processor.h | 2 ++
net/eth.c | 3 ++-
10 files changed, 35 insertions(+), 3 deletions(-)
diff --git a/cpu/ppc4xx/4xx_enet.c b/cpu/ppc4xx/4xx_enet.c
index 4e863dc..d55ce56 100644
--- a/cpu/ppc4xx/4xx_enet.c
+++ b/cpu/ppc4xx/4xx_enet.c
@@ -97,7 +97,7 @@
* network support enabled.
* Remark: CONFIG_405 describes Xilinx PPC405 FPGA without EMAC controller!
*/
-#if defined(CONFIG_CMD_NET) && !defined(CONFIG_405) && !defined(CONFIG_IOP480)
+#if defined(CONFIG_CMD_NET) && !defined(CONFIG_405) && !defined(CONFIG_IOP480) && !defined(CONFIG_440_VIRTEX5)
#if !(defined(CONFIG_MII) || defined(CONFIG_CMD_MII))
#error "CONFIG_MII has to be defined!"
diff --git a/cpu/ppc4xx/4xx_uart.c b/cpu/ppc4xx/4xx_uart.c
index a7587d4..e79c48c 100644
--- a/cpu/ppc4xx/4xx_uart.c
+++ b/cpu/ppc4xx/4xx_uart.c
@@ -48,6 +48,7 @@
#include <watchdog.h>
#include <asm/ppc4xx-intvec.h>
+#if !defined(CONFIG_440_VIRTEX5)
#ifdef CONFIG_SERIAL_MULTI
#include <serial.h>
#endif
@@ -58,6 +59,7 @@
DECLARE_GLOBAL_DATA_PTR;
+
#if defined(CONFIG_405GP) || defined(CONFIG_405CR) || \
defined(CONFIG_405EP) || defined(CONFIG_405EZ) || \
defined(CONFIG_405EX) || defined(CONFIG_440)
@@ -873,3 +875,5 @@ int serial_tstc(void)
#endif /* CONFIG_SERIAL_MULTI */
#endif /* CONFIG_405GP || CONFIG_405CR */
+
+#endif
diff --git a/cpu/ppc4xx/cpu.c b/cpu/ppc4xx/cpu.c
index 39f439d..defbbba 100644
--- a/cpu/ppc4xx/cpu.c
+++ b/cpu/ppc4xx/cpu.c
@@ -508,6 +508,11 @@ int checkcpu (void)
puts("GT Rev. A");
strcpy(addstr, "Security/Kasumi support");
break;
+
+ case PVR_VIRTEX5:
+ printf(" VIRTEX5");
+ break;
+
default:
printf (" UNKNOWN (PVR=%08x)", pvr);
diff --git a/cpu/ppc4xx/gpio.c b/cpu/ppc4xx/gpio.c
index df99f53..59159ee 100644
--- a/cpu/ppc4xx/gpio.c
+++ b/cpu/ppc4xx/gpio.c
@@ -26,6 +26,9 @@
#include <asm/io.h>
#include <asm/gpio.h>
+
+#if !defined(CONFIG_440_VIRTEX5)
+
#if defined(CFG_4xx_GPIO_TABLE)
gpio_param_s const gpio_tab[GPIO_GROUP_MAX][GPIO_MAX] = CFG_4xx_GPIO_TABLE;
#endif
@@ -253,3 +256,5 @@ void gpio_set_chip_configuration(void)
}
}
#endif /* CFG_4xx_GPIO_TABLE */
+
+#endif
diff --git a/cpu/ppc4xx/interrupts.c b/cpu/ppc4xx/interrupts.c
index 8620e2b..7c7b073 100644
--- a/cpu/ppc4xx/interrupts.c
+++ b/cpu/ppc4xx/interrupts.c
@@ -28,6 +28,9 @@
*/
#include <common.h>
+
+#if !defined(CONFIG_440_VIRTEX5)
+
#include <watchdog.h>
#include <command.h>
#include <asm/processor.h>
@@ -393,3 +396,6 @@ int do_irqinfo(cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
return 0;
}
#endif
+
+
+#endif
diff --git a/cpu/ppc4xx/miiphy.c b/cpu/ppc4xx/miiphy.c
index c882720..172fbcd 100644
--- a/cpu/ppc4xx/miiphy.c
+++ b/cpu/ppc4xx/miiphy.c
@@ -43,6 +43,9 @@
#include <405_mal.h>
#include <miiphy.h>
+
+#if !defined(CONFIG_440_VIRTEX5)
+
#if !defined(CONFIG_PHY_CLK_FREQ)
#define CONFIG_PHY_CLK_FREQ 0
#endif
@@ -331,3 +334,5 @@ int emac4xx_miiphy_write (char *devname, unsigned char addr, unsigned char reg,
{
return emac_miiphy_command(addr, reg, EMAC_STACR_WRITE, value);
}
+
+#endif
diff --git a/cpu/ppc4xx/speed.c b/cpu/ppc4xx/speed.c
index 34bd721..5aa3655 100644
--- a/cpu/ppc4xx/speed.c
+++ b/cpu/ppc4xx/speed.c
@@ -415,7 +415,7 @@ ulong get_PCI_freq (void)
return sys_info.freqPCI;
}
-#elif !defined(CONFIG_440GX) && !defined(CONFIG_440SP) && !defined(CONFIG_440SPE)
+#elif !defined(CONFIG_440GX) && !defined(CONFIG_440SP) && !defined(CONFIG_440SPE) &&!defined(CONFIG_440_VIRTEX5)
void get_sys_info (sys_info_t * sysInfo)
{
unsigned long strp0;
@@ -448,6 +448,8 @@ void get_sys_info (sys_info_t * sysInfo)
sysInfo->freqUART = sysInfo->freqPLB;
}
#else
+
+#if !defined(CONFIG_440_VIRTEX5)
void get_sys_info (sys_info_t * sysInfo)
{
unsigned long strp0;
@@ -534,6 +536,7 @@ void get_sys_info (sys_info_t * sysInfo)
}
#endif
+#endif
#if defined(CONFIG_YUCCA)
unsigned long determine_sysper(void)
diff --git a/cpu/ppc4xx/start.S b/cpu/ppc4xx/start.S
index 426bf3c..acb536d 100644
--- a/cpu/ppc4xx/start.S
+++ b/cpu/ppc4xx/start.S
@@ -367,6 +367,7 @@ skip_debug_init:
/*----------------------------------------------------------------*/
/* Setup interrupt vectors */
/*----------------------------------------------------------------*/
+ li r0,0
mtspr ivpr,r0 /* Vectors start at 0x0000_0000 */
li r1,0x0100
mtspr ivor0,r1 /* Critical input */
diff --git a/include/asm-ppc/processor.h b/include/asm-ppc/processor.h
index 10fd478..04fa431 100644
--- a/include/asm-ppc/processor.h
+++ b/include/asm-ppc/processor.h
@@ -835,6 +835,8 @@
#define PVR_86xx 0x80040000
#define PVR_86xx_REV1 (PVR_86xx | 0x0010)
+#define PVR_VIRTEX5 0x7ff21912
+
/*
* For the 8xx processors, all of them report the same PVR family for
* the PowerPC core. The various versions of these processors must be
diff --git a/net/eth.c b/net/eth.c
index 7fc9aee..763308d 100644
--- a/net/eth.c
+++ b/net/eth.c
@@ -291,6 +291,7 @@ int eth_initialize(bd_t *bis)
at91sam9_eth_initialize(bis);
#endif
+
if (!eth_devices) {
puts ("No ethernet found.\n");
show_boot_progress (-64);
@@ -621,7 +622,7 @@ int eth_initialize(bd_t *bis)
at91rm9200_miiphy_initialize(bis);
#endif
#if defined(CONFIG_4xx) && !defined(CONFIG_IOP480) \
- && !defined(CONFIG_AP1000) && !defined(CONFIG_405)
+ && !defined(CONFIG_AP1000) && !defined(CONFIG_405) && !defined(CONFIG_440_VIRTEX5)
emac4xx_miiphy_initialize(bis);
#endif
#if defined(CONFIG_MCF52x2)
--
1.5.6.2
More information about the U-Boot
mailing list