3.2内核中,我发现板子运行的时候SD卡不能热插拔,内核启动之前插入SD卡才能出现/dev/mmcblk0
明显和卡检测有关,内核启动时原本强制认为SD卡存在,如果SD卡没有插入,就永远不会probe了。
检查了一下 mmc0_wp_only_pin_mux和mmc0_cd_only_pin_mux,改为OMAP_MUX_MODE7就能识别卡了,why?
原本OMAP_MUX_MODE5的,现在改为MOD7E(普通io),反而能检测到SD卡了,不科学啊,是cpu问题还是软件问题?
static struct pinmux_config mmc0_wp_only_pin_mux[] = {
{"ecap0_in_pwm0_out.mmc0_sdwp", OMAP_MUX_MODE7 | AM33XX_PIN_INPUT_PULLUP},
{NULL, 0},
};
原本是OMAP_MUX_MODE5的
static struct pinmux_config mmc0_cd_only_pin_mux[] = {
{"spi0_cs1.mmc0_sdcd", OMAP_MUX_MODE7 | AM33XX_PIN_INPUT_PULLUP},
{NULL, 0},
};
leo chen:
这肯定是驱动的问题 你找找驱动中和cd相关的内容,应该会有所发现
Jian Zhou:
回复 leo chen:
默认情况下,CD引脚的功能应该是使能的,如果没有连接或者正确使能这个引脚,SD卡的热插拔确实会有问题。
Richard.T:
回复 Jian Zhou:
事实确实是使能CD之后反而不能热插拔,SD卡的内核驱动还没怎么研究,希望TI能解决这个bug, 谢谢。