patch-2.4.22 linux-2.4.22/arch/alpha/kernel/sys_nautilus.c
Next file: linux-2.4.22/arch/alpha/kernel/sys_noritake.c
Previous file: linux-2.4.22/arch/alpha/kernel/sys_miata.c
Back to the patch index
Back to the overall index
- Lines: 36
- Date:
2003-08-25 04:44:39.000000000 -0700
- Orig file:
linux-2.4.21/arch/alpha/kernel/sys_nautilus.c
- Orig date:
2003-06-13 07:51:29.000000000 -0700
diff -urN linux-2.4.21/arch/alpha/kernel/sys_nautilus.c linux-2.4.22/arch/alpha/kernel/sys_nautilus.c
@@ -76,6 +76,9 @@
void
nautilus_kill_arch(int mode)
{
+ u32 pmuport;
+ int off;
+
switch (mode) {
case LINUX_REBOOT_CMD_RESTART:
if (! alpha_using_srm) {
@@ -89,14 +92,18 @@
break;
case LINUX_REBOOT_CMD_POWER_OFF:
- {
- u32 pmuport;
- pcibios_read_config_dword(0, 0x88, 0x10, &pmuport);
- pmuport &= 0xfffe;
- outl(0xffff, pmuport); /* clear pending events */
- outw(0x2000, pmuport+4); /* power off */
- /* NOTREACHED */
+ /* Assume M1543C */
+ off = 0x2000; /* SLP_TYPE = 0, SLP_EN = 1 */
+ pcibios_read_config_dword(0, 0x88, 0x10, &pmuport);
+ if (!pmuport) {
+ /* M1535D/D+ */
+ off = 0x3400; /* SLP_TYPE = 5, SLP_EN = 1 */
+ pcibios_read_config_dword(0, 0x88, 0xe0, &pmuport);
}
+ pmuport &= 0xfffe;
+ outw(0xffff, pmuport); /* Clear pending events. */
+ outw(off, pmuport + 4);
+ /* NOTREACHED */
break;
}
}
FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen (who was at: slshen@lbl.gov)