watchdog: sprd: change to use usleep_range() instead of busy loop
authorChunyan Zhang <chunyan.zhang@unisoc.com>
Mon, 9 Nov 2020 03:00:55 +0000 (11:00 +0800)
committerWim Van Sebroeck <wim@linux-watchdog.org>
Sun, 13 Dec 2020 15:17:39 +0000 (16:17 +0100)
commit2a6c9c65b2fe1023f8bec543d3c70a107fd8b9fb
tree120a8276432f0b60d74fa1eb2afb8f6bb2175c5e
parent3e07d240939803bed9feb2a353d94686a411a7ca
watchdog: sprd: change to use usleep_range() instead of busy loop

After changing to check busy bit for the previous loading operation instead
of the current one, for most of cases, the busy bit is not set for the
first time of read, so there's no need to check so frequently, so this
patch use usleep_range() to replace cpu_relax() to avoid busy loop.

Also this patch change the max times to 11 which would be enough, since
according to the specification, the busy bit would be set after a new
loading operation and last 2 or 3 RTC clock cycles (about 60us~92us).

Fixes: 477603467009 ("watchdog: Add Spreadtrum watchdog driver")
Original-by: Lingling Xu <ling_ling.xu@unisoc.com>
Signed-off-by: Chunyan Zhang <chunyan.zhang@unisoc.com>
Reviewed-by: Guenter Roeck <linux@roeck-us.net>
Link: https://lore.kernel.org/r/20201029023933.24548-4-zhang.lyra@gmail.com
Signed-off-by: Guenter Roeck <linux@roeck-us.net>
Signed-off-by: Wim Van Sebroeck <wim@linux-watchdog.org>
drivers/watchdog/sprd_wdt.c