diff options
| author | mlelstv <mlelstv@NetBSD.org> | 2021-06-15 04:41:01 +0000 |
|---|---|---|
| committer | mlelstv <mlelstv@NetBSD.org> | 2021-06-15 04:41:01 +0000 |
| commit | b82031103cd9b3bd0ab8740ebd5b3a9b1bc01907 (patch) | |
| tree | 8c3573b1e9538ae10cace186397905ce73328706 /sys/dev | |
| parent | 9b2423a8fba55c414be798de7c8ac42c547c7d17 (diff) | |
iic_acquire_bus may fail.
Diffstat (limited to 'sys/dev')
| -rw-r--r-- | sys/dev/i2c/adm1021.c | 14 | ||||
| -rw-r--r-- | sys/dev/i2c/dstemp.c | 17 |
2 files changed, 18 insertions, 13 deletions
diff --git a/sys/dev/i2c/adm1021.c b/sys/dev/i2c/adm1021.c index b2f8a1bab6a..31ab7dd1f05 100644 --- a/sys/dev/i2c/adm1021.c +++ b/sys/dev/i2c/adm1021.c @@ -1,4 +1,4 @@ -/* $NetBSD: adm1021.c,v 1.27 2021/01/30 01:22:06 thorpej Exp $ */ +/* $NetBSD: adm1021.c,v 1.28 2021/06/15 04:41:01 mlelstv Exp $ */ /* $OpenBSD: adm1021.c,v 1.27 2007/06/24 05:34:35 dlg Exp $ */ /* @@ -38,7 +38,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: adm1021.c,v 1.27 2021/01/30 01:22:06 thorpej Exp $"); +__KERNEL_RCSID(0, "$NetBSD: adm1021.c,v 1.28 2021/06/15 04:41:01 mlelstv Exp $"); #include <sys/param.h> #include <sys/systm.h> @@ -344,7 +344,11 @@ admtemp_attach(device_t parent, device_t self, void *aux) sc->sc_prop = ia->ia_prop; prop_object_retain(sc->sc_prop); - iic_acquire_bus(sc->sc_tag, 0); + if (iic_acquire_bus(sc->sc_tag, 0)) { + aprint_error_dev(self, "cannot acquire iic bus\n"); + return; + } + cmd = ADM1021_CONFIG_READ; if (admtemp_exec(sc, I2C_OP_READ_WITH_STOP, &cmd, &data) != 0) { iic_release_bus(sc->sc_tag, 0); @@ -466,10 +470,8 @@ admtemp_refresh(struct sysmon_envsys *sme, envsys_data_t *edata) uint8_t cmd, xdata; int8_t sdata; - if (iic_acquire_bus(sc->sc_tag, 0)) { - edata->state = ENVSYS_SINVALID; + if (iic_acquire_bus(sc->sc_tag, 0) != 0) return; - } if (edata->sensor == ADMTEMP_INT) cmd = ADM1021_INT_TEMP; diff --git a/sys/dev/i2c/dstemp.c b/sys/dev/i2c/dstemp.c index 7d8423d9447..10734da8f9d 100644 --- a/sys/dev/i2c/dstemp.c +++ b/sys/dev/i2c/dstemp.c @@ -1,4 +1,4 @@ -/* $NetBSD: dstemp.c,v 1.12 2021/03/01 04:39:45 rin Exp $ */ +/* $NetBSD: dstemp.c,v 1.13 2021/06/15 04:41:01 mlelstv Exp $ */ /*- * Copyright (c) 2018 Michael Lorenz @@ -27,7 +27,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: dstemp.c,v 1.12 2021/03/01 04:39:45 rin Exp $"); +__KERNEL_RCSID(0, "$NetBSD: dstemp.c,v 1.13 2021/06/15 04:41:01 mlelstv Exp $"); #include <sys/param.h> #include <sys/systm.h> @@ -145,7 +145,8 @@ dstemp_init(struct dstemp_softc *sc) int error; uint8_t cmd[2], data; - iic_acquire_bus(sc->sc_i2c, 0); + if (iic_acquire_bus(sc->sc_i2c, 0)) + return; cmd[0] = DSTEMP_CONFIG; data = 0; error = iic_exec(sc->sc_i2c, I2C_OP_READ_WITH_STOP, @@ -171,10 +172,12 @@ dstemp_sensors_refresh(struct sysmon_envsys *sme, envsys_data_t *edata) int error; - iic_acquire_bus(sc->sc_i2c, 0); - error = iic_exec(sc->sc_i2c, I2C_OP_READ_WITH_STOP, - sc->sc_addr, &cmd, 1, &data, 2, 0); - iic_release_bus(sc->sc_i2c, 0); + error = iic_acquire_bus(sc->sc_i2c, 0); + if (error == 0) { + error = iic_exec(sc->sc_i2c, I2C_OP_READ_WITH_STOP, + sc->sc_addr, &cmd, 1, &data, 2, 0); + iic_release_bus(sc->sc_i2c, 0); + } if (error) { edata->state = ENVSYS_SINVALID; |
