mirror of
git://projects.qi-hardware.com/openwrt-xburst.git
synced 2025-04-21 12:27:27 +03:00
[mcs814x] do not use MULTI_IRQ_HANDLER it is bogus on our platform
This caused stalls in the Ethernet DMA block, so until properly written and sorted out, fallback to the assembly version instead. git-svn-id: svn://svn.openwrt.org/openwrt/trunk@32470 3c298f89-4303-0410-b956-a3cf2f4a3e73
This commit is contained in:
@@ -20,7 +20,7 @@
|
||||
#define MCS814X_IRQ_MASK 0x20
|
||||
#define MCS814X_IRQ_STS0 0x40
|
||||
|
||||
static void __iomem *mcs814x_intc_base;
|
||||
void __iomem *mcs814x_intc_base;
|
||||
|
||||
static void __init mcs814x_alloc_gc(void __iomem *base, unsigned int irq_start,
|
||||
unsigned int num)
|
||||
@@ -47,26 +47,6 @@ static void __init mcs814x_alloc_gc(void __iomem *base, unsigned int irq_start,
|
||||
__raw_writel(0xffffffff, base + MCS814X_IRQ_ICR);
|
||||
}
|
||||
|
||||
asmlinkage void __exception_irq_entry mcs814x_handle_irq(struct pt_regs *regs)
|
||||
{
|
||||
u32 status, irq;
|
||||
|
||||
do {
|
||||
/* read the status register */
|
||||
status = __raw_readl(mcs814x_intc_base + MCS814X_IRQ_STS0);
|
||||
if (!status)
|
||||
break;
|
||||
|
||||
irq = ffs(status) - 1;
|
||||
status |= (1 << irq);
|
||||
/* clear the interrupt */
|
||||
__raw_writel(status, mcs814x_intc_base + MCS814X_IRQ_ICR);
|
||||
/* call the generic handler */
|
||||
handle_IRQ(irq, regs);
|
||||
|
||||
} while (1);
|
||||
}
|
||||
|
||||
static const struct of_device_id mcs814x_intc_ids[] = {
|
||||
{ .compatible = "moschip,mcs814x-intc" },
|
||||
{ /* sentinel */ },
|
||||
|
||||
Reference in New Issue
Block a user