DA9034中斷處理

2021-05-21 21:41:19 字數 1149 閱讀 1104

/* clear the irq */

pdata->ack_irq();

schedule_work(&pdata->work);

return irq_handled;

}static void micco_worker(struct work_struct *work)

if (val & micco_eb_otgcp_iover)

ret |= pmic_event_otgcp_iover;

micco_read(micco_event_c, &val);

if (val & micco_ec_pen_down)

ret |= pmic_event_touch;

micco_read(micco_event_d, &val);

if (val & micco_ed_headset)

if (val & micco_ed_hookswitch)

return ret;

}int pmic_event_handle(unsigned long event)

spin_unlock_irqrestore(&pxa3xx_pmic_ops->cb_lock, flags);

return 0;

}export_symbol(pmic_event_handle);

比如觸控螢幕的處理,

da9034註冊的時候呼叫micco_probe函式將da9034的中斷處理函式註冊

ret = request_irq(client->irq, micco_irq_handler, irqf_trigger_falling,

"micco", client);

觸控螢幕在註冊時將觸控螢幕的事件和觸控螢幕中斷處理程式註冊,通過下面語句註冊

ret = pmic_callback_register(pmic_event_touch, micco_ts_interrupt);

當發生觸控螢幕中斷時呼叫 micco_irq_handler,接著呼叫micco_worker, event = micco_event_change();

讀出產生中斷的事件,呼叫 pmic_event_handle(event);對相應的事件進行處理。

da9034產生中斷後要通過讀出事件暫存器的值,才能清除中斷,否則中斷線不響應後面的中斷。

linux2 6 32中斷處理流程

1 當發生中斷時,pc指標通過異常向量表跳轉到中斷入口函式asm do irq asm do irq是中斷的c語言總入口函式,它在 arch arm kernel irq.c中定義,宣告如下 asmlinkage void exception asm do irq unsigned int irq,...

ARMv8 中斷處理介面

不考慮el2和el3,irq處理分兩種情況 使用者態發生的中斷和核心態發生的中斷,相應的中斷處理介面分別為 el1 irq el0 irq 以核心態el1發生的irq為例 358 align 6 359 el1 irq 360 kernel entry 1 壓棧,儲存上下文 361 enable d...

x86中斷(一) 中斷分類

一 中斷分類 x86系統支援256個中斷源,每個中斷源使用0 255數字標識,該標識稱作中斷向量號 即cpu中斷源的中斷號,要與外部中斷的中斷號irq n相區別 cpu通過獲取中斷向量號識別中斷源。256個中斷源可以分為 其中 1 內部中斷 由cpu內部事件及執行軟中斷指令產生,由除法中斷 溢位中斷...