ret =irq_set_irq_wake(irq,1);if(ret) { pr_err("[BT] Set_irq_wake failed.\n");returnret; }snprintf(bt_lpm.wake_lock_name,sizeof(bt_lpm.wake_lock_name),"BTLowPower"); wake_lock_init(&bt_lpm.wake_lock, WAKE_LOCK_SUSPEND, bt_lpm.wake_lock_name);return0; } 开发者ID:Ante0...
这是中断处理的核心内容,__irq_set_handler就是设定high level handler的接口函数,不过一般不会直接调用,而是通过irq_set_chip_and_handler_name或者irq_set_chip_and_handler来进行设定。具体代码如下: void__irq_set_handler(unsignedintirq,irq_flow_handler_thandle,intis_chained,constchar*name){unsignedlongfl...
通过irq_set_irq_wake接口可以enable或者disable一个IRQ中断是否可以把系统从suspend状态唤醒。同样的,对一个IRQ进行wakeup source的enable和disable的操作可以嵌套(当然一定要成对使用),wake_depth是描述嵌套深度的信息。 (6)irq_count、last_unhandled和irqs_unhandled用于处理broken IRQ 的处理。所谓broken IRQ就是由于...
irq);pn544_disable_irq(pn544_dev);#ifdefLGE_NFC_READ_IRQ_MODIFYdo_reading=1;//DY_TEST#endif/* Wake up waiting readers */wake_up(&pn544_dev->read_wq);returnIRQ_HANDLED;
(5)wake_depth是和电源管理中的wake up source相关。通过irq_set_irq_wake接口可以enable或者disable一个IRQ中断是否可以把系统从suspend状态唤醒。同样的,对一个IRQ进行wakeup source的enable和disable的操作可以嵌套(当然一定要成对使用),wake_depth是描述嵌套深度的信息。
调用了enable_irq_wake会影响系统suspend过程中的suspend_device_irqs处理,代码如下:static bool suspend_device_irq(struct irq_desc *desc){……if(irqd_is_wakeup_set(&desc->irq_data)) {irqd_set(&desc->irq_data, IRQD_WAKEUP_ARMED);return true;}省略Disable 中断的代码}也就是说,一旦调用enable_...
(5)wake_depth是和电源管理中的wake up source相关。通过irq_set_irq_wake接口可以enable或者disable一个IRQ中断是否可以把系统从suspend状态唤醒。同样的,对一个IRQ进行wakeup source的enable和disable的操作可以嵌套(当然一定要成对使用),wake_depth是描述嵌套深度的信息。
enable_irq_wake(IRQ_EINT1) 与 enable_irq(IRQ_EINT1)的区别 enable_irq_wake(IRQ_EINT1); 该函数使中断IRQ_EINT1的产生将触发系统唤醒 enable_irq(IRQ_EINT1);该函数使能中断IRQ_EINT1
enable_irq_wake(irq);有嵌套层次,多次执行后如果去执行一次disable_irq_wake,结果不能够disable irq wake, 要enable和disable的次数相同 static inline int enable_irq_wake(unsigned int irq) { return set_irq_wake(irq, 1); } static inline int disable_irq_wake(unsigned int irq) ...
irq_set_irq_wake(hi->irq_btn,1); }#endif/* FIH-SW2-MM-AY-hsed_type-00 [ */if(isCTIAheadset) {/* FIH-SW2-MM-AY-hsed_type-03 */pmic_hsed_enable(PM_HSED_CONTROLLER_0, PM_HSED_ENABLE_ALWAYS); msleep(130); proc_comm_get_hsed_voltage(2, &voltage,0);//it will get the...