summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Hendricks <dhendrix@chromium.org>2016-08-17 14:20:21 -0700
committerchrome-bot <chrome-bot@chromium.org>2016-08-24 17:41:09 -0700
commit9342bb62d7fbc0d507d57a67cd324bab2ef6f2ae (patch)
treed1bbee0143be55184ecb4be142ab12dbe439428f
parent862644b9bb53013bf947d5b25f2ebbc942159517 (diff)
downloadchrome-ec-9342bb62d7fbc0d507d57a67cd324bab2ef6f2ae.tar.gz
reef: Enable PMIC after 3.3V
This changes the ordering of rail/PMIC init slightly so that the 3.3V rail comes up before the PMIC, which follows the ordering in the PMIC datasheet for cold booting. The way we did it earlier was to avoid interrupt storms caused by powering the SoC's GPIO block with SLP signals before powering the PMIC. However the PMIC ignores the SLP signals when it's first enabled, so while the suprious interrupts were visible on the scope it's unlikely that the software was affected. OTOH, as Kevin pointed out in CL:358913 enabling the PMIC before the 3.3V causes a race condition whereby the PMIC may fault. BUG=chrome-os-partner:51323 BRANCH=none TEST=built and booted on EVT Signed-off-by: Rachel Nancollas <rachelsn@chromium.org> Signed-off-by: David Hendricks <dhendrix@chromium.org> Change-Id: I6eb734f0600daa5de0d970ce228cf3e7ec97d01d Reviewed-on: https://chromium-review.googlesource.com/372344 Commit-Ready: David Hendricks <dhendrix@chromium.org> Tested-by: David Hendricks <dhendrix@chromium.org> Reviewed-by: Kevin K Wong <kevin.k.wong@intel.com> Reviewed-by: Shawn N <shawnn@chromium.org>
-rw-r--r--board/reef/board.c7
1 files changed, 3 insertions, 4 deletions
diff --git a/board/reef/board.c b/board/reef/board.c
index ce77746533..bb0aa55df9 100644
--- a/board/reef/board.c
+++ b/board/reef/board.c
@@ -375,14 +375,13 @@ static void chipset_pre_init(void)
* To prevent SLP glitches, PMIC_EN (V5A_EN) should be enabled
* at the same time as PP3300 (chrome-os-partner:51323).
*/
-
- /* Enable PMIC */
- gpio_set_level(GPIO_PMIC_EN, 1);
-
/* Enable 3.3V rail */
gpio_set_level(GPIO_EN_PP3300, 1);
while (!gpio_get_level(GPIO_PP3300_PG))
;
+
+ /* Enable PMIC */
+ gpio_set_level(GPIO_PMIC_EN, 1);
#endif
}
DECLARE_HOOK(HOOK_CHIPSET_PRE_INIT, chipset_pre_init, HOOK_PRIO_DEFAULT);