Message ID | 1411400934-7754-3-git-send-email-sjg@chromium.org |
---|---|
State | Superseded |
Delegated to: | Simon Glass |
Headers | show |
On Mon, Sep 22, 2014 at 09:48:42AM -0600, Simon Glass wrote: > We have moved the busy-wait loop out of drivers and into the uclass. This > means that we must reset the watchdog when busy-waiting. > > Note: some drivers may still have a busy-wait even with driver model, as > a transition mechanism. Driver model will tolerate this, and is can be > cleaned up when all users of the driver use driver model. An example is > ns16550. > > Signed-off-by: Simon Glass <sjg@chromium.org> Reviewed-by: Tom Rini <trini@ti.com>
diff --git a/drivers/serial/serial-uclass.c b/drivers/serial/serial-uclass.c index e93c624..aeaf2d2 100644 --- a/drivers/serial/serial-uclass.c +++ b/drivers/serial/serial-uclass.c @@ -11,9 +11,12 @@ #include <os.h> #include <serial.h> #include <stdio_dev.h> +#include <watchdog.h> #include <dm/lists.h> #include <dm/device-internal.h> +#include <ns16550.h> + DECLARE_GLOBAL_DATA_PTR; /* The currently-selected console serial device */ @@ -119,6 +122,8 @@ static int serial_getc_dev(struct udevice *dev) do { err = ops->getc(dev); + if (err == -EAGAIN) + WATCHDOG_RESET(); } while (err == -EAGAIN); return err >= 0 ? err : 0;
We have moved the busy-wait loop out of drivers and into the uclass. This means that we must reset the watchdog when busy-waiting. Note: some drivers may still have a busy-wait even with driver model, as a transition mechanism. Driver model will tolerate this, and is can be cleaned up when all users of the driver use driver model. An example is ns16550. Signed-off-by: Simon Glass <sjg@chromium.org> --- drivers/serial/serial-uclass.c | 5 +++++ 1 file changed, 5 insertions(+)