summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDuncan Laurie <dlaurie@google.com>2018-11-17 12:17:04 -0700
committerPatrick Georgi <pgeorgi@google.com>2018-12-04 10:17:50 +0000
commit57f22f6ffe598c3886b604eae5a46f8b584c0470 (patch)
tree2842ac44752f234e04cfcfe28b183b207e4a1eca
parentf6ce6030b9f895ef2b1a0bf8a0dc539b5237e1fe (diff)
downloadcoreboot-57f22f6ffe598c3886b604eae5a46f8b584c0470.tar.xz
ec/google/wilco: Enable WiFi radio
Add EC command to enable WiFi radio and send that command at startup. Tested to ensure WiFi is functional on a sarien board. Change-Id: Iac46895c7118567e1eb55ea33051a1662103b563 Signed-off-by: Duncan Laurie <dlaurie@google.com> Reviewed-on: https://review.coreboot.org/c/29673 Reviewed-by: Furquan Shaikh <furquan@google.com> Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
-rw-r--r--src/ec/google/wilco/chip.c3
-rw-r--r--src/ec/google/wilco/commands.c9
-rw-r--r--src/ec/google/wilco/commands.h14
3 files changed, 26 insertions, 0 deletions
diff --git a/src/ec/google/wilco/chip.c b/src/ec/google/wilco/chip.c
index 0cd0048f67..e1f468d71c 100644
--- a/src/ec/google/wilco/chip.c
+++ b/src/ec/google/wilco/chip.c
@@ -66,6 +66,9 @@ static void wilco_ec_init(struct device *dev)
/* Unmute speakers */
wilco_ec_send(KB_HW_MUTE_CONTROL, AUDIO_UNMUTE_125MS);
+
+ /* Enable WiFi radio */
+ wilco_ec_radio_control(RADIO_WIFI, 1);
}
static void wilco_ec_resource(struct device *dev, int index,
diff --git a/src/ec/google/wilco/commands.c b/src/ec/google/wilco/commands.c
index 1767a01aee..c42699d28c 100644
--- a/src/ec/google/wilco/commands.c
+++ b/src/ec/google/wilco/commands.c
@@ -149,3 +149,12 @@ void wilco_ec_power_off(enum ec_power_off_reason reason)
KB_POWER_OFF, &reason, 1, NULL, 0) < 0)
printk(BIOS_ERR, "%s: command failed\n", __func__);
}
+
+int wilco_ec_radio_control(enum ec_radio radio, uint8_t state)
+{
+ uint8_t radio_control[3] = { 0, radio, state };
+
+ return wilco_ec_mailbox(WILCO_EC_MSG_DEFAULT, KB_RADIO_CONTROL,
+ radio_control, ARRAY_SIZE(radio_control),
+ NULL, 0);
+}
diff --git a/src/ec/google/wilco/commands.h b/src/ec/google/wilco/commands.h
index 4a19030216..0989b202d7 100644
--- a/src/ec/google/wilco/commands.h
+++ b/src/ec/google/wilco/commands.h
@@ -26,6 +26,8 @@ enum {
KB_POWER_STATUS = 0x05,
/* Inform the EC aboout the reason host is turning off */
KB_POWER_OFF = 0x08,
+ /* Control wireless radios */
+ KB_RADIO_CONTROL = 0x2b,
/* Save PS/2 data before S3 suspend */
KB_SAVE = 0x2f,
/* Restore PS/2 data after S3 resume */
@@ -61,6 +63,18 @@ enum ec_audio_mute {
AUDIO_UNMUTE_125MS, /* Unmute in 125ms */
};
+enum ec_radio {
+ RADIO_WIFI = 0x02,
+};
+
+/**
+ * wilco_ec_radio_control() - Control wireless radios.
+ * @ec_radio: Wireless radio type.
+ * @state: Turn radio on or off.
+ * Return: 0 if successful or negative error code on failure.
+ */
+int wilco_ec_radio_control(enum ec_radio radio, uint8_t state);
+
/*
* EC Information
*/