Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 27 Apr 2003 15:44:24 -0700 (PDT)
From:      Marcel Moolenaar <marcel@FreeBSD.org>
To:        Perforce Change Reviews <perforce@freebsd.org>
Subject:   PERFORCE change 29899 for review
Message-ID:  <200304272244.h3RMiO2S069114@repoman.freebsd.org>

next in thread | raw e-mail | index | archive | help
http://perforce.freebsd.org/chv.cgi?CH=29899

Change 29899 by marcel@marcel_pluto2 on 2003/04/27 15:43:34

	Step 2: Use the right field from the FADT table to get the
		hardware timer address. The ACPI CA code converts
		v1.x tables into v2 tables so we don't have to worry
		about it outselves.
	
	Strangely enough the timer still doesn't seem to work. So I
	guess a step 3 is needed as well. This isn't wrong AFAICT,
	so let's get this in...

Affected files ...

.. //depot/projects/ia64/sys/dev/acpica/acpi_timer.c#10 edit

Differences ...

==== //depot/projects/ia64/sys/dev/acpica/acpi_timer.c#10 (text+ko) ====

@@ -149,7 +149,8 @@
 {
     device_t	dev;
     char	desc[40];
-    int		rid, i, j;
+    u_long	rlen, rstart;
+    int		i, j, rid, rtype;
 
     ACPI_FUNCTION_TRACE((char *)(uintptr_t)__func__);
 
@@ -164,10 +165,17 @@
 	return_VOID;
     }
     acpi_timer_dev = dev;
+
     rid = 0;
-    bus_set_resource(dev, SYS_RES_IOPORT, rid, AcpiGbl_FADT->V1_PmTmrBlk, sizeof(u_int32_t));
-    if ((acpi_timer_reg = bus_alloc_resource(dev, SYS_RES_IOPORT, &rid, 0, ~0, 1, RF_ACTIVE)) == NULL) {
-	device_printf(dev, "couldn't allocate I/O resource (port 0x%x)\n", AcpiGbl_FADT->V1_PmTmrBlk);
+    rlen = 3 + AcpiGbl_FADT->TmrValExt;		/* 24 or 32 bit timers. */
+    rtype = (AcpiGbl_FADT->XPmTmrBlk.AddressSpaceId)
+      ? SYS_RES_IOPORT : SYS_RES_MEMORY;
+    rstart = AcpiGbl_FADT->XPmTmrBlk.Address;
+    bus_set_resource(dev, rtype, rid, rstart, 4);
+    acpi_timer_reg = bus_alloc_resource(dev, rtype, &rid, 0, ~0, 1, RF_ACTIVE);
+    if (acpi_timer_reg == NULL) {
+	device_printf(dev, "couldn't allocate I/O resource (%s 0x%lx)\n",
+	  (rtype == SYS_RES_IOPORT) ? "port" : "mem", rstart);
 	return_VOID;
     }
     if (testenv("debug.acpi.timer_test"))
@@ -186,7 +194,7 @@
     }
     tc_init(&acpi_timer_timecounter);
 
-    sprintf(desc, "%d-bit timer at 3.579545MHz", AcpiGbl_FADT->TmrValExt ? 32 : 24);
+    sprintf(desc, "%d-bit timer at 3.579545MHz", (int)(rlen << 3));
     device_set_desc_copy(dev, desc);
 
     return_VOID;



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200304272244.h3RMiO2S069114>