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>
This commit is contained in:
parent
471f2eefdd
commit
b10cbd0d08
|
@ -193,22 +193,19 @@ int spi_flash_cmd_poll_bit(const struct spi_flash *flash, unsigned long timeout,
|
|||
const struct spi_slave *spi = &flash->spi;
|
||||
int ret;
|
||||
u8 status;
|
||||
struct mono_time current, end;
|
||||
|
||||
timer_monotonic_get(¤t);
|
||||
end = current;
|
||||
mono_time_add_msecs(&end, timeout);
|
||||
struct stopwatch sw;
|
||||
|
||||
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_WARNING, "SF: timeout at %ld msec\n", stopwatch_duration_msecs(&sw));
|
||||
|
||||
printk(BIOS_DEBUG, "SF: timeout at %ld msec\n",timeout);
|
||||
return -1;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue