From owner-acpi-jp@jp.freebsd.org  Fri Dec  3 03:00:26 1999
Received: (from daemon@localhost)
	by castle.jp.freebsd.org (8.9.3+3.2W/8.7.3) id DAA35853;
	Fri, 3 Dec 1999 03:00:26 +0900 (JST)
	(envelope-from owner-acpi-jp@jp.FreeBSD.org)
Received: from light.imasy.or.jp (root@light.imasy.or.jp [202.227.24.4])
	by castle.jp.freebsd.org (8.9.3+3.2W/8.7.3) with ESMTP id DAA35848
	for <acpi-jp@jp.freebsd.org>; Fri, 3 Dec 1999 03:00:26 +0900 (JST)
	(envelope-from iwasaki@jp.FreeBSD.org)
Received: from tasogare.imasy.or.jp (daemon@tasogare.imasy.or.jp [202.227.24.5])
	by light.imasy.or.jp (8.9.3+3.2W/3.7W-light) with ESMTP id DAA14721
	for <acpi-jp@jp.freebsd.org>; Fri, 3 Dec 1999 03:00:24 +0900 (JST)
	(envelope-from iwasaki@jp.FreeBSD.org)
Received: from localhost (isdn37.imasy.or.jp [202.227.24.229])
	by tasogare.imasy.or.jp (8.9.3+3.2W/3.7W-tasogare/smtpfeed 1.01) with ESMTP id DAA29945
	for <acpi-jp@jp.freebsd.org>; Fri, 3 Dec 1999 03:00:17 +0900 (JST)
	(envelope-from iwasaki@jp.FreeBSD.org)
Message-Id: <199912021800.DAA29945@tasogare.imasy.or.jp>
To: acpi-jp@jp.freebsd.org
In-Reply-To: Your message of "Fri, 03 Dec 1999 02:54:31 +0900"
	<199912021754.CAA28795@tasogare.imasy.or.jp>
References: <199912021754.CAA28795@tasogare.imasy.or.jp>
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: Fri, 03 Dec 1999 03:00:09 +0900
From: Mitsuru IWASAKI <iwasaki@jp.freebsd.org>
X-Dispatcher: imput version 980905(IM100)
Lines: 402
Reply-To: acpi-jp@jp.freebsd.org
Precedence: list
X-Distribute: distribute version 2.1 (Alpha) patchlevel 24e+990727
X-Sequence: acpi-jp 135
Subject: [acpi-jp 135] Re: acpiconf enhancement
Errors-To: owner-acpi-jp@jp.freebsd.org
Sender: owner-acpi-jp@jp.freebsd.org
X-Originator: iwasaki@jp.freebsd.org

$B$G!"(Bacpiconf $B$X$N(B patch $B$G$9!#(B
$B5^$$$G$d$C$?$N$H$"$^$j%F%9%H$7$F$J$$$?$a!"(B
$BCn$5$s$,$$$k<+?.$O$"$j$^$9(B :-p
$B%X%C%@%U%!%$%k$H$"$o$;$F$A$g$$$H8+$F$/$@$5$$$^$;!#(B

Index: acpi.c
===================================================================
RCS file: /home/cvs/ACPI/util/acpiconf/acpi.c,v
retrieving revision 1.1.1.1
diff -u -r1.1.1.1 acpi.c
--- acpi.c	1999/11/25 23:49:50	1.1.1.1
+++ acpi.c	1999/12/02 17:35:35
@@ -28,7 +28,7 @@
 
 #include <sys/param.h>
 #include <stdio.h>
-#include "acpi.h"
+#include <machine/pc/acpi.h>
 
 int
 acpi_checksum(void *p, size_t length)
@@ -40,11 +40,11 @@
 	return sum;
 }
 
-struct acpi_sdt *
+struct ACPIsdt *
 acpi_map_sdt(vm_offset_t pa)
 {
-	struct acpi_sdt *sp = acpi_map_physical(pa, sizeof(struct acpi_sdt));
-	sp = acpi_map_physical(pa, sp->sdt_length);
+	struct ACPIsdt *sp = acpi_map_physical(pa, sizeof(struct ACPIsdt));
+	sp = acpi_map_physical(pa, sp->len);
 	return sp;
 }
 
@@ -53,8 +53,8 @@
 {
 	int             c;
 
-	/* Trim trailing spaces */
-	while (length > 0 && s[length - 1] == ' ')
+	/* Trim trailing spaces and NULLs */
+	while (length > 0 && (s[length - 1] == ' ' || s[length - 1] == '\0'))
 		length--;
 
 	while (length--) {
@@ -64,103 +64,103 @@
 }
 
 void
-acpi_print_rsd_ptr(struct acpi_rsd_ptr * rp)
+acpi_print_rsd_ptr(struct ACPIrsdp * rp)
 {
-	printf("RSD PTR: Checksum=%d, OEMID=", rp->rp_checksum);
-	acpi_print_string(rp->rp_oemid, 6);
-	printf(", RsdtAddress=0x%08x\n", rp->rp_address);
+	printf("RSD PTR: Checksum=%d, OEMID=", rp->sum);
+	acpi_print_string(rp->oem, 6);
+	printf(", RsdtAddress=0x%08x\n", rp->addr);
 }
 
 void
-acpi_print_sdt(struct acpi_sdt * sdp)
+acpi_print_sdt(struct ACPIsdt * sdp)
 {
-	acpi_print_string(sdp->sdt_signature, 4);
+	acpi_print_string(sdp->signature, 4);
 	printf(": Lenth=%d, Revision=%d, Checksum=%d,\n",
-	       sdp->sdt_length, sdp->sdt_revision, sdp->sdt_checksum);
+	       sdp->len, sdp->rev, sdp->check);
 	printf("\tOEMID=");
-	acpi_print_string(sdp->sdt_oemid, 6);
+	acpi_print_string(sdp->oemid, 6);
 	printf(", OEM Table ID=");
-	acpi_print_string(sdp->sdt_oemtableid, 8);
-	printf(", OEM Revision=0x%x,\n", sdp->sdt_oemrevision);
+	acpi_print_string(sdp->oemtblid, 8);
+	printf(", OEM Revision=0x%x,\n", sdp->oemrev);
 	printf("\tCreator ID=");
-	acpi_print_string(sdp->sdt_creatorid, 4);
-	printf(", Creator Revision=0x%x\n", sdp->sdt_creatorrevision);
+	acpi_print_string(sdp->creator, 4);
+	printf(", Creator Revision=0x%x\n", sdp->crerev);
 }
 
 void
-acpi_print_rsdt(struct acpi_rsdt * rsdp)
+acpi_print_rsdt(struct ACPIsdt * rsdp)
 {
-	int             i;
+	int             i, entries;
 
-	acpi_print_sdt(&rsdp->rsdt_header);
+	acpi_print_sdt(rsdp);
+	entries = (rsdp->len - SIZEOF_SDT_HDR) / sizeof(u_int32_t);
 	printf("\tEntries={ ");
-	for (i = 0; i < acpi_rsdt_count(rsdp); i++) {
+	for (i = 0; i < entries; i++) {
 		if (i > 0)
 			printf(", ");
-		printf("0x%08x", rsdp->rsdt_entry[i]);
+		printf("0x%08x", rsdp->body[i]);
 	}
 	printf(" }\n");
 }
 
 void
-acpi_print_facp(struct acpi_facp * facp)
+acpi_print_facp(struct FACPbody * facp)
 {
 	char            sep;
 
-	acpi_print_sdt(&facp->facp_header);
-	printf("\tDSDT=0x%x\n", facp->facp_dsdt);
-	printf("\tINT_MODEL=%s\n", facp->facp_intmodel ? "APIC" : "PIC");
-	printf("\tSCI_INT=%d\n", facp->facp_sciint);
-	printf("\tSMI_CMD=0x%x, ", facp->facp_smicmd);
-	printf("ACPI_ENABLE=0x%x, ", facp->facp_acpienable);
-	printf("ACPI_DISABLE=0x%x, ", facp->facp_acpidisable);
-	printf("S4BIOS_REQ=0x%x\n", facp->facp_s4biosreq);
-	if (facp->facp_pm1aevent)
+	printf("\tDSDT=0x%x\n", facp->dsdt_ptr);
+	printf("\tINT_MODEL=%s\n", facp->int_model ? "APIC" : "PIC");
+	printf("\tSCI_INT=%d\n", facp->sci_int);
+	printf("\tSMI_CMD=0x%x, ", facp->smi_cmd);
+	printf("ACPI_ENABLE=0x%x, ", facp->acpi_enable);
+	printf("ACPI_DISABLE=0x%x, ", facp->acpi_disable);
+	printf("S4BIOS_REQ=0x%x\n", facp->s4biosreq);
+	if (facp->pm1a_evt_blk)
 		printf("\tPM1a_EVT_BLK=0x%x-0x%x\n",
-		       facp->facp_pm1aevent,
-		       facp->facp_pm1aevent + facp->facp_pm1eventlen - 1);
-	if (facp->facp_pm1bevent)
+		       facp->pm1a_evt_blk,
+		       facp->pm1a_evt_blk + facp->pm1_evt_len - 1);
+	if (facp->pm1b_evt_blk)
 		printf("\tPM1b_EVT_BLK=0x%x-0x%x\n",
-		       facp->facp_pm1bevent,
-		       facp->facp_pm1bevent + facp->facp_pm1eventlen - 1);
-	if (facp->facp_pm1acontrol)
+		       facp->pm1b_evt_blk,
+		       facp->pm1b_evt_blk + facp->pm1_evt_len - 1);
+	if (facp->pm1a_cnt_blk)
 		printf("\tPM1a_CNT_BLK=0x%x-0x%x\n",
-		       facp->facp_pm1acontrol,
-		     facp->facp_pm1acontrol + facp->facp_pm1controllen - 1);
-	if (facp->facp_pm1bcontrol)
+		       facp->pm1a_cnt_blk,
+		     facp->pm1a_cnt_blk + facp->pm1_cnt_len - 1);
+	if (facp->pm1b_cnt_blk)
 		printf("\tPM1b_CNT_BLK=0x%x-0x%x\n",
-		       facp->facp_pm1bcontrol,
-		     facp->facp_pm1bcontrol + facp->facp_pm1controllen - 1);
-	if (facp->facp_pm2control)
+		       facp->pm1b_cnt_blk,
+		     facp->pm1b_cnt_blk + facp->pm1_cnt_len - 1);
+	if (facp->pm2_cnt_blk)
 		printf("\tPM2_CNT_BLK=0x%x-0x%x\n",
-		       facp->facp_pm2control,
-		       facp->facp_pm2control + facp->facp_pm2controllen - 1);
-	if (facp->facp_pmtimer)
+		       facp->pm2_cnt_blk,
+		       facp->pm2_cnt_blk + facp->pm2_cnt_len - 1);
+	if (facp->pm_tmr_blk)
 		printf("\tPM2_TMR_BLK=0x%x-0x%x\n",
-		       facp->facp_pmtimer,
-		       facp->facp_pmtimer + facp->facp_pmtimerlen - 1);
-	if (facp->facp_gpe0)
+		       facp->pm_tmr_blk,
+		       facp->pm_tmr_blk + facp->pm_tmr_len - 1);
+	if (facp->gpe0_blk)
 		printf("\tPM2_GPE0_BLK=0x%x-0x%x\n",
-		       facp->facp_gpe0,
-		       facp->facp_gpe0 + facp->facp_gpe0len - 1);
-	if (facp->facp_gpe1)
+		       facp->gpe0_blk,
+		       facp->gpe0_blk + facp->gpe0_len - 1);
+	if (facp->gpe1_blk)
 		printf("\tPM2_GPE1_BLK=0x%x-0x%x, GPE1_BASE=%d\n",
-		       facp->facp_gpe1,
-		       facp->facp_gpe1 + facp->facp_gpe1len - 1,
-		       facp->facp_gpe1base);
+		       facp->gpe1_blk,
+		       facp->gpe1_blk + facp->gpe1_len - 1,
+		       facp->gpe1_base);
 	printf("\tP_LVL2_LAT=%dms, P_LVL3_LAT=%dms\n",
-	       facp->facp_plvl2latency, facp->facp_plvl3latency);
+	       facp->p_lvl2_lat, facp->p_lvl3_lat);
 	printf("\tFLUSH_SIZE=%d, FLUSH_STRIDE=%d\n",
-	       facp->facp_flushsize, facp->facp_flushstride);
+	       facp->flush_size, facp->flush_stride);
 	printf("\tDUTY_OFFSET=%d, DUTY_WIDTH=%d\n",
-	       facp->facp_dutyoffset, facp->facp_dutywidth);
+	       facp->duty_off, facp->duty_width);
 	printf("\tDAY_ALRM=%d, MON_ALRM=%d, CENTURY=%d\n",
-	       facp->facp_dayalarm, facp->facp_monalarm, facp->facp_century);
+	       facp->day_alrm, facp->mon_alrm, facp->century);
 	printf("\tFlags=");
 	sep = '{';
 
 #define PRINTFLAG(xx)					\
-    if (facp->facp_flags & ACPI_FACP_FLAG_## xx) {	\
+    if (facp->flags & ACPI_FACP_FLAG_## xx) {	\
 	printf("%c%s", sep, #xx); sep = ',';		\
     }
 
@@ -171,7 +171,7 @@
 	PRINTFLAG(PWR_BUTTON);
 	PRINTFLAG(SLP_BUTTON);
 	PRINTFLAG(FIX_RTC);
-	PRINTFLAG(FIX_S4);
+	PRINTFLAG(RTC_S4);
 	PRINTFLAG(TMR_VAL_EXT);
 	PRINTFLAG(DCK_CAP);
 
@@ -181,7 +181,7 @@
 }
 
 void
-acpi_print_dsdt(struct acpi_dsdt * dsdp)
+acpi_print_dsdt(struct ACPIsdt * dsdp)
 {
-	acpi_print_sdt(&dsdp->dsdt_header);
+	acpi_print_sdt(dsdp);
 }
Index: acpi_user.c
===================================================================
RCS file: /home/cvs/ACPI/util/acpiconf/acpi_user.c,v
retrieving revision 1.2
diff -u -r1.2 acpi_user.c
--- acpi_user.c	1999/11/26 02:48:20	1.2
+++ acpi_user.c	1999/12/02 17:36:00
@@ -33,9 +33,9 @@
 #include <stdlib.h>
 #include <unistd.h>
 #include <err.h>
+#include <machine/pc/acpi.h>
 
 
-#include "acpi.h"
 #ifdef DSDT_ONLY
 struct acpi_rsd_ptr *acpi_find_rsd_ptr(void)
 {
@@ -105,10 +105,10 @@
     return map->va + (pa - map->pa);
 }
 
-struct acpi_rsd_ptr *
+struct ACPIrsdp *
 acpi_find_rsd_ptr()
 {
-    u_int8_t buf[sizeof(struct acpi_rsd_ptr)];
+    u_int8_t buf[sizeof(struct ACPIrsdp)];
     int i;
 
     acpi_user_init();
@@ -116,12 +116,12 @@
 	read(acpi_mem_fd, buf, 16);
 	if (!memcmp(buf, "RSD PTR ", 8)) {
 	    /* Read the rest of the structure */
-	    read(acpi_mem_fd, buf + 16, sizeof(struct acpi_rsd_ptr) - 16);
+	    read(acpi_mem_fd, buf + 16, sizeof(struct ACPIrsdp) - 16);
 
 	    /* Verify checksum before accepting it. */
-	    if (acpi_checksum(buf, sizeof(struct acpi_rsd_ptr)))
+	    if (acpi_checksum(buf, sizeof(struct ACPIrsdp)))
 		continue;
-	    return acpi_map_physical(i, sizeof(struct acpi_rsd_ptr));
+	    return acpi_map_physical(i, sizeof(struct ACPIrsdp));
 	}
     }
 
Index: parse.c
===================================================================
RCS file: /home/cvs/ACPI/util/acpiconf/parse.c,v
retrieving revision 1.5
diff -u -r1.5 parse.c
--- parse.c	1999/12/02 08:06:28	1.5
+++ parse.c	1999/12/02 17:34:59
@@ -30,7 +30,7 @@
 #include <stdio.h>
 #include <assert.h>
 #include <err.h>
-#include "acpi.h"
+#include <machine/pc/acpi.h>
 #include <sys/types.h>
 #include <sys/stat.h>
 #include <sys/mman.h>
@@ -51,27 +51,39 @@
 /* constantly allocated things */
 
 
-static void     acpi_handle_facp(struct acpi_facp * facp);
-static void     acpi_handle_dsdt(struct acpi_dsdt * dsdp);
+static void     acpi_handle_facp(struct FACPbody * facp);
+static void     acpi_handle_dsdt(struct ACPIsdt * dsdp);
 static struct aml_name *acpi_parse_termobj(struct aml_environ * env, int indent);
 static union aml_object *acpi_alloc_object(enum aml_objtype, union aml_object *);
 static struct aml_name *
                 acpi_search_name(struct aml_environ * env, u_int8_t * dp);
 void            acpi_free_object(union aml_object ** obj);
 
+void           *acpi_map_physical(vm_offset_t pa, size_t length);
+struct ACPIrsdp *acpi_find_rsd_ptr(void);
+int             acpi_checksum(void *p, size_t length);
+struct ACPIsdt *acpi_map_sdt(vm_offset_t pa);
+void            acpi_print_rsd_ptr(struct ACPIrsdp * rp);
+void            acpi_print_sdt(struct ACPIsdt * sdp);
+void            acpi_print_rsdt(struct ACPIsdt * rsdp);
+void            acpi_print_facp(struct FACPbody * facp);
+void            acpi_print_dsdt(struct ACPIsdt * dsdp);
+
 static void
-acpi_handle_rsdt(struct acpi_rsdt * rsdp)
+acpi_handle_rsdt(struct ACPIsdt * rsdp)
 {
-	int             i;
+	int             i, entries;
 
 	acpi_print_rsdt(rsdp);
-	for (i = 0; i < acpi_rsdt_count(rsdp); i++) {
-		struct acpi_sdt *sdp;
-		sdp = acpi_map_sdt(rsdp->rsdt_entry[i]);
-		if (acpi_checksum(sdp, sdp->sdt_length))
+	entries = (rsdp->len - SIZEOF_SDT_HDR) / sizeof(u_int32_t);
+	for (i = 0; i < entries; i++) {
+		struct ACPIsdt *sdp;
+		sdp = acpi_map_sdt((vm_offset_t)rsdp->body[i]);
+		if (acpi_checksum(sdp, sdp->len))
 			errx(1, "RSDT entry %d is corrupt\n", i);
-		if (!memcmp(sdp->sdt_signature, "FACP", 4)) {
-			acpi_handle_facp((struct acpi_facp *) sdp);
+		if (!memcmp(sdp->signature, "FACP", 4)) {
+			acpi_print_sdt(sdp);
+			acpi_handle_facp((struct FACPbody *) sdp->body);
 		} else {
 			acpi_print_sdt(sdp);
 		}
@@ -79,13 +91,13 @@
 }
 
 static void
-acpi_handle_facp(struct acpi_facp * facp)
+acpi_handle_facp(struct FACPbody * facp)
 {
-	struct acpi_dsdt *dsdp;
+	struct ACPIsdt *dsdp;
 
 	acpi_print_facp(facp);
-	dsdp = (struct acpi_dsdt *) acpi_map_sdt(facp->facp_dsdt);
-	if (acpi_checksum(dsdp, dsdp->dsdt_header.sdt_length))
+	dsdp = (struct ACPIsdt *) acpi_map_sdt(facp->dsdt_ptr);
+	if (acpi_checksum(dsdp, dsdp->len))
 		errx(1, "DSDT is corrupt\n");
 	acpi_handle_dsdt(dsdp);
 }
@@ -1791,34 +1803,34 @@
 	memman_statistics(aml_memman);
 }
 static void
-acpi_handle_dsdt(struct acpi_dsdt * dsdp)
+acpi_handle_dsdt(struct ACPIsdt * dsdp)
 {
 	struct aml_environ env;
 	bzero(&env, sizeof(env));
 	acpi_print_dsdt(dsdp);
-	env.dp = dsdp->dsdt_contents;
-	env.end = (u_int8_t *) dsdp + dsdp->dsdt_header.sdt_length;
+	env.dp = (u_int8_t *) dsdp->body;
+	env.end = (u_int8_t *) dsdp + dsdp->len;
 	env.curname = get_rootname();
 	acpi_parse_objectlist(&env, 0);
 	assert(env.dp == env.end);
-	env.dp = dsdp->dsdt_contents;
-	env.end = (u_int8_t *) dsdp + dsdp->dsdt_header.sdt_length;
+	env.dp = (u_int8_t *) dsdp->body;
+	env.end = (u_int8_t *) dsdp + dsdp->len;
 	env.curname = get_rootname();
 	command(&env);
 }
 int
 realmemmain(int argc, char **argv)
 {
-	struct acpi_rsd_ptr *rp = acpi_find_rsd_ptr();
-	struct acpi_rsdt *rsdp;
+	struct ACPIrsdp *rp = acpi_find_rsd_ptr();
+	struct ACPIsdt *rsdp;
 
 	if (!rp)
 		errx(1, "Can't find ACPI information\n");
 
 	acpi_print_rsd_ptr(rp);
-	rsdp = (struct acpi_rsdt *) acpi_map_sdt(rp->rp_address);
-	if (memcmp(rsdp->rsdt_header.sdt_signature, "RSDT", 4)
-	    || acpi_checksum(rsdp, rsdp->rsdt_header.sdt_length))
+	rsdp = (struct ACPIsdt *) acpi_map_sdt(rp->addr);
+	if (memcmp(rsdp->signature, "RSDT", 4)
+	    || acpi_checksum(rsdp, rsdp->len))
 		errx(1, "RSDT is corrupted\n");
 
 	acpi_handle_rsdt(rsdp);
