diff options
author | Theo de Raadt <deraadt@cvs.openbsd.org> | 2024-08-18 03:25:05 +0000 |
---|---|---|
committer | Theo de Raadt <deraadt@cvs.openbsd.org> | 2024-08-18 03:25:05 +0000 |
commit | d68c7c060fc790f81a6028c2658d4581eda97b1a (patch) | |
tree | 0c410d0f82fc35d036ff5a51bddc0452d5be376e | |
parent | 78c8ab89d98a3c10131805b5e3afdb96121d1489 (diff) |
add missing child activate handling, found due to idiom inspection
tested by phessler, input from kettenis
-rw-r--r-- | sys/dev/i2c/iatp.c | 13 | ||||
-rw-r--r-- | sys/dev/i2c/ietp.c | 13 | ||||
-rw-r--r-- | sys/dev/i2c/ihidev.c | 13 |
3 files changed, 24 insertions, 15 deletions
diff --git a/sys/dev/i2c/iatp.c b/sys/dev/i2c/iatp.c index 7c233dede09..701289d3d31 100644 --- a/sys/dev/i2c/iatp.c +++ b/sys/dev/i2c/iatp.c @@ -1,4 +1,4 @@ -/* $OpenBSD: iatp.c,v 1.9 2022/04/06 18:59:28 naddy Exp $ */ +/* $OpenBSD: iatp.c,v 1.10 2024/08/18 03:25:04 deraadt Exp $ */ /* * Atmel maXTouch i2c touchscreen/touchpad driver * Copyright (c) 2016 joshua stein <jcs@openbsd.org> @@ -295,9 +295,11 @@ int iatp_activate(struct device *self, int act) { struct iatp_softc *sc = (struct iatp_softc *)self; + int rv; switch (act) { case DVACT_QUIESCE: + rv = config_activate_children(self, act); #if 0 /* XXX: causes dwiic troubles */ iatp_t7_set_power_mode(sc, MXT_T7_POWER_MODE_DEEP_SLEEP); @@ -307,12 +309,13 @@ iatp_activate(struct device *self, int act) sc->sc_busy = 1; iatp_init(sc); sc->sc_busy = 0; + rv = config_activate_children(self, act); + break; + default: + rv = config_activate_children(self, act); break; } - - config_activate_children(self, act); - - return 0; + return rv; } int diff --git a/sys/dev/i2c/ietp.c b/sys/dev/i2c/ietp.c index 353eb9073d9..fac002babfa 100644 --- a/sys/dev/i2c/ietp.c +++ b/sys/dev/i2c/ietp.c @@ -1,4 +1,4 @@ -/* $OpenBSD: ietp.c,v 1.2 2023/07/21 02:19:49 jcs Exp $ */ +/* $OpenBSD: ietp.c,v 1.3 2024/08/18 03:25:04 deraadt Exp $ */ /* * Elan I2C Touchpad driver * @@ -304,11 +304,13 @@ int ietp_activate(struct device *self, int act) { struct ietp_softc *sc = (struct ietp_softc *)self; + int rv; DPRINTF(("%s(%d)\n", __func__, act)); switch (act) { case DVACT_QUIESCE: + rv = config_activate_children(self, act); sc->sc_dying = 1; if (ietp_set_power(sc, I2C_HID_POWER_OFF)) printf("%s: failed to power down\n", @@ -317,12 +319,13 @@ ietp_activate(struct device *self, int act) case DVACT_WAKEUP: ietp_reset(sc); sc->sc_dying = 0; + rv = config_activate_children(self, act); + break; + default: + rv = config_activate_children(self, act); break; } - - config_activate_children(self, act); - - return 0; + return rv; } void diff --git a/sys/dev/i2c/ihidev.c b/sys/dev/i2c/ihidev.c index d028930347a..a735b015f7f 100644 --- a/sys/dev/i2c/ihidev.c +++ b/sys/dev/i2c/ihidev.c @@ -1,4 +1,4 @@ -/* $OpenBSD: ihidev.c,v 1.29 2023/08/12 10:03:05 kettenis Exp $ */ +/* $OpenBSD: ihidev.c,v 1.30 2024/08/18 03:25:04 deraadt Exp $ */ /* * HID-over-i2c driver * @@ -233,11 +233,13 @@ int ihidev_activate(struct device *self, int act) { struct ihidev_softc *sc = (struct ihidev_softc *)self; + int rv; DPRINTF(("%s(%d)\n", __func__, act)); switch (act) { case DVACT_QUIESCE: + rv = config_activate_children(self, act); sc->sc_dying = 1; if (sc->sc_poll && timeout_initialized(&sc->sc_timer)) { DPRINTF(("%s: cancelling polling\n", @@ -254,12 +256,13 @@ ihidev_activate(struct device *self, int act) sc->sc_dying = 0; if (sc->sc_poll && timeout_initialized(&sc->sc_timer)) timeout_add(&sc->sc_timer, 2000); + rv = config_activate_children(self, act); + break; + default: + rv = config_activate_children(self, act); break; } - - config_activate_children(self, act); - - return 0; + return rv; } void |