|
@@ -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);
|