summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSubrata Banik <subrata.banik@intel.com>2021-06-10 13:04:07 +0530
committerSubrata Banik <subrata.banik@intel.com>2021-06-17 06:48:45 +0000
commited5c7ac03109c325151ed5ced779c93540418f72 (patch)
tree05f436b9b4409ddf51a0dfdad0a6caf68557098d
parent857c0cc332685d2401760c38d1f9c462088bae86 (diff)
device: Add helper function devfn_disable()
devfn_disable() function is used to disable a device based on given bus, device function number. This function checks if the device is at enable state and disables the device. Change-Id: Ia4a8bfec7fc95c729a5bb156f88e9aab3bf5dd41 Signed-off-by: Subrata Banik <subrata.banik@intel.com> Reviewed-on: https://review.coreboot.org/c/coreboot/+/55354 Tested-by: build bot (Jenkins) <no-reply@coreboot.org> Reviewed-by: Tim Wawrzynczak <twawrzynczak@chromium.org>
-rw-r--r--src/device/device.c7
-rw-r--r--src/include/device/device.h2
2 files changed, 9 insertions, 0 deletions
diff --git a/src/device/device.c b/src/device/device.c
index bf97997f55..8337d55300 100644
--- a/src/device/device.c
+++ b/src/device/device.c
@@ -21,6 +21,13 @@
extern struct device *last_dev;
/** Linked list of free resources */
struct resource *free_resources = NULL;
+/* Disable a PCI device based on bus, device and function. */
+void devfn_disable(const struct bus *bus, unsigned int devfn)
+{
+ struct device *dev = pcidev_path_behind(bus, devfn);
+ if (dev)
+ dev->enabled = 0;
+}
/**
* Initialize all chips of statically known devices.
diff --git a/src/include/device/device.h b/src/include/device/device.h
index afa6a4090a..8f0650ffd4 100644
--- a/src/include/device/device.h
+++ b/src/include/device/device.h
@@ -178,6 +178,8 @@ void dev_initialize(void);
void dev_optimize(void);
void dev_finalize(void);
void dev_finalize_chips(void);
+/* Function used to override device state */
+void devfn_disable(const struct bus *bus, unsigned int devfn);
/* Generic device helper functions */
int reset_bus(struct bus *bus);