diff options
| author | Mike Frysinger <vapier@gentoo.org> | 2011-01-10 02:20:13 -0500 | 
|---|---|---|
| committer | Wolfgang Denk <wd@denx.de> | 2011-04-11 21:00:54 +0200 | 
| commit | e7b44eddbef88b1a922f8d82088ba236aad01caf (patch) | |
| tree | 4ba07d5e3ed3d4b9992afb6f2a47f556aa3d6741 /drivers/mtd/spi/macronix.c | |
| parent | 6163045bcd276818d9ad6bdd1bf36ddcd60d014b (diff) | |
| download | olio-uboot-2014.01-e7b44eddbef88b1a922f8d82088ba236aad01caf.tar.xz olio-uboot-2014.01-e7b44eddbef88b1a922f8d82088ba236aad01caf.zip | |
sf: unify erase functions
Signed-off-by: Mike Frysinger <vapier@gentoo.org>
Diffstat (limited to 'drivers/mtd/spi/macronix.c')
| -rw-r--r-- | drivers/mtd/spi/macronix.c | 60 | 
1 files changed, 4 insertions, 56 deletions
| diff --git a/drivers/mtd/spi/macronix.c b/drivers/mtd/spi/macronix.c index 291fd17de..573e1dba7 100644 --- a/drivers/mtd/spi/macronix.c +++ b/drivers/mtd/spi/macronix.c @@ -198,62 +198,10 @@ static int macronix_write(struct spi_flash *flash,  int macronix_erase(struct spi_flash *flash, u32 offset, size_t len)  {  	struct macronix_spi_flash *mcx = to_macronix_spi_flash(flash); -	unsigned long sector_size; -	size_t actual; -	int ret; -	u8 cmd[4]; - -	/* -	 * This function currently uses sector erase only. -	 * probably speed things up by using bulk erase -	 * when possible. -	 */ - -	sector_size = mcx->params->page_size * mcx->params->pages_per_sector -			* mcx->params->sectors_per_block; - -	if (offset % sector_size || len % sector_size) { -		debug("SF: Erase offset/length not multiple of sector size\n"); -		return -1; -	} - -	len /= sector_size; -	cmd[0] = CMD_MX25XX_BE; -	cmd[2] = 0x00; -	cmd[3] = 0x00; - -	ret = spi_claim_bus(flash->spi); -	if (ret) { -		debug("SF: Unable to claim SPI bus\n"); -		return ret; -	} - -	ret = 0; -	for (actual = 0; actual < len; actual++) { -		cmd[1] = (offset / sector_size) + actual; - -		ret = spi_flash_cmd(flash->spi, CMD_MX25XX_WREN, NULL, 0); -		if (ret < 0) { -			debug("SF: Enabling Write failed\n"); -			break; -		} - -		ret = spi_flash_cmd_write(flash->spi, cmd, 4, NULL, 0); -		if (ret < 0) { -			debug("SF: Macronix page erase failed\n"); -			break; -		} - -		ret = spi_flash_cmd_wait_ready(flash, SPI_FLASH_PAGE_ERASE_TIMEOUT); -		if (ret) -			break; -	} - -	debug("SF: Macronix: Successfully erased %u bytes @ 0x%x\n", -	      len * sector_size, offset); - -	spi_release_bus(flash->spi); -	return ret; +	return spi_flash_cmd_erase(flash, CMD_MX25XX_BE, +		mcx->params->page_size * mcx->params->pages_per_sector * +			mcx->params->sectors_per_block, +		offset, len);  }  struct spi_flash *spi_flash_probe_macronix(struct spi_slave *spi, u8 *idcode) |