Messages in this thread Patch in this message | | | Date | Mon, 12 Jan 2004 15:12:54 -0800 | From | Andrew Morton <> | Subject | Re: suspend/resume support for PIT (time.c) |
| |
Pavel Machek <pavel@ucw.cz> wrote: > > > As none of this really has anything to do w/ the PIT, and to avoid > > confusion w/ the PIT timesource code, could we rename this to > > "time_suspend" and "time_resume"? > > Applied, altrough I'll not try to push it for a while. (I'm not sure > if Andrew applied previous patches and do not want to clash).
I already converted the patch. Here's what I currently have:
From: Pavel Machek <pavel@ucw.cz>
This adds proper suspend/resume support for PIT. That means that clock are actually correct after suspend/resume.
---
25-akpm/arch/i386/kernel/time.c | 24 ++++++++++++++++++++++++ 1 files changed, 24 insertions(+)
diff -puN arch/i386/kernel/time.c~suspend-resume-for-PIT arch/i386/kernel/time.c --- 25/arch/i386/kernel/time.c~suspend-resume-for-PIT Mon Jan 12 13:49:55 2004 +++ 25-akpm/arch/i386/kernel/time.c Mon Jan 12 13:49:55 2004 @@ -307,7 +307,31 @@ unsigned long get_cmos_time(void) return retval; } +static long clock_cmos_diff; + +static int time_suspend(struct sys_device *dev, u32 state) +{ + /* + * Estimate time zone so that set_time can update the clock + */ + clock_cmos_diff = -get_cmos_time(); + clock_cmos_diff += get_seconds(); + return 0; +} + +static int time_resume(struct sys_device *dev) +{ + unsigned long sec = get_cmos_time() + clock_cmos_diff; + write_seqlock_irq(&xtime_lock); + xtime.tv_sec = sec; + xtime.tv_nsec = 0; + write_sequnlock_irq(&xtime_lock); + return 0; +} + static struct sysdev_class pit_sysclass = { + .resume = time_resume, + .suspend = time_suspend, set_kset_name("pit"), }; _
- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |