| From 89cf38dd536a7301d6b5f5ddd73f42074c01bfaa Mon Sep 17 00:00:00 2001 |
| From: Dmitry Eremin-Solenikov <dbaryshkov@gmail.com> |
| Date: Thu, 23 Oct 2014 01:23:01 +0200 |
| Subject: mtd: cfi_cmdset_0001.c: fix resume for LH28F640BF chips |
| |
| From: Dmitry Eremin-Solenikov <dbaryshkov@gmail.com> |
| |
| commit 89cf38dd536a7301d6b5f5ddd73f42074c01bfaa upstream. |
| |
| After '#echo mem > /sys/power/state' some devices can not be properly resumed |
| because apparently the MTD Partition Configuration Register has been reset |
| to default thus the rootfs cannot be mounted cleanly on resume. |
| An example of this can be found in the SA-1100 Developer's Manual at 9.5.3.3 |
| where the second step of the Sleep Shutdown Sequence is described: |
| "An internal reset is applied to the SA-1100. All units are reset...". |
| |
| As workaround we refresh the PCR value as done initially on chip setup. |
| |
| This behavior and the fix are confirmed by our tests done on 2 different Zaurus |
| collie units with kernel 3.17. |
| |
| Fixes: 812c5fa82bae: ("mtd: cfi_cmdset_0001.c: add support for Sharp LH28F640BF NOR") |
| Signed-off-by: Dmitry Eremin-Solenikov <dbaryshkov@gmail.com> |
| Signed-off-by: Andrea Adami <andrea.adami@gmail.com> |
| Signed-off-by: Brian Norris <computersforpeace@gmail.com> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| |
| --- |
| drivers/mtd/chips/cfi_cmdset_0001.c | 2 ++ |
| 1 file changed, 2 insertions(+) |
| |
| --- a/drivers/mtd/chips/cfi_cmdset_0001.c |
| +++ b/drivers/mtd/chips/cfi_cmdset_0001.c |
| @@ -2590,6 +2590,8 @@ static void cfi_intelext_resume(struct m |
| |
| /* Go to known state. Chip may have been power cycled */ |
| if (chip->state == FL_PM_SUSPENDED) { |
| + /* Refresh LH28F640BF Partition Config. Register */ |
| + fixup_LH28F640BF(mtd); |
| map_write(map, CMD(0xFF), cfi->chips[i].start); |
| chip->oldstate = chip->state = FL_READY; |
| wake_up(&chip->wq); |