diff options
author | adrian <adrian@FreeBSD.org> | 2010-07-19 21:46:40 +0000 |
---|---|---|
committer | adrian <adrian@FreeBSD.org> | 2010-07-19 21:46:40 +0000 |
commit | ed5801ffc7fe23791c9909a0413c75295dd5caed (patch) | |
tree | da9803f35e7e943e6b23e63ec7156417929e72ca /sys/dev/flash/mx25l.c | |
parent | e0c0ca83134dab5fa637e707a46195a16f964d43 (diff) | |
download | FreeBSD-src-ed5801ffc7fe23791c9909a0413c75295dd5caed.zip FreeBSD-src-ed5801ffc7fe23791c9909a0413c75295dd5caed.tar.gz |
Extend the mx25l erase function to support different erase commands.
Diffstat (limited to 'sys/dev/flash/mx25l.c')
-rw-r--r-- | sys/dev/flash/mx25l.c | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/sys/dev/flash/mx25l.c b/sys/dev/flash/mx25l.c index 0ff7186..06d5081 100644 --- a/sys/dev/flash/mx25l.c +++ b/sys/dev/flash/mx25l.c @@ -184,7 +184,7 @@ mx25l_set_writable(device_t dev, int writable) } static void -mx25l_erase_sector(device_t dev, off_t sector) +mx25l_erase_cmd(device_t dev, off_t sector, uint8_t ecmd) { uint8_t txBuf[4], rxBuf[4]; struct spi_command cmd; @@ -197,7 +197,7 @@ mx25l_erase_sector(device_t dev, off_t sector) memset(txBuf, 0, sizeof(txBuf)); memset(rxBuf, 0, sizeof(rxBuf)); - txBuf[0] = CMD_SECTOR_ERASE; + txBuf[0] = ecmd; cmd.tx_cmd = txBuf; cmd.rx_cmd = rxBuf; cmd.rx_cmd_sz = 4; @@ -258,7 +258,7 @@ mx25l_write(device_t dev, off_t offset, caddr_t data, off_t count) * If we crossed sector boundary - erase next sector */ if (((offset + bytes_writen) % sc->sc_sectorsize) == 0) - mx25l_erase_sector(dev, offset + bytes_writen); + mx25l_erase_cmd(dev, offset + bytes_writen, CMD_SECTOR_ERASE); txBuf[0] = CMD_PAGE_PROGRAM; txBuf[1] = ((write_offset >> 16) & 0xff); |