|
|
|
@ -203,6 +203,8 @@ static int at24c_eraseall(FAR struct at24c_dev_s *priv)
@@ -203,6 +203,8 @@ static int at24c_eraseall(FAR struct at24c_dev_s *priv)
|
|
|
|
|
|
|
|
|
|
memset(&buf[2], 0xff, priv->pagesize); |
|
|
|
|
|
|
|
|
|
BOARD_EEPROM_WP_CTRL(false); |
|
|
|
|
|
|
|
|
|
for (startblock = 0; startblock < priv->npages; startblock++) { |
|
|
|
|
uint16_t offset = startblock * priv->pagesize; |
|
|
|
|
buf[1] = offset & 0xff; |
|
|
|
@ -214,6 +216,8 @@ static int at24c_eraseall(FAR struct at24c_dev_s *priv)
@@ -214,6 +216,8 @@ static int at24c_eraseall(FAR struct at24c_dev_s *priv)
|
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
BOARD_EEPROM_WP_CTRL(true); |
|
|
|
|
|
|
|
|
|
return OK; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
@ -389,6 +393,8 @@ static ssize_t at24c_bwrite(FAR struct mtd_dev_s *dev, off_t startblock, size_t
@@ -389,6 +393,8 @@ static ssize_t at24c_bwrite(FAR struct mtd_dev_s *dev, off_t startblock, size_t
|
|
|
|
|
|
|
|
|
|
finfo("startblock: %08lx nblocks: %d\n", (long)startblock, (int)nblocks); |
|
|
|
|
|
|
|
|
|
BOARD_EEPROM_WP_CTRL(false); |
|
|
|
|
|
|
|
|
|
while (blocksleft-- > 0) { |
|
|
|
|
uint16_t offset = startblock * priv->pagesize; |
|
|
|
|
unsigned tries = CONFIG_AT24XX_WRITE_TIMEOUT_MS; |
|
|
|
@ -415,6 +421,7 @@ static ssize_t at24c_bwrite(FAR struct mtd_dev_s *dev, off_t startblock, size_t
@@ -415,6 +421,7 @@ static ssize_t at24c_bwrite(FAR struct mtd_dev_s *dev, off_t startblock, size_t
|
|
|
|
|
*/ |
|
|
|
|
if (--tries == 0) { |
|
|
|
|
perf_count(priv->perf_errors); |
|
|
|
|
BOARD_EEPROM_WP_CTRL(true); |
|
|
|
|
return ERROR; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
@ -423,6 +430,8 @@ static ssize_t at24c_bwrite(FAR struct mtd_dev_s *dev, off_t startblock, size_t
@@ -423,6 +430,8 @@ static ssize_t at24c_bwrite(FAR struct mtd_dev_s *dev, off_t startblock, size_t
|
|
|
|
|
buffer += priv->pagesize; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
BOARD_EEPROM_WP_CTRL(true); |
|
|
|
|
|
|
|
|
|
#if CONFIG_AT24XX_MTD_BLOCKSIZE > AT24XX_PAGESIZE |
|
|
|
|
return nblocks / (CONFIG_AT24XX_MTD_BLOCKSIZE / AT24XX_PAGESIZE); |
|
|
|
|
#else |
|
|
|
@ -565,6 +574,8 @@ FAR struct mtd_dev_s *at24c_initialize(FAR struct i2c_master_s *dev)
@@ -565,6 +574,8 @@ FAR struct mtd_dev_s *at24c_initialize(FAR struct i2c_master_s *dev)
|
|
|
|
|
} |
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
BOARD_EEPROM_WP_CTRL(true); |
|
|
|
|
|
|
|
|
|
perf_begin(priv->perf_transfers); |
|
|
|
|
int ret = I2C_TRANSFER(priv->dev, &msgv[0], 2); |
|
|
|
|
perf_end(priv->perf_transfers); |
|
|
|
|