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 <[email protected]>
@@ -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 <[email protected]>
@@ -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...
*/
}