大侠们,我们使用的是明远的imx6q开发板,自己的底板把SD卡换成了TF卡,在3.10.53内核下SD卡正常挂载,但是到了TF卡的时候确不行。
SD卡就是比TF卡多了一个WP,其它的都是一样的。
通过跟踪代码发现在/driver/mmc/core/slot-gpio.c中的
int mmc_gpio_get_cd(struct mmc_host *host)
{
struct mmc_gpio *ctx = host->slot.handler_priv;
if (!ctx || !gpio_is_valid(ctx->cd_gpio))
return -ENOSYS;
// return !gpio_get_value_cansleep(ctx->cd_gpio) ^
// !!(host->caps2 & MMC_CAP2_CD_ACTIVE_HIGH);//原始代码
return 1;//我强制返回1
}
这样修改TF卡就可以正常挂载。
gpio_get_value_cansleep(ctx->cd_gpio)理论上应该返回0,但是在TF卡的时候返回0x00040000。
就想请问各位,这个东西要干什么的,为什么会在SD卡,和TF卡的时候会返回不同的结果。
谢谢了。
|