| .. | .. |
|---|
| 111 | 111 | extern irqreturn_t crime_memerr_intr(int irq, void *dev_id); |
|---|
| 112 | 112 | extern irqreturn_t crime_cpuerr_intr(int irq, void *dev_id); |
|---|
| 113 | 113 | |
|---|
| 114 | | -static struct irqaction memerr_irq = { |
|---|
| 115 | | - .handler = crime_memerr_intr, |
|---|
| 116 | | - .name = "CRIME memory error", |
|---|
| 117 | | -}; |
|---|
| 118 | | - |
|---|
| 119 | | -static struct irqaction cpuerr_irq = { |
|---|
| 120 | | - .handler = crime_cpuerr_intr, |
|---|
| 121 | | - .name = "CRIME CPU error", |
|---|
| 122 | | -}; |
|---|
| 123 | | - |
|---|
| 124 | 114 | /* |
|---|
| 125 | 115 | * This is for pure CRIME interrupts - ie not MACE. The advantage? |
|---|
| 126 | 116 | * We get to split the register in half and do faster lookups. |
|---|
| .. | .. |
|---|
| 497 | 487 | break; |
|---|
| 498 | 488 | } |
|---|
| 499 | 489 | } |
|---|
| 500 | | - setup_irq(CRIME_MEMERR_IRQ, &memerr_irq); |
|---|
| 501 | | - setup_irq(CRIME_CPUERR_IRQ, &cpuerr_irq); |
|---|
| 490 | + if (request_irq(CRIME_MEMERR_IRQ, crime_memerr_intr, 0, |
|---|
| 491 | + "CRIME memory error", NULL)) |
|---|
| 492 | + pr_err("Failed to register CRIME memory error interrupt\n"); |
|---|
| 493 | + if (request_irq(CRIME_CPUERR_IRQ, crime_cpuerr_intr, 0, |
|---|
| 494 | + "CRIME CPU error", NULL)) |
|---|
| 495 | + pr_err("Failed to register CRIME CPU error interrupt\n"); |
|---|
| 502 | 496 | |
|---|
| 503 | 497 | #define ALLINTS (IE_IRQ0 | IE_IRQ1 | IE_IRQ2 | IE_IRQ3 | IE_IRQ4 | IE_IRQ5) |
|---|
| 504 | 498 | change_c0_status(ST0_IM, ALLINTS); |
|---|