Module Name:    src
Committed By:   mlelstv
Date:           Tue Jun 15 04:41:01 UTC 2021

Modified Files:
        src/sys/dev/i2c: adm1021.c dstemp.c

Log Message:
iic_acquire_bus may fail.


To generate a diff of this commit:
cvs rdiff -u -r1.27 -r1.28 src/sys/dev/i2c/adm1021.c
cvs rdiff -u -r1.12 -r1.13 src/sys/dev/i2c/dstemp.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/dev/i2c/adm1021.c
diff -u src/sys/dev/i2c/adm1021.c:1.27 src/sys/dev/i2c/adm1021.c:1.28
--- src/sys/dev/i2c/adm1021.c:1.27	Sat Jan 30 01:22:06 2021
+++ src/sys/dev/i2c/adm1021.c	Tue Jun 15 04:41:01 2021
@@ -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
 	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 *sm
 	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;

Index: src/sys/dev/i2c/dstemp.c
diff -u src/sys/dev/i2c/dstemp.c:1.12 src/sys/dev/i2c/dstemp.c:1.13
--- src/sys/dev/i2c/dstemp.c:1.12	Mon Mar  1 04:39:45 2021
+++ src/sys/dev/i2c/dstemp.c	Tue Jun 15 04:41:01 2021
@@ -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_env
 	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;

Reply via email to