[coreboot-gerrit] New patch to review for coreboot: 97ad549 device: convert to stopwatch API

Patrick Georgi (pgeorgi@google.com) gerrit at coreboot.org
Fri Mar 20 13:07:45 CET 2015


Patrick Georgi (pgeorgi at google.com) just uploaded a new patch set to gerrit, which you can find at http://review.coreboot.org/8817

-gerrit

commit 97ad549c445f77b14c0788ca1fe81a3269135e53
Author: Aaron Durbin <adurbin at chromium.org>
Date:   Tue Sep 23 16:34:40 2014 -0500

    device: convert to stopwatch API
    
    Instead of open coding the monotonic timers use the stopwatch
    abstraction.
    
    BUG=None
    BRANCH=None
    TEST=Booted and noted timings work as expected. Built with software_i2c
         and no compilation failures.
    
    Change-Id: Ie5ecdd5bc764c1ab8ba4a923e65a1666aacd22f7
    Signed-off-by: Patrick Georgi <pgeorgi at chromium.org>
    Original-Commit-Id: c7bffb5aeb41e9b88cd2c99edd6abc38f1dc90af
    Original-Change-Id: I0170fe4b93d9976957a2dcb00a6ea41ddc0320ce
    Original-Signed-off-by: Aaron Durbin <adurbin at chromium.org>
    Original-Reviewed-on: https://chromium-review.googlesource.com/219495
    Original-Reviewed-by: Julius Werner <jwerner at chromium.org>
---
 src/device/device.c       |  9 +++------
 src/device/software_i2c.c | 11 ++++++-----
 2 files changed, 9 insertions(+), 11 deletions(-)

diff --git a/src/device/device.c b/src/device/device.c
index 00e323a..b3b8d24 100644
--- a/src/device/device.c
+++ b/src/device/device.c
@@ -1139,10 +1139,8 @@ static void init_dev(struct device *dev)
 
 	if (!dev->initialized && dev->ops && dev->ops->init) {
 #if CONFIG_HAVE_MONOTONIC_TIMER
-		struct mono_time start_time;
-		struct rela_time dev_init_time;
-
-		timer_monotonic_get(&start_time);
+		struct stopwatch sw;
+		stopwatch_init(&sw);
 #endif
 		if (dev->path.type == DEVICE_PATH_I2C) {
 			printk(BIOS_DEBUG, "smbus: %s[%d]->",
@@ -1153,9 +1151,8 @@ static void init_dev(struct device *dev)
 		dev->initialized = 1;
 		dev->ops->init(dev);
 #if CONFIG_HAVE_MONOTONIC_TIMER
-		dev_init_time = current_time_from(&start_time);
 		printk(BIOS_DEBUG, "%s init %ld usecs\n", dev_path(dev),
-		       rela_time_in_microseconds(&dev_init_time));
+			stopwatch_duration_usecs(&sw));
 #endif
 	}
 }
diff --git a/src/device/software_i2c.c b/src/device/software_i2c.c
index 6c9c200..518aa5f 100644
--- a/src/device/software_i2c.c
+++ b/src/device/software_i2c.c
@@ -44,20 +44,21 @@ static int __wait(unsigned bus, int timeout_us, int for_scl)
 	int us;
 	int sda = software_i2c[bus]->get_sda(bus);
 	int scl = software_i2c[bus]->get_scl(bus);
-	struct mono_time start;
-	timer_monotonic_get(&start);
+	struct stopwatch sw;
+
+	stopwatch_init_usecs_expire(&sw, timeout_us);
 
 	do {
 		int old_sda = sda;
 		int old_scl = scl;
-		struct rela_time diff = current_time_from(&start);
-		us = rela_time_in_microseconds(&diff);
+
+		us = stopwatch_duration_usecs(&sw);
 
 		if (old_sda != (sda = software_i2c[bus]->get_sda(bus)))
 			spew("[SDA transitioned to %d after %dus] ", sda, us);
 		if (old_scl != (scl = software_i2c[bus]->get_scl(bus)))
 			spew("[SCL transitioned to %d after %dus] ", scl, us);
-	} while (us < timeout_us && (!for_scl || !scl));
+	} while (!stopwatch_expired(&sw) && (!for_scl || !scl));
 
 	return scl;
 }



More information about the coreboot-gerrit mailing list