diff options
| author | 2006-11-27 12:39:04 +0000 | |
|---|---|---|
| committer | 2006-11-27 12:39:04 +0000 | |
| commit | a835314a98c1a02cd1e239366ba3b76c5223353a (patch) | |
| tree | 8a252d04e754d56d09d9980079ae97fa937e43e4 /sys/dev/acpi/acpiprt.c | |
| parent | move uberry to a nicer place (diff) | |
| download | wireguard-openbsd-a835314a98c1a02cd1e239366ba3b76c5223353a.tar.xz wireguard-openbsd-a835314a98c1a02cd1e239366ba3b76c5223353a.zip | |
Handle objrefs in _PRT.
ok jordan@
Diffstat (limited to 'sys/dev/acpi/acpiprt.c')
| -rw-r--r-- | sys/dev/acpi/acpiprt.c | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/sys/dev/acpi/acpiprt.c b/sys/dev/acpi/acpiprt.c index 235cbda90cb..61a0a824b9f 100644 --- a/sys/dev/acpi/acpiprt.c +++ b/sys/dev/acpi/acpiprt.c @@ -1,4 +1,4 @@ -/* $OpenBSD: acpiprt.c,v 1.2 2006/11/25 16:59:31 niklas Exp $ */ +/* $OpenBSD: acpiprt.c,v 1.3 2006/11/27 12:39:04 kettenis Exp $ */ /* * Copyright (c) 2006 Mark Kettenis <kettenis@openbsd.org> * @@ -124,12 +124,12 @@ acpiprt_prt_add(struct acpiprt_softc *sc, struct aml_value *v) pin = aml_val2int(v->v_package[1]); if (v->v_package[2]->type == AML_OBJTYPE_NAMEREF || - v->v_package[2]->type == AML_OBJTYPE_DEVICE) { + v->v_package[2]->type == AML_OBJTYPE_OBJREF) { if (v->v_package[2]->type == AML_OBJTYPE_NAMEREF) node = aml_searchname(sc->sc_devnode, v->v_package[2]->v_nameref); else - node = v->v_package[2]->node; + node = v->v_package[2]->v_objref.ref->node; if (node == NULL) { printf(" invalid node!\n"); return; @@ -151,6 +151,9 @@ acpiprt_prt_add(struct acpiprt_softc *sc, struct aml_value *v) if ((res.v_buffer[0] >> 3) == 0x4) { irq = res.v_buffer[1] + (res.v_buffer[2] << 8); irq = ffs(irq) - 1; + } else { + printf("unexpected _CSR object\n"); + return; } } else irq = aml_val2int(v->v_package[3]); |
