PERFORCE change 29899 for review
Marcel Moolenaar
marcel at FreeBSD.org
Sun Apr 27 15:44:26 PDT 2003
http://perforce.freebsd.org/chv.cgi?CH=29899
Change 29899 by marcel at 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;
More information about the p4-projects
mailing list