arch/x86/acpi_device: Add a helper function to write PCI device
This change adds a helper function to write a PCI device with _ADR and _STA defined for it. BUG=b:153858769 Signed-off-by: Furquan Shaikh <furquan@google.com> Change-Id: I932af917d91198876fe8e90af9bb7a2531bd8960 Reviewed-on: https://review.coreboot.org/c/coreboot/+/40674 Reviewed-by: Aaron Durbin <adurbin@chromium.org> Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
This commit is contained in:
parent
ef0cb90ae3
commit
d1130af40e
|
@ -1,6 +1,7 @@
|
|||
/* SPDX-License-Identifier: GPL-2.0-only */
|
||||
/* This file is part of the coreboot project. */
|
||||
|
||||
#include <assert.h>
|
||||
#include <string.h>
|
||||
#include <arch/acpi.h>
|
||||
#include <arch/acpi_device.h>
|
||||
|
@ -927,3 +928,34 @@ struct acpi_dp *acpi_dp_add_gpio(struct acpi_dp *dp, const char *name,
|
|||
|
||||
return gpio;
|
||||
}
|
||||
|
||||
/*
|
||||
* This function writes a PCI device with _ADR object:
|
||||
* Example:
|
||||
* Scope (\_SB.PCI0)
|
||||
* {
|
||||
* Device (IGFX)
|
||||
* {
|
||||
* Name (_ADR, 0x0000000000000000)
|
||||
* Method (_STA, 0, NotSerialized) { Return (status) }
|
||||
* }
|
||||
* }
|
||||
*/
|
||||
void acpi_device_write_pci_dev(struct device *dev)
|
||||
{
|
||||
const char *scope = acpi_device_scope(dev);
|
||||
const char *name = acpi_device_name(dev);
|
||||
|
||||
assert(dev->path.type == DEVICE_PATH_PCI);
|
||||
assert(name);
|
||||
assert(scope);
|
||||
|
||||
acpigen_write_scope(scope);
|
||||
acpigen_write_device(name);
|
||||
|
||||
acpigen_write_ADR_pci_device(dev);
|
||||
acpigen_write_STA(acpi_device_status(dev));
|
||||
|
||||
acpigen_pop_len(); /* Device */
|
||||
acpigen_pop_len(); /* Scope */
|
||||
}
|
||||
|
|
|
@ -501,4 +501,13 @@ size_t acpi_dp_add_property_list(struct acpi_dp *dp,
|
|||
/* Write Device Property hierarchy and clean up resources */
|
||||
void acpi_dp_write(struct acpi_dp *table);
|
||||
|
||||
/*
|
||||
* Helper function to write a PCI device with _ADR object defined.
|
||||
*
|
||||
* IMPORTANT: Scope of a device created in SSDT cannot be used to add ACPI nodes under that
|
||||
* scope in DSDT. So, if there are any references to this PCI device scope required from static
|
||||
* asl files, do not use this function and instead add the device to DSDT as well.
|
||||
*/
|
||||
void acpi_device_write_pci_dev(struct device *dev);
|
||||
|
||||
#endif
|
||||
|
|
Loading…
Reference in New Issue