aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThomas Skibo <thomas-bsd@skibo.net>2021-11-01 04:29:29 +0000
committerPhilip Paeps <philip@FreeBSD.org>2021-11-01 04:29:29 +0000
commit2a36909a94be110c34128319536c1c595635aa2e (patch)
tree00ba4291b7a1142f367537931021379d4ab59e16
parente528757ca6a9c03dca7e35b77411b311af166b7f (diff)
downloadsrc-2a36909a94be110c34128319536c1c595635aa2e.tar.gz
src-2a36909a94be110c34128319536c1c595635aa2e.zip
iicoc: fix repeated start
Reviewed by: jrtc27, philip MFC after: 3 days Differential Revision: https://reviews.freebsd.org/D32737
-rw-r--r--sys/dev/iicbus/iicoc.c27
1 files changed, 17 insertions, 10 deletions
diff --git a/sys/dev/iicbus/iicoc.c b/sys/dev/iicbus/iicoc.c
index e243e7128be7..f22878224c32 100644
--- a/sys/dev/iicbus/iicoc.c
+++ b/sys/dev/iicbus/iicoc.c
@@ -147,8 +147,8 @@ iicoc_init(device_t dev)
return ((value & OC_CONTROL_EN) == 0);
}
-int
-iicoc_iicbus_start(device_t dev, u_char slave, int timeout)
+static int
+iicoc_iicbus_start_common(device_t dev, u_char slave, int timeout, bool repeat)
{
int error = IIC_EBUSERR;
struct iicoc_softc *sc;
@@ -158,7 +158,7 @@ iicoc_iicbus_start(device_t dev, u_char slave, int timeout)
sc->i2cdev_addr = (slave >> 1);
/* Verify the bus is idle */
- if (iicoc_wait_on_status(dev, OC_STATUS_BUSY) < 0)
+ if (!repeat && iicoc_wait_on_status(dev, OC_STATUS_BUSY) < 0)
goto i2c_stx_error;
/* Write Slave Address */
@@ -187,6 +187,20 @@ i2c_stx_error:
}
int
+iicoc_iicbus_start(device_t dev, u_char slave, int timeout)
+{
+
+ return (iicoc_iicbus_start_common(dev, slave, timeout, false));
+}
+
+int
+iicoc_iicbus_repeated_start(device_t dev, u_char slave, int timeout)
+{
+
+ return (iicoc_iicbus_start_common(dev, slave, timeout, true));
+}
+
+int
iicoc_iicbus_stop(device_t dev)
{
int error = 0;
@@ -268,10 +282,3 @@ iicoc_iicbus_reset(device_t dev, u_char speed, u_char addr, u_char *oldadr)
mtx_unlock(&sc->sc_mtx);
return (error);
}
-
-int
-iicoc_iicbus_repeated_start(device_t dev, u_char slave, int timeout)
-{
-
- return 0;
-}