summaryrefslogtreecommitdiff
path: root/src/mainboard/google/octopus
diff options
context:
space:
mode:
authorKevin Chiu <Kevin.Chiu@quantatw.com>2020-10-24 01:36:00 +0800
committerPatrick Georgi <pgeorgi@google.com>2020-10-27 16:35:24 +0000
commit5b511f98b5cd4ad03ae05fbcf5c1bdb665918cec (patch)
tree8ce9a5aa5b0840363a7bdd43e232891160bc1534 /src/mainboard/google/octopus
parentfd3dde3e33c470b29ff953e82ca68f404d766bec (diff)
mb/google/octopus/var/garg: Disable XHCI LFPS power management by sku
LTE module Fibocom L850-GL is lost after idle overnight, with this workaround, host will not initiate U3 wakeup at the same time with device, which will avoid the race condition. If this option is set in the devicetree, the bits[7:4] in XHCI MMIO BAR + offset 0x80A4 (PMCTRL_REG) will be updated from default 9 to 0. BUG=b:171478764 BRANCH=octopus TEST=build coreboot with DisableXhciLfpsPM being set to 1 and flash the image to the device. Run following command to check if bits[7:4] is set 0: >iotools mmio_read32 "XHCI MMIO BAR + 0x80A4" Change-Id: I213fed2b56f216747b2727b69f97d46d8c0c872e Signed-off-by: Kevin Chiu <kevin.chiu@quantatw.com> Reviewed-on: https://review.coreboot.org/c/coreboot/+/46701 Reviewed-by: Marco Chen <marcochen@google.com> Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Diffstat (limited to 'src/mainboard/google/octopus')
-rw-r--r--src/mainboard/google/octopus/variants/garg/overridetree.cb1
-rw-r--r--src/mainboard/google/octopus/variants/garg/variant.c19
2 files changed, 20 insertions, 0 deletions
diff --git a/src/mainboard/google/octopus/variants/garg/overridetree.cb b/src/mainboard/google/octopus/variants/garg/overridetree.cb
index f3c580d2c0..971d0d8b7c 100644
--- a/src/mainboard/google/octopus/variants/garg/overridetree.cb
+++ b/src/mainboard/google/octopus/variants/garg/overridetree.cb
@@ -192,4 +192,5 @@ chip soc/intel/apollolake
# Disable compliance mode
register "DisableComplianceMode" = "1"
+ register "disable_xhci_lfps_pm" = "0"
end
diff --git a/src/mainboard/google/octopus/variants/garg/variant.c b/src/mainboard/google/octopus/variants/garg/variant.c
index 7c84f2696b..0a6574d1a6 100644
--- a/src/mainboard/google/octopus/variants/garg/variant.c
+++ b/src/mainboard/google/octopus/variants/garg/variant.c
@@ -8,6 +8,7 @@
#include <delay.h>
#include <gpio.h>
#include <variant/sku.h>
+#include <soc/intel/apollolake/chip.h>
const char *mainboard_vbt_filename(void)
{
@@ -42,3 +43,21 @@ void variant_smi_sleep(u8 slp_typ)
return;
}
}
+
+void variant_update_devtree(struct device *dev)
+{
+ struct soc_intel_apollolake_config *cfg = NULL;
+
+ cfg = (struct soc_intel_apollolake_config *)dev->chip_info;
+
+ if (cfg != NULL && (cfg->disable_xhci_lfps_pm != 1)) {
+ switch (google_chromeec_get_board_sku()) {
+ case SKU_17_LTE:
+ case SKU_18_LTE_TS:
+ cfg->disable_xhci_lfps_pm = 1;
+ return;
+ default:
+ return;
+ }
+ }
+}