[Armadillo:02001] Re: armadillo-500でのEXT_IRQの利用について

nakai email@hidden
2007年 9月 5日 (水) 15:02:16 JST


中井です。

特に問題なさそうですね。
省略されているコードでなにかしているのかもしれませんね。

一応、こちらでもテストしてみたので、そのコードを貼っておきます。

> また、このドライバを insmod すると、/var/log/message には以
> 下のようなログが記録されます。
> 
> Sep  5 11:45:36 debian kernel: Unbalanced enable for IRQ 66
> Sep  5 11:45:36 debian kernel: BUG: warning at
> kernel/irq/manage.c:118/enable_irq()

下記コードでは、表示されませんね。

request_irqの前にenable_irqしたりしてませんか?

↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
#include <linux/module.h>
#include <linux/interrupt.h>
#include <linux/irq.h>

#include <asm/arch/mx31_pins.h>
#include <asm/arch/gpio.h>

#define AUTHOR          "Atmark Techno, Inc."
#define DESCRIPTION     "Armadillo-5x0 Ext-Bus test driver"
#define LICENSE         "GPL v2"

#define KDEBUG_FUNC() printk("%s()\n", __FUNCTION__)

static irqreturn_t
irq_handler(int irq, void *dev_id, struct pt_regs *regs)
{
	KDEBUG_FUNC();

	return IRQ_HANDLED;
}

static int __init
a500_extbus_init(void)
{
	KDEBUG_FUNC();
	gpio_ext_bus_active();
	mxc_set_gpio_direction(MX31_PIN_GPIO1_2, GPIO_DIR_INPUT);

	request_irq(INT_GPIO1_2, irq_handler, SA_INTERRUPT, "Ext-Bus", NULL);
	set_irq_type(INT_GPIO1_2, IRQT_FALLING);

	return 0;
}

static void __exit
a500_extbus_exit(void)
{
	KDEBUG_FUNC();
	free_irq(INT_GPIO1_2, NULL);
}

MODULE_AUTHOR(AUTHOR);
MODULE_DESCRIPTION(DESCRIPTION);
MODULE_LICENSE(LICENSE);

module_init(a500_extbus_init);
module_exit(a500_extbus_exit);


> -----Original Message-----
> From: email@hidden 
> [mailto:email@hidden] On Behalf 
> Of Masaki Suzuki
> Sent: Wednesday, September 05, 2007 2:08 PM
> To: Armadillo series general discussion list
> Subject: [Armadillo:02000] armadillo-500でのEXT_IRQの利用について
> 
> 鈴木と申します。
> 
> 現在、CON17 20pinにアサインされているB_EXT_IRQ信号の変化を割
> り込みとして扱うことが出来ないかを試みているところです。
> 
> 以下のようなテスト用ドライバを作成しているのですが、GNDと一
> 時的にショートさせてB_EXT_IRQをLレベルにしても割り込みハンド
> ラがコールされません。
> 
> ----> ここからテスト用ドライバの抜粋
> static irqreturn_t
> test_irq_handler(int irq, void *dev_id, struct pt_regs *regs)
> {
>   printk(KERN_INFO "Hello\n");
> 
>   return IRQ_HANDLED;
> }
> 
> static int test_init(void)
> {
>   gpio_ext_bus_active();
>   mxc_set_gpio_direction(MX31_PIN_GPIO1_2, GPIO_DIR_INPUT);
> 
>   ret = request_irq(INT_GPIO1_2, test_irq_handler,
>                     SA_INTERRUPT, "EXT_IRQ", NULL);
> 
>   ...
> 
>   set_irq_type(port.irq, IRQT_FALLING);
> 
>   ...
> 
>   return 0;
> }
> <--- ここまでがテスト用ドライバの抜粋
> 
> また、このドライバを insmod すると、/var/log/message には以
> 下のようなログが記録されます。
> 
> Sep  5 11:45:36 debian kernel: Unbalanced enable for IRQ 66
> Sep  5 11:45:36 debian kernel: BUG: warning at
> kernel/irq/manage.c:118/enable_irq()
> 
> BUGが出力されているので、何か処理の足りない部分があると思っ
> てはいるのですが...
> 
> お気づきの点がありましたら、コメント頂ければと思います。
> よろしくお願い致します。
> 
> 
> -- 
>     日興電気通信株式会社
>     システム部 鈴木 正貴
>     <email@hidden>
> 
>     227-0033 横浜市青葉区鴨志田町440
>     Tel : 045-962-2011
>     Fax : 045-963-0141
> 
> _______________________________________________
> armadillo mailing list
> email@hidden
> http://lists.atmark-techno.com/mailman/listinfo/armadillo




armadillo メーリングリストの案内