diff options
| author | mlelstv <mlelstv@NetBSD.org> | 2021-06-13 09:48:04 +0000 |
|---|---|---|
| committer | mlelstv <mlelstv@NetBSD.org> | 2021-06-13 09:48:04 +0000 |
| commit | 4febe4741fddb19b3a50a7e4f5d8d8cded135d0b (patch) | |
| tree | ca7aa2007b07626d70171ae8fdee6ae7a04e68c2 /sys/dev | |
| parent | ac9b8f24526d8fe3a6c9538a97af6cee85ebac75 (diff) | |
iic_acquire_bus can fail
Diffstat (limited to 'sys/dev')
| -rw-r--r-- | sys/dev/i2c/lm_i2c.c | 10 | ||||
| -rw-r--r-- | sys/dev/i2c/spdmem_i2c.c | 12 |
2 files changed, 14 insertions, 8 deletions
diff --git a/sys/dev/i2c/lm_i2c.c b/sys/dev/i2c/lm_i2c.c index b651363d41b..dbbe0a7e77e 100644 --- a/sys/dev/i2c/lm_i2c.c +++ b/sys/dev/i2c/lm_i2c.c @@ -1,4 +1,4 @@ -/* $NetBSD: lm_i2c.c,v 1.6 2020/06/24 19:11:49 jdolecek Exp $ */ +/* $NetBSD: lm_i2c.c,v 1.7 2021/06/13 09:48:44 mlelstv Exp $ */ /*- * Copyright (c) 2000 The NetBSD Foundation, Inc. @@ -30,7 +30,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: lm_i2c.c,v 1.6 2020/06/24 19:11:49 jdolecek Exp $"); +__KERNEL_RCSID(0, "$NetBSD: lm_i2c.c,v 1.7 2021/06/13 09:48:44 mlelstv Exp $"); #include <sys/param.h> #include <sys/systm.h> @@ -119,7 +119,8 @@ lm_i2c_readreg(struct lm_softc *lmsc, int reg) struct lm_i2c_softc *sc = (struct lm_i2c_softc *)lmsc; uint8_t cmd, data; - iic_acquire_bus(sc->sc_tag, 0); + if (iic_acquire_bus(sc->sc_tag, 0)) + return 0; cmd = reg; iic_exec(sc->sc_tag, I2C_OP_READ_WITH_STOP, @@ -137,7 +138,8 @@ lm_i2c_writereg(struct lm_softc *lmsc, int reg, uint8_t val) struct lm_i2c_softc *sc = (struct lm_i2c_softc *)lmsc; uint8_t cmd, data; - iic_acquire_bus(sc->sc_tag, 0); + if (iic_acquire_bus(sc->sc_tag, 0)) + return; cmd = reg; data = val; diff --git a/sys/dev/i2c/spdmem_i2c.c b/sys/dev/i2c/spdmem_i2c.c index 0e53cd86b24..1b191181b69 100644 --- a/sys/dev/i2c/spdmem_i2c.c +++ b/sys/dev/i2c/spdmem_i2c.c @@ -1,4 +1,4 @@ -/* $NetBSD: spdmem_i2c.c,v 1.21 2021/01/27 02:29:48 thorpej Exp $ */ +/* $NetBSD: spdmem_i2c.c,v 1.22 2021/06/13 09:48:04 mlelstv Exp $ */ /* * Copyright (c) 2007 Nicolas Joly @@ -40,7 +40,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: spdmem_i2c.c,v 1.21 2021/01/27 02:29:48 thorpej Exp $"); +__KERNEL_RCSID(0, "$NetBSD: spdmem_i2c.c,v 1.22 2021/06/13 09:48:04 mlelstv Exp $"); #include <sys/param.h> #include <sys/device.h> @@ -107,7 +107,9 @@ spdmem_reset_page(struct spdmem_i2c_softc *sc) reg = 0; - iic_acquire_bus(sc->sc_tag, 0); + rv = iic_acquire_bus(sc->sc_tag, 0); + if (rv) + return rv; /* * Try to read byte 0 and 2. If it failed, it's not spdmem or a device @@ -265,7 +267,9 @@ spdmem_i2c_read(struct spdmem_softc *softc, uint16_t addr, uint8_t *val) reg = addr & 0xff; - iic_acquire_bus(sc->sc_tag, 0); + rv = iic_acquire_bus(sc->sc_tag, 0); + if (rv) + return rv; if (addr & 0x100) { rv = iic_exec(sc->sc_tag, I2C_OP_WRITE_WITH_STOP, sc->sc_page1, |
