mirror of
git://projects.qi-hardware.com/openwrt-xburst.git
synced 2025-04-21 12:27:27 +03:00
Upgrade brcm63xx to 2.6.24
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@10455 3c298f89-4303-0410-b956-a3cf2f4a3e73
This commit is contained in:
@@ -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 );
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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();
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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];
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user