歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux綜合 >> Linux資訊 >> Linux業界 >> Linux下FL2440 2.6.28 SD卡驅動BUG解決

Linux下FL2440 2.6.28 SD卡驅動BUG解決

日期:2017/3/2 13:45:33   编辑:Linux業界

  FL2440的2.6.28的內核,SD卡驅動默認是有問題的,在

  linux-2.6.28.7driversmmchost目錄的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卡可穩定運行。

Copyright © Linux教程網 All Rights Reserved