From 81d32b8106908470178096cde00097ff48b94d18 Mon Sep 17 00:00:00 2001 From: Shawn Nematbakhsh Date: Sat, 8 Oct 2016 09:45:52 -0700 Subject: [PATCH] power: rk3399: Use longer SYS_RST hold time on chipset reset BUG=chrome-os-partner:57990 BRANCH=gru TEST=On kevin, verify `apreset` and kernel panic cause successful AP reset. Change-Id: Ic5ad2fd2d2d08ae32a60314e30f4cdff061da164 Signed-off-by: Shawn Nematbakhsh Reviewed-on: https://chromium-review.googlesource.com/395533 Reviewed-by: Aseda Aboagye (cherry picked from commit 8fb0dedd8daebeca3757bc341d0a5355d3b26ba5) Reviewed-on: https://chromium-review.googlesource.com/396136 Commit-Ready: Shawn N Tested-by: Shawn N Reviewed-by: Shawn N --- power/rk3399.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/power/rk3399.c b/power/rk3399.c index 1b6916c06d..7aab83c2d0 100644 --- a/power/rk3399.c +++ b/power/rk3399.c @@ -58,6 +58,7 @@ void chipset_force_shutdown(void) task_wake(TASK_ID_CHIPSET); } +#define SYS_RST_HOLD_US (1 * MSEC) void chipset_reset(int cold_reset) { /* Print out the RTC to help correlate resets in logs. */ @@ -68,7 +69,10 @@ void chipset_reset(int cold_reset) /* Pulse SYS_RST */ gpio_set_level(GPIO_SYS_RST_L, 0); - udelay(90); + if (in_interrupt_context()) + udelay(SYS_RST_HOLD_US); + else + usleep(SYS_RST_HOLD_US); gpio_set_level(GPIO_SYS_RST_L, 1); }