GPIOに関するドキュメントはほとんど読んでいませんが、 GPIOの最上位レベルの多重化をまだ理解できていません。
コードから、専用デバイスのいくつかのGPIO ( Int、Reset Pinsなど) が、その特定のドライバーのsuspend /*resume* コールバック中に多重化されていることがわかります。このgpio多重化が正確に何を行い、システムのサスペンド/*再開*にどのように影響するかを知りたいですか?
GPIOに関するドキュメントはほとんど読んでいませんが、 GPIOの最上位レベルの多重化をまだ理解できていません。
コードから、専用デバイスのいくつかのGPIO ( Int、Reset Pinsなど) が、その特定のドライバーのsuspend /*resume* コールバック中に多重化されていることがわかります。このgpio多重化が正確に何を行い、システムのサスペンド/*再開*にどのように影響するかを知りたいですか?
Gpio TLMM は、単一の GPIO ピンを複数の機能に使用できるようにするため、その gpio ピンをデータシート/回路図で指定された機能のいずれかに設定できます。システムがサスペンドしようとすると、漏れ電流を減らすために、すべての gpio が低電力状態に応じて構成されます。また、システムがスリープ状態のときに起動できる割り込みとして gpio が構成されている場合、その gpio 割り込み監視は、通常の gpio 所有者から常に電源制御ブロックに切り替えられます。
あなたが尋ねている機能は、一般的に多重化として知られていません。GPIO でサスペンド/レジュームを有効にするには、GPIO にinterrupt
機能が必要です。次に、これinterrupt
をウェイクアップ可能としてマークできます。これを行うirq_set_irq_wake()
とgpio_to_irq()
役立ちます。基礎となるgpioと Linuxドライバーがこれをサポートしている必要があります。これは実際にはドライバーではなく、プラットフォームのgpio サブシステムのインスタンスです。
関心のあるドライバーがこれらの機能を使用していない場合、それは非標準の Linux の使用であり、適切なドライバー ソースを指摘する必要があります。
参照: LWN pinctrl、Linux gpio doc、pinctrl+gpio デバイス ツリー バインディング