FL2440 2.6.28 SD卡驱动BUG解决

FL2440的2.6.28的内核,SD卡驱动默认是有问题的,在
linux-2.6.28.7/drivers/mmc/host目录的s3cmci.c文件
的do_pio_write函数中做如下修改:

static void do_pio_write(struct s3cmci_host *host) { void __iomem *to_ptr; int res; u32 fifo; u32 *ptr; to_ptr = host->base + host->sdidata; //while ((fifo = fifo_free(host))) while ((fifo = fifo_free(host))>3) //lqm changed from feiling FAE.11-01-19 { if (!host->pio_bytes) { res = get_data_buffer(host, &host->pio_bytes,&host->pio_ptr); if (res) { dbg(host, dbg_pio,"pio_write(): complete (no more data)./n"); host->pio_active =XFER_NONE; return; } dbg(host, dbg_pio,"pio_write(): new source: [%i]@[%p]/n",host->pio_bytes, host->pio_ptr); } /* If we have reached the end of the block, we have to * write exactly the remaining number of bytes. If we * in the middle of the block, we have to write full * words, so round down to an even multiple of 4. */ if (fifo >=host->pio_bytes) fifo = host->pio_bytes; else fifo -= fifo & 3; host->pio_bytes -= fifo; host->pio_count += fifo; fifo = (fifo + 3) >> 2; ptr = host->pio_ptr; while (fifo--) writel(*ptr++, to_ptr); host->pio_ptr = ptr; } enable_imask(host, S3C2410_SDIIMSK_TXFIFOHALF); }

经测试,1G,2G的SD卡可稳定运行。

你可能感兴趣的:(FL2440 2.6.28 SD卡驱动BUG解决)