mirror of https://gitee.com/openkylin/linux.git
mtd: fix the wrong timeo for panic_nand_wait()
The panic_nand_wait() expects the timeo in ms and not in jiffies. But in nand_wait(), the timeo for panic_nand_wait() is assigned with wrong value(jiffies + some delay). The timeo should be set like the panic_nand_write() does. This patch passes timeo in ms to panic_nand_wait(). And this patch also passes timeo in jiffies(converted by msecs_to_jiffies) to time_before() which makes the code more readable. Signed-off-by: Huang Shijie <b32955@freescale.com> Signed-off-by: Artem Bityutskiy <artem.bityutskiy@linux.intel.com>
This commit is contained in:
parent
1648eaaa15
commit
6d2559f8bc
|
@ -825,13 +825,8 @@ static void panic_nand_wait(struct mtd_info *mtd, struct nand_chip *chip,
|
||||||
static int nand_wait(struct mtd_info *mtd, struct nand_chip *chip)
|
static int nand_wait(struct mtd_info *mtd, struct nand_chip *chip)
|
||||||
{
|
{
|
||||||
|
|
||||||
unsigned long timeo = jiffies;
|
|
||||||
int status, state = chip->state;
|
int status, state = chip->state;
|
||||||
|
unsigned long timeo = (state == FL_ERASING ? 400 : 20);
|
||||||
if (state == FL_ERASING)
|
|
||||||
timeo += (HZ * 400) / 1000;
|
|
||||||
else
|
|
||||||
timeo += (HZ * 20) / 1000;
|
|
||||||
|
|
||||||
led_trigger_event(nand_led_trigger, LED_FULL);
|
led_trigger_event(nand_led_trigger, LED_FULL);
|
||||||
|
|
||||||
|
@ -849,6 +844,7 @@ static int nand_wait(struct mtd_info *mtd, struct nand_chip *chip)
|
||||||
if (in_interrupt() || oops_in_progress)
|
if (in_interrupt() || oops_in_progress)
|
||||||
panic_nand_wait(mtd, chip, timeo);
|
panic_nand_wait(mtd, chip, timeo);
|
||||||
else {
|
else {
|
||||||
|
timeo = jiffies + msecs_to_jiffies(timeo);
|
||||||
while (time_before(jiffies, timeo)) {
|
while (time_before(jiffies, timeo)) {
|
||||||
if (chip->dev_ready) {
|
if (chip->dev_ready) {
|
||||||
if (chip->dev_ready(mtd))
|
if (chip->dev_ready(mtd))
|
||||||
|
|
Loading…
Reference in New Issue