uSD卡驱动报错

自己编译的系统,打开了MMC选项,uSD卡插拔可以检测,但是probe报错。

插入uSD卡

root@OpenWrt:~# dmesg -c
root@OpenWrt:~# dmesg -c
root@OpenWrt:~# dmesg -c
[ 1981.390000] mmc0: new high speed SDHC card at address aaaa
[ 1981.390000] mmcblk mmc0:aaaa: no of_node; not parsing pinctrl DT
[ 1981.390000] mmcblk: probe of mmc0:aaaa failed with error -28
root@OpenWrt:~# dmesg -c
root@OpenWrt:~# dmesg -c
 
拔下uSD卡

root@OpenWrt:~# dmesg -c
root@OpenWrt:~# dmesg -c
root@OpenWrt:~# dmesg -c
root@OpenWrt:~# dmesg -c
[ 2184.140000] msdc-1 -> cmd<13> card<0> power<2> <- msdc_ops_request() : L<2120> PID<kworker/u2:2><0x606>
[ 2184.140000] msdc-1 -> cmd<13> card<0> power<2> <- msdc_ops_request() : L<2120> PID<kworker/u2:2><0x606>
[ 2184.150000] msdc-1 -> cmd<13> card<0> power<2> <- msdc_ops_request() : L<2120> PID<kworker/u2:2><0x606>
[ 2184.160000] msdc-1 -> cmd<13> card<0> power<2> <- msdc_ops_request() : L<2120> PID<kworker/u2:2><0x606>
[ 2184.170000] mmc0: card aaaa removed
已邀请:

xzmu - 10w

赞同来自:

1、用的什么底板?
2、用的什么硬件?
3、是否方便把底板背面拍个照?

hipboi

赞同来自:

1. 硬件是2P
2. 底板用的是标准底板
3. 底板的版本是 DB_V1.2
有看到wiki 
 

如果你手里的WRTnode2P底板版本号是V1.2,点击下载 http://d.wrtnode.com/WRTnode2P/sd.c,覆盖drivers/mmc/host/mtk-mmc/sd.c 
 


发现sd.c和SDK的代码是一样的。
 

xzmu - 10w

赞同来自:

v1.2的底板需要改一个地方
 

struct msdc_hw msdc0_hw = { .data_pins = 4, 改为: .data_pins = 1, }
 
其他部分不用改。也不需要替换sd.c
 

hipboi

赞同来自:

我看默认解压出来的代码
/* +++ by chhung */
struct msdc_hw msdc0_hw = {
.clk_src = 0,
.cmd_edge = MSDC_SMPL_FALLING,
.data_edge = MSDC_SMPL_FALLING,
.clk_drv = 4,
.cmd_drv = 4,
.dat_drv = 4,
.data_pins = 1,
.data_offset = 0,
.flags = MSDC_SYS_SUSPEND | MSDC_CD_PIN_EN | MSDC_REMOVABLE | MSDC_HIGHSPEED,
// .flags = MSDC_SYS_SUSPEND | MSDC_WP_PIN_EN | MSDC_CD_PIN_EN | MSDC_REMOVABLE,
};

data_pins 已经是 1,我没有做修改。路径是 wrtnode/build_dir/target-mipsel_24kec+dsp_uClibc-0.9.33.2/linux-ramips_mt7628/linux-3.18.29/drivers/mmc/host/mtk-mmc/sd.c


 

xzmu - 10w

赞同来自:

我的意思是,你先把sd.c还原回默认。然后再做修改。
 
如果默认已经是1,那就直接用就好了,检查别的部分。比如把核心板拆下重新装上

要回复问题请先登录注册