您好,我用的是am335x linux3.2内核。现在是有关sd卡热插拔检查的问题:
1. 以前用的底板sd卡卡座的工作原理:没有插入sd卡的时候,cd引脚是3.3v高电平,插上sd卡的时候触发中断去检测cd引脚的电平,如果是低电平就初始化sd卡。
2. 现在用的底板sd卡卡座的工作原理刚好反过来: 没插入TF卡的时候是低电平,插上之后是高3.3v高电平,原来的驱动逻辑却好跟现在的硬件相反。
我查看了驱动热插拔检测的函数是在omap_hsmmc_detect完成,但是还是找不到如何修改热插拔电平检测:驱动里面的是低电平时检测SD卡并注册;现在想改成高电平时检测SD卡并注册SD卡,拔出卡变为高电平时注销SD卡。
user5086616:
刚刚解决了,就修改一行代码:drivers/mmc/host/omap_hsmmc.c:
Shine:
回复 user5086616:
谢谢分享解决方法。
user5086616:
回复 user5086616:
开始以为能够识别TF卡就没问题了,后来发现拔出TF卡之后在/dev/目录下的TF卡节点没有删除,自动挂载的目录还存在(拔出卡之后应该是自动删除的),可能是拔卡没有检查到引脚变化吧。后来发现配置cd引脚的时候也需要改变,由原来的
static struct pinmux_config mmc0_cd_only_pin_mux[] = { {"mcasp0_fsr.gpio3_19", OMAP_MUX_MODE7 | AM33XX_PIN_INPUT_PULLUP}, {NULL, 0},};
改成:
static struct pinmux_config mmc0_cd_only_pin_mux[] = { {"mcasp0_fsr.gpio3_19", OMAP_MUX_MODE7 | AM33XX_PIN_INPUT_PULLDOWN}, {NULL, 0},};
TI中文支持网
