From owner-p4-projects@FreeBSD.ORG Sun Apr 27 15:44:26 2003 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 7F72837B404; Sun, 27 Apr 2003 15:44:25 -0700 (PDT) Delivered-To: perforce@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 3245337B401 for ; Sun, 27 Apr 2003 15:44:25 -0700 (PDT) Received: from repoman.freebsd.org (repoman.freebsd.org [216.136.204.115]) by mx1.FreeBSD.org (Postfix) with ESMTP id C2CC243F3F for ; Sun, 27 Apr 2003 15:44:24 -0700 (PDT) (envelope-from marcel@freebsd.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.12.6/8.12.6) with ESMTP id h3RMiO0U069121 for ; Sun, 27 Apr 2003 15:44:24 -0700 (PDT) (envelope-from marcel@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.12.6/8.12.6/Submit) id h3RMiO2S069114 for perforce@freebsd.org; Sun, 27 Apr 2003 15:44:24 -0700 (PDT) Date: Sun, 27 Apr 2003 15:44:24 -0700 (PDT) Message-Id: <200304272244.h3RMiO2S069114@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to marcel@freebsd.org using -f From: Marcel Moolenaar To: Perforce Change Reviews Subject: PERFORCE change 29899 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 27 Apr 2003 22:44:26 -0000 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;