Hi Marcel, On 1/19/22 20:39, Marcel Holtmann wrote: > Hi Hans, > >>>> The DSDT for the Asus TF103C specifies a IOAPIC IRQ for the HCI -> host IRQ >>>> but this is not correct. Unlike the previous entries in the table, this >>>> time the correct GPIO to use instead is known; and the TF103C is battery >>>> powered making runtime-pm support more important. >>>> >>>> Extend the bcm_broken_irq_dmi_table mechanism to allow specifying the right >>>> GPIO instead of just always disabling runtime-pm and add an entry to it for >>>> the Asus TF103C. >>>> >>>> Signed-off-by: Hans de Goede <hdegoede@xxxxxxxxxx> >>>> --- >>>> drivers/bluetooth/hci_bcm.c | 44 ++++++++++++++++++++++++++++++------- >>>> 1 file changed, 36 insertions(+), 8 deletions(-) >>>> >>>> diff --git a/drivers/bluetooth/hci_bcm.c b/drivers/bluetooth/hci_bcm.c >>>> index ef54afa29357..c6ac4aa994af 100644 >>>> --- a/drivers/bluetooth/hci_bcm.c >>>> +++ b/drivers/bluetooth/hci_bcm.c >>>> @@ -20,6 +20,7 @@ >>>> #include <linux/regulator/consumer.h> >>>> #include <linux/clk.h> >>>> #include <linux/gpio/consumer.h> >>>> +#include <linux/gpio/machine.h> >>>> #include <linux/tty.h> >>>> #include <linux/interrupt.h> >>>> #include <linux/dmi.h> >>>> @@ -870,7 +871,23 @@ static int bcm_resume(struct device *dev) >>>> #endif >>>> >>>> /* Some firmware reports an IRQ which does not work (wrong pin in fw table?) */ >>>> +static struct gpiod_lookup_table asus_tf103c_irq_gpios = { >>>> + .dev_id = "serial0-0", >>> >>> do you need this one? I assume it could be easily enumerated as serial1-0 if you are unlucky. >> >> Yes there can be multiple global gpiod_lookup_table-s registered >> and the gpiolib code finds the one to use be matching this field >> to the dev_name() for the device passed to gpiod_get(). >> >> I'm not worried about this getting enumerated with another dev_name(), >> this is a tablet with no ways to add extra serial-bus devices and >> there is only the 1 serial-bus device. > > is there no other way to match this device? I'm not sure what you mean ny "matching this device" ? Since the ACPI tables on this tablet contain the wrong GPIO, we need a gpio-lookup table override and the gpio cores checks for a lookup table to use with a specific struct device * based on dev_name() and only based on that, there are no other matching options in the gpio-lookup mechanism. Regards, Hans