diff options
| author | jruoho <jruoho@NetBSD.org> | 2010-04-27 05:34:14 +0000 |
|---|---|---|
| committer | jruoho <jruoho@NetBSD.org> | 2010-04-27 05:34:14 +0000 |
| commit | d5124a18122e643b378886375f0ab075fc9bd271 (patch) | |
| tree | 36dd466b707ac87c20b6cbd12905bc115bf0b9b8 /sys/dev | |
| parent | cdc281e1d113a3bef62c681b1a6b6e297312d5ce (diff) | |
Clean up <dev/acpi/acpireg.h>. While documenting the control methods is an
admirable goal, it is pretty much mission impossible; the specifications are
nearly thousand pages each and the amount of methods is counted in hundreds.
In addition, use ACPICA's native constants from <actypes.h> when possible.
Also move ACPI_STA_OK from "mpacpi.c" to <dev/acpi/acpireg.h> to simplify
the evaluation of device status.
Diffstat (limited to 'sys/dev')
| -rw-r--r-- | sys/dev/acpi/acpi.c | 52 | ||||
| -rw-r--r-- | sys/dev/acpi/acpi_power.c | 7 | ||||
| -rw-r--r-- | sys/dev/acpi/acpireg.h | 241 |
3 files changed, 35 insertions, 265 deletions
diff --git a/sys/dev/acpi/acpi.c b/sys/dev/acpi/acpi.c index b7acde6bd3b..27f8d91ad2c 100644 --- a/sys/dev/acpi/acpi.c +++ b/sys/dev/acpi/acpi.c @@ -1,4 +1,4 @@ -/* $NetBSD: acpi.c,v 1.192 2010/04/26 04:31:09 jruoho Exp $ */ +/* $NetBSD: acpi.c,v 1.193 2010/04/27 05:34:14 jruoho Exp $ */ /*- * Copyright (c) 2003, 2007 The NetBSD Foundation, Inc. @@ -65,7 +65,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: acpi.c,v 1.192 2010/04/26 04:31:09 jruoho Exp $"); +__KERNEL_RCSID(0, "$NetBSD: acpi.c,v 1.193 2010/04/27 05:34:14 jruoho Exp $"); #include "opt_acpi.h" #include "opt_pcifixup.h" @@ -725,13 +725,10 @@ acpi_make_devnode_post(ACPI_HANDLE handle, uint32_t level, } #ifdef ACPI_ACTIVATE_DEV - -#define ACPI_DEV_VALID (ACPI_VALID_STA | ACPI_VALID_HID) -#define ACPI_DEV_STATUS (ACPI_STA_DEV_PRESENT | ACPI_STA_DEV_ENABLED) - static void acpi_activate_device(ACPI_HANDLE handle, ACPI_DEVICE_INFO **di) { + static const int valid = ACPI_VALID_STA | ACPI_VALID_HID; ACPI_DEVICE_INFO *newdi; ACPI_STATUS rv; uint32_t old; @@ -740,12 +737,13 @@ acpi_activate_device(ACPI_HANDLE handle, ACPI_DEVICE_INFO **di) * If the device is valid and present, * but not enabled, try to activate it. */ - if (((*di)->Valid & ACPI_DEV_VALID) != ACPI_DEV_VALID) + if (((*di)->Valid & valid) != valid) return; old = (*di)->CurrentStatus; - if ((old & ACPI_DEV_STATUS) != ACPI_STA_DEV_PRESENT) + if ((old & (ACPI_STA_DEVICE_PRESENT | ACPI_STA_DEVICE_ENABLED)) != + ACPI_STA_DEVICE_PRESENT) return; rv = acpi_allocate_resources(handle); @@ -880,10 +878,6 @@ out1: out: return rv; } - -#undef ACPI_DEV_VALID -#undef ACPI_DEV_STATUS - #endif /* ACPI_ACTIVATE_DEV */ /* @@ -916,6 +910,7 @@ acpi_rescan_nodes(struct acpi_softc *sc) { struct acpi_attach_args aa; struct acpi_devnode *ad; + ACPI_DEVICE_INFO *di; SIMPLEQ_FOREACH(ad, &sc->ad_head, ad_list) { @@ -929,21 +924,18 @@ acpi_rescan_nodes(struct acpi_softc *sc) if (acpi_is_scope(ad) != false) continue; + di = ad->ad_devinfo; + /* * We only attach devices which are present, enabled, and * functioning properly. However, if a device is enabled, * it is decoding resources and we should claim these, * if possible. This requires changes to bus_space(9). */ - if (ad->ad_devinfo->Type == ACPI_TYPE_DEVICE) { - - if ((ad->ad_devinfo->Valid & ACPI_VALID_STA) == - ACPI_VALID_STA && - (ad->ad_devinfo->CurrentStatus & - (ACPI_STA_DEV_PRESENT|ACPI_STA_DEV_ENABLED| - ACPI_STA_DEV_OK)) != - (ACPI_STA_DEV_PRESENT|ACPI_STA_DEV_ENABLED| - ACPI_STA_DEV_OK)) + if (di->Type == ACPI_TYPE_DEVICE) { + + if ((di->Valid & ACPI_VALID_STA) != 0 && + (di->CurrentStatus & ACPI_STA_OK) != ACPI_STA_OK) continue; } @@ -952,20 +944,20 @@ acpi_rescan_nodes(struct acpi_softc *sc) * thermal zones and power resources do not * have a valid HID, only evaluate devices. */ - if (ad->ad_devinfo->Type == ACPI_TYPE_DEVICE && - (ad->ad_devinfo->Valid & ACPI_VALID_HID) == 0) + if (di->Type == ACPI_TYPE_DEVICE && + (di->Valid & ACPI_VALID_HID) == 0) continue; /* * Handled internally. */ - if (ad->ad_devinfo->Type == ACPI_TYPE_PROCESSOR) + if (di->Type == ACPI_TYPE_PROCESSOR) continue; /* * Ditto, but bind power resources. */ - if (ad->ad_devinfo->Type == ACPI_TYPE_POWER) { + if (di->Type == ACPI_TYPE_POWER) { acpi_power_res_add(ad); continue; } @@ -973,7 +965,7 @@ acpi_rescan_nodes(struct acpi_softc *sc) /* * Skip ignored HIDs. */ - if (acpi_match_hid(ad->ad_devinfo, acpi_ignored_ids)) + if (acpi_match_hid(di, acpi_ignored_ids)) continue; aa.aa_node = ad; @@ -988,9 +980,6 @@ acpi_rescan_nodes(struct acpi_softc *sc) } } -#define ACPI_STA_DEV_VALID \ - (ACPI_STA_DEV_PRESENT | ACPI_STA_DEV_ENABLED | ACPI_STA_DEV_OK) - static void acpi_rescan_capabilities(struct acpi_softc *sc) { @@ -1007,8 +996,7 @@ acpi_rescan_capabilities(struct acpi_softc *sc) continue; if ((di->Valid & ACPI_VALID_STA) != 0 && - (di->CurrentStatus & ACPI_STA_DEV_VALID) != - ACPI_STA_DEV_VALID) + (di->CurrentStatus & ACPI_STA_OK) != ACPI_STA_OK) continue; /* @@ -1036,8 +1024,6 @@ acpi_rescan_capabilities(struct acpi_softc *sc) } } -#undef ACPI_STA_DEV_VALID - static int acpi_print(void *aux, const char *pnp) { diff --git a/sys/dev/acpi/acpi_power.c b/sys/dev/acpi/acpi_power.c index 09a22343937..34ca6e62633 100644 --- a/sys/dev/acpi/acpi_power.c +++ b/sys/dev/acpi/acpi_power.c @@ -1,4 +1,4 @@ -/* $NetBSD: acpi_power.c,v 1.10 2010/04/26 13:38:42 jruoho Exp $ */ +/* $NetBSD: acpi_power.c,v 1.11 2010/04/27 05:34:14 jruoho Exp $ */ /*- * Copyright (c) 2009, 2010 The NetBSD Foundation, Inc. @@ -56,7 +56,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: acpi_power.c,v 1.10 2010/04/26 13:38:42 jruoho Exp $"); +__KERNEL_RCSID(0, "$NetBSD: acpi_power.c,v 1.11 2010/04/27 05:34:14 jruoho Exp $"); #include <sys/param.h> #include <sys/kmem.h> @@ -70,6 +70,9 @@ __KERNEL_RCSID(0, "$NetBSD: acpi_power.c,v 1.10 2010/04/26 13:38:42 jruoho Exp $ #define _COMPONENT ACPI_BUS_COMPONENT ACPI_MODULE_NAME ("acpi_power") +#define ACPI_STA_POW_OFF 0x00 +#define ACPI_STA_POW_ON 0x01 + /* * References. */ diff --git a/sys/dev/acpi/acpireg.h b/sys/dev/acpi/acpireg.h index 7df96436f54..fe122b2b3e7 100644 --- a/sys/dev/acpi/acpireg.h +++ b/sys/dev/acpi/acpireg.h @@ -1,4 +1,4 @@ -/* $NetBSD: acpireg.h,v 1.7 2010/03/05 08:30:48 jruoho Exp $ */ +/* $NetBSD: acpireg.h,v 1.8 2010/04/27 05:34:14 jruoho Exp $ */ /* * Copyright 2001 Wasabi Systems, Inc. @@ -39,14 +39,11 @@ #define _SYS_DEV_ACPI_ACPIREG_H /* - * This file defines various ACPI event messages, etc. - */ - -/* - * 5.6.3: Device Object Notifications + * XXX: Use the native types from <actypes.h>. + * + * Move the device-specific constants to + * the device-specific files. */ - -/* Device Object Notification Types */ #define ACPI_NOTIFY_BusCheck 0x00 #define ACPI_NOTIFY_DeviceCheck 0x01 #define ACPI_NOTIFY_DeviceWake 0x02 @@ -83,238 +80,22 @@ #define ACPI_NOTIFY_CStatesChanged 0x81 /* - * 6: Configuration - * - * 6.1: Device Identification Objects - * - * _ADR Object that evaluates to a device's address on - * its parent bus. - * - * _CID Object that evaluates to a device's Plug and Play - * compatible ID list. - * - * _DDN Object that associates a logical software name - * (for example, COM1) with a device. - * - * _HID Object that evaluates to a device's Plug and Play - * hardware ID. - * - * _SUN Objcet that evaluates to the slot-unique ID number - * for a slot. - * - * _STR Object that contains a Unicode identifier for a device. - * - * _UID Object that specifies a device's unique persistent ID, - * or a control method that generates it. + * A common device status mask. */ +#define ACPI_STA_OK (ACPI_STA_DEVICE_PRESENT | \ + ACPI_STA_DEVICE_ENABLED | \ + ACPI_STA_DEVICE_FUNCTIONING) /* - * 6.1.1: _ADR (Address) - * - * EISA EISA slot numnber 0-f - * - * Floppy Bus Drive select values used for programming - * the floppy controller to access the - * specified INT13 unit number. The _ADR - * objects should be sorted based on drive - * select encoding from 0-3. - * - * IDE controller 0 - primary channel, 1 - secondary channel - * - * IDE channel 0 - master drive, 1 - slave drive - * - * PCI High word - Device #, Low word - Function # - * 0xffff == all functions on a device - * - * PCMCIA Socket #; 0 == first socket - * - * PC Card Socket #; 0 == first socket - * - * SMBus Lowest slave address - * - * USB Root Hub Only one child of the host controller, must - * have an _ADR of 0. - * - * USB ports port number + * PCI functions. */ #define ACPI_ADR_PCI_DEV(x) (((x) >> 16) & 0xffff) #define ACPI_ADR_PCI_FUNC(x) ((x) & 0xffff) #define ACPI_ADR_PCI_ALLFUNCS 0xffff /* - * 6.1.2: _CID (Compatible ID) - */ - -/* - * 6.1.3: _DDN (Device Name) - */ - -/* - * 6.1.4: _HID (Hardware ID) - */ - -/* - * 6.1.5: _STR (String) - */ - -/* - * 6.1.6: _SUN (Slot User Number) - */ - -/* - * 6.1.7: _UID (Unique ID) - */ - -/* - * 6.2: Device Configuration Objects - * - * _CRS Object that specifies a device's *current* resource - * settings, or a control method that generates such - * an object. - * - * _DIS Control method that disables a device. - * - * _DMA Object that specifies a device's *current* resources - * for DMA transactions. - * - * _FIX Object used to provide correlation between the - * fixed-hardware register blocks defined in the FADT - * and the devices that implement these fixed-hardware - * registers. - * - * _HPP Object that specifies the cache-line size, latency - * timer, SERR enable, and PERR enable values to be - * used when configuring a PCI device inserted into - * a hot-plug slot or initial configuration of a PCI - * device at system boot. - * - * _MAT Object that evaluates to a buffer of MADT APIC - * structure entries. - * - * _PRS An object that specifies a device's *possible* - * resource settings, or a control method that - * generates such an object. - * - * _PRT Object that specifies the PCI interrupt routing - * table. - * - * _PXM Object that specifies a proximity domain for a device. - * - * _SRS Control method that sets a device's settings. - */ - -/* - * 6.2.1: _CRS (Current Resource Settings) - */ - -/* - * 6.2.2: _DIS (Disable) - */ - -/* - * 6.2.3: _DMA (Direct Memory AccesS) + * ACPI driver components. */ - -/* - * 6.2.4: _FIX (Fixed Register Resource Provider) - */ - -/* - * 6.2.5: _HPP (Hot Plug Parameters) - */ - -/* - * 6.2.6: _MAT (Multiple APIC Table Entry) - */ - -/* - * 6.2.7: _PRS (Possible Resource Settings) - */ - -/* - * 6.2.8: _PRT (PCI Routing Table) - */ - -/* - * 6.2.9: _PXM (Proximity) - */ - -/* - * 6.2.10: _SRS (Set Resource Settings) - */ - -/* - * 6.3: Device Insertion and Removal Objects - * - * _EDL Object that evaluates to a package of namespace - * references of device objects that depend on - * the device containing _EDL. Whenever the named - * devices is ejected, OSPM ejects all dependent - * devices. - * - * _EJD Object that evaluates to the name of a device object - * on which a device depends. Whenever the named - * device is ejected, the dependent device must receive - * an ejection notification. - * - * _EJx Control method that ejects a device. - * - * _LCK Control method that locks or unlocks a device. - * - * _RMV Object that indicates that the given device is - * removable. - * - * _STA Control method that returns a device's status. - */ - -/* - * 6.3.1: _EDL (Eject Device List) - */ - -/* - * 6.3.2: _EJD (Ejection Dependent Device) - */ - -/* - * 6.3.3: _EJx (Eject) - * - * x Indicates sleeping state at which device - * can be ejected. - */ - -/* - * 6.3.4: _LCK (Lock) - */ - -/* - * 6.3.5: _RMV (Remove) - */ - -/* - * 6.3.6: _STA (Status) for device insertion/removal - */ -#define ACPI_STA_DEV_PRESENT 0x00000001 /* device present */ -#define ACPI_STA_DEV_ENABLED 0x00000002 /* enabled (decoding res.) */ -#define ACPI_STA_DEV_SHOW 0x00000004 /* show device in UI */ -#define ACPI_STA_DEV_OK 0x00000008 /* functioning properly */ -#define ACPI_STA_DEV_BATT 0x00000010 /* battery present */ - -/* - * 6.4: Resource Data Types for ACPI - * - * Used by the _CRS, _PRS, and _SRS methods. - */ - -/* - * 7.1.4: _STA (Status) for power resource current state - */ -#define ACPI_STA_POW_OFF 0 /* power resource off */ -#define ACPI_STA_POW_ON 1 /* power resource on */ - -/* - * ACPI driver components - */ - #define ACPI_BUS_COMPONENT 0x00010000 #define ACPI_ACAD_COMPONENT 0x00020000 #define ACPI_BAT_COMPONENT 0x00040000 |
