Module Name: src Committed By: jmcneill Date: Sun Jan 11 14:59:13 UTC 2015
Modified Files: src/sys/arch/arm/rockchip: rockchip_i2c.c Log Message: rkiic_wait: fix non-polled mode To generate a diff of this commit: cvs rdiff -u -r1.5 -r1.6 src/sys/arch/arm/rockchip/rockchip_i2c.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/arch/arm/rockchip/rockchip_i2c.c diff -u src/sys/arch/arm/rockchip/rockchip_i2c.c:1.5 src/sys/arch/arm/rockchip/rockchip_i2c.c:1.6 --- src/sys/arch/arm/rockchip/rockchip_i2c.c:1.5 Thu Jan 1 22:15:40 2015 +++ src/sys/arch/arm/rockchip/rockchip_i2c.c Sun Jan 11 14:59:13 2015 @@ -1,4 +1,4 @@ -/* $NetBSD: rockchip_i2c.c,v 1.5 2015/01/01 22:15:40 jmcneill Exp $ */ +/* $NetBSD: rockchip_i2c.c,v 1.6 2015/01/11 14:59:13 jmcneill Exp $ */ /*- * Copyright (c) 2014 Jared D. McNeill <jmcne...@invisible.ca> @@ -30,7 +30,7 @@ #include "opt_rkiic.h" #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: rockchip_i2c.c,v 1.5 2015/01/01 22:15:40 jmcneill Exp $"); +__KERNEL_RCSID(0, "$NetBSD: rockchip_i2c.c,v 1.6 2015/01/11 14:59:13 jmcneill Exp $"); #include <sys/param.h> #include <sys/bus.h> @@ -319,16 +319,21 @@ rkiic_wait(struct rkiic_softc *sc, uint3 retry = timeout / hz; while (retry > 0) { error = cv_timedwait(&sc->sc_cv, &sc->sc_lock, hz); - if (error && error != EWOULDBLOCK) - return error; + if (error) { + if (error != EWOULDBLOCK) { + return error; + } else { + --retry; + } + } if (sc->sc_intr_ipd & mask) return 0; - --retry; } } #ifdef RKIIC_DEBUG - device_printf(sc->sc_dev, "%s: ipd %#x\n", __func__, sc->sc_intr_ipd); + device_printf(sc->sc_dev, "%s: ipd %#x flags %#x\n", __func__, + sc->sc_intr_ipd, flags); #endif return ETIMEDOUT; }