板子是参考官方的四核板子,自己画的。公板使用的是EMMC,我们这里使用的是TF卡,挂接在了SD3接口上,使用了DATA0-3四个数据线和CLK,CMD线。调整了驱动,在Board-mx6q_sabresd.c如下:
static const struct esdhc_platform_data mx6q_sabresd_sd3_data __initconst = {
.always_present = 1,
.keep_power_at_suspend = 1,
.support_8bit = 0,
.delay_line = 0,
.cd_type = ESDHC_CD_PERMANENT,
};
此处是参考官方资料进行修改的。但是,编译烧写内核后,系统不能识别TF卡,在dev目录下没有对应设备节点/dev/mmcblock1同时,每隔10s中会打印输出:
mmc1: Timeout waiting for hardware interrupt.
通过查看debug信息:dump信息如下:
mmc1: Timeout waiting for hardware interrupt.
sdhci: =========== REGISTER DUMP (mmc1)===========
sdhci: Sys addr: 0x00000000 | Version: 0x00000102
sdhci: Blk size: 0x00000000 | Blk cnt: 0x00000001
sdhci: Argument: 0x000001aa | Trn mode: 0x00000000
sdhci: Present: 0xfffd8009 | Host ctl: 0x00000001
sdhci: Power: 0x0000000d | Blk gap: 0x00000000
sdhci: Wake-up: 0x00000000 | Clock: 0x000010ff
sdhci: Timeout: 0x00000000 | Int stat: 0x00000000
sdhci: Int enab: 0x007f00c3 | Sig enab: 0x007f00c3
sdhci: AC12 err: 0x00000000 | Slot int: 0x00000103
sdhci: Caps: 0x07eb0000 | Caps_1: 0x00000007
sdhci: Cmd: 0x0000081a | Max curr: 0x00ffffff
sdhci: Host ctl2: 0x00000000
sdhci: ADMA Err: 0x00000000 | ADMA Ptr: 0x00000000
sdhci: ===========================================
在源码中定位到了为何输出这段代码,但是不知道如何处理。感觉官方代码肯定是支持TF卡的,但是不知道为什么就是不行。
同时,通过示波器测试输出CLK管脚,没有时钟输出。已经卡了一个礼拜了,求指导。非常感谢。
|