組み込みLinuxプラットフォームには、SDIOインターフェイスに接続されたネットワークアダプタがあります。この特定のバスにはカード検出信号はありません。たとえば、ネットワークアダプタの電源を入れたり切ったりした場合、SDIOバスをユーザースペースから強制的に再取得する方法はありますか?
答え1
0andriyが述べたように、バインディング/バインド解除を使用できます。似たようなことをしていますが、ハードウェアによって異なるため変わることがあります。私のsdio wifiモジュールをバインド解除するには、次のようにします。
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 記事。
答え2
一つあるようです。パッチが提出されました。この機能を追加するには、linux-mmcメーリングリストにアクセスしてください。現在のソース、追加されていないようです。
残念ながら、私の考えではこれが答えです:それはできません。
答え3
Mariusの回答in beaglebone blackで指定された手順に従って、mmc2(beaglebone mmc0、mmc1、mmc2には3つのSDIOインターフェースがあります)インターフェースに接続されているWiFiチップを正常にバインド解除してバインドできました。ただし、beaglebone blackのmmc2インターフェイスパス(IoT Busterイメージを実行しているBeaglebone Rev Cボードでテスト済み)はわずかに異なります。
sdio モジュールをバインド解除するには、root として次のコマンドを実行します。
echo -n "47810000.mmc" > /sys/devices/platform/soc/subsystem/devices/47810000.mmc/driver/unbind
バインディングモジュール:
echo -n "47810000.mmc" > /sys/devices/platform/soc/subsystem/devices/47810000.mmc/subsystem/drivers/omap_hsmmc/bind