forked from lede-project/source
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
mediatek: fix mtk parallel nand driver
This fixes some bugs in the mtk parallel nand driver introduced in 5.10. This patch was send upstream. Signed-off-by: Hauke Mehrtens <[email protected]>
- Loading branch information
Showing
1 changed file
with
36 additions
and
0 deletions.
There are no files selected for viewing
36 changes: 36 additions & 0 deletions
36
...inux/mediatek/patches-5.10/360-mtd-rawnand-mtk-Fix-WAITRDY-break-condition-and-time.patch
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,36 @@ | ||
From 4a4854761c9dedeedbf72c25d1317ab2e7600d4f Mon Sep 17 00:00:00 2001 | ||
From: Hauke Mehrtens <[email protected]> | ||
Date: Mon, 8 Mar 2021 23:16:17 +0100 | ||
Subject: [PATCH] mtd: rawnand: mtk: Fix WAITRDY break condition and timeout | ||
|
||
This fixes NAND_OP_WAITRDY_INSTR operation in the driver. Without this | ||
change the driver waits till the system is busy, but we should wait till | ||
the busy flag is cleared. The readl_poll_timeout() function gets a break | ||
condition, not a wait condition. | ||
|
||
In addition fix the timeout. The timeout_ms is given in ms, but the | ||
readl_poll_timeout() function takes the timeout in us. Multiple the | ||
given timeout by 1000 to convert it. | ||
|
||
Without this change, the driver does not work at all, it doesn't even | ||
identify the NAND chip. | ||
|
||
Fixes: 5197360f9e09 ("mtd: rawnand: mtk: Convert the driver to exec_op()") | ||
Signed-off-by: Hauke Mehrtens <[email protected]> | ||
--- | ||
drivers/mtd/nand/raw/mtk_nand.c | 4 ++-- | ||
1 file changed, 2 insertions(+), 2 deletions(-) | ||
|
||
--- a/drivers/mtd/nand/raw/mtk_nand.c | ||
+++ b/drivers/mtd/nand/raw/mtk_nand.c | ||
@@ -488,8 +488,8 @@ static int mtk_nfc_exec_instr(struct nan | ||
return 0; | ||
case NAND_OP_WAITRDY_INSTR: | ||
return readl_poll_timeout(nfc->regs + NFI_STA, status, | ||
- status & STA_BUSY, 20, | ||
- instr->ctx.waitrdy.timeout_ms); | ||
+ !(status & STA_BUSY), 20, | ||
+ instr->ctx.waitrdy.timeout_ms * 1000); | ||
default: | ||
break; | ||
} |