summaryrefslogtreecommitdiff
path: root/src/soc/intel
diff options
context:
space:
mode:
authorDuncan Laurie <dlaurie@chromium.org>2018-03-26 02:19:58 -0700
committerPatrick Georgi <pgeorgi@google.com>2018-03-28 06:43:40 +0000
commit4c8fbc065874d352b2215739bae0e0ae8a04757e (patch)
tree973d1907075af5c7c211672292767617c036e061 /src/soc/intel
parent4df7d2c4953822c33be77e20e2ceff896e4a65c5 (diff)
downloadcoreboot-4c8fbc065874d352b2215739bae0e0ae8a04757e.tar.xz
soc/intel/apollolake: Limit xDCI feature when VBOOT is enabled
Use the common xDCI function to check if the controller is allowed in the current mode before enabling it. Otherwise, disable the PCI device if it has been enabled in devicetree. Change-Id: I5aea15511c52d1191babf551feb237f4144683e4 Signed-off-by: Duncan Laurie <dlaurie@chromium.org> Reviewed-on: https://review.coreboot.org/25364 Tested-by: build bot (Jenkins) <no-reply@coreboot.org> Reviewed-by: Furquan Shaikh <furquan@google.com> Reviewed-by: Aaron Durbin <adurbin@chromium.org>
Diffstat (limited to 'src/soc/intel')
-rw-r--r--src/soc/intel/apollolake/chip.c7
-rw-r--r--src/soc/intel/apollolake/xdci.c2
2 files changed, 8 insertions, 1 deletions
diff --git a/src/soc/intel/apollolake/chip.c b/src/soc/intel/apollolake/chip.c
index cac2f1134b..1dd6daf16c 100644
--- a/src/soc/intel/apollolake/chip.c
+++ b/src/soc/intel/apollolake/chip.c
@@ -30,6 +30,7 @@
#include <intelblocks/fast_spi.h>
#include <intelblocks/p2sb.h>
#include <intelblocks/msr.h>
+#include <intelblocks/xdci.h>
#include <fsp/api.h>
#include <fsp/util.h>
#include <intelblocks/cpulib.h>
@@ -585,6 +586,12 @@ void platform_fsp_silicon_init_params_cb(FSPS_UPD *silupd)
glk_fsp_silicon_init_params_cb(cfg, silconfig);
else
apl_fsp_silicon_init_params_cb(cfg, silconfig);
+
+ /* Enable xDCI controller if enabled in devicetree and allowed */
+ dev = dev_find_slot(0, PCH_DEVFN_XDCI);
+ if (!xdci_can_enable())
+ dev->enabled = 0;
+ silconfig->UsbOtg = dev->enabled;
}
struct chip_operations soc_intel_apollolake_ops = {
diff --git a/src/soc/intel/apollolake/xdci.c b/src/soc/intel/apollolake/xdci.c
index 4c3047c41b..07207b3bbb 100644
--- a/src/soc/intel/apollolake/xdci.c
+++ b/src/soc/intel/apollolake/xdci.c
@@ -54,7 +54,7 @@ static void configure_host_mode_port0(struct device *dev)
* enabled. If it's disabled assume the switch was already done
* in FSP.
*/
- if (!dev->enabled || !xdci_dev->enabled)
+ if (!dev->enabled || !xdci_dev->enabled || !xdci_can_enable())
return;
printk(BIOS_INFO, "Putting port 0 into host mode.\n");