summaryrefslogtreecommitdiff
path: root/board/falco
diff options
context:
space:
mode:
authorDuncan Laurie <dlaurie@chromium.org>2013-05-31 09:41:21 -0700
committerChromeBot <chrome-bot@google.com>2013-06-03 14:32:07 -0700
commitd6d3b7cbc5621519d54d231aba13aa4ab50651aa (patch)
tree53cfcb6b51131184a2a7a5eea2b645a52af34f31 /board/falco
parentf8e12df9dfb8d028cee1e9a039c4cbcebc608385 (diff)
downloadchrome-ec-d6d3b7cbc5621519d54d231aba13aa4ab50651aa.tar.gz
Add wireless switch control for WWAN
Haswell devices have EC control of the WWAN power rail. Expose a new wireless switch enable flag for this under the existing wirless enable command. This change also abstracts the wireless enable function to call a per-board handler so the different boards can do the right thing based on their GPIO setup. The haswell boards will switch WLAN radio and WWAN power rails based on the switch inputs. These boards do not have EC control of bluetooth radio/rail power. WLAN (power and radio) still defaults to enabled. Disabling with ectool will turn off the radio but keep the power enabled in order to prevent the PCIe device from disappearing. WWAN (power) still defaults to disabled. Disabling with ectool will turn off the power rail. BUG=chrome-os-partner:19871 BRANCH=none TEST=manual: boot on slippy DEFAULT: > ectool gpioget pp3300_wlan_en GPIO pp3300_wlan_en = 1 > ectool gpioget wlan_off_l GPIO wlan_off_l = 1 > ectool gpioget pp3300_lte_en GPIO pp3300_lte_en = 0 ENABLE WWAN: > ectool wireless 0x7 Success. > ectool gpioget pp3300_lte_en GPIO pp3300_lte_en = 1 DISABLE WLAN (radio): > ectool wireless 0x7 Success. > ectool gpioget pp3300_wlan_en GPIO pp3300_wlan_en = 1 > ectool gpioget wlan_off_l GPIO wlan_off_l = 0 Change-Id: I6f760b8cf5ab47d8f7f0dd8cd4d3e6563464043e Signed-off-by: Duncan Laurie <dlaurie@chromium.org> Reviewed-on: https://gerrit.chromium.org/gerrit/57215 Reviewed-by: Aaron Durbin <adurbin@chromium.org>
Diffstat (limited to 'board/falco')
-rw-r--r--board/falco/board.c15
-rw-r--r--board/falco/board.h4
2 files changed, 16 insertions, 3 deletions
diff --git a/board/falco/board.c b/board/falco/board.c
index 6e5da3b1a8..0aaadfde80 100644
--- a/board/falco/board.c
+++ b/board/falco/board.c
@@ -2,11 +2,13 @@
* Use of this source code is governed by a BSD-style license that can be
* found in the LICENSE file.
*/
-/* EC for Link board configuration */
+/* EC for Falco board configuration */
#include "adc.h"
+#include "board.h"
#include "chip_temp_sensor.h"
#include "common.h"
+#include "ec_commands.h"
#include "extpower.h"
#include "gpio.h"
#include "i2c.h"
@@ -166,3 +168,14 @@ void configure_fan_gpios(void)
/* PN2:3 alternate function 1 = channel 0 PWM/tach */
gpio_set_alternate_function(LM4_GPIO_N, 0x0c, 1);
}
+
+/**
+ * Set wireless switch state.
+ */
+void board_enable_wireless(uint8_t enabled)
+{
+ gpio_set_level(GPIO_WLAN_OFF_L,
+ enabled & EC_WIRELESS_SWITCH_WLAN);
+ gpio_set_level(GPIO_PP3300_LTE_EN,
+ enabled & EC_WIRELESS_SWITCH_WWAN);
+}
diff --git a/board/falco/board.h b/board/falco/board.h
index 53a83b0672..1bb1bcc0b9 100644
--- a/board/falco/board.h
+++ b/board/falco/board.h
@@ -98,12 +98,12 @@ enum gpio_signal {
GPIO_PP3300_DSW_GATED_EN, /* Enable DSW rails */
GPIO_PP3300_DX_EN, /* Enable power to lots of peripherals */
GPIO_PP3300_LTE_EN, /* Enable LTE radio */
- GPIO_PP3300_WLAN_EN, /* Enable WiFi radio */
+ GPIO_PP3300_WLAN_EN, /* Enable WiFi power */
GPIO_SUSP_VR_EN, /* Enable 1.05V regulator */
GPIO_VCORE_EN, /* Stuffing option - not connected */
GPIO_PP5000_EN, /* Enable 5V supply */
GPIO_SYS_PWROK, /* EC thinks everything is up and ready */
- GPIO_WLAN_OFF_L, /* Disable WiFi chip? Or just the radio? */
+ GPIO_WLAN_OFF_L, /* Disable WiFi radio */
GPIO_CHARGE_L, /* Allow battery to charge when on AC */
GPIO_ENABLE_BACKLIGHT, /* Enable backlight power */