From acf8ea271b9bb7fa5163d6e6e1835a65f0a847ad Mon Sep 17 00:00:00 2001 From: Greg Ungerer Date: Fri, 1 May 2009 17:22:36 +1000 Subject: [PATCH] --- yaml --- r: 162645 b: refs/heads/master c: 0531d7b36b9894b60ba9c0633993d49a813555ff h: refs/heads/master i: 162643: e1a81fe8d212a640887aef7bdff946f6694b3b6b v: v3 --- [refs] | 2 +- trunk/arch/m68knommu/platform/68360/ints.c | 44 ++++++++++++++-------- 2 files changed, 30 insertions(+), 16 deletions(-) diff --git a/[refs] b/[refs] index ce24ff4542d0..cef0b1be899b 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 1985d2538cccdcdb444d03bc5994be82e85e1f60 +refs/heads/master: 0531d7b36b9894b60ba9c0633993d49a813555ff diff --git a/trunk/arch/m68knommu/platform/68360/ints.c b/trunk/arch/m68knommu/platform/68360/ints.c index c36781157e09..1143f77caca4 100644 --- a/trunk/arch/m68knommu/platform/68360/ints.c +++ b/trunk/arch/m68knommu/platform/68360/ints.c @@ -37,11 +37,33 @@ extern void *_ramvec[]; /* The number of spurious interrupts */ volatile unsigned int num_spurious; +static void intc_irq_unmask(unsigned int irq) +{ + pquicc->intr_cimr |= (1 << irq); +} + +static void intc_irq_mask(unsigned int irq) +{ + pquicc->intr_cimr &= ~(1 << irq); +} + +static void intc_irq_ack(unsigned int irq) +{ + pquicc->intr_cisr = (1 << irq); +} + +static struct irq_chip intc_irq_chip = { + .name = "M68K-INTC", + .mask = intc_irq_mask, + .unmask = intc_irq_unmask, + .ack = intc_irq_ack, +}; + /* * This function should be called during kernel startup to initialize * the vector table. */ -void init_vectors(void) +void init_IRQ(void) { int i; int vba = (CPM_VECTOR_BASE<<4); @@ -109,20 +131,12 @@ void init_vectors(void) /* turn off all CPM interrupts */ pquicc->intr_cimr = 0x00000000; -} - -void enable_vector(unsigned int irq) -{ - pquicc->intr_cimr |= (1 << irq); -} -void disable_vector(unsigned int irq) -{ - pquicc->intr_cimr &= ~(1 << irq); -} - -void ack_vector(unsigned int irq) -{ - pquicc->intr_cisr = (1 << irq); + for (i = 0; (i < NR_IRQS); i++) { + irq_desc[i].status = IRQ_DISABLED; + irq_desc[i].action = NULL; + irq_desc[i].depth = 1; + irq_desc[i].chip = &intc_irq_chip; + } }