diff options
-rw-r--r-- | sys/arch/macppc/dev/adb.c | 16 | ||||
-rw-r--r-- | sys/arch/macppc/dev/pm_direct.c | 13 | ||||
-rw-r--r-- | sys/arch/macppc/dev/pm_direct.h | 4 |
3 files changed, 21 insertions, 12 deletions
diff --git a/sys/arch/macppc/dev/adb.c b/sys/arch/macppc/dev/adb.c index 3dc6552ff39..d8644b94ba7 100644 --- a/sys/arch/macppc/dev/adb.c +++ b/sys/arch/macppc/dev/adb.c @@ -1,4 +1,4 @@ -/* $OpenBSD: adb.c,v 1.20 2007/02/12 21:01:11 gwk Exp $ */ +/* $OpenBSD: adb.c,v 1.21 2007/02/18 19:33:48 gwk Exp $ */ /* $NetBSD: adb.c,v 1.6 1999/08/16 06:28:09 tsubai Exp $ */ /* $NetBSD: adb_direct.c,v 1.14 2000/06/08 22:10:45 tsubai Exp $ */ @@ -278,7 +278,7 @@ void setsoftadb(void); int adb_intr(void *arg); void adb_cuda_autopoll(void); -void adb_cuda_fileserver_mode(void); +void adb_cuda_fileserver_mode(int); #ifdef ADB_DEBUG /* @@ -1516,6 +1516,8 @@ adb_poweroff(void) switch (adbHardware) { case ADB_HW_PMU: + /* Clear the wake on AC loss event */ + pmu_fileserver_mode(0); pm_adb_poweroff(); for (;;); /* wait for power off */ @@ -1523,6 +1525,8 @@ adb_poweroff(void) return 0; case ADB_HW_CUDA: + /* Clear the wake on AC loss event */ + adb_cuda_fileserver_mode(0); output[0] = 0x02; /* 2 byte message */ output[1] = 0x01; /* to pram/rtc/soft-power device */ output[2] = 0x0a; /* set poweroff */ @@ -1568,7 +1572,7 @@ adb_cuda_autopoll() } void -adb_cuda_fileserver_mode() +adb_cuda_fileserver_mode(int on) { volatile int flag = 0; int result; @@ -1577,7 +1581,7 @@ adb_cuda_fileserver_mode() output[0] = 0x03; /* 3-byte message */ output[1] = 0x01; /* to pram/rtc device/soft-power device */ output[2] = 0x13; /* cuda file server mode */ - output[3] = 0x01; /* True */ + output[3] = on; result = send_adb_cuda(output, output, adb_op_comprout, (void *)&flag, 0); @@ -1739,7 +1743,7 @@ adbattach(struct device *parent, struct device *self, void *aux) } if (adbHardware == ADB_HW_CUDA) - adb_cuda_fileserver_mode(); + adb_cuda_fileserver_mode(1); if (adbHardware == ADB_HW_PMU) - pmu_fileserver_mode(); + pmu_fileserver_mode(1); } diff --git a/sys/arch/macppc/dev/pm_direct.c b/sys/arch/macppc/dev/pm_direct.c index 21dadafacd3..0f83fc61df2 100644 --- a/sys/arch/macppc/dev/pm_direct.c +++ b/sys/arch/macppc/dev/pm_direct.c @@ -1,4 +1,4 @@ -/* $OpenBSD: pm_direct.c,v 1.21 2007/02/12 21:01:11 gwk Exp $ */ +/* $OpenBSD: pm_direct.c,v 1.22 2007/02/18 19:33:48 gwk Exp $ */ /* $NetBSD: pm_direct.c,v 1.9 2000/06/08 22:10:46 tsubai Exp $ */ /* @@ -839,7 +839,7 @@ pm_battery_info(int battery, struct pmu_battery_info *info) } void -pmu_fileserver_mode() +pmu_fileserver_mode(int on) { PMData p; @@ -853,7 +853,12 @@ pmu_fileserver_mode() p.num_data = 3; p.s_buf = p.r_buf = p.data; p.data[1] = p.data[0]; /* result from the get */ - p.data[0] = PMU_PWR_SET_POWERUP_EVENTS; - p.data[2] |= PMU_WAKE_AC_LOSS; + if (on) { + p.data[0] = PMU_PWR_SET_POWERUP_EVENTS; + p.data[2] = PMU_WAKE_AC_LOSS; + } else { + p.data[0] = PMU_PWR_CLR_POWERUP_EVENTS; + p.data[2] = PMU_WAKE_AC_LOSS; + } pmgrop(&p); } diff --git a/sys/arch/macppc/dev/pm_direct.h b/sys/arch/macppc/dev/pm_direct.h index 8213ffe9a0c..680d19dd2fe 100644 --- a/sys/arch/macppc/dev/pm_direct.h +++ b/sys/arch/macppc/dev/pm_direct.h @@ -1,4 +1,4 @@ -/* $OpenBSD: pm_direct.h,v 1.10 2007/02/12 21:01:11 gwk Exp $ */ +/* $OpenBSD: pm_direct.h,v 1.11 2007/02/18 19:33:48 gwk Exp $ */ /* $NetBSD: pm_direct.h,v 1.5 1999/07/12 15:54:55 tsubai Exp $ */ /* @@ -68,7 +68,7 @@ struct pmu_battery_info int pm_battery_info(int, struct pmu_battery_info *); void pm_eject_pcmcia(int); -void pmu_fileserver_mode(void); +void pmu_fileserver_mode(int); /* PMU commands */ #define PMU_RESET_ADB 0x00 /* Reset ADB */ |