ACPI:カバーボタンドライバがロード/バインドされていません。

ACPI:カバーボタンドライバがロード/バインドされていません。

カスタムデバイスでカバーの開閉イベントに反応したいのですが、カバーボタンドライバが正しくロード/バインドされていないようです。

私が使用しているシステムは、コアにTQMxE39Mモジュール(Intel CPU)を備えたカスタムハードウェアです。カバーボタン入力は現在ベースボードの簡単なスイッチに接続されています。ソフトウェアに関しては、「poky」および「meta-intel」レイヤーの「sumo」ブランチを使用するカスタムyoct画像を使用しています。コンピュータが「genericx86-64」に設定されています。使用されたカーネルはLinux-yocto 4.14.30で、2つのマイナーな変更しかありません(acpiには接続されていません)。 ACPIドライバ「ボタン」はカーネルにコンパイルされており、私が知っている限り、このドライバはカバーボタンを処理する必要があるドライバです。

起動後、/sys/bus/acpi/devicesの下にカバーユニットが「PNP0C0D:00」と表示されます。少なくとも私はこれが正しいデバイスだと思います。なぜなら、acpi/button.c ドライバのソースファイルは「PNP0C0D」という名前をカバーボタンとして参照しますが、デバイスにドライバがバインドされていないからです。

私の質問は:なぜLinuxはこのデバイスをカバーボタンとして検出し、正しいドライバをバインドしないのですか?

これまでの私の観察は次のとおりです。

  1. デバイスのACPIデータをダンプしてデコンパイルしたところ、「LID0」というデバイスがEisaId「PNP0C0D」として定義されていることがわかります。このデバイスは「_SB.PCI0.LPCB」の範囲で定義されます。

  2. 同じドライバが動作する電源ボタンが動作します!これは、EisaId「PNP0C0C」を使用して「_SB」範囲のACPIデータで定義されます。私が奇妙に思うのは、/sys/bus/acpi/devicesの下に「PNP0C0C:00」と「PNP0C0C:01」という2つのデバイスがあることです。そのうち後者だけが acpi/button ドライバにバインドされています。

  3. また、標準のxUbuntu 18.04.1を使用してデバイスを起動しました。これは同じ効果があります。電源ボタンはセクション2の説明に従って動作し、カバーユニットが表示されますが、バインドされません。

ベストアンサー1

おすすめ記事