summaryrefslogtreecommitdiffstats
path: root/target/linux/brcm63xx/files
diff options
context:
space:
mode:
Diffstat (limited to 'target/linux/brcm63xx/files')
-rw-r--r--target/linux/brcm63xx/files/arch/mips/bcm963xx/irq.c39
-rw-r--r--target/linux/brcm63xx/files/arch/mips/bcm963xx/prom.c6
-rw-r--r--target/linux/brcm63xx/files/arch/mips/bcm963xx/setup.c2
-rw-r--r--target/linux/brcm63xx/files/arch/mips/bcm963xx/time.c8
-rw-r--r--target/linux/brcm63xx/files/arch/mips/pci/fixup-bcm96348.c2
-rw-r--r--target/linux/brcm63xx/files/drivers/serial/bcm63xx_cons.c2
-rw-r--r--target/linux/brcm63xx/files/include/asm-mips/mach-bcm963xx/war.h25
7 files changed, 53 insertions, 31 deletions
diff --git a/target/linux/brcm63xx/files/arch/mips/bcm963xx/irq.c b/target/linux/brcm63xx/files/arch/mips/bcm963xx/irq.c
index 962cd374d..62a848bd7 100644
--- a/target/linux/brcm63xx/files/arch/mips/bcm963xx/irq.c
+++ b/target/linux/brcm63xx/files/arch/mips/bcm963xx/irq.c
@@ -40,7 +40,7 @@
#include <bcm_map_part.h>
#include <bcm_intr.h>
-static void irq_dispatch_int(struct pt_regs *regs)
+static void irq_dispatch_int(void)
{
unsigned int pendingIrqs;
static unsigned int irqBit;
@@ -78,24 +78,25 @@ static void irq_dispatch_ext(uint32 irq)
}
-extern void brcm_timer_interrupt(struct pt_regs *regs);
+//extern void brcm_timer_interrupt(struct pt_regs *regs);
-asmlinkage void plat_irq_dispatch(struct pt_regs *regs)
+asmlinkage void plat_irq_dispatch(void)
{
- u32 cause;
- while((cause = (read_c0_cause()& CAUSEF_IP))) {
- if (cause & CAUSEF_IP7)
- brcm_timer_interrupt(regs);
- else if (cause & CAUSEF_IP2)
- irq_dispatch_int(regs);
- else if (cause & CAUSEF_IP3)
- irq_dispatch_ext(INTERRUPT_ID_EXTERNAL_0);
- else if (cause & CAUSEF_IP4)
- irq_dispatch_ext(INTERRUPT_ID_EXTERNAL_1);
- else if (cause & CAUSEF_IP5)
- irq_dispatch_ext(INTERRUPT_ID_EXTERNAL_2);
- else if (cause & CAUSEF_IP6)
- irq_dispatch_ext(INTERRUPT_ID_EXTERNAL_3);
+ unsigned long cause;
+
+ cause = read_c0_status() & read_c0_cause() & ST0_IM;
+ if (cause & CAUSEF_IP7)
+ do_IRQ(7);
+ else if (cause & CAUSEF_IP2)
+ irq_dispatch_int();
+ else if (cause & CAUSEF_IP3)
+ irq_dispatch_ext(INTERRUPT_ID_EXTERNAL_0);
+ else if (cause & CAUSEF_IP4)
+ irq_dispatch_ext(INTERRUPT_ID_EXTERNAL_1);
+ else if (cause & CAUSEF_IP5)
+ irq_dispatch_ext(INTERRUPT_ID_EXTERNAL_2);
+ else if (cause & CAUSEF_IP6) {
+ irq_dispatch_ext(INTERRUPT_ID_EXTERNAL_3);
local_irq_disable();
}
}
@@ -239,12 +240,12 @@ unsigned int BcmHalMapInterrupt(FN_HANDLER pfunc, unsigned int param,
if( interruptId >= INTERNAL_ISR_TABLE_OFFSET )
{
printk("BcmHalMapInterrupt : internal IRQ\n");
- nRet = request_irq( interruptId, pfunc, SA_SAMPLE_RANDOM | SA_INTERRUPT, devname, (void *) param );
+ nRet = request_irq( interruptId, pfunc, IRQF_DISABLED, devname, (void *) param );
}
else if (interruptId >= INTERRUPT_ID_EXTERNAL_0 && interruptId <= INTERRUPT_ID_EXTERNAL_3)
{
printk("BcmHalMapInterrupt : external IRQ\n");
- nRet = request_external_irq( interruptId, pfunc, SA_SAMPLE_RANDOM | SA_INTERRUPT, devname, (void *) param );
+ nRet = request_external_irq( interruptId, pfunc, IRQF_DISABLED, devname, (void *) param );
}
return( nRet );
diff --git a/target/linux/brcm63xx/files/arch/mips/bcm963xx/prom.c b/target/linux/brcm63xx/files/arch/mips/bcm963xx/prom.c
index e02d31c9e..5ebadc667 100644
--- a/target/linux/brcm63xx/files/arch/mips/bcm963xx/prom.c
+++ b/target/linux/brcm63xx/files/arch/mips/bcm963xx/prom.c
@@ -56,15 +56,9 @@ void __init prom_init(void)
/* Detect the bootloader */
detect_bootloader();
- /* Do further initialisations depending on the bootloader */
- if (boot_loader_type == BOOT_LOADER_CFE || boot_loader_type == BOOT_LOADER_CFE2) {
- cfe_setup(fw_arg0, fw_arg1, fw_arg2, fw_arg3);
- }
/* Register 16MB RAM minus the ADSL SDRAM by default */
add_memory_region(0, (0x01000000 - ADSL_SDRAM_IMAGE_SIZE), BOOT_MEM_RAM);
- mips_machgroup = MACH_GROUP_BRCM;
- mips_machtype = MACH_BCM;
}
void __init prom_free_prom_memory(void)
diff --git a/target/linux/brcm63xx/files/arch/mips/bcm963xx/setup.c b/target/linux/brcm63xx/files/arch/mips/bcm963xx/setup.c
index 70c6ebe60..58472783f 100644
--- a/target/linux/brcm63xx/files/arch/mips/bcm963xx/setup.c
+++ b/target/linux/brcm63xx/files/arch/mips/bcm963xx/setup.c
@@ -465,7 +465,7 @@ void __init plat_mem_setup(void)
_machine_halt = brcm_machine_halt;
pm_power_off = brcm_machine_halt;
- board_time_init = brcm_time_init;
+ //board_time_init = brcm_time_init;
/* mpi initialization */
mpi_init();
diff --git a/target/linux/brcm63xx/files/arch/mips/bcm963xx/time.c b/target/linux/brcm63xx/files/arch/mips/bcm963xx/time.c
index 8b82ada37..fa0fa71a7 100644
--- a/target/linux/brcm63xx/files/arch/mips/bcm963xx/time.c
+++ b/target/linux/brcm63xx/files/arch/mips/bcm963xx/time.c
@@ -77,6 +77,7 @@ static inline unsigned long __init cal_r4koff(void)
* handler floating around. This one is rather different, but the algorithm
* is provably more robust.
*/
+#if 0
irqreturn_t brcm_timer_interrupt(struct pt_regs *regs)
{
int irq = MIPS_TIMER_INT;
@@ -88,9 +89,9 @@ irqreturn_t brcm_timer_interrupt(struct pt_regs *regs)
irq_exit();
return IRQ_HANDLED;
}
+#endif
-
-void __init brcm_time_init(void)
+void __init plat_time_init(void)
{
unsigned int est_freq, flags;
local_irq_save(flags);
@@ -107,10 +108,11 @@ void __init brcm_time_init(void)
local_irq_restore(flags);
}
-
+#if 0
void __init plat_timer_setup(struct irqaction *irq)
{
r4k_cur = (read_c0_count() + r4k_offset);
write_c0_compare(r4k_cur);
set_c0_status(IE_IRQ5);
}
+#endif
diff --git a/target/linux/brcm63xx/files/arch/mips/pci/fixup-bcm96348.c b/target/linux/brcm63xx/files/arch/mips/pci/fixup-bcm96348.c
index ae71ebc73..e3703a94c 100644
--- a/target/linux/brcm63xx/files/arch/mips/pci/fixup-bcm96348.c
+++ b/target/linux/brcm63xx/files/arch/mips/pci/fixup-bcm96348.c
@@ -36,7 +36,7 @@ static char irq_tab_bcm96348[] __initdata = {
#endif
};
-int __init pcibios_map_irq(struct pci_dev *dev, u8 slot, u8 pin)
+int __init pcibios_map_irq(const struct pci_dev *dev, u8 slot, u8 pin)
{
return irq_tab_bcm96348[slot];
}
diff --git a/target/linux/brcm63xx/files/drivers/serial/bcm63xx_cons.c b/target/linux/brcm63xx/files/drivers/serial/bcm63xx_cons.c
index b026aa10a..8fff16dd9 100644
--- a/target/linux/brcm63xx/files/drivers/serial/bcm63xx_cons.c
+++ b/target/linux/brcm63xx/files/drivers/serial/bcm63xx_cons.c
@@ -893,7 +893,7 @@ static int bcm63xx_cons_open(struct tty_struct *tty, struct file *filp)
#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,0)
- info->pgrp = process_group(current);
+ info->pgrp = task_pgrp(current);
#else
info->session = current->session;
info->pgrp = current->pgrp;
diff --git a/target/linux/brcm63xx/files/include/asm-mips/mach-bcm963xx/war.h b/target/linux/brcm63xx/files/include/asm-mips/mach-bcm963xx/war.h
new file mode 100644
index 000000000..0f09a31e6
--- /dev/null
+++ b/target/linux/brcm63xx/files/include/asm-mips/mach-bcm963xx/war.h
@@ -0,0 +1,25 @@
+/*
+ * This file is subject to the terms and conditions of the GNU General Public
+ * License. See the file "COPYING" in the main directory of this archive
+ * for more details.
+ *
+ * Copyright (C) 2002, 2004, 2007 by Ralf Baechle <ralf@linux-mips.org>
+ */
+#ifndef __ASM_MIPS_MACH_BCM963XX_WAR_H
+#define __ASM_MIPS_MACH_BCM963XX_WAR_H
+
+#define R4600_V1_INDEX_ICACHEOP_WAR 0
+#define R4600_V1_HIT_CACHEOP_WAR 0
+#define R4600_V2_HIT_CACHEOP_WAR 0
+#define R5432_CP0_INTERRUPT_WAR 0
+#define BCM1250_M3_WAR 0
+#define SIBYTE_1956_WAR 0
+#define MIPS4K_ICACHE_REFILL_WAR 0
+#define MIPS_CACHE_SYNC_WAR 0
+#define TX49XX_ICACHE_INDEX_INV_WAR 0
+#define RM9000_CDEX_SMP_WAR 0
+#define ICACHE_REFILLS_WORKAROUND_WAR 0
+#define R10000_LLSC_WAR 0
+#define MIPS34K_MISSED_ITLB_WAR 0
+
+#endif /* __ASM_MIPS_MACH_BCM963XX_WAR_H */