web-dev-qa-db-ja.com

LinuxユーザースペースからSDIOバスの再スキャンを強制するにはどうすればよいですか?

組み込みLinuxプラットフォームでは、SDIOインターフェイスにネットワークアダプターが接続されています。この特定のバスにはカード検出信号はありません。たとえば、ネットワークアダプターの電源をオンまたはオフにした場合、ユーザースペースからSDIOバスの再スキャンを強制する方法はありますか?

7
Peter S. Housel

0andriyで述べたように、bind/unbindを使用できます。私は似たようなことをしていますが、ハードウェアに依存するため、これは異なります。私が使用するsdiowifiモジュールのバインドを解除するには:

echo -n "2190000.usdhc" > /sys/devices/soc0/soc/2100000.aips-bus/2190000.usdhc/driver/unbind

これにより、dmesgでmmc1: card 0001 removedのようなものが得られます。

次に、gpioピンを切り替えてwifiモジュールをリセットします

次に、再バインドします。

echo -n "2190000.usdhc" > /sys/bus/soc/devices/soc0/soc/2100000.aips-bus/2190000.usdhc/subsystem/drivers/sdhci-esdhc-imx/bind

その時点で、dmesgは次のようなものを出力します。

mmc1: SDHCI controller on 2190000.usdhc [2190000.usdhc] using ADMA
mmc1: new high speed SDIO card at address 0001

バインド/バインド解除のプロセスは、この古い LWN.netの記事 によってよく説明されています。

5
Marius

この機能を追加するためにlinux-mmcメーリングリストに パッチが送信されました があったようですが、 現在のソース を見ると、追加されていないようです。

残念ながら、これが答えになると思います。できません。

2
Patrick