如何从 Linux 用户空间强制重新扫描 SDIO 总线?

Pet*_*sel 8 embedded sd-card sdio

在嵌入式 Linux 平台上,我有一个连接到 SDIO 接口的网络适配器。此特定总线上没有 Card Detect 信号。例如,如果我打开或关闭网络适配器电源,有什么方法可以强制从用户空间重新扫描 SDIO 总线?

小智 7

正如 0andriy 所提到的,您可以使用绑定/解除绑定。我正在做类似的事情,但这会有所不同,因为它取决于硬件。要解除绑定我的 sdio wifi 模块,我使用:

echo -n "2190000.usdhc" > /sys/devices/soc0/soc/2100000.aips-bus/2190000.usdhc/driver/unbind
Run Code Online (Sandbox Code Playgroud)

这会给你类似于mmc1: card 0001 removeddmesg 的东西。

然后我切换 gpio 引脚以重置我的 wifi 模块

然后重新绑定:

echo -n "2190000.usdhc" > /sys/bus/soc/devices/soc0/soc/2100000.aips-bus/2190000.usdhc/subsystem/drivers/sdhci-esdhc-imx/bind
Run Code Online (Sandbox Code Playgroud)

此时 dmesg 将打印如下内容:

mmc1: SDHCI controller on 2190000.usdhc [2190000.usdhc] using ADMA
mmc1: new high speed SDIO card at address 0001
Run Code Online (Sandbox Code Playgroud)

这篇旧的LWN.net 文章很好地解释了绑定/解除绑定过程。


phe*_*mer 2

看起来有一个补丁提交到了 linux-mmc 邮件列表来添加这个功能,但是查看当前的源代码,它似乎没有被添加。

不幸的是,我想这就是答案:你不能。