Standby/resume and MTD driver

Oleg Kechin okechin at gmail.com
Thu Jun 14 04:57:33 EDT 2007


Hi
I run 2.6.20-rt8 kernel on board like omap-innovator1510 (OMAP5910 cpu 
ARM925 v4) with NOR flash
and jffs2 filesystem.
In  case to enter standby mode, board enter  cleanly, and it is OK, but 
in resume there is a problem.
(I use echo -n standby > /sys/power/state command)
When it wakes up,  at some times I get string:

omapflash.0: Waiting for chip to be ready timed out. Status 3068
Write of 68 bytes at 0x00945628 failed. returned -5, retlen 0
Not marking the space at 0x00945628 as dirty because the flash driver 
returned retlen zero

I know that the error is in case flash go to standby in one state, but 
return in another. Mtd driver has functions
for such cases  - suspend and resume (cfi_intelext_suspend() & 
cfi_intelext_resume()),
but both of this functions are not calling in suspend/resume process.
I can not find a way to call this function from user space - I can not 
find ioctl or something like that.
May be I have to link those function in some pm list or something like 
that? Is there any example?

PS. Flash to board added like that:
static struct flash_platform_data innovator_flash_data = {
       .map_name       = "cfi_probe",
       .width          = 2,
       .parts          = innovator_partitions,
       .nr_parts       = ARRAY_SIZE(innovator_partitions),
};
static struct resource innovator_flash_resource = {
       .start          = OMAP_CS0_PHYS,
       .end            = OMAP_CS0_PHYS + SZ_32M - 1,
       .flags          = IORESOURCE_MEM,
};
static struct platform_device innovator_flash_device = {
       .name           = "omapflash",
       .id             = 0,
       .dev            = {
               .platform_data  = &innovator_flash_data,
       },
       .num_resources  = 1,
       .resource       = &innovator_flash_resource,
}

Oleg Kechin



More information about the linux-mtd mailing list