[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 メーリングリストの案内