SAMA5 NAND: Still debugging

This commit is contained in:
Gregory Nutt
2013-11-28 12:21:33 -06:00
parent f171394ba9
commit 1ea447867a
10 changed files with 66 additions and 37 deletions
+1 -1
View File
@@ -258,7 +258,7 @@ static void compute256(FAR const uint8_t *data, FAR uint8_t *code)
code[1] = (~(uint32_t)code[1]);
code[2] = (~(uint32_t)code[2]);
fvdbg("Computed code = %02X %02X %02X\n", code[0], code[1], code[2]);
fvdbg("Computed code: %02x %02x %02x\n", code[0], code[1], code[2]);
}
/****************************************************************************
+21 -19
View File
@@ -104,18 +104,18 @@ static uint32_t nand_chipid(struct nand_raw_s *raw);
static int nand_eraseblock(FAR struct nand_dev_s *nand,
off_t block, bool scrub);
static int nand_readpage(FAR struct nand_dev_s *nand, off_t block,
unsigned int page, FAR uint8_t *buf);
unsigned int page, FAR uint8_t *data);
static int nand_writepage(FAR struct nand_dev_s *nand, off_t block,
unsigned int page, FAR const void *buf);
unsigned int page, FAR const void *data);
/* MTD driver methods */
static int nand_erase(struct mtd_dev_s *dev, off_t startblock,
size_t nblocks);
static ssize_t nand_bread(struct mtd_dev_s *dev, off_t startblock,
size_t nblocks, uint8_t *buf);
size_t nblocks, uint8_t *buffer);
static ssize_t nand_bwrite(struct mtd_dev_s *dev, off_t startblock,
size_t nblocks, const uint8_t *buf);
size_t nblocks, const uint8_t *buffer);
static int nand_ioctl(struct mtd_dev_s *dev, int cmd,
unsigned long arg);
@@ -450,7 +450,7 @@ static int nand_eraseblock(FAR struct nand_dev_s *nand, off_t block,
* nand - Upper-half, NAND FLASH interface
* block - Number of the block where the page to read resides.
* page - Number of the page to read inside the given block.
* buf - Buffer where the data area will be stored.
* data - Buffer where the data area will be stored.
*
* Returned value.
* OK is returned in success; a negated errno value is returned on failure.
@@ -458,8 +458,10 @@ static int nand_eraseblock(FAR struct nand_dev_s *nand, off_t block,
****************************************************************************/
static int nand_readpage(FAR struct nand_dev_s *nand, off_t block,
unsigned int page, FAR uint8_t *buf)
unsigned int page, FAR uint8_t *data)
{
fvdbg("block=%d page=%d data=%p\n", (int)block, page, data);
#ifdef CONFIG_MTD_NAND_BLOCKCHECK
/* Check that the block is not BAD if data is requested */
@@ -468,6 +470,7 @@ static int nand_readpage(FAR struct nand_dev_s *nand, off_t block,
fdbg("ERROR: Block is BAD\n");
return -EAGAIN;
}
#endif
#ifdef CONFIG_MTD_NAND_SWECC
/* nandecc_readpage will handle the software ECC case */
@@ -477,7 +480,7 @@ static int nand_readpage(FAR struct nand_dev_s *nand, off_t block,
{
/* Read data with software ECC verification */
return nandecc_readpage(nand, block, page, buf, NULL);
return nandecc_readpage(nand, block, page, data, NULL);
}
/* The lower half will handle the No ECC and all hardware assisted
@@ -485,10 +488,9 @@ static int nand_readpage(FAR struct nand_dev_s *nand, off_t block,
*/
else
#endif
#endif
{
return NAND_READPAGE(nand->raw, block, page, buf, NULL);
return NAND_READPAGE(nand->raw, block, page, data, NULL);
}
}
@@ -503,7 +505,7 @@ static int nand_readpage(FAR struct nand_dev_s *nand, off_t block,
* nand - Upper-half, NAND FLASH interface
* block - Number of the block where the page to read resides.
* page - Number of the page to read inside the given block.
* buf - Buffer where the data area will be stored.
* data - Buffer where the data area will be stored.
*
* Returned value.
* OK is returned in success; a negated errno value is returned on failure.
@@ -511,7 +513,7 @@ static int nand_readpage(FAR struct nand_dev_s *nand, off_t block,
****************************************************************************/
static int nand_writepage(FAR struct nand_dev_s *nand, off_t block,
unsigned int page, FAR const void *buf)
unsigned int page, FAR const void *data)
{
#ifdef CONFIG_MTD_NAND_BLOCKCHECK
/* Check that the block is good */
@@ -530,7 +532,7 @@ static int nand_writepage(FAR struct nand_dev_s *nand, off_t block,
{
/* Write data with software ECC calculation */
return nandecc_writepage(nand, block, page, buf, NULL);
return nandecc_writepage(nand, block, page, data, NULL);
}
/* The lower half will handle the No ECC and all hardware assisted
@@ -541,7 +543,7 @@ static int nand_writepage(FAR struct nand_dev_s *nand, off_t block,
#endif
#endif
{
return NAND_WRITEPAGE(nand->raw, block, page, buf, NULL);
return NAND_WRITEPAGE(nand->raw, block, page, data, NULL);
}
}
@@ -594,7 +596,7 @@ static int nand_erase(struct mtd_dev_s *dev, off_t startblock,
****************************************************************************/
static ssize_t nand_bread(struct mtd_dev_s *dev, off_t startpage,
size_t npages, FAR uint8_t *buf)
size_t npages, FAR uint8_t *buffer)
{
FAR struct nand_dev_s *nand = (FAR struct nand_dev_s *)dev;
FAR struct nand_raw_s *raw;
@@ -638,7 +640,7 @@ static ssize_t nand_bread(struct mtd_dev_s *dev, off_t startpage,
{
/* Read the next page from NAND */
ret = nand_readpage(nand, block, page, buf);
ret = nand_readpage(nand, block, page, buffer);
if (ret < 0)
{
fdbg("ERROR: nand_readpage failed block=%ld page=%d: %d\n",
@@ -665,7 +667,7 @@ static ssize_t nand_bread(struct mtd_dev_s *dev, off_t startpage,
/* Increment the buffer point by the size of one page */
buf += pagesize;
buffer += pagesize;
}
nand_unlock(nand);
@@ -685,7 +687,7 @@ errout_with_lock:
****************************************************************************/
static ssize_t nand_bwrite(struct mtd_dev_s *dev, off_t startpage,
size_t npages, const uint8_t *buf)
size_t npages, const uint8_t *buffer)
{
FAR struct nand_dev_s *nand = (FAR struct nand_dev_s *)dev;
FAR struct nand_raw_s *raw;
@@ -729,7 +731,7 @@ static ssize_t nand_bwrite(struct mtd_dev_s *dev, off_t startpage,
{
/* Write the next page into NAND */
ret = nand_writepage(nand, block, page, buf);
ret = nand_writepage(nand, block, page, buffer);
if (ret < 0)
{
fdbg("ERROR: nand_writepage failed block=%ld page=%d: %d\n",
@@ -756,7 +758,7 @@ static ssize_t nand_bwrite(struct mtd_dev_s *dev, off_t startpage,
/* Increment the buffer point by the size of one page */
buf += pagesize;
buffer += pagesize;
}
nand_unlock(nand);
+5 -1
View File
@@ -97,6 +97,8 @@ int nandecc_readpage(FAR struct nand_dev_s *nand, off_t block,
unsigned int sparesize;
int ret;
fvdbg("block=%d page=%d data=%p spare=%d\n", (int)block, page, data, spare);
/* Get convenience pointers */
DEBUGASSERT(nand && nand->raw);
@@ -146,7 +148,7 @@ int nandecc_readpage(FAR struct nand_dev_s *nand, off_t block,
ret = hamming_verify256x(data, pagesize, raw->ecc);
if (ret && (ret != HAMMING_ERROR_SINGLEBIT))
{
fdbg("ERROR: Blockd paged Unrecoverable error:d\n",
fdbg("ERROR: Block=%d page=%d Unrecoverable error: %d\n",
block, page, ret);
return -EIO;
}
@@ -187,6 +189,8 @@ int nandecc_writepage(FAR struct nand_dev_s *nand, off_t block,
unsigned int sparesize;
int ret;
fvdbg("block=%d page=%d data=%p spare=%d\n", (int)block, page, data, spare);
/* Get convenience pointers */
DEBUGASSERT(nand && nand->raw);