Como se pode forçar uma nova varredura de um barramento SDIO do espaço do usuário do Linux?

7

Em uma plataforma Linux incorporada, tenho um adaptador de rede conectado a uma interface SDIO. Não há sinal Card Detect neste barramento em particular. Se, por exemplo, eu ligar ou desligar o adaptador de rede, há alguma maneira de forçar uma nova varredura do barramento SDIO do espaço do usuário?

    
por Peter S. Housel 02.03.2012 / 21:59

2 respostas

3

Como mencionado por 0andriy, você pode usar bind / unbind. Eu estou fazendo algo semelhante, mas isso será diferente, pois depende do hardware. Para desvincular meu módulo wi-fi sdio eu uso:

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

Isso lhe dará algo como mmc1: card 0001 removed no dmesg.

Eu então alterno um gpio pin para redefinir meu módulo wifi

Em seguida, para religar:

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

Nesse ponto, o dmesg imprimirá algo como:

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

O processo de encadernação / desvinculação é bem explicado por este antigo artigo do LWN.net .

    
por 23.08.2017 / 00:01
2

Parece que houve um patch submetido à correspondência do linux-mmc lista para adicionar este recurso, no entanto, olhando para a fonte atual , parece que não foi adicionada.

Então, infelizmente, eu acho que isso faz a resposta: você não pode.

    
por 11.05.2014 / 08:54