From d79a363e63915ccb6a67b7813b8655bf48cb4351 Mon Sep 17 00:00:00 2001 From: patrick Date: Sat, 8 Feb 2020 19:08:17 +0000 Subject: [PATCH] On the Lenovo X395 acpivout(4) does not attach since there is no _BQC method. But we need it to attach, since it provides the events for the brightness keys. Thus, make acpivout(4) attach enough to register the event handler, but return early so that it doesn't register itself as ws_[gs]et_param. ok kettenis@ --- sys/dev/acpi/acpivideo.c | 4 ++-- sys/dev/acpi/acpivout.c | 9 +++++---- 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/sys/dev/acpi/acpivideo.c b/sys/dev/acpi/acpivideo.c index 9498465a418..1fe1606fa51 100644 --- a/sys/dev/acpi/acpivideo.c +++ b/sys/dev/acpi/acpivideo.c @@ -1,4 +1,4 @@ -/* $OpenBSD: acpivideo.c,v 1.11 2017/06/30 06:25:29 mlarkin Exp $ */ +/* $OpenBSD: acpivideo.c,v 1.12 2020/02/08 19:08:17 patrick Exp $ */ /* * Copyright (c) 2008 Federico G. Schwindt * Copyright (c) 2009 Paul Irofti @@ -149,7 +149,7 @@ acpi_foundvout(struct aml_node *node, void *arg) if (node->parent != sc->sc_devnode) return (0); - if (aml_searchname(node, "_BCM") && aml_searchname(node, "_BQC")) { + if (aml_searchname(node, "_BCM")) { memset(&aaa, 0, sizeof(aaa)); aaa.aaa_iot = sc->sc_acpi->sc_iot; aaa.aaa_memt = sc->sc_acpi->sc_memt; diff --git a/sys/dev/acpi/acpivout.c b/sys/dev/acpi/acpivout.c index c603b6443f8..bcdb39f8ce3 100644 --- a/sys/dev/acpi/acpivout.c +++ b/sys/dev/acpi/acpivout.c @@ -1,4 +1,4 @@ -/* $OpenBSD: acpivout.c,v 1.18 2020/01/28 14:06:16 patrick Exp $ */ +/* $OpenBSD: acpivout.c,v 1.19 2020/02/08 19:08:17 patrick Exp $ */ /* * Copyright (c) 2009 Paul Irofti * @@ -96,9 +96,6 @@ acpivout_match(struct device *parent, void *match, void *aux) aaa->aaa_table != NULL) return (0); - if (ws_get_param || ws_set_param) - return (0); - return (1); } @@ -116,6 +113,10 @@ acpivout_attach(struct device *parent, struct device *self, void *aux) aml_register_notify(sc->sc_devnode, aaa->aaa_dev, acpivout_notify, sc, ACPIDEV_NOPOLL); + if (!aml_searchname(sc->sc_devnode, "_BQC") || + ws_get_param || ws_set_param) + return; + ws_get_param = acpivout_get_param; ws_set_param = acpivout_set_param;