summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAaron Durbin <adurbin@chromium.org>2013-07-10 09:04:47 -0500
committerStefan Reinauer <stefan.reinauer@coreboot.org>2013-12-12 22:06:32 +0100
commit3641cb1d66e20f3d267a595945ec177c3715cdff (patch)
treedf0fcc0edb089bc176f6ed233ce0316e28c6c93c
parentc5aac958ae99bd556d077a49618e4a5daf0e65f3 (diff)
falco: drive WLAN_DISABLE_L low in S3 and S5
When the board is in S3 and S5 the WLAN_DISABLE_L signal can leak power into the WLAN power well since the GPIO controlling WLAN_DISABLE_L is in the suspend well. Therefore, drive WLAN_DISABLE_L low to avoid the power leak. Change-Id: I1a0df80dd47fdbd535aca7a9d49253794c480606 Signed-off-by: Aaron Durbin <adurbin@chromium.org> Reviewed-on: https://gerrit.chromium.org/gerrit/61421 Reviewed-on: http://review.coreboot.org/4358 Tested-by: build bot (Jenkins) Reviewed-by: Ronald G. Minnich <rminnich@gmail.com> Reviewed-by: Paul Menzel <paulepanter@users.sourceforge.net>
-rw-r--r--src/mainboard/google/falco/smihandler.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/src/mainboard/google/falco/smihandler.c b/src/mainboard/google/falco/smihandler.c
index 7b7dd69beb..52dd77654a 100644
--- a/src/mainboard/google/falco/smihandler.c
+++ b/src/mainboard/google/falco/smihandler.c
@@ -32,6 +32,9 @@
#include <ec/google/chromeec/ec.h>
#include "ec.h"
+/* GPIO46 controls the WLAN_DISABLE_L signal. */
+#define GPIO_WLAN_DISABLE_L 46
+
int mainboard_io_trap_handler(int smif)
{
switch (smif) {
@@ -98,6 +101,9 @@ void mainboard_smi_sleep(u8 slp_typ)
if (smm_get_gnvs()->s3u1 == 0)
google_chromeec_set_usb_charge_mode(
1, USB_CHARGE_MODE_DISABLED);
+
+ /* Prevent leak from standby rail to WLAN rail in S3. */
+ set_gpio(GPIO_WLAN_DISABLE_L, 0);
break;
case 5:
if (smm_get_gnvs()->s5u0 == 0)
@@ -106,6 +112,9 @@ void mainboard_smi_sleep(u8 slp_typ)
if (smm_get_gnvs()->s5u1 == 0)
google_chromeec_set_usb_charge_mode(
1, USB_CHARGE_MODE_DISABLED);
+
+ /* Prevent leak from standby rail to WLAN rail in S5. */
+ set_gpio(GPIO_WLAN_DISABLE_L, 0);
break;
}