From owner-acpi-jp@jp.freebsd.org  Fri Jul 20 19:45:50 2001
Received: (from daemon@localhost)
	by castle.jp.freebsd.org (8.9.3+3.2W/8.7.3) id TAA17167;
	Fri, 20 Jul 2001 19:45:50 +0900 (JST)
	(envelope-from owner-acpi-jp@jp.FreeBSD.org)
Received: from shidahara1.planet.sci.kobe-u.ac.jp (shidahara1.planet.sci.kobe-u.ac.jp [133.30.50.200])
	by castle.jp.freebsd.org (8.9.3+3.2W/8.7.3) with ESMTP id TAA17162
	for <acpi-jp@jp.freebsd.org>; Fri, 20 Jul 2001 19:45:49 +0900 (JST)
	(envelope-from takawata@shidahara1.planet.sci.kobe-u.ac.jp)
Received: from shidahara1.planet.sci.kobe-u.ac.jp (localhost [127.0.0.1])
	by shidahara1.planet.sci.kobe-u.ac.jp (8.9.3/8.9.3) with ESMTP id TAA44958;
	Fri, 20 Jul 2001 19:53:20 +0900 (JST)
	(envelope-from takawata@shidahara1.planet.sci.kobe-u.ac.jp)
Message-Id: <200107201053.TAA44958@shidahara1.planet.sci.kobe-u.ac.jp>
To: andrew.grover@intel.com
cc: acpi-jp@jp.freebsd.org
Date: Fri, 20 Jul 2001 19:53:20 +0900
From: Takanori Watanabe <takawata@shidahara1.planet.sci.kobe-u.ac.jp>
Reply-To: acpi-jp@jp.freebsd.org
Precedence: list
X-Distribute: distribute version 2.1 (Alpha) patchlevel 24e+010328
X-Sequence: acpi-jp 1176
Subject: [acpi-jp 1176] I want new external interface after resume from S2-4BIOS state.
Errors-To: owner-acpi-jp@jp.freebsd.org
Sender: owner-acpi-jp@jp.freebsd.org
X-Originator: takawata@shidahara1.planet.sci.kobe-u.ac.jp

I managed to got transition to ACPI S2-S4BIOS work in FreeBSD.
And I noticed that GPE would not come in my machine after resume.
GPE enable request is not only from OS dependent layer but from ACPICA 
itself. So I need following code. How do you think about it.

$BEOJUB:5*(B
$B?@8MBg3XBg3X1!<+A32J3X8&5f2J(BD3$B>pJs%a%G%#%"2J3X@l96(B
<a href="http://www.planet.sci.kobe-u.ac.jp/~takawata/key.html">
Public Key</a>
Key fingerprint =  2C 51 E2 78 2C E1 C5 2D  0F F1 20 A3 11 3A 62 2A 


--- /home/takawata/acpi-jp/src/sys/contrib/dev/acpica/achware.h	Wed May 30 04:52:27 2001
+++ ./achware.h	Fri Jul 20 19:09:41 2001
@@ -211,6 +211,10 @@
     UINT32                  GpeNumber,
     ACPI_EVENT_STATUS       *EventStatus);
 
+void 
+AcpiHwResumeGpe( 
+    void);
+
 /* Sleep Prototypes */
 
 ACPI_STATUS
diff -u /home/takawata/acpi-jp/src/sys/contrib/dev/acpica/acpixf.h ./acpixf.h
--- /home/takawata/acpi-jp/src/sys/contrib/dev/acpica/acpixf.h	Thu Jul 12 20:23:18 2001
+++ ./acpixf.h	Fri Jul 20 19:26:12 2001
@@ -405,6 +405,10 @@
     UINT8 SleepState);
 
 ACPI_STATUS
+AcpiResumeSleepState(
+    UINT8 SleepState);
+
+ACPI_STATUS
 AcpiGetProcessorThrottlingInfo (
     ACPI_HANDLE             ProcessorHandle,
     ACPI_BUFFER             *UserBuffer);
diff -u /home/takawata/acpi-jp/src/sys/contrib/dev/acpica/hwgpe.c ./hwgpe.c
--- /home/takawata/acpi-jp/src/sys/contrib/dev/acpica/hwgpe.c	Wed May 30 04:52:33 2001
+++ ./hwgpe.c	Fri Jul 20 19:09:58 2001
@@ -299,3 +299,28 @@
         (*EventStatus) |= ACPI_EVENT_FLAG_SET;
     }
 }
+/******************************************************************************
+ *
+ * FUNCTION:    AcpiHwGetGpeResume
+ *
+ * PARAMETERS:  None
+ *
+ * RETURN:      None
+ *
+ * DESCRIPTION: Resume GPE enable bit
+ *
+ ******************************************************************************/
+
+void AcpiHwResumeGpe()
+{
+	int i;
+	for(i = 0 ; i < AcpiGbl_GpeRegisterCount; i++){
+		/*
+		 *If GPE handler is installed,Activate it.
+		 */
+		if(AcpiGbl_GpeInfo[i].Type != 0){
+			AcpiHwEnableGpe(i);
+		}
+	}
+	return_VOID;
+}
diff -u /home/takawata/acpi-jp/src/sys/contrib/dev/acpica/hwsleep.c ./hwsleep.c
--- /home/takawata/acpi-jp/src/sys/contrib/dev/acpica/hwsleep.c	Sat Jun 30 05:11:03 2001
+++ ./hwsleep.c	Fri Jul 20 19:24:14 2001
@@ -297,5 +297,24 @@
 
     enable();
 
+    return_ACPI_STATUS (AE_OK);
+}
+
+/******************************************************************************
+ *
+ * FUNCTION:    AcpiResumeSleepState
+ *
+ * PARAMETERS:  SleepState          - Which sleep state to enter
+ *
+ * RETURN:      Status
+ *
+ * DESCRIPTION: Resume from  system sleep state (see ACPI 2.0 spec p 231)
+ *
+ ******************************************************************************/
+
+ACPI_STATUS AcpiResumeSleepState(UINT8 SleepState)
+{
+    AcpiHwResumeGpe();
+    
     return_ACPI_STATUS (AE_OK);
 }
