Module Name:    src
Committed By:   nat
Date:           Sat Sep 14 21:02:46 UTC 2024

Modified Files:
        src/sys/arch/mac68k/dev: pm_direct.c pm_direct.h
        src/sys/arch/mac68k/mac68k: machdep.c

Log Message:
Add support for poweroff on PowerBook 1xx.

This excludes the PowerBook 150 and 190, which are more similar to the 500
series.


To generate a diff of this commit:
cvs rdiff -u -r1.33 -r1.34 src/sys/arch/mac68k/dev/pm_direct.c
cvs rdiff -u -r1.2 -r1.3 src/sys/arch/mac68k/dev/pm_direct.h
cvs rdiff -u -r1.369 -r1.370 src/sys/arch/mac68k/mac68k/machdep.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/mac68k/dev/pm_direct.c
diff -u src/sys/arch/mac68k/dev/pm_direct.c:1.33 src/sys/arch/mac68k/dev/pm_direct.c:1.34
--- src/sys/arch/mac68k/dev/pm_direct.c:1.33	Sat Sep 14 20:59:45 2024
+++ src/sys/arch/mac68k/dev/pm_direct.c	Sat Sep 14 21:02:46 2024
@@ -1,4 +1,4 @@
-/*	$NetBSD: pm_direct.c,v 1.33 2024/09/14 20:59:45 nat Exp $	*/
+/*	$NetBSD: pm_direct.c,v 1.34 2024/09/14 21:02:46 nat Exp $	*/
 
 /*
  * Copyright (c) 2024 Nathanial Sloss <nathanialsl...@yahoo.com.au>
@@ -35,7 +35,7 @@
 /* From: pm_direct.c 1.3 03/18/98 Takashi Hamada */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: pm_direct.c,v 1.33 2024/09/14 20:59:45 nat Exp $");
+__KERNEL_RCSID(0, "$NetBSD: pm_direct.c,v 1.34 2024/09/14 21:02:46 nat Exp $");
 
 #include "opt_adb.h"
 
@@ -1151,6 +1151,26 @@ pm_adb_poll_next_device_pm1(PMData *pmda
 	tmp_pmdata.data[2] = 0x00;
 	pmgrop(&tmp_pmdata);
 }
+
+void 
+pm_poweroff(void)
+{
+	PMData pmdata;
+	int attempt = 3;
+
+	while (pmHardware == PM_HW_PB1XX && attempt > 0) {
+		pmdata.command = 0x7e;
+		pmdata.num_data = 0;
+		pmdata.data[0] = pmdata.data[1] = 0;
+		pmdata.s_buf = &pmdata.data[2];
+		pmdata.r_buf = &pmdata.data[2];
+		(void)pm_pmgrop_pm1(&pmdata);
+		attempt--;
+	}	
+
+	return;
+}
+
 u_int
 pm_set_brightness(u_int brightness)
 {

Index: src/sys/arch/mac68k/dev/pm_direct.h
diff -u src/sys/arch/mac68k/dev/pm_direct.h:1.2 src/sys/arch/mac68k/dev/pm_direct.h:1.3
--- src/sys/arch/mac68k/dev/pm_direct.h:1.2	Sat Sep 14 20:59:45 2024
+++ src/sys/arch/mac68k/dev/pm_direct.h	Sat Sep 14 21:02:46 2024
@@ -1,4 +1,4 @@
-/*	$NetBSD: pm_direct.h,v 1.2 2024/09/14 20:59:45 nat Exp $	*/
+/*	$NetBSD: pm_direct.h,v 1.3 2024/09/14 21:02:46 nat Exp $	*/
 
 /*
  * Copyright (c) 2024 Nathanial Sloss <nathanialsl...@yahoo.com.au>
@@ -48,4 +48,5 @@ typedef	struct	{
 }	PMData;
 
 int		pmgrop(PMData *);
+void		pm_poweroff(void);
 u_int		pm_set_brightness(u_int);

Index: src/sys/arch/mac68k/mac68k/machdep.c
diff -u src/sys/arch/mac68k/mac68k/machdep.c:1.369 src/sys/arch/mac68k/mac68k/machdep.c:1.370
--- src/sys/arch/mac68k/mac68k/machdep.c:1.369	Fri Jun  7 02:51:45 2024
+++ src/sys/arch/mac68k/mac68k/machdep.c	Sat Sep 14 21:02:46 2024
@@ -1,4 +1,4 @@
-/*	$NetBSD: machdep.c,v 1.369 2024/06/07 02:51:45 nat Exp $	*/
+/*	$NetBSD: machdep.c,v 1.370 2024/09/14 21:02:46 nat Exp $	*/
 
 /*
  * Copyright (c) 1988 University of Utah.
@@ -74,7 +74,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: machdep.c,v 1.369 2024/06/07 02:51:45 nat Exp $");
+__KERNEL_RCSID(0, "$NetBSD: machdep.c,v 1.370 2024/09/14 21:02:46 nat Exp $");
 
 #include "opt_adb.h"
 #include "opt_compat_netbsd.h"
@@ -156,6 +156,7 @@ __KERNEL_RCSID(0, "$NetBSD: machdep.c,v 
 #if NMACFB > 0
 #include <mac68k/dev/macfbvar.h>
 #endif
+#include <mac68k/dev/pm_direct.h>
 #include <mac68k/dev/zs_cons.h>
 
 #include "ksyms.h"
@@ -493,6 +494,11 @@ cpu_reboot(int howto, char *bootstr)
 		adb_poweroff();
 #endif
 		/*
+		 * Try to shutdown via the power manager (PowerBooks mainly).
+		 */
+		pm_poweroff();
+
+		/*
 		 * RB_POWERDOWN implies RB_HALT... fall into it...
 		 */
 	}

Reply via email to