From c7cfe0ba54bd280b8c4a5079bb2f6e19334f6dea Mon Sep 17 00:00:00 2001 From: Angel Pons Date: Wed, 23 Jun 2021 12:39:22 +0200 Subject: soc/intel: Refactor `xdci_can_enable()` function The same pattern appears on all `xdci_can_enable()` call sites. Move the logic inside the function and take the xDCI devfn as parameter. Change-Id: I94c24c10c7fc7c5b4938cffca17bdfb853c7bd59 Signed-off-by: Angel Pons Reviewed-on: https://review.coreboot.org/c/coreboot/+/55790 Tested-by: build bot (Jenkins) Reviewed-by: Subrata Banik Reviewed-by: Tim Wawrzynczak --- src/soc/intel/common/block/include/intelblocks/xdci.h | 2 +- src/soc/intel/common/block/xdci/xdci.c | 9 +++++++-- 2 files changed, 8 insertions(+), 3 deletions(-) (limited to 'src/soc/intel/common/block') diff --git a/src/soc/intel/common/block/include/intelblocks/xdci.h b/src/soc/intel/common/block/include/intelblocks/xdci.h index 4610590363..32d9212edb 100644 --- a/src/soc/intel/common/block/include/intelblocks/xdci.h +++ b/src/soc/intel/common/block/include/intelblocks/xdci.h @@ -4,6 +4,6 @@ #define SOC_INTEL_COMMON_BLOCK_XDCI_H void soc_xdci_init(struct device *dev); -int xdci_can_enable(void); +bool xdci_can_enable(unsigned int xdci_devfn); #endif /* SOC_INTEL_COMMON_BLOCK_XDCI_H */ diff --git a/src/soc/intel/common/block/xdci/xdci.c b/src/soc/intel/common/block/xdci/xdci.c index 9f15ac1d6e..e1d880975f 100644 --- a/src/soc/intel/common/block/xdci/xdci.c +++ b/src/soc/intel/common/block/xdci/xdci.c @@ -8,9 +8,14 @@ __weak void soc_xdci_init(struct device *dev) { /* no-op */ } -int xdci_can_enable(void) +bool xdci_can_enable(unsigned int xdci_devfn) { - return vboot_can_enable_udc(); + /* Enable xDCI controller if enabled in devicetree and allowed */ + if (!vboot_can_enable_udc()) { + devfn_disable(pci_root_bus(), xdci_devfn); + return false; + } + return is_devfn_enabled(xdci_devfn); } static struct device_operations usb_xdci_ops = { -- cgit v1.2.3