Commit 3a15955d authored by Shanker Donthineni's avatar Shanker Donthineni Committed by Bjorn Helgaas
Browse files

PCI: Add pci_set_acpi_fwnode() to set ACPI_COMPANION

Move the existing logic from acpi_pci_bridge_d3() to a separate function
pci_set_acpi_fwnode() to set the ACPI fwnode.  No functional change
intended.

Link: https://lore.kernel.org/r/20210817180500.1253-7-ameynarkhede03@gmail.com


Signed-off-by: default avatarShanker Donthineni <sdonthineni@nvidia.com>
Signed-off-by: default avatarBjorn Helgaas <bhelgaas@google.com>
Reviewed-by: default avatarAlex Williamson <alex.williamson@redhat.com>
parent d88f521d
Loading
Loading
Loading
Loading
+8 −4
Original line number Diff line number Diff line
@@ -934,6 +934,13 @@ static pci_power_t acpi_pci_choose_state(struct pci_dev *pdev)

static struct acpi_device *acpi_pci_find_companion(struct device *dev);

void pci_set_acpi_fwnode(struct pci_dev *dev)
{
	if (!ACPI_COMPANION(&dev->dev) && !pci_dev_is_added(dev))
		ACPI_COMPANION_SET(&dev->dev,
				   acpi_pci_find_companion(&dev->dev));
}

static bool acpi_pci_bridge_d3(struct pci_dev *dev)
{
	const struct fwnode_handle *fwnode;
@@ -945,11 +952,8 @@ static bool acpi_pci_bridge_d3(struct pci_dev *dev)
		return false;

	/* Assume D3 support if the bridge is power-manageable by ACPI. */
	pci_set_acpi_fwnode(dev);
	adev = ACPI_COMPANION(&dev->dev);
	if (!adev && !pci_dev_is_added(dev)) {
		adev = acpi_pci_find_companion(&dev->dev);
		ACPI_COMPANION_SET(&dev->dev, adev);
	}

	if (adev && acpi_device_power_manageable(adev))
		return true;
+2 −0
Original line number Diff line number Diff line
@@ -707,7 +707,9 @@ static inline int pci_aer_raw_clear_status(struct pci_dev *dev) { return -EINVAL
#ifdef CONFIG_ACPI
int pci_acpi_program_hp_params(struct pci_dev *dev);
extern const struct attribute_group pci_dev_acpi_attr_group;
void pci_set_acpi_fwnode(struct pci_dev *dev);
#else
static inline void pci_set_acpi_fwnode(struct pci_dev *dev) {}
static inline int pci_acpi_program_hp_params(struct pci_dev *dev)
{
	return -ENODEV;