mirror of
git://projects.qi-hardware.com/openwrt-xburst.git
synced 2024-11-10 03:51:33 +02:00
127 lines
3.7 KiB
Diff
127 lines
3.7 KiB
Diff
|
From d1259cf42ce84246c695f06b44d58e3aca0a480b Mon Sep 17 00:00:00 2001
|
||
|
From: Axel Gembe <ago@bastart.eu.org>
|
||
|
Date: Sat, 17 May 2008 14:59:35 +0200
|
||
|
Subject: [PATCH] bcm96345: correct some 6345 specific stuff
|
||
|
|
||
|
This fixes some problems with the 6345 support and adds a macro for CPU
|
||
|
identification that is easier on the eyes. The first thing it does is to not
|
||
|
initialize MPI on the 6345 as it does not have PCI. The second thing it does is
|
||
|
to use a static value for the CPU frequency of the 6345 chip to provide an
|
||
|
accurate timer.
|
||
|
|
||
|
Signed-off-by: Axel Gembe <ago@bastart.eu.org>
|
||
|
---
|
||
|
arch/mips/bcm963xx/setup.c | 8 ++++++--
|
||
|
arch/mips/bcm963xx/time.c | 5 ++++-
|
||
|
arch/mips/pci/pci-bcm96348.c | 21 +++++++++++++--------
|
||
|
include/asm-mips/mach-bcm963xx/board.h | 2 ++
|
||
|
4 files changed, 25 insertions(+), 11 deletions(-)
|
||
|
|
||
|
diff --git a/arch/mips/bcm963xx/setup.c b/arch/mips/bcm963xx/setup.c
|
||
|
index 982cba0..c12c9c3 100644
|
||
|
--- a/arch/mips/bcm963xx/setup.c
|
||
|
+++ b/arch/mips/bcm963xx/setup.c
|
||
|
@@ -43,6 +43,7 @@
|
||
|
#include <asm/bootinfo.h>
|
||
|
#include <asm/cpu.h>
|
||
|
#include <asm/mach-bcm963xx/bootloaders.h>
|
||
|
+#include <asm/mach-bcm963xx/board.h>
|
||
|
|
||
|
extern void brcm_time_init(void);
|
||
|
extern int boot_loader_type;
|
||
|
@@ -465,6 +466,9 @@ void __init plat_mem_setup(void)
|
||
|
_machine_halt = brcm_machine_halt;
|
||
|
pm_power_off = brcm_machine_halt;
|
||
|
|
||
|
- /* mpi initialization */
|
||
|
- mpi_init();
|
||
|
+ /* BCM96345 has no MPI */
|
||
|
+ if (!ISBCM(0x6345)) {
|
||
|
+ /* mpi initialization */
|
||
|
+ mpi_init();
|
||
|
+ }
|
||
|
}
|
||
|
diff --git a/arch/mips/bcm963xx/time.c b/arch/mips/bcm963xx/time.c
|
||
|
index 75f751a..22ad56d 100644
|
||
|
--- a/arch/mips/bcm963xx/time.c
|
||
|
+++ b/arch/mips/bcm963xx/time.c
|
||
|
@@ -39,6 +39,8 @@
|
||
|
#include <6348_intr.h>
|
||
|
#include <bcm_map_part.h>
|
||
|
#include <bcm_intr.h>
|
||
|
+#include <asm/mach-bcm963xx/board.h>
|
||
|
+
|
||
|
|
||
|
/*
|
||
|
* calculateCpuSpeed()
|
||
|
@@ -62,11 +64,12 @@ static inline unsigned long __init calculateCpuSpeed(void)
|
||
|
}
|
||
|
|
||
|
|
||
|
+#define BCM96345_CPU_CLOCK 140000000
|
||
|
void __init plat_time_init(void)
|
||
|
{
|
||
|
unsigned long cpu_clock;
|
||
|
|
||
|
- cpu_clock = calculateCpuSpeed();
|
||
|
+ cpu_clock = ISBCM(0x6345) ? BCM96345_CPU_CLOCK : calculateCpuSpeed();
|
||
|
|
||
|
printk("CPU frequency %lu.%02lu MHz\n", cpu_clock / 1000000,
|
||
|
(cpu_clock % 1000000) * 100 / 1000000);
|
||
|
diff --git a/arch/mips/pci/pci-bcm96348.c b/arch/mips/pci/pci-bcm96348.c
|
||
|
index bea3b7b..1e82283 100644
|
||
|
--- a/arch/mips/pci/pci-bcm96348.c
|
||
|
+++ b/arch/mips/pci/pci-bcm96348.c
|
||
|
@@ -21,6 +21,8 @@
|
||
|
#include <linux/kernel.h>
|
||
|
#include <linux/init.h>
|
||
|
|
||
|
+#include <asm/mach-bcm963xx/6348_map_part.h>
|
||
|
+#include <asm/mach-bcm963xx/board.h>
|
||
|
#include <bcmpci.h>
|
||
|
|
||
|
static struct resource bcm_pci_io_resource = {
|
||
|
@@ -47,16 +49,19 @@ struct pci_controller bcm96348_controller = {
|
||
|
|
||
|
static __init int bcm96348_pci_init(void)
|
||
|
{
|
||
|
- /* Avoid ISA compat ranges. */
|
||
|
- PCIBIOS_MIN_IO = 0x00000000;
|
||
|
- PCIBIOS_MIN_MEM = 0x00000000;
|
||
|
+ if (!ISBCM(0x6345)) {
|
||
|
+ /* Avoid ISA compat ranges. */
|
||
|
+ PCIBIOS_MIN_IO = 0x00000000;
|
||
|
+ PCIBIOS_MIN_MEM = 0x00000000;
|
||
|
|
||
|
- /* Set I/O resource limits. */
|
||
|
- ioport_resource.end = 0x1fffffff;
|
||
|
- iomem_resource.end = 0xffffffff;
|
||
|
+ /* Set I/O resource limits. */
|
||
|
+ ioport_resource.end = 0x1fffffff;
|
||
|
+ iomem_resource.end = 0xffffffff;
|
||
|
|
||
|
- register_pci_controller(&bcm96348_controller);
|
||
|
- return 0;
|
||
|
+ register_pci_controller(&bcm96348_controller);
|
||
|
+ }
|
||
|
+
|
||
|
+ return 0;
|
||
|
}
|
||
|
|
||
|
arch_initcall(bcm96348_pci_init);
|
||
|
diff --git a/include/asm-mips/mach-bcm963xx/board.h b/include/asm-mips/mach-bcm963xx/board.h
|
||
|
index e674cb1..73fa924 100644
|
||
|
--- a/include/asm-mips/mach-bcm963xx/board.h
|
||
|
+++ b/include/asm-mips/mach-bcm963xx/board.h
|
||
|
@@ -369,5 +369,7 @@ void kerSysWakeupMonitorTask( void );
|
||
|
|
||
|
extern int boot_loader_type;
|
||
|
|
||
|
+#define ISBCM(x) (((PERF->RevID & 0xFFFF0000) >> 16) == x)
|
||
|
+
|
||
|
#endif /* _BOARD_H */
|
||
|
|
||
|
--
|
||
|
1.5.5.1
|
||
|
|