From owner-svn-src-all@FreeBSD.ORG Sun Jan 5 22:51:10 2014 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id A8099F9D; Sun, 5 Jan 2014 22:51:10 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 7B3501CB2; Sun, 5 Jan 2014 22:51:10 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id s05MpA9O016652; Sun, 5 Jan 2014 22:51:10 GMT (envelope-from mav@svn.freebsd.org) Received: (from mav@localhost) by svn.freebsd.org (8.14.7/8.14.7/Submit) id s05MpAk1016651; Sun, 5 Jan 2014 22:51:10 GMT (envelope-from mav@svn.freebsd.org) Message-Id: <201401052251.s05MpAk1016651@svn.freebsd.org> From: Alexander Motin Date: Sun, 5 Jan 2014 22:51:10 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-10@freebsd.org Subject: svn commit: r260350 - stable/10/sys/dev/acpica X-SVN-Group: stable-10 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 05 Jan 2014 22:51:10 -0000 Author: mav Date: Sun Jan 5 22:51:09 2014 New Revision: 260350 URL: http://svnweb.freebsd.org/changeset/base/260350 Log: MFC r258164: Handle case when ACPI reports HPET device, but does not provide memory resource for it. In such case take the address range from the HPET table. This fixes hpet(4) driver attach on Asrock C2750D4I board. Modified: stable/10/sys/dev/acpica/acpi_hpet.c Directory Properties: stable/10/ (props changed) Modified: stable/10/sys/dev/acpica/acpi_hpet.c ============================================================================== --- stable/10/sys/dev/acpica/acpi_hpet.c Sun Jan 5 22:50:32 2014 (r260349) +++ stable/10/sys/dev/acpica/acpi_hpet.c Sun Jan 5 22:51:09 2014 (r260350) @@ -293,7 +293,7 @@ hpet_find(ACPI_HANDLE handle, UINT32 lev return (AE_OK); if (ACPI_FAILURE(acpi_GetInteger(handle, "_UID", &uid)) || id == uid) - *((int *)status) = 1; + *status = acpi_get_device(handle); return (AE_OK); } @@ -321,7 +321,7 @@ hpet_identify(driver_t *driver, device_t ACPI_TABLE_HPET *hpet; ACPI_STATUS status; device_t child; - int i, found; + int i; /* Only one HPET device can be added. */ if (devclass_get_device(hpet_devclass, 0)) @@ -332,12 +332,18 @@ hpet_identify(driver_t *driver, device_t if (ACPI_FAILURE(status)) return; /* Search for HPET device with same ID. */ - found = 0; + child = NULL; AcpiWalkNamespace(ACPI_TYPE_DEVICE, ACPI_ROOT_OBJECT, - 100, hpet_find, NULL, (void *)(uintptr_t)hpet->Sequence, (void *)&found); + 100, hpet_find, NULL, (void *)(uintptr_t)hpet->Sequence, + (void *)&child); /* If found - let it be probed in normal way. */ - if (found) + if (child) { + if (bus_get_resource(child, SYS_RES_MEMORY, 0, + NULL, NULL) != 0) + bus_set_resource(child, SYS_RES_MEMORY, 0, + hpet->Address.Address, HPET_MEM_WIDTH); continue; + } /* If not - create it from table info. */ child = BUS_ADD_CHILD(parent, 2, "hpet", 0); if (child == NULL) {