diff options
author | Russell King <rmk@dyn-67.arm.linux.org.uk> | 2005-10-29 11:14:08 -0400 |
---|---|---|
committer | Russell King <rmk+kernel@arm.linux.org.uk> | 2005-10-29 11:14:08 -0400 |
commit | 13bfb34c10fae6016710f5f070043c8b94b40583 (patch) | |
tree | 39fd757bdfa95381655e0e2130c054834ee807e2 /drivers/mtd | |
parent | 183e1a349466a1b90430a58f3efad25a3e555cb2 (diff) |
[ARM] Fix Assabet reboot with SA1100 MTD map driver
Unfortunately, some devices forgot to reset the flash on reboot.
Arrange for the map driver to suspend & resume the flash to
ensure that it is in a sane state before rebooting.
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
Diffstat (limited to 'drivers/mtd')
-rw-r--r-- | drivers/mtd/maps/sa1100-flash.c | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/drivers/mtd/maps/sa1100-flash.c b/drivers/mtd/maps/sa1100-flash.c index acf01ef9b575..c81bec7b14d5 100644 --- a/drivers/mtd/maps/sa1100-flash.c +++ b/drivers/mtd/maps/sa1100-flash.c | |||
@@ -440,9 +440,17 @@ static int sa1100_mtd_resume(struct device *dev) | |||
440 | info->mtd->resume(info->mtd); | 440 | info->mtd->resume(info->mtd); |
441 | return 0; | 441 | return 0; |
442 | } | 442 | } |
443 | |||
444 | static void sa1100_mtd_shutdown(struct device *dev) | ||
445 | { | ||
446 | struct sa_info *info = dev_get_drvdata(dev); | ||
447 | if (info && info->mtd->suspend(info->mtd) == 0) | ||
448 | info->mtd->resume(info->mtd); | ||
449 | } | ||
443 | #else | 450 | #else |
444 | #define sa1100_mtd_suspend NULL | 451 | #define sa1100_mtd_suspend NULL |
445 | #define sa1100_mtd_resume NULL | 452 | #define sa1100_mtd_resume NULL |
453 | #define sa1100_mtd_shutdown NULL | ||
446 | #endif | 454 | #endif |
447 | 455 | ||
448 | static struct device_driver sa1100_mtd_driver = { | 456 | static struct device_driver sa1100_mtd_driver = { |
@@ -452,6 +460,7 @@ static struct device_driver sa1100_mtd_driver = { | |||
452 | .remove = __exit_p(sa1100_mtd_remove), | 460 | .remove = __exit_p(sa1100_mtd_remove), |
453 | .suspend = sa1100_mtd_suspend, | 461 | .suspend = sa1100_mtd_suspend, |
454 | .resume = sa1100_mtd_resume, | 462 | .resume = sa1100_mtd_resume, |
463 | .shutdown = sa1100_mtd_shutdown, | ||
455 | }; | 464 | }; |
456 | 465 | ||
457 | static int __init sa1100_mtd_init(void) | 466 | static int __init sa1100_mtd_init(void) |