From owner-acpi-jp@jp.freebsd.org  Mon Jan  3 19:09:21 2000
Received: (from daemon@localhost)
	by castle.jp.freebsd.org (8.9.3+3.2W/8.7.3) id TAA70652;
	Mon, 3 Jan 2000 19:09:21 +0900 (JST)
	(envelope-from owner-acpi-jp@jp.FreeBSD.org)
Received: from tasogare.imasy.or.jp (daemon@tasogare.imasy.or.jp [202.227.24.5])
	by castle.jp.freebsd.org (8.9.3+3.2W/8.7.3) with ESMTP id TAA70646
	for <acpi-jp@jp.freebsd.org>; Mon, 3 Jan 2000 19:09:20 +0900 (JST)
	(envelope-from iwasaki@jp.FreeBSD.org)
Received: from localhost (isdnb21.imasy.or.jp [202.227.24.149])
	by tasogare.imasy.or.jp (8.9.3+3.2W/3.7W-tasogare/smtpfeed 1.01) with ESMTP id TAA12584
	for <acpi-jp@jp.freebsd.org>; Mon, 3 Jan 2000 19:09:18 +0900 (JST)
	(envelope-from iwasaki@jp.FreeBSD.org)
Message-Id: <200001031009.TAA12584@tasogare.imasy.or.jp>
To: acpi-jp@jp.freebsd.org
X-Mailer: Mew version 1.93 on Emacs 19.34 / Mule 2.3 (SUETSUMUHANA)
Mime-Version: 1.0
Content-Type: Text/Plain; charset=iso-2022-jp
Content-Transfer-Encoding: 7bit
Date: Mon, 03 Jan 2000 19:09:18 +0900
From: Mitsuru IWASAKI <iwasaki@jp.freebsd.org>
X-Dispatcher: imput version 980905(IM100)
Lines: 92
Reply-To: acpi-jp@jp.freebsd.org
Precedence: list
X-Distribute: distribute version 2.1 (Alpha) patchlevel 24e+990727
X-Sequence: acpi-jp 195
Subject: [acpi-jp 195] Give option value of set sleep type (-s) to AML interpreter.
Errors-To: owner-acpi-jp@jp.freebsd.org
Sender: owner-acpi-jp@jp.freebsd.org
X-Originator: iwasaki@jp.freebsd.org

acpiconf -s 5 -f TP770ED.dsdt.dat $B$N$h$&$K!"(B_PTS, _WAK $B$X(B
$B0z?t$rEO$;$k$h$&$K$7$^$7$?!#(B-s $B$r@h$K;XDj$7$J$/$A$c$$$1$J$$$N$,(B
$B$A$g$C$H<e$$$G$9(B (^^;
commit $B:Q$G$9$,!"$$$A$*$&%Q%C%A$bIU$1$F$*$-$^$9!#(B

Index: main.c
===================================================================
RCS file: /home/cvs/ACPI/util/acpiconf/main.c,v
retrieving revision 1.3
diff -u -r1.3 main.c
--- main.c	2000/01/02 20:04:31	1.3
+++ main.c	2000/01/03 09:53:23
@@ -84,7 +84,7 @@
 }
 
 int
-load_dsdt(char *dsdtfile)
+load_dsdt(char *dsdtfile, int sleep_type)
 {
 	struct aml_environ env;
 	union aml_object argv[1];
@@ -118,9 +118,12 @@
 	
 	showtree(env.curname, 0);
 #if 1
+	if (sleep_type == -1) {
+		sleep_type = 1;
+	}
 	memman_statistics(aml_memman);
 	argv[0].type = aml_t_num;
-	argv[0].num.number = 1;
+	argv[0].num.number = sleep_type;
 	retval = acpi_invoke_method_by_name("_PTS", 1, argv);
 	retval = acpi_invoke_method_by_name("_WAK", 1, argv);
 	acpi_simulation_regdump("region.dmp");
@@ -269,11 +272,6 @@
 	if (fd == -1)
 		err(1, NULL);
 	
-	if (sleep_type < 0 || sleep_type > 7) {
-		fprintf(stderr, "invalid sleep type (%d)\n", sleep_type);
-		return -1;
-	}
-	
 	if (ioctl(fd, ACPIIO_SETSLPSTATE, &sleep_type) == -1)
 		err(1, NULL);
 	
@@ -286,6 +284,7 @@
 main(int argc, char *argv[])
 {
 	char		c;
+	int		sleep_type = -1;
 	
 	if (argc == 1) {
 		parse_dsdt();
@@ -299,19 +298,30 @@
 		case 'd':
 			return acpi_disable();
 		case 's':
-			parse_dsdt();
-#if 1
-			acpi_setslpstatepkg();
-#endif
-			acpi_sleep(*optarg - '0');
+			sleep_type = *optarg - '0';
+			if (sleep_type < 0 || sleep_type > 5) {
+				fprintf(stderr, "%s: invalid sleep type (%d)\n",
+				    argv[0], sleep_type);
+				return -1;
+			}
+			
 			break;
 		case 'f':
-			load_dsdt(optarg);
+			load_dsdt(optarg, sleep_type);
+			sleep_type = -1;
 			break;
 		default:
 			argc -= optind;
 			argv += optind;
 		}
+	}
+
+	if (sleep_type != -1) {
+		parse_dsdt();
+#if 1
+		acpi_setslpstatepkg();
+#endif
+		acpi_sleep(sleep_type);
 	}
 
 out:
