summaryrefslogtreecommitdiffstats
path: root/sys/dev/acpica/acpi_pcib_acpi.c
diff options
context:
space:
mode:
authormsmith <msmith@FreeBSD.org>2000-12-08 09:16:20 +0000
committermsmith <msmith@FreeBSD.org>2000-12-08 09:16:20 +0000
commit3d96e58d420f86cc9ab2fab8c58a17921833e586 (patch)
tree13559703e4a964e10c5a092763cd63d3b6d8de56 /sys/dev/acpica/acpi_pcib_acpi.c
parent601ec8e1853accdb6afea835eff3e1a5d42b2390 (diff)
downloadFreeBSD-src-3d96e58d420f86cc9ab2fab8c58a17921833e586.zip
FreeBSD-src-3d96e58d420f86cc9ab2fab8c58a17921833e586.tar.gz
- Convert a lot of homebrew debugging output to use the ACPI CA debugging
infrastructure. It's not perfect, but it's a lot better than what we've been using so far. The following rules apply to this: o BSD component names should be capitalised o Layer names should be taken from the non-CA set for now. We may elect to add some new BSD-specific layers later. - Make it possible to turn off selective debugging flags or layers by listing them in debug.acpi.layer or debug.acpi.level prefixed with !. - Fully implement support for avoiding nodes in the ACPI namespace. Nodes may be listed in the debug.acpi.avoid environment variable; these nodes and all their children will be ignored (although still scanned over) by ACPI functions which scan the namespace. Multiple nodes can be specified, separated by whitespace. - Implement support for selectively disabling ACPI subsystem components via the debug.acpi.disable environment variable. The following components can be disabled: o bus creation/scanning of the ACPI 'bus' o children attachment of children to the ACPI 'bus' o button the acpi_button control-method button driver o ec the acpi_ec embedded-controller driver o isa acpi replacement of PnP BIOS for ISA device discovery o lid the control-method lid switch driver o pci pci root-bus discovery o processor CPU power/speed management o thermal system temperature detection and control o timer ACPI timecounter Multiple components may be disabled by specifying their name(s) separated by whitespace. - Add support for ioctl registration. ACPI subsystem components may register ioctl handlers with the /dev/acpi generic ioctl handler, allowing us to avoid the need for a multitude of /dev/acpi* control devices, etc.
Diffstat (limited to 'sys/dev/acpica/acpi_pcib_acpi.c')
-rw-r--r--sys/dev/acpica/acpi_pcib_acpi.c23
1 files changed, 17 insertions, 6 deletions
diff --git a/sys/dev/acpica/acpi_pcib_acpi.c b/sys/dev/acpica/acpi_pcib_acpi.c
index 1e7ef6e..19df2a7 100644
--- a/sys/dev/acpica/acpi_pcib_acpi.c
+++ b/sys/dev/acpica/acpi_pcib_acpi.c
@@ -39,6 +39,12 @@
#include <pci/pcivar.h>
#include "pcib_if.h"
+/*
+ * Hooks for the ACPI CA debugging infrastructure
+ */
+#define _COMPONENT BUS_MANAGER
+MODULE_NAME("PCIB")
+
struct acpi_pcib_softc {
device_t ap_dev;
ACPI_HANDLE ap_handle;
@@ -99,6 +105,7 @@ acpi_pcib_probe(device_t dev)
{
if ((acpi_get_type(dev) == ACPI_TYPE_DEVICE) &&
+ !acpi_disabled("pci") &&
acpi_MatchHid(dev, "PNP0A03")) {
/*
@@ -116,6 +123,9 @@ acpi_pcib_attach(device_t dev)
struct acpi_pcib_softc *sc;
device_t child;
ACPI_STATUS status;
+ int result;
+
+ FUNCTION_TRACE(__FUNCTION__);
sc = device_get_softc(dev);
sc->ap_dev = dev;
@@ -128,7 +138,7 @@ acpi_pcib_attach(device_t dev)
* on a hot-plug docking station, etc.
*/
if (!acpi_DeviceIsPresent(dev))
- return(ENXIO);
+ return_VALUE(ENXIO);
/*
* Get our segment number by evaluating _SEG
@@ -137,7 +147,7 @@ acpi_pcib_attach(device_t dev)
if ((status = acpi_EvaluateNumber(sc->ap_handle, "_SEG", &sc->ap_segment)) != AE_OK) {
if (status != AE_NOT_FOUND) {
device_printf(dev, "could not evaluate _SEG - %s\n", acpi_strerror(status));
- return(ENXIO);
+ return_VALUE(ENXIO);
}
/* if it's not found, assume 0 */
sc->ap_segment = 0;
@@ -159,7 +169,7 @@ acpi_pcib_attach(device_t dev)
if ((status = acpi_EvaluateNumber(sc->ap_handle, "_BBN", &sc->ap_bus)) != AE_OK) {
if (status != AE_NOT_FOUND) {
device_printf(dev, "could not evaluate _BBN - %s\n", acpi_strerror(status));
- return(ENXIO);
+ return_VALUE(ENXIO);
}
/* if it's not found, assume 0 */
sc->ap_bus = 0;
@@ -170,14 +180,14 @@ acpi_pcib_attach(device_t dev)
* (should we complain here?).
*/
if (devclass_get_device(devclass_find("pci"), sc->ap_bus) != NULL)
- return(0);
+ return_VALUE(0);
/*
* Attach the PCI bus proper.
*/
if ((child = device_add_child(dev, "pci", sc->ap_bus)) == NULL) {
device_printf(device_get_parent(dev), "couldn't attach pci bus");
- return(ENXIO);
+ return_VALUE(ENXIO);
}
/*
@@ -186,7 +196,8 @@ acpi_pcib_attach(device_t dev)
* XXX It would be nice to defer this and count on the nexus getting it
* after the first pass, but this does not seem to be reliable.
*/
- return(bus_generic_attach(dev));
+ result = bus_generic_attach(dev);
+ return_VALUE(result);
}
static int
OpenPOWER on IntegriCloud