mtd: nand: fix multi-chip suspend problem
Symptom: device_suspend(): mtd_cls_suspend+0x0/0x58 returns -11 PM: Device mtd14 failed to suspend: error -11 PM: Some devices failed to suspend This patch enables other chips to be suspended if the active chip of the controller has been suspended. Signed-off-by: Jin Qing <b24347@freescale.com> Signed-off-by: Li Yang <leoli@freescale.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: David Woodhouse <David.Woodhouse@intel.com>
This commit is contained in:
parent
4a58948669
commit
6b0d9a8412
|
@ -740,8 +740,14 @@ nand_get_device(struct nand_chip *chip, struct mtd_info *mtd, int new_state)
|
|||
return 0;
|
||||
}
|
||||
if (new_state == FL_PM_SUSPENDED) {
|
||||
spin_unlock(lock);
|
||||
return (chip->state == FL_PM_SUSPENDED) ? 0 : -EAGAIN;
|
||||
if (chip->controller->active->state == FL_PM_SUSPENDED) {
|
||||
chip->state = FL_PM_SUSPENDED;
|
||||
spin_unlock(lock);
|
||||
return 0;
|
||||
} else {
|
||||
spin_unlock(lock);
|
||||
return -EAGAIN;
|
||||
}
|
||||
}
|
||||
set_current_state(TASK_UNINTERRUPTIBLE);
|
||||
add_wait_queue(wq, &wait);
|
||||
|
|
Loading…
Reference in New Issue