#define AR934X_NFC_DEV_READY_TIMEOUT 25 /* msecs */
#define AR934X_NFC_DMA_READY_TIMEOUT 25 /* msecs */
#define AR934X_NFC_DONE_TIMEOUT 1000
+#define AR934X_NFC_DMA_RETRIES 20
#define AR934X_NFC_USE_IRQ true
#define AR934X_NFC_IRQ_MASK AR934X_NFC_INT_DEV_RDY(0)
(write) ? "write" : "read", page_addr);
ar934x_nfc_restart(nfc);
- if (retries++ < 5)
+ if (retries++ < AR934X_NFC_DMA_RETRIES)
goto retry;
dev_err(nfc->parent, "%s operation failed on page %d\n",
static void
ar934x_nfc_send_read(struct ar934x_nfc *nfc, unsigned command, int column,
- int page_addr, int len, bool oob)
+ int page_addr, int len)
{
u32 cmd_reg;
- nfc_dbg(nfc, "read, column=%d page=%d len=%d oob:%d\n",
- column, page_addr, len, oob);
+ nfc_dbg(nfc, "read, column=%d page=%d len=%d\n",
+ column, page_addr, len);
cmd_reg = (command & AR934X_NFC_CMD_CMD0_M) << AR934X_NFC_CMD_CMD0_S;
case NAND_CMD_READ1:
if (nfc->small_page) {
ar934x_nfc_send_read(nfc, command, column, page_addr,
- mtd->writesize + mtd->oobsize,
- false);
+ mtd->writesize + mtd->oobsize);
} else {
ar934x_nfc_send_read(nfc, command, 0, page_addr,
- mtd->writesize + mtd->oobsize,
- false);
+ mtd->writesize + mtd->oobsize);
nfc->buf_index = column;
nfc->rndout_page_addr = page_addr;
nfc->rndout_read_cmd = command;
if (nfc->small_page)
ar934x_nfc_send_read(nfc, NAND_CMD_READOOB,
column, page_addr,
- mtd->oobsize,
- true);
+ mtd->oobsize);
else
ar934x_nfc_send_read(nfc, NAND_CMD_READ0,
mtd->writesize, page_addr,
- mtd->oobsize,
- true);
+ mtd->oobsize);
break;
case NAND_CMD_RNDOUT:
/* emulate subpage read */
ar934x_nfc_send_read(nfc, nfc->rndout_read_cmd, 0,
nfc->rndout_page_addr,
- mtd->writesize + mtd->oobsize, false);
+ mtd->writesize + mtd->oobsize);
nfc->buf_index = column;
break;
else
mtd->name = dev_name(&pdev->dev);
- nand->options = NAND_NO_AUTOINCR;
nand->chip_delay = 25;
nand->ecc.mode = NAND_ECC_SOFT;