sysfsを介して動的にI2Cデバイスを追加する場合。 I2Cデバイスに付属のGPIOピンも定義できますか?

sysfsを介して動的にI2Cデバイスを追加する場合。 I2Cデバイスに付属のGPIOピンも定義できますか?

私のLinuxデバイスに接続したい2つのI2Cデバイスがあります。温度センサTMP117を作成し、追加の加速度計/sys/bus/i2c/devices/i2c-x/new_deviceADXL343を追加したいと思います。ところで、TMP117のような方法を使用すると、割り込みのdmesgGPIOが見つからないというエラーが発生します。これは、私のアプリケーションに割り込み信号が必要なGPIO拡張にも影響します。

追加の信号(割り込みなど)を使用してI2Cデバイスを動的に追加できますか?

ベストアンサー1

~からhttps://www.kernel.org/doc/Documentation/i2c/instantiating-devices次にできることはただI²C アドレスを引数として渡します。もしそうなら、カーネルは割り込みラインがどのGPIOラインに接続されているのかをどうやって知ることができますか?

したがって、I²Cデバイスよりも多くのハードウェアを含む複雑なドライバはこの方法では使用できません。

起動時にハードウェアの場所を知っている場合(または知らなくても、最近は実行時にデバイスツリーを変更できます)、「正しい」方法はおそらくデバイスツリーエントリ(上記のドキュメントの1b)を作成することです。 。これがオプションでない場合は、カーネルモジュールを作成する必要があります。

しかし、良いニュース:ADIのMichael Hennerich(いい人、会ったらコーヒー一杯買ってください)が書きました。adxl34xドライバー(アップストリームLinuxに含まれています)これは、実際にADXL34xを見つけるI²Cバスのアドレスと受信する割り込みラインをカーネルに通知します(再びデバイスツリーを介して)。

おすすめ記事