|
本帖最后由 Junior513 于 2012-12-7 08:36 编辑
我用TQ2440,在U-boot上面添加了SD卡的驱动,但是发现在读卡的时候sdifsta 响应有问题,必须在读取sdifsta 和 sdidat 之间加入延时,否者读取sdiftsa时会一直出错,显示没有数据,这样就会导致原本SD卡读取数据速度很慢,请问个位大神,怎么解决呢?我添加的SD卡驱动部分没有使用DMA
if(data->flags & MMC_DATA_READ){
while(data_size)
{
for (k = 0; k < count;) {
if(readl(&host->reg->sdidsta)&0x60)
{
writel(0x3<<0x5,&host->reg->sdidsta);//清除超时标志和 CRC 错误标志
return 0;
}
status = readl(&host->reg->sdifsta);
udelay(1000);
if((status&0x1000)==0x1000)
{
*buf= __be32_to_cpu(readl(&host->reg->sdidat));
buf++;
k++;
data_size -= 4;
}
}
}
writel(readl(&host->reg->sdidcon)&(~(7<<12)),&host->reg->sdidcon);
writel(readl(&host->reg->sdifsta)&(0x200),&host->reg->sdifsta);
writel(0x10,&host->reg->sdidsta);
return 0;
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?注册
x
|