From mboxrd@z Thu Jan 1 00:00:00 1970 Message-ID: <47C32276.8060509@domain.hid> Date: Mon, 25 Feb 2008 21:17:58 +0100 From: Andras Garzo MIME-Version: 1.0 References: <47C16C8E.8020700@domain.hid> <47C1AA67.4030900@domain.hid> In-Reply-To: <47C1AA67.4030900@domain.hid> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Subject: Re: [Xenomai-help] BF537-Stamp pushbutton interrupts List-Id: Help regarding installation and common use of Xenomai List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: xenomai-help Thanks for help, now it's working... Andras Wolfgang Grandegger wrote: > Andras Garzo wrote: > >> Hi all, >> >> I'm trying to handle the BF537-STAMP pushbutton interrupts with rtdm, but >> my system hangs when calling rtdm_irq_request with the following message: >> >> BUG: failure at arch/blackfin/kernel/bfin_gpio.c:504/set_gpio_maska()! >> Kernel panic - not syncing: BUG! >> >> I'm using linux kernel 2.6.22 and Xenomai 2.4.1. It could be a kernel bug? >> The following code worked well on 2.6.19 with Xenomai 2.3.2: >> >> #include >> #include >> #include >> #include >> #include >> #include >> #include >> #include >> #include >> #include >> #include >> >> #define PPSMOD_IRQ IRQ_PF4 >> >> >> struct ppsmod_dev >> { >> unsigned int irqnum; >> }; >> >> rtdm_irq_t irq_handle; >> >> static int ppsmod_irqhandler(rtdm_irq_t *handle) >> { >> printk(KERN_WARNING "ppsmod: PPS interrupt triggered.\n"); >> return IRQ_HANDLED; >> } >> >> static int __init ppsmod_init(void) >> { >> int alloc_size = sizeof(struct ppsmod_dev); >> struct ppsmod_dev *dev = (struct ppsmod_dev*)kmalloc(alloc_size, >> GFP_KERNEL); >> int ret; >> >> printk(KERN_WARNING "ppsmod: module loaded.\n"); >> >> // installing IRQ handler >> if(rtdm_irq_request(&irq_handle, PPSMOD_IRQ, &ppsmod_irqhandler, >> RTDM_IRQTYPE_EDGE, NULL, dev)) >> { >> printk(KERN_WARNING "ppsmod: PF4 irq is not free.\n"); >> return -EBUSY; >> } >> printk(KERN_WARNING "ppsmod: 23231\n"); >> set_irq_type(IRQ_PF4, IRQF_TRIGGER_RISING); >> rtdm_irq_enable(&irq_handle); >> > > Be aware, that starting with Xenomai v2.4, the interrupt is > automatically enabled by rtdm_irq_request(). > > Wolfgang. >