Print this page
acpica-unix2-20130823
PANKOVs restructure
@@ -19,21 +19,21 @@
* CDDL HEADER END
*/
/*
* Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright 2013 PALO, Richard. All rights reserved.
*/
/*
* Library file that has miscellaneous support for npe(7d)
*/
#include <sys/conf.h>
#include <sys/pci.h>
#include <sys/sunndi.h>
-#include <sys/acpi/acpi.h>
-#include <sys/acpi/acpi_pci.h>
+#include <acpica/include/acpi.h>
#include <sys/acpica.h>
#include <sys/pci_cap.h>
#include <sys/pcie_impl.h>
#include <sys/x86_archext.h>
#include <io/pciex/pcie_nvidia.h>
@@ -68,26 +68,25 @@
* to the default values.
*/
void
npe_query_acpi_mcfg(dev_info_t *dip)
{
- MCFG_TABLE *mcfgp;
- CFG_BASE_ADDR_ALLOC *cfg_baap;
+ ACPI_TABLE_HEADER *mcfgp;
+ ACPI_MCFG_ALLOCATION *cfg_baap;
char *cfg_baa_endp;
int64_t ecfginfo[4];
int ecfg_found = 0;
/* Query the MCFG table using ACPI */
- if (AcpiGetTable(ACPI_SIG_MCFG, 1,
- (ACPI_TABLE_HEADER **)&mcfgp) == AE_OK) {
+ if (AcpiGetTable(ACPI_SIG_MCFG, 1, &mcfgp) == AE_OK) {
- cfg_baap = (CFG_BASE_ADDR_ALLOC *)mcfgp->CfgBaseAddrAllocList;
+ cfg_baap = (ACPI_MCFG_ALLOCATION *)((ACPI_TABLE_MCFG *)mcfgp + 1);
cfg_baa_endp = ((char *)mcfgp) + mcfgp->Length;
while ((char *)cfg_baap < cfg_baa_endp) {
- if (cfg_baap->base_addr != (uint64_t)0 &&
- cfg_baap->segment == 0) {
+ if (cfg_baap->Address != (uint64_t)0 &&
+ cfg_baap->PciSegment == 0) {
/*
* Set up the 'ecfg' property to hold
* base_addr, segment, and first/last bus.
* We only do the first entry that maps
* segment 0; nonzero segments are not yet
@@ -94,14 +93,14 @@
* known, or handled. If they appear,
* we'll need to figure out which bus node
* should have which entry by examining the
* ACPI _SEG method on each bus node.
*/
- ecfginfo[0] = cfg_baap->base_addr;
- ecfginfo[1] = cfg_baap->segment;
- ecfginfo[2] = cfg_baap->start_bno;
- ecfginfo[3] = cfg_baap->end_bno;
+ ecfginfo[0] = cfg_baap->Address;
+ ecfginfo[1] = cfg_baap->PciSegment;
+ ecfginfo[2] = cfg_baap->StartBusNumber;
+ ecfginfo[3] = cfg_baap->EndBusNumber;
(void) ndi_prop_update_int64_array(
DDI_DEV_T_NONE, dip, "ecfg",
ecfginfo, 4);
ecfg_found = 1;
break;