svn commit: r191733 - in head/sys: amd64/isa isa

Alexander Motin mav at FreeBSD.org
Fri May 1 21:43:06 UTC 2009


Author: mav
Date: Fri May  1 21:43:04 2009
New Revision: 191733
URL: http://svn.freebsd.org/changeset/base/191733

Log:
  Add resume methods to i8254 and atrtc devices.

Modified:
  head/sys/amd64/isa/clock.c
  head/sys/isa/atrtc.c

Modified: head/sys/amd64/isa/clock.c
==============================================================================
--- head/sys/amd64/isa/clock.c	Fri May  1 21:31:39 2009	(r191732)
+++ head/sys/amd64/isa/clock.c	Fri May  1 21:43:04 2009	(r191733)
@@ -376,6 +376,17 @@ set_i8254_freq(u_int freq, int intr_freq
 	mtx_unlock_spin(&clock_lock);
 }
 
+static void
+i8254_restore(void)
+{
+
+	mtx_lock_spin(&clock_lock);
+	outb(TIMER_MODE, TIMER_SEL0 | TIMER_RATEGEN | TIMER_16BIT);
+	outb(TIMER_CNTR0, i8254_real_max_count & 0xff);
+	outb(TIMER_CNTR0, i8254_real_max_count >> 8);
+	mtx_unlock_spin(&clock_lock);
+}
+
 /* This is separate from startrtclock() so that it can be called early. */
 void
 i8254_init(void)
@@ -558,6 +569,14 @@ attimer_attach(device_t dev)
 	return(0);
 }
 
+static int
+attimer_resume(device_t dev)
+{
+
+	i8254_restore();
+	return(0);
+}
+
 static device_method_t attimer_methods[] = {
 	/* Device interface */
 	DEVMETHOD(device_probe,		attimer_probe),
@@ -565,7 +584,7 @@ static device_method_t attimer_methods[]
 	DEVMETHOD(device_detach,	bus_generic_detach),
 	DEVMETHOD(device_shutdown,	bus_generic_shutdown),
 	DEVMETHOD(device_suspend,	bus_generic_suspend),
-	DEVMETHOD(device_resume,	bus_generic_resume),
+	DEVMETHOD(device_resume,	attimer_resume),
 	{ 0, 0 }
 };
 

Modified: head/sys/isa/atrtc.c
==============================================================================
--- head/sys/isa/atrtc.c	Fri May  1 21:31:39 2009	(r191732)
+++ head/sys/isa/atrtc.c	Fri May  1 21:43:04 2009	(r191733)
@@ -190,6 +190,13 @@ atrtc_attach(device_t dev)
 	return(0);
 }
 
+static int
+atrtc_resume(device_t dev)
+{
+
+	atrtc_restore();
+	return(0);
+}
 
 static int
 atrtc_settime(device_t dev __unused, struct timespec *ts)
@@ -264,8 +271,7 @@ static device_method_t atrtc_methods[] =
 	DEVMETHOD(device_shutdown,	bus_generic_shutdown),
 	DEVMETHOD(device_suspend,	bus_generic_suspend),
 		/* XXX stop statclock? */
-	DEVMETHOD(device_resume,	bus_generic_resume),
-		/* XXX restart statclock? */
+	DEVMETHOD(device_resume,	atrtc_resume),
 
 	/* clock interface */
 	DEVMETHOD(clock_gettime,	atrtc_gettime),


More information about the svn-src-head mailing list