0

GPIO割り込みによってVLPSディープスリープからk70(Kinetis)を起動できません。wake up k70 from VLPS GPIO割り込みによるディープスリープ

これはuCLinuxの下で、CONFIG_PMを有効にしました。その後、私はK70を "echo mem/sys/power/state"で深く眠らせて、UARTデバッグコンソールから起動することができます。しかし、私はGPIO割り込みをトリガすることで目を覚ますことはできません。 GPIO割り込みをトリガした後、スリープ中にGPIOピンの値が0から1に変化することを確認しました。

K70マニュアルによれば、私はGPIO割り込みでVLPSを起動することができます。なぜ私はできなかったのですか?

ありがとうございました

答えて

1

まず、GPIOドライバはIRQチップを実装する必要があります。 (上記の説明から私はプラットフォームとGPIOドライバが何であるかという手掛かりはありません)。

第2に、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 */ 
関連する問題