0

我無法通過GPIO中斷喚醒從VLPS深度睡眠K70(Kinetis產品)。喚醒K70中斷

這是uCLinux操作系統,在那裏我能CONFIG_PM下。在那之後,我能夠通過「回聲MEM>/SYS /電源/狀態」把K70深度睡眠和UART調試控制檯喚醒它。但是我不能通過觸發GPIO中斷來喚醒。我已經證實,中斷從中斷處理程序打印工作之前和之後的睡眠和睡眠期間,我還證實了從0到1的GPIO引腳值發生變化後我引發的GPIO中斷。

按照K70手冊,我應該能夠通過一個GPIO中斷喚醒VLPS。有沒有任何見解我爲什麼不能?

謝謝

回答

1

首先,你的GPIO驅動程序應該實現IRQ芯片。 (從上面的描述我不知道平臺是什麼,那裏使用的GPIO驅動程序是什麼)。

二,IRQ芯片實現必須有->irq_set_wake()回調是存在和正確實施。

三,主叫方,它不通過gpiod_get()得到GPIO線必須執行:

struct gpio_desc *gd; 
int irq; 

gd = gpiod_get(...); 
if (IS_ERR(gd)) 
    return PTR_ERR(gd); 

irq = gpiod_to_irq(gd); 
if (irq < 0) 
    return irq; 

/* Now! */ 
enable_irq_wake(irq); /* This does the trick */