Module Name: src Committed By: jruoho Date: Tue Mar 9 18:15:22 UTC 2010
Modified Files: src/sys/dev/acpi: acpi.c acpi_pci.c acpi_wakedev.c acpivar.h Log Message: Remove the namespace scopes. These are neither used nor useful beyond the parser and interpreter. ok jmcneill@, joerg@ To generate a diff of this commit: cvs rdiff -u -r1.156 -r1.157 src/sys/dev/acpi/acpi.c cvs rdiff -u -r1.3 -r1.4 src/sys/dev/acpi/acpi_pci.c cvs rdiff -u -r1.5 -r1.6 src/sys/dev/acpi/acpi_wakedev.c cvs rdiff -u -r1.41 -r1.42 src/sys/dev/acpi/acpivar.h Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/sys/dev/acpi/acpi.c diff -u src/sys/dev/acpi/acpi.c:1.156 src/sys/dev/acpi/acpi.c:1.157 --- src/sys/dev/acpi/acpi.c:1.156 Fri Mar 5 21:01:44 2010 +++ src/sys/dev/acpi/acpi.c Tue Mar 9 18:15:21 2010 @@ -1,4 +1,4 @@ -/* $NetBSD: acpi.c,v 1.156 2010/03/05 21:01:44 jruoho Exp $ */ +/* $NetBSD: acpi.c,v 1.157 2010/03/09 18:15:21 jruoho Exp $ */ /*- * Copyright (c) 2003, 2007 The NetBSD Foundation, Inc. @@ -70,7 +70,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: acpi.c,v 1.156 2010/03/05 21:01:44 jruoho Exp $"); +__KERNEL_RCSID(0, "$NetBSD: acpi.c,v 1.157 2010/03/09 18:15:21 jruoho Exp $"); #include "opt_acpi.h" #include "opt_pcifixup.h" @@ -402,17 +402,15 @@ acpi_childdet(device_t self, device_t child) { struct acpi_softc *sc = device_private(self); - struct acpi_scope *as; struct acpi_devnode *ad; if (sc->sc_apmbus == child) sc->sc_apmbus = NULL; - TAILQ_FOREACH(as, &sc->sc_scopes, as_list) { - TAILQ_FOREACH(ad, &as->as_devnodes, ad_list) { - if (ad->ad_device == child) - ad->ad_device = NULL; - } + SIMPLEQ_FOREACH(ad, &sc->sc_devnodes, ad_list) { + + if (ad->ad_device == child) + ad->ad_device = NULL; } } @@ -450,6 +448,7 @@ rsdt->AslCompilerId, rsdt->AslCompilerRevision); } else aprint_error_dev(self, "X/RSDT: Not found\n"); + acpi_unmap_rsdt(rsdt); sc->sc_dev = self; @@ -461,6 +460,8 @@ sc->sc_pciflags = aa->aa_pciflags; sc->sc_ic = aa->aa_ic; + SIMPLEQ_INIT(&sc->sc_devnodes); + acpi_softc = sc; /* @@ -661,11 +662,6 @@ } #endif -struct acpi_make_devnode_state { - struct acpi_softc *softc; - struct acpi_scope *scope; -}; - /* * acpi_build_tree: * @@ -676,46 +672,27 @@ acpi_build_tree(struct acpi_softc *sc) { static const char *scopes[] = { - "\\_PR_", /* ACPI 1.0 processor namespace */ - "\\_SB_", /* system bus namespace */ - "\\_SI_", /* system indicator namespace */ - "\\_TZ_", /* ACPI 1.0 thermal zone namespace */ - NULL, + "\\_PR_", "\\_SB_", "\\_SI_", "\\_TZ_", NULL }; - struct acpi_make_devnode_state state; - struct acpi_scope *as; + ACPI_HANDLE parent; ACPI_STATUS rv; int i; - TAILQ_INIT(&sc->sc_scopes); - - state.softc = sc; - /* - * Scan the namespace and build our tree. + * Scan the namespace and build our device tree. */ for (i = 0; scopes[i] != NULL; i++) { - as = malloc(sizeof(*as), M_ACPI, M_WAITOK); - as->as_name = scopes[i]; - TAILQ_INIT(&as->as_devnodes); - - TAILQ_INSERT_TAIL(&sc->sc_scopes, as, as_list); - - state.scope = as; - - rv = AcpiGetHandle(ACPI_ROOT_OBJECT, scopes[i], - &parent); - if (ACPI_SUCCESS(rv)) { - AcpiWalkNamespace(ACPI_TYPE_ANY, parent, 100, - acpi_make_devnode, &state, NULL); - } + + rv = AcpiGetHandle(ACPI_ROOT_OBJECT, scopes[i], &parent); + + if (ACPI_SUCCESS(rv)) + (void)AcpiWalkNamespace(ACPI_TYPE_ANY, parent, 100, + acpi_make_devnode, sc, NULL); } acpi_rescan1(sc, NULL, NULL); - acpi_wakedev_scan(sc); - acpi_pcidev_scan(sc); } @@ -743,73 +720,68 @@ static void acpi_rescan_nodes(struct acpi_softc *sc) { - struct acpi_scope *as; - - TAILQ_FOREACH(as, &sc->sc_scopes, as_list) { - struct acpi_devnode *ad; + struct acpi_attach_args aa; + struct acpi_devnode *ad; - /* Now, for this namespace, try to attach the devices. */ - TAILQ_FOREACH(ad, &as->as_devnodes, ad_list) { - struct acpi_attach_args aa; + SIMPLEQ_FOREACH(ad, &sc->sc_devnodes, ad_list) { - if (ad->ad_device != NULL) - continue; + if (ad->ad_device != NULL) + continue; - aa.aa_node = ad; - aa.aa_iot = sc->sc_iot; - aa.aa_memt = sc->sc_memt; - aa.aa_pc = sc->sc_pc; - aa.aa_pciflags = sc->sc_pciflags; - aa.aa_ic = sc->sc_ic; - - if (ad->ad_devinfo->Type == ACPI_TYPE_DEVICE) { - /* - * XXX We only attach devices which are: - * - * - present - * - enabled - * - functioning properly - * - * However, if enabled, it's decoding resources, - * so we should claim them, if possible. - * Requires changes to bus_space(9). - */ - 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)) - continue; - } + aa.aa_node = ad; + aa.aa_iot = sc->sc_iot; + aa.aa_memt = sc->sc_memt; + aa.aa_pc = sc->sc_pc; + aa.aa_pciflags = sc->sc_pciflags; + aa.aa_ic = sc->sc_ic; + if (ad->ad_devinfo->Type == ACPI_TYPE_DEVICE) { /* - * XXX Same problem as above... + * XXX We only attach devices which are: * - * Do this check only for devices, as e.g. - * a Thermal Zone doesn't have a HID. - */ - if (ad->ad_devinfo->Type == ACPI_TYPE_DEVICE && - (ad->ad_devinfo->Valid & ACPI_VALID_HID) == 0) - continue; - - /* - * Handled internally + * - present + * - enabled + * - functioning properly + * + * However, if enabled, it's decoding resources, + * so we should claim them, if possible. + * Requires changes to bus_space(9). */ - if (ad->ad_devinfo->Type == ACPI_TYPE_PROCESSOR || - ad->ad_devinfo->Type == ACPI_TYPE_POWER) + 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)) continue; + } - /* - * Skip ignored HIDs - */ - if (acpi_match_hid(ad->ad_devinfo, acpi_ignored_ids)) - continue; + /* + * XXX Same problem as above... + * + * Do this check only for devices, as e.g. + * a Thermal Zone doesn't have a HID. + */ + if (ad->ad_devinfo->Type == ACPI_TYPE_DEVICE && + (ad->ad_devinfo->Valid & ACPI_VALID_HID) == 0) + continue; + + /* + * Handled internally. + */ + if (ad->ad_devinfo->Type == ACPI_TYPE_PROCESSOR || + ad->ad_devinfo->Type == ACPI_TYPE_POWER) + continue; + + /* + * Skip ignored HIDs. + */ + if (acpi_match_hid(ad->ad_devinfo, acpi_ignored_ids)) + continue; - ad->ad_device = config_found_ia(sc->sc_dev, - "acpinodebus", &aa, acpi_print); - } + ad->ad_device = config_found_ia(sc->sc_dev, + "acpinodebus", &aa, acpi_print); } } @@ -854,9 +826,7 @@ acpi_make_devnode(ACPI_HANDLE handle, uint32_t level, void *context, void **status) { - struct acpi_make_devnode_state *state = context; - struct acpi_softc *sc = state->softc; - struct acpi_scope *as = state->scope; + struct acpi_softc *sc = context; struct acpi_devnode *ad; ACPI_DEVICE_INFO *devinfo; ACPI_OBJECT_TYPE type; @@ -901,10 +871,9 @@ if (ad == NULL) return AE_NO_MEMORY; + ad->ad_parent = sc->sc_dev; ad->ad_devinfo = devinfo; ad->ad_handle = handle; - ad->ad_level = level; - ad->ad_scope = as; ad->ad_type = type; anu = (ACPI_NAME_UNION *)&devinfo->Name; @@ -923,7 +892,7 @@ if (ad->ad_name[0] == '\0') ad->ad_name[0] = '_'; - TAILQ_INSERT_TAIL(&as->as_devnodes, ad, ad_list); + SIMPLEQ_INSERT_TAIL(&sc->sc_devnodes, ad, ad_list); if (type != ACPI_TYPE_DEVICE) return AE_OK; @@ -932,10 +901,8 @@ return AE_OK; #ifdef ACPIVERBOSE - aprint_normal_dev(sc->sc_dev, - "HID %s found in scope %s level %d\n", - ad->ad_devinfo->HardwareId.String, - as->as_name, ad->ad_level); + aprint_normal(" HID %s\n", + ad->ad_devinfo->HardwareId.String); if (ad->ad_devinfo->Valid & ACPI_VALID_UID) aprint_normal(" UID %s\n", Index: src/sys/dev/acpi/acpi_pci.c diff -u src/sys/dev/acpi/acpi_pci.c:1.3 src/sys/dev/acpi/acpi_pci.c:1.4 --- src/sys/dev/acpi/acpi_pci.c:1.3 Fri Mar 5 14:00:17 2010 +++ src/sys/dev/acpi/acpi_pci.c Tue Mar 9 18:15:22 2010 @@ -1,4 +1,4 @@ -/* $NetBSD: acpi_pci.c,v 1.3 2010/03/05 14:00:17 jruoho Exp $ */ +/* $NetBSD: acpi_pci.c,v 1.4 2010/03/09 18:15:22 jruoho Exp $ */ /* * Copyright (c) 2009 The NetBSD Foundation, Inc. @@ -33,7 +33,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: acpi_pci.c,v 1.3 2010/03/05 14:00:17 jruoho Exp $"); +__KERNEL_RCSID(0, "$NetBSD: acpi_pci.c,v 1.4 2010/03/09 18:15:22 jruoho Exp $"); #include <sys/param.h> #include <sys/device.h> @@ -139,7 +139,6 @@ int acpi_pcidev_scan(struct acpi_softc *sc) { - struct acpi_scope *as; struct acpi_devnode *ad; struct acpi_pcidev *ap; ACPI_DEVICE_INFO *di; @@ -148,18 +147,20 @@ #define ACPI_STA_DEV_VALID \ (ACPI_STA_DEV_PRESENT|ACPI_STA_DEV_ENABLED|ACPI_STA_DEV_OK) - TAILQ_FOREACH(as, &sc->sc_scopes, as_list) { - TAILQ_FOREACH(ad, &as->as_devnodes, ad_list) { - di = ad->ad_devinfo; - if (di->Type != ACPI_TYPE_DEVICE) - continue; - if ((di->Valid & ACPI_VALID_STA) != 0 && - (di->CurrentStatus & ACPI_STA_DEV_VALID) != - ACPI_STA_DEV_VALID) - continue; - if (acpi_pcidev_add(sc, ad) == true) - ++count; - } + SIMPLEQ_FOREACH(ad, &sc->sc_devnodes, ad_list) { + + di = ad->ad_devinfo; + + if (di->Type != ACPI_TYPE_DEVICE) + continue; + + if ((di->Valid & ACPI_VALID_STA) != 0 && + (di->CurrentStatus & ACPI_STA_DEV_VALID) != + ACPI_STA_DEV_VALID) + continue; + + if (acpi_pcidev_add(sc, ad) == true) + ++count; } #undef ACPI_STA_DEV_VALID Index: src/sys/dev/acpi/acpi_wakedev.c diff -u src/sys/dev/acpi/acpi_wakedev.c:1.5 src/sys/dev/acpi/acpi_wakedev.c:1.6 --- src/sys/dev/acpi/acpi_wakedev.c:1.5 Fri Mar 5 22:00:11 2010 +++ src/sys/dev/acpi/acpi_wakedev.c Tue Mar 9 18:15:22 2010 @@ -1,4 +1,4 @@ -/* $NetBSD: acpi_wakedev.c,v 1.5 2010/03/05 22:00:11 jruoho Exp $ */ +/* $NetBSD: acpi_wakedev.c,v 1.6 2010/03/09 18:15:22 jruoho Exp $ */ /*- * Copyright (c) 2009 Jared D. McNeill <jmcne...@invisible.ca> @@ -27,7 +27,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: acpi_wakedev.c,v 1.5 2010/03/05 22:00:11 jruoho Exp $"); +__KERNEL_RCSID(0, "$NetBSD: acpi_wakedev.c,v 1.6 2010/03/09 18:15:22 jruoho Exp $"); #include <sys/param.h> #include <sys/device.h> @@ -145,7 +145,6 @@ int acpi_wakedev_scan(struct acpi_softc *sc) { - struct acpi_scope *as; struct acpi_devnode *ad; struct acpi_wakedev *aw; ACPI_DEVICE_INFO *di; @@ -154,18 +153,21 @@ #define ACPI_STA_DEV_VALID \ (ACPI_STA_DEV_PRESENT|ACPI_STA_DEV_ENABLED|ACPI_STA_DEV_OK) - TAILQ_FOREACH(as, &sc->sc_scopes, as_list) - TAILQ_FOREACH(ad, &as->as_devnodes, ad_list) { - di = ad->ad_devinfo; - if (di->Type != ACPI_TYPE_DEVICE) - continue; - if ((di->Valid & ACPI_VALID_STA) != 0 && - (di->CurrentStatus & ACPI_STA_DEV_VALID) != - ACPI_STA_DEV_VALID) - continue; - if (acpi_wakedev_add(sc, ad) == true) - ++count; - } + SIMPLEQ_FOREACH(ad, &sc->sc_devnodes, ad_list) { + + di = ad->ad_devinfo; + + if (di->Type != ACPI_TYPE_DEVICE) + continue; + + if ((di->Valid & ACPI_VALID_STA) != 0 && + (di->CurrentStatus & ACPI_STA_DEV_VALID) != + ACPI_STA_DEV_VALID) + continue; + + if (acpi_wakedev_add(sc, ad) == true) + ++count; + } #undef ACPI_STA_DEV_VALID Index: src/sys/dev/acpi/acpivar.h diff -u src/sys/dev/acpi/acpivar.h:1.41 src/sys/dev/acpi/acpivar.h:1.42 --- src/sys/dev/acpi/acpivar.h:1.41 Fri Mar 5 08:30:48 2010 +++ src/sys/dev/acpi/acpivar.h Tue Mar 9 18:15:22 2010 @@ -1,4 +1,4 @@ -/* $NetBSD: acpivar.h,v 1.41 2010/03/05 08:30:48 jruoho Exp $ */ +/* $NetBSD: acpivar.h,v 1.42 2010/03/09 18:15:22 jruoho Exp $ */ /* * Copyright 2001 Wasabi Systems, Inc. @@ -79,28 +79,14 @@ * An ACPI device node. */ struct acpi_devnode { - TAILQ_ENTRY(acpi_devnode) ad_list; - ACPI_HANDLE ad_handle; /* our ACPI handle */ - uint32_t ad_level; /* ACPI level */ - uint32_t ad_type; /* ACPI object type */ - ACPI_DEVICE_INFO *ad_devinfo; /* our ACPI device info */ - struct acpi_scope *ad_scope; /* backpointer to scope */ - device_t ad_device; /* pointer to configured device */ - char ad_name[5]; /* Human-readable device name */ -}; + device_t ad_device; /* Device */ + device_t ad_parent; /* Backpointer to the parent */ + ACPI_DEVICE_INFO *ad_devinfo; /* Device info */ + ACPI_HANDLE ad_handle; /* Device handle */ + char ad_name[5]; /* Device name */ + uint32_t ad_type; /* Device type */ -/* - * acpi_scope: - * - * Description of an ACPI scope. - */ -struct acpi_scope { - TAILQ_ENTRY(acpi_scope) as_list; - const char *as_name; /* scope name */ - /* - * Device nodes we manage. - */ - TAILQ_HEAD(, acpi_devnode) as_devnodes; + SIMPLEQ_ENTRY(acpi_devnode) ad_list; }; /* @@ -135,11 +121,9 @@ int sc_quirks; - /* - * Scopes we manage. - */ - TAILQ_HEAD(, acpi_scope) sc_scopes; device_t sc_apmbus; + + SIMPLEQ_HEAD(, acpi_devnode) sc_devnodes; /* devices */ }; /*