atheros: fix a spiflash write performance regression
authornbd <nbd@3c298f89-4303-0410-b956-a3cf2f4a3e73>
Tue, 24 Mar 2009 23:41:29 +0000 (23:41 +0000)
committernbd <nbd@3c298f89-4303-0410-b956-a3cf2f4a3e73>
Tue, 24 Mar 2009 23:41:29 +0000 (23:41 +0000)
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@15027 3c298f89-4303-0410-b956-a3cf2f4a3e73

target/linux/atheros/patches-2.6.28/120-spiflash.patch

index e661365..e33733e 100644 (file)
 +}
 +
 +static void
 +}
 +
 +static void
-+spiflash_wait_complete(struct spiflash_priv *priv)
++spiflash_wait_complete(struct spiflash_priv *priv, unsigned int timeout)
 +{
 +      busy_wait(priv, spiflash_sendcmd(priv, SPI_RD_STATUS, 0) &
 +{
 +      busy_wait(priv, spiflash_sendcmd(priv, SPI_RD_STATUS, 0) &
-+              SPI_STATUS_WIP, 20);
++              SPI_STATUS_WIP, timeout);
 +      spiflash_done(priv);
 +}
 +
 +      spiflash_done(priv);
 +}
 +
 +      reg |= op->tx_cnt | SPI_CTL_START;
 +      spiflash_write_reg(priv, SPI_FLASH_CTL, reg);
 +
 +      reg |= op->tx_cnt | SPI_CTL_START;
 +      spiflash_write_reg(priv, SPI_FLASH_CTL, reg);
 +
-+      spiflash_wait_complete(priv);
++      spiflash_wait_complete(priv, 20);
 +
 +      instr->state = MTD_ERASE_DONE;
 +      if (instr->callback)
 +
 +      instr->state = MTD_ERASE_DONE;
 +      if (instr->callback)
 +              reg |= (read_len + 4) | SPI_CTL_START;
 +              spiflash_write_reg(priv, SPI_FLASH_CTL, reg);
 +
 +              reg |= (read_len + 4) | SPI_CTL_START;
 +              spiflash_write_reg(priv, SPI_FLASH_CTL, reg);
 +
-+              spiflash_wait_complete(priv);
++              spiflash_wait_complete(priv, 1);
 +
 +              bytes_left -= read_len;
 +              to += read_len;
 +
 +              bytes_left -= read_len;
 +              to += read_len;