diff options
author | Duncan Laurie <dlaurie@google.com> | 2018-11-17 12:17:04 -0700 |
---|---|---|
committer | Patrick Georgi <pgeorgi@google.com> | 2018-12-04 10:17:50 +0000 |
commit | 57f22f6ffe598c3886b604eae5a46f8b584c0470 (patch) | |
tree | 2842ac44752f234e04cfcfe28b183b207e4a1eca | |
parent | f6ce6030b9f895ef2b1a0bf8a0dc539b5237e1fe (diff) | |
download | coreboot-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.c | 3 | ||||
-rw-r--r-- | src/ec/google/wilco/commands.c | 9 | ||||
-rw-r--r-- | src/ec/google/wilco/commands.h | 14 |
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 */ |