MTD PM Resume

Todd Blumer todd at
Thu Jun 2 22:54:16 EDT 2005

I found some information pertinent to this question in doing searching,
but not a definite resolution.

We're doing a Linux port (kernel 2.6.11) to the iPAQ hx4700, which uses
a stacked StrataFlash. The hx4700 has flash that lock all blocks on
reset or power down. We worked around this problem by unlocking all the
pertinent blocks in the boot loader, but for reasons I won't go into,
this doesn't work on resume.

So, we added some code to drivers/mtd/chips/cfi_cmdset_0001.c in
cfi_intelext_resume() to unlock the blocks of the flash chips on resume.
However, cfi_intelext_resume() is not be run on resume. In fact, as far
as I can tell, pm_send() is not being called in kernel/power/pm.c on
suspend or resume.

mtdcore.c uses pm_register() to register its callback function
(mtd_pm_callback()), and this API is apparently deprecated. If it's
marked deprecated, though, it should still work, so I'm wondering if
anyone knows why the suspend/resume functions for MTD devices are not
being called. Any other suggestions also appreciated.

In the mean while, we'll continue to investigate.

More information about the linux-mtd mailing list