Skip to contentSkip to conversation

PM for physmap.c ?

DISCUSSION Steven Scholz 2 participants 3 messages Aug 23, 2006 – Aug 30, 2006 Memory technology devices (MTD)

lore
Share & tools
lore
#0 lore raw

Hi all,

for quite some time physmap.c uses platform_{device,driver}.

I wonder why it does not contain any (generic) code for power management yet, i.e. .suspend/.resume functions.

Is it correct that all I would need to survive a suspend/resume cycle is something like

int physmap_flash_suspend(struct platform_device *dev, pm_message_t state)

{
	struct sa_info *info = platform_get_drvdata(dev);
	int ret = 0;
	if (info)
		ret = info->mtd->suspend(info->mtd);
	return ret;
}

int physmap_flash_resume(struct platform_device *dev)

{
	struct sa_info *info = platform_get_drvdata(dev);
	if (info)
		info->mtd->resume(info->mtd);
	return 0;
}

as stolen from sa1100-flash.c? Or is PM done at some other/higher layer of the MTD stuff?

Cheers,

Signature · 1 line
Steven
#1 lore raw
Quoted 1 line · Steven Scholz

Hi all,

Hello,

Quoted 18 lines

for quite some time physmap.c uses platform_{device,driver}.

I wonder why it does not contain any (generic) code for power management yet, i.e. .suspend/.resume functions.

Is it correct that all I would need to survive a suspend/resume cycle is something like

int physmap_flash_suspend(struct platform_device *dev, pm_message_t state)

{
	struct sa_info *info = platform_get_drvdata(dev);
	int ret = 0;
	if (info)
		ret = info->mtd->suspend(info->mtd);
	return ret;
}

int physmap_flash_resume(struct platform_device *dev)

Quoted 8 lines
{
	struct sa_info *info = platform_get_drvdata(dev);
	if (info)
		info->mtd->resume(info->mtd);
	return 0;
}

as stolen from sa1100-flash.c?

Looks OK to me, but that doesn't say much.

cheers,
Lennert

#2 lore raw

Lennert,

Quoted 25 lines
Quoted 25 lines

for quite some time physmap.c uses platform_{device,driver}.

I wonder why it does not contain any (generic) code for power management yet, i.e. .suspend/.resume functions.

Is it correct that all I would need to survive a suspend/resume cycle is something like

int physmap_flash_suspend(struct platform_device *dev, pm_message_t state)

{
	struct sa_info *info = platform_get_drvdata(dev);
	int ret = 0;
	if (info)
		ret = info->mtd->suspend(info->mtd);
	return ret;
}

int physmap_flash_resume(struct platform_device *dev)

{
	struct sa_info *info = platform_get_drvdata(dev);
	if (info)
		info->mtd->resume(info->mtd);
	return 0;
}
Quoted 3 lines
Quoted 1 line

as stolen from sa1100-flash.c?

Looks OK to me, but that doesn't say much.

;-) Thanks for your reply anyway. Thought I am getting ignored for asking stupid things...

However could one of the MTD gurus please state on the following:
- Would the above be enough?
- Is it needed at all? For normal NOR flash (that's what physmap.c is for?).
- What could happen without proper PM handling?
- Is it worth it to provide a proper patch?

Thanks a million!

--
Steven