diff options
author | Hans de Goede <hdegoede@redhat.com> | 2017-10-04 21:43:41 +0300 |
---|---|---|
committer | Marcel Holtmann <marcel@holtmann.org> | 2017-10-06 21:35:48 +0300 |
commit | 9d54fd6a90ff1a85b66873e67004cfe61563408a (patch) | |
tree | ad27d76301c919aa29bafb6ba2f823953149f9a7 /drivers/bluetooth/hci_bcm.c | |
parent | 42ef18f09f593e6dd84777948a5e8189502cba0c (diff) | |
download | linux-9d54fd6a90ff1a85b66873e67004cfe61563408a.tar.xz |
Bluetooth: hci_bcm: Make acpi_probe get irq from ACPI resources
The ACPI subsys is going to move over to instantiating ACPI enumerated
HCIs as serdevs, rather then as platform devices.
So we need to make bcm_acpi_probe() suitable for use on non platform-
devices too, which means that we cannot rely on platform_get_irq()
getting called.
This commit modifies bcm_acpi_probe() to directly get the irq from
the ACPI resources, this is a preparation patch for adding (runtime)pm
support to the serdev path.
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
Diffstat (limited to 'drivers/bluetooth/hci_bcm.c')
-rw-r--r-- | drivers/bluetooth/hci_bcm.c | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/drivers/bluetooth/hci_bcm.c b/drivers/bluetooth/hci_bcm.c index 7f1971adeea8..cadf6291c615 100644 --- a/drivers/bluetooth/hci_bcm.c +++ b/drivers/bluetooth/hci_bcm.c @@ -751,8 +751,7 @@ static int bcm_resource(struct acpi_resource *ares, void *data) break; } - /* Always tell the ACPI core to skip this resource */ - return 1; + return 0; } #endif /* CONFIG_ACPI */ @@ -805,6 +804,7 @@ static int bcm_acpi_probe(struct bcm_device *dev) const struct dmi_system_id *dmi_id; const struct acpi_gpio_mapping *gpio_mapping = acpi_bcm_int_last_gpios; const struct acpi_device_id *id; + struct resource_entry *entry; int ret; /* Retrieve GPIO data */ @@ -821,6 +821,13 @@ static int bcm_acpi_probe(struct bcm_device *dev) &resources, bcm_resource, dev); if (ret < 0) return ret; + + resource_list_for_each_entry(entry, &resources) { + if (resource_type(entry->res) == IORESOURCE_IRQ) { + dev->irq = entry->res->start; + break; + } + } acpi_dev_free_resource_list(&resources); dmi_id = dmi_first_match(bcm_active_low_irq_dmi_table); |