Module Name:    src
Committed By:   jnemeth
Date:           Mon May 25 19:22:54 UTC 2009

Modified Files:
        src/sys/arch/sparc/dev: fd.c

Log Message:
Convert shutdownhook_establish() to pmf_device_register1().

XXX  This should be done as part of an overall plan to support
power management and device detachment.  However, in order to do
that, I would first have to invent sbus_intr_disestablish().  This
is being done at this time in order to aid in the effort to eliminate
shutdownhook_establish().

This was based on the sys/arch/sparc64/fd.c change.  Thanks to jdc@
for testing this version.


To generate a diff of this commit:
cvs rdiff -u -r1.145 -r1.146 src/sys/arch/sparc/dev/fd.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/arch/sparc/dev/fd.c
diff -u src/sys/arch/sparc/dev/fd.c:1.145 src/sys/arch/sparc/dev/fd.c:1.146
--- src/sys/arch/sparc/dev/fd.c:1.145	Wed Mar 18 16:00:14 2009
+++ src/sys/arch/sparc/dev/fd.c	Mon May 25 19:22:53 2009
@@ -1,4 +1,4 @@
-/*	$NetBSD: fd.c,v 1.145 2009/03/18 16:00:14 cegger Exp $	*/
+/*	$NetBSD: fd.c,v 1.146 2009/05/25 19:22:53 jnemeth Exp $	*/
 
 /*-
  * Copyright (c) 2000 The NetBSD Foundation, Inc.
@@ -101,7 +101,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: fd.c,v 1.145 2009/03/18 16:00:14 cegger Exp $");
+__KERNEL_RCSID(0, "$NetBSD: fd.c,v 1.146 2009/05/25 19:22:53 jnemeth Exp $");
 
 #include "opt_ddb.h"
 #include "opt_md.h"
@@ -282,8 +282,6 @@
 	int sc_cylin;		/* where we think the head is */
 	int sc_opts;		/* user-set options */
 
-	void	*sc_sdhook;	/* shutdownhook cookie */
-
 	TAILQ_ENTRY(fd_softc) sc_drivechain;
 	int sc_ops;		/* I/O ops since last switch */
 	struct bufq_state *sc_q;/* pending I/O requests */
@@ -293,6 +291,8 @@
 /* floppy driver configuration */
 int	fdmatch(struct device *, struct cfdata *, void *);
 void	fdattach(struct device *, struct device *, void *);
+bool	fdshutdown(device_t, int);
+bool	fdsuspend(device_t PMF_FN_PROTO);
 
 CFATTACH_DECL(fd, sizeof(struct fd_softc),
     fdmatch, fdattach, NULL, NULL);
@@ -791,9 +791,25 @@
 	mountroothook_establish(fd_mountroot_hook, &fd->sc_dv);
 
 	/* Make sure the drive motor gets turned off at shutdown time. */
-	fd->sc_sdhook = shutdownhook_establish(fd_motor_off, fd);
+	if (!pmf_device_register1(self, fdsuspend, NULL, fdshutdown))
+		aprint_error_dev(self, "couldn't establish power handler\n");
+}
+
+bool fdshutdown(device_t self, int how)
+{
+	struct fd_softc *fd = device_private(self);
+
+	fd_motor_off(fd);
+	return true;
 }
 
+bool fdsuspend(device_t self PMF_FN_ARGS)
+{
+
+	return fdshutdown(self, boothowto);
+}
+
+
 inline struct fd_type *
 fd_dev_to_type(struct fd_softc *fd, dev_t dev)
 {

Reply via email to