Felix Held has submitted this change. ( https://review.coreboot.org/c/coreboot/+/63939 )
Change subject: drivers/spi: Convert spi_flash_cmd_poll_bit to use stopwatch API ......................................................................
drivers/spi: Convert spi_flash_cmd_poll_bit to use stopwatch API
The previous code required a bit too much effort to read. It also didn't print out the actual duration.
BUG=b:228289365 TEST=Boot guybrush
Signed-off-by: Raul E Rangel rrangel@chromium.org Change-Id: Ia620e789c5186f2e1d3cf3c548bda00a294d23bf Reviewed-on: https://review.coreboot.org/c/coreboot/+/63939 Tested-by: build bot (Jenkins) no-reply@coreboot.org Reviewed-by: Rob Barnes robbarnes@google.com Reviewed-by: Felix Held felix-coreboot@felixheld.de --- M src/drivers/spi/spi_flash.c 1 file changed, 5 insertions(+), 8 deletions(-)
Approvals: build bot (Jenkins): Verified Felix Held: Looks good to me, but someone else must approve Rob Barnes: Looks good to me, approved
diff --git a/src/drivers/spi/spi_flash.c b/src/drivers/spi/spi_flash.c index ded88ed..0142fad 100644 --- a/src/drivers/spi/spi_flash.c +++ b/src/drivers/spi/spi_flash.c @@ -193,22 +193,19 @@ const struct spi_slave *spi = &flash->spi; int ret; u8 status; - struct mono_time current, end; + struct stopwatch sw;
- timer_monotonic_get(¤t); - end = current; - mono_time_add_msecs(&end, timeout); - + stopwatch_init_msecs_expire(&sw, timeout); do { ret = do_spi_flash_cmd(spi, &cmd, 1, &status, 1); if (ret) return -1; if ((status & poll_bit) == 0) return 0; - timer_monotonic_get(¤t); - } while (!mono_time_after(¤t, &end)); + } while (!stopwatch_expired(&sw));
- printk(BIOS_DEBUG, "SF: timeout at %ld msec\n",timeout); + printk(BIOS_WARNING, "SF: timeout at %ld msec\n", stopwatch_duration_msecs(&sw)); + return -1; }