diff options
author | Subrata Banik <subrata.banik@intel.com> | 2021-06-10 13:04:07 +0530 |
---|---|---|
committer | Subrata Banik <subrata.banik@intel.com> | 2021-06-17 06:48:45 +0000 |
commit | ed5c7ac03109c325151ed5ced779c93540418f72 (patch) | |
tree | 05f436b9b4409ddf51a0dfdad0a6caf68557098d /src | |
parent | 857c0cc332685d2401760c38d1f9c462088bae86 (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>
Diffstat (limited to 'src')
-rw-r--r-- | src/device/device.c | 7 | ||||
-rw-r--r-- | src/include/device/device.h | 2 |
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); |