W25: Fix W25 page read/write logic
This commit is contained in:
parent
b60422836e
commit
7e58e4c4cf
@ -11105,3 +11105,5 @@
|
|||||||
(2015-11-17).
|
(2015-11-17).
|
||||||
* drivers/sensors/ms58xx.c: Fix some issues with initialization and with
|
* drivers/sensors/ms58xx.c: Fix some issues with initialization and with
|
||||||
CRC calculation. From Karim Keddam (2015-11-17).
|
CRC calculation. From Karim Keddam (2015-11-17).
|
||||||
|
* drivers/mtd/w25.c: Fix W25 FLASH driver page read/write logic. From
|
||||||
|
Ken Petit (2015-11-18).
|
||||||
|
@ -589,4 +589,3 @@ FAR struct ioexpander_dev_s *pca9555_initialize(FAR struct i2c_dev_s *i2cdev,
|
|||||||
}
|
}
|
||||||
|
|
||||||
#endif /* CONFIG_IOEXPANDER_PCA9555 */
|
#endif /* CONFIG_IOEXPANDER_PCA9555 */
|
||||||
|
|
||||||
|
@ -771,7 +771,7 @@ static void w25_cacheflush(struct w25_dev_s *priv)
|
|||||||
{
|
{
|
||||||
/* Write entire erase block to FLASH */
|
/* Write entire erase block to FLASH */
|
||||||
|
|
||||||
w25_pagewrite(priv, priv->sector, (off_t)priv->esectno << W25_SECTOR_SHIFT,
|
w25_pagewrite(priv, priv->sector, (off_t)priv->esectno << W25_PAGE_SHIFT,
|
||||||
W25_SECTOR_SIZE);
|
W25_SECTOR_SIZE);
|
||||||
|
|
||||||
/* The case is no long dirty and the FLASH is no longer erased */
|
/* The case is no long dirty and the FLASH is no longer erased */
|
||||||
@ -982,10 +982,10 @@ static ssize_t w25_bread(FAR struct mtd_dev_s *dev, off_t startblock, size_t nbl
|
|||||||
nbytes >>= W25_SECTOR512_SHIFT;
|
nbytes >>= W25_SECTOR512_SHIFT;
|
||||||
}
|
}
|
||||||
#else
|
#else
|
||||||
nbytes = w25_read(dev, startblock << W25_SECTOR_SHIFT, nblocks << W25_SECTOR_SHIFT, buffer);
|
nbytes = w25_read(dev, startblock << W25_PAGE_SHIFT, nblocks << W25_PAGE_SHIFT, buffer);
|
||||||
if (nbytes > 0)
|
if (nbytes > 0)
|
||||||
{
|
{
|
||||||
nbytes >>= W25_SECTOR_SHIFT;
|
nbytes >>= W25_PAGE_SHIFT;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@ -1013,8 +1013,8 @@ static ssize_t w25_bwrite(FAR struct mtd_dev_s *dev, off_t startblock, size_t nb
|
|||||||
#if defined(CONFIG_W25_SECTOR512)
|
#if defined(CONFIG_W25_SECTOR512)
|
||||||
w25_cachewrite(priv, buffer, startblock, nblocks);
|
w25_cachewrite(priv, buffer, startblock, nblocks);
|
||||||
#else
|
#else
|
||||||
w25_pagewrite(priv, buffer, startblock << W25_SECTOR_SHIFT,
|
w25_pagewrite(priv, buffer, startblock << W25_PAGE_SHIFT,
|
||||||
nblocks << W25_SECTOR_SHIFT);
|
nblocks << W25_PAGE_SHIFT);
|
||||||
#endif
|
#endif
|
||||||
w25_unlock(priv->spi);
|
w25_unlock(priv->spi);
|
||||||
|
|
||||||
@ -1075,7 +1075,7 @@ static int w25_ioctl(FAR struct mtd_dev_s *dev, int cmd, unsigned long arg)
|
|||||||
geo->erasesize = (1 << W25_SECTOR512_SHIFT);
|
geo->erasesize = (1 << W25_SECTOR512_SHIFT);
|
||||||
geo->neraseblocks = priv->nsectors << (W25_SECTOR_SHIFT - W25_SECTOR512_SHIFT);
|
geo->neraseblocks = priv->nsectors << (W25_SECTOR_SHIFT - W25_SECTOR512_SHIFT);
|
||||||
#else
|
#else
|
||||||
geo->blocksize = W25_SECTOR_SIZE;
|
geo->blocksize = W25_PAGE_SIZE;
|
||||||
geo->erasesize = W25_SECTOR_SIZE;
|
geo->erasesize = W25_SECTOR_SIZE;
|
||||||
geo->neraseblocks = priv->nsectors;
|
geo->neraseblocks = priv->nsectors;
|
||||||
#endif
|
#endif
|
||||||
|
Loading…
Reference in New Issue
Block a user