首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >DM6446 GPIO银行0 request_irq返回-22

DM6446 GPIO银行0 request_irq返回-22
EN

Stack Overflow用户
提问于 2016-10-07 18:03:50
回答 1查看 260关注 0票数 0

我正试图在我的驱动程序中为DM6446 GPIO银行0 interrupt.But request_irq返回设置一个中断处理程序。我从数据表中知道GPIO银行的中断号为56。下面是我代码中GPIO的设置,我想在GPIO-10上获得中断。

代码语言:javascript
复制
while((REG_VAL(PTSTAT) & 0x1) != 0);            // Wait for power state transtion to finish     
REG_VAL(MDCTL26) =  0x00000203;                  //To enable GPIO module and EMURSITE BIT as stated in sprue14 for state transition
REG_VAL(PTCMD) = 0x1;           // Start power state transition for ALWAYSON
while((REG_VAL(PTSTAT) & 0x1) != 0);            // Wait for power state transtion to finish 
REG_VAL(PINMUX0) = REG_VAL(PINMUX0) &  0x80000000;             //Disbale other Functionlaity on BANK 0 pins 
printk(KERN_DEBUG "I2C: PINMUX0 = %x\n",REG_VAL(PINMUX0));

REG_VAL(DIR01)   =  REG_VAL(DIR01) | 0xFFFFFFFF;              //Set direction as input for GPIO 0 and 10
REG_VAL(BINTEN)  =  REG_VAL(BINTEN) | 0x00000001;             //Enable Interrupt for GPIO Bank 0
REG_VAL(SET_RIS_TRIG01)   =  REG_VAL(SET_RIS_TRIG01) | 0x00000401; // Enable rising edge interrupt of GPIO BANK 0  PIN 0 PIN 10
REG_VAL(CLR_FAL_TRIG01)   =  REG_VAL(CLR_FAL_TRIG01) | 0x00000401; // Disable falling edge interrupt of Bank 0
 Result = request_irq(56,Gpio_Interrupt_Handler,0,"gpio",I2C_MAJOR);
if(Result < 0)
{
    printk(KERN_ALERT "UNABLE TO REQUEST GPIO IRQ %d ",Result);
}

小小的帮助是值得感激的。谢谢。

我也尝试了gpio_to_irq的PIN-10的银行-0,但它返回irq为72,但DM6446有多达63中断号码只有在数据表中。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-10-12 20:34:48

这样啊,原来是这么回事。如果我使用/proc/interruptsgpio_to_irq,它将返回一个有效的IRQ号,但不同于在Processor.If数据表中指定的中断号(我猜该中断号也称为IRQ号)--它将有一个IRQ返回形式gpio_to_irq的条目,但是在GPIO类型下,不是处理器的中断控制器,在我的情况下,ARM的中断控制器应该是AINTC.All其他中断类型。此外,即使request_irq成功地使用数据表中所述的中断号,/proc/stat也将报告两个IRQ号的中断,即AINTC和GPIO类型。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39923373

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档