Bluetooth: hci_bcm: Add Lenovo Yoga Tablet 2 830 / 1050 to the bcm_broken_irq_dmi_table
authorHans de Goede <hdegoede@redhat.com>
Fri, 31 Mar 2023 21:11:23 +0000 (23:11 +0200)
committerLuiz Augusto von Dentz <luiz.von.dentz@intel.com>
Mon, 24 Apr 2023 05:00:46 +0000 (22:00 -0700)
The DSDT for the Lenovo Yoga Tablet 2 830 / 1050 models (which share
the same mainboard) specifies a IOAPIC IRQ for the HCI -> host IRQ but
this is not correct.

Like the Asus TF103C these tablets use pin 17 of the INT33FC:02 GPIO
controller for the IRQ and this pin is _not_ configured in direct IRQ
mode by the firmware.

Add a DMI match for this, re-using the Asus TF103C gpiod_lookup_table,
to fix bluetooth not working on these tablets.

Signed-off-by: Hans de Goede <hdegoede@redhat.com>
Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
drivers/bluetooth/hci_bcm.c

index 4a3ef844df5d2e7d9390727f615dc4d03b0726d9..eb9e1c858e914688efa395cf04f173d2f00812a7 100644 (file)
@@ -890,7 +890,7 @@ unlock:
 #endif
 
 /* Some firmware reports an IRQ which does not work (wrong pin in fw table?) */
-static struct gpiod_lookup_table asus_tf103c_irq_gpios = {
+static struct gpiod_lookup_table irq_on_int33fc02_pin17_gpios = {
        .dev_id = "serial0-0",
        .table = {
                GPIO_LOOKUP("INT33FC:02", 17, "host-wakeup-alt", GPIO_ACTIVE_HIGH),
@@ -905,7 +905,18 @@ static const struct dmi_system_id bcm_broken_irq_dmi_table[] = {
                        DMI_MATCH(DMI_SYS_VENDOR, "ASUSTeK COMPUTER INC."),
                        DMI_MATCH(DMI_PRODUCT_NAME, "TF103C"),
                },
-               .driver_data = &asus_tf103c_irq_gpios,
+               .driver_data = &irq_on_int33fc02_pin17_gpios,
+       },
+       {
+               .ident = "Lenovo Yoga Tablet 2 830F/L / 1050F/L",
+               .matches = {
+                       DMI_MATCH(DMI_SYS_VENDOR, "Intel Corp."),
+                       DMI_MATCH(DMI_PRODUCT_NAME, "VALLEYVIEW C0 PLATFORM"),
+                       DMI_MATCH(DMI_BOARD_NAME, "BYT-T FFD8"),
+                       /* Partial match on beginning of BIOS version */
+                       DMI_MATCH(DMI_BIOS_VERSION, "BLADE_21"),
+               },
+               .driver_data = &irq_on_int33fc02_pin17_gpios,
        },
        {
                .ident = "Meegopad T08",