ACPI/IORT: Stub out ACS functions when CONFIG_PCI is not set
Remove PCI dependent code out of iort.c when CONFIG_PCI is not defined. A quick search reveals the following functions: 1. pci_request_acs() 2. pci_domain_nr() 3. pci_is_root_bus() 4. to_pci_dev() Both pci_domain_nr() and pci_is_root_bus() are defined in linux/pci.h. pci_domain_nr() is a stub function when CONFIG_PCI is not set and pci_is_root_bus() just returns a reference to a structure member which is still valid without CONFIG_PCI set. to_pci_dev() is a macro that expands to container_of. pci_request_acs() is the only code that gets pulled in from drivers/pci/*.c Signed-off-by: Sinan Kaya <okaya@kernel.org> Acked-by: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com> Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
This commit is contained in:
parent
52146173a0
commit
43554cebba
1 changed files with 13 additions and 7 deletions
|
@ -1435,8 +1435,14 @@ dev_put:
|
|||
return ret;
|
||||
}
|
||||
|
||||
static bool __init iort_enable_acs(struct acpi_iort_node *iort_node)
|
||||
#ifdef CONFIG_PCI
|
||||
static void __init iort_enable_acs(struct acpi_iort_node *iort_node)
|
||||
{
|
||||
static bool acs_enabled __initdata;
|
||||
|
||||
if (acs_enabled)
|
||||
return;
|
||||
|
||||
if (iort_node->type == ACPI_IORT_NODE_PCI_ROOT_COMPLEX) {
|
||||
struct acpi_iort_node *parent;
|
||||
struct acpi_iort_id_mapping *map;
|
||||
|
@ -1458,13 +1464,15 @@ static bool __init iort_enable_acs(struct acpi_iort_node *iort_node)
|
|||
if ((parent->type == ACPI_IORT_NODE_SMMU) ||
|
||||
(parent->type == ACPI_IORT_NODE_SMMU_V3)) {
|
||||
pci_request_acs();
|
||||
return true;
|
||||
acs_enabled = true;
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
#else
|
||||
static inline void iort_enable_acs(struct acpi_iort_node *iort_node) { }
|
||||
#endif
|
||||
|
||||
static void __init iort_init_platform_devices(void)
|
||||
{
|
||||
|
@ -1472,7 +1480,6 @@ static void __init iort_init_platform_devices(void)
|
|||
struct acpi_table_iort *iort;
|
||||
struct fwnode_handle *fwnode;
|
||||
int i, ret;
|
||||
bool acs_enabled = false;
|
||||
const struct iort_dev_config *ops;
|
||||
|
||||
/*
|
||||
|
@ -1493,8 +1500,7 @@ static void __init iort_init_platform_devices(void)
|
|||
return;
|
||||
}
|
||||
|
||||
if (!acs_enabled)
|
||||
acs_enabled = iort_enable_acs(iort_node);
|
||||
iort_enable_acs(iort_node);
|
||||
|
||||
ops = iort_get_dev_cfg(iort_node);
|
||||
if (ops) {
|
||||
|
|
Loading…
Reference in a new issue