git: a74df3f96e3e - main - iicbb: Fix pause_sbt() arguments order

From: Alexander Motin <mav_at_FreeBSD.org>
Date: Sat, 23 Dec 2023 23:59:17 UTC
The branch main has been updated by mav:

URL: https://cgit.FreeBSD.org/src/commit/?id=a74df3f96e3ea4cc632088be870d9b0b0198859c

commit a74df3f96e3ea4cc632088be870d9b0b0198859c
Author:     Alexander Motin <mav@FreeBSD.org>
AuthorDate: 2023-12-23 23:52:17 +0000
Commit:     Alexander Motin <mav@FreeBSD.org>
CommitDate: 2023-12-23 23:58:51 +0000

    iicbb: Fix pause_sbt() arguments order
    
    It should make pause interval less strict.
    
    While there, add cpu_spinwait() into a tight spin wait loop to burn
    less power and let other SMT thread work more.
    
    MFC after:      1 month
---
 sys/dev/iicbus/iicbb.c | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/sys/dev/iicbus/iicbb.c b/sys/dev/iicbus/iicbb.c
index 3948d5d5a9f6..5d6ac48d4543 100644
--- a/sys/dev/iicbus/iicbb.c
+++ b/sys/dev/iicbus/iicbb.c
@@ -52,6 +52,7 @@
 #include <sys/bus.h>
 #include <sys/sysctl.h>
 #include <sys/uio.h>
+#include <machine/cpu.h>
 
 #ifdef FDT
 #include <dev/ofw/ofw_bus.h>
@@ -254,11 +255,12 @@ iicbb_waitforscl(device_t dev)
 	do {
 		if (I2C_GETSCL(dev))
 			return (0);
+		cpu_spinwait();
 		now = sbinuptime();
 	} while (now < fast_timeout);
 	do {
 		I2C_DEBUG(printf("."));
-		pause_sbt("iicbb-scl-low", SBT_1MS, C_PREL(8), 0);
+		pause_sbt("iicbb-scl-low", SBT_1MS, 0, C_PREL(2));
 		if (I2C_GETSCL(dev))
 			return (0);
 		now = sbinuptime();