u32                     init_speed;
        u32                     oper_speed;
        int                     irq;
-       u8                      irq_polarity;
+       bool                    irq_active_low;
 
 #ifdef CONFIG_PM
        struct hci_uart         *hu;
        }
 
        err = devm_request_irq(&bdev->pdev->dev, bdev->irq, bcm_host_wake,
-                              IRQF_TRIGGER_RISING, "host_wake", bdev);
+                              bdev->irq_active_low ? IRQF_TRIGGER_FALLING :
+                                                     IRQF_TRIGGER_RISING,
+                              "host_wake", bdev);
        if (err)
                goto unlock;
 
        struct sk_buff *skb;
        struct bcm_set_sleep_mode sleep_params = default_sleep_params;
 
-       sleep_params.host_wake_active = !bcm->dev->irq_polarity;
+       sleep_params.host_wake_active = !bcm->dev->irq_active_low;
 
        skb = __hci_cmd_sync(hu->hdev, 0xfc27, sizeof(sleep_params),
                             &sleep_params, HCI_INIT_TIMEOUT);
 };
 
 #ifdef CONFIG_ACPI
-static u8 acpi_active_low = ACPI_ACTIVE_LOW;
-
 /* IRQ polarity of some chipsets are not defined correctly in ACPI table. */
-static const struct dmi_system_id bcm_wrong_irq_dmi_table[] = {
+static const struct dmi_system_id bcm_active_low_irq_dmi_table[] = {
        {
                .ident = "Asus T100TA",
                .matches = {
                                        "ASUSTeK COMPUTER INC."),
                        DMI_EXACT_MATCH(DMI_PRODUCT_NAME, "T100TA"),
                },
-               .driver_data = &acpi_active_low,
        },
        {
                .ident = "Asus T100CHI",
                                        "ASUSTeK COMPUTER INC."),
                        DMI_EXACT_MATCH(DMI_PRODUCT_NAME, "T100CHI"),
                },
-               .driver_data = &acpi_active_low,
        },
        {       /* Handle ThinkPad 8 tablets with BCM2E55 chipset ACPI ID */
                .ident = "Lenovo ThinkPad 8",
                        DMI_EXACT_MATCH(DMI_SYS_VENDOR, "LENOVO"),
                        DMI_EXACT_MATCH(DMI_PRODUCT_VERSION, "ThinkPad 8"),
                },
-               .driver_data = &acpi_active_low,
        },
        { }
 };
        switch (ares->type) {
        case ACPI_RESOURCE_TYPE_EXTENDED_IRQ:
                irq = &ares->data.extended_irq;
-               dev->irq_polarity = irq->polarity;
+               dev->irq_active_low = irq->polarity == ACPI_ACTIVE_LOW;
                break;
 
        case ACPI_RESOURCE_TYPE_GPIO:
                gpio = &ares->data.gpio;
                if (gpio->connection_type == ACPI_RESOURCE_GPIO_TYPE_INT)
-                       dev->irq_polarity = gpio->polarity;
+                       dev->irq_active_low = gpio->polarity == ACPI_ACTIVE_LOW;
                break;
 
        case ACPI_RESOURCE_TYPE_SERIAL_BUS:
                return ret;
        acpi_dev_free_resource_list(&resources);
 
-       dmi_id = dmi_first_match(bcm_wrong_irq_dmi_table);
+       dmi_id = dmi_first_match(bcm_active_low_irq_dmi_table);
        if (dmi_id) {
                bt_dev_warn(dev, "%s: Overwriting IRQ polarity to active low",
                            dmi_id->ident);
-               dev->irq_polarity = *(u8 *)dmi_id->driver_data;
+               dev->irq_active_low = true;
        }
 
        return 0;