Message ID | 1479729016-32307-1-git-send-email-benjamin.tissoires@redhat.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Hi Benjamin, [auto build test ERROR on hid/for-next] [also build test ERROR on next-20161117] [cannot apply to v4.9-rc6] [if your patch is applied to the wrong git tree, please drop us a note to help improve the system] url: https://github.com/0day-ci/linux/commits/Benjamin-Tissoires/HID-i2c-hid-retrieve-the-GPIO-parameters-only-when-unset/20161121-195550 base: https://git.kernel.org/pub/scm/linux/kernel/git/jikos/hid.git for-next config: arm-allmodconfig (attached as .config) compiler: arm-linux-gnueabi-gcc (Debian 6.1.1-9) 6.1.1 20160705 reproduce: wget https://git.kernel.org/cgit/linux/kernel/git/wfg/lkp-tests.git/plain/sbin/make.cross -O ~/bin/make.cross chmod +x ~/bin/make.cross # save the attached .config to linux build tree make.cross ARCH=arm All errors (new ones prefixed by >>): drivers/hid/i2c-hid/i2c-hid.c: In function 'i2c_hid_init_irq': >> drivers/hid/i2c-hid/i2c-hid.c:866:7: error: implicit declaration of function 'irq_get_trigger_type' [-Werror=implicit-function-declaration] if (!irq_get_trigger_type(client->irq)) ^~~~~~~~~~~~~~~~~~~~ cc1: some warnings being treated as errors vim +/irq_get_trigger_type +866 drivers/hid/i2c-hid/i2c-hid.c 860 struct i2c_hid *ihid = i2c_get_clientdata(client); 861 unsigned long irqflags = 0; 862 int ret; 863 864 dev_dbg(&client->dev, "Requesting IRQ: %d\n", client->irq); 865 > 866 if (!irq_get_trigger_type(client->irq)) 867 irqflags = IRQF_TRIGGER_LOW; 868 869 ret = request_threaded_irq(client->irq, NULL, i2c_hid_irq, --- 0-DAY kernel test infrastructure Open Source Technology Center https://lists.01.org/pipermail/kbuild-all Intel Corporation
diff --git a/drivers/hid/i2c-hid/i2c-hid.c b/drivers/hid/i2c-hid/i2c-hid.c index ce51879..0630499 100644 --- a/drivers/hid/i2c-hid/i2c-hid.c +++ b/drivers/hid/i2c-hid/i2c-hid.c @@ -858,13 +858,16 @@ static struct hid_ll_driver i2c_hid_ll_driver = { static int i2c_hid_init_irq(struct i2c_client *client) { struct i2c_hid *ihid = i2c_get_clientdata(client); + unsigned long irqflags = 0; int ret; dev_dbg(&client->dev, "Requesting IRQ: %d\n", client->irq); + if (!irq_get_trigger_type(client->irq)) + irqflags = IRQF_TRIGGER_LOW; + ret = request_threaded_irq(client->irq, NULL, i2c_hid_irq, - IRQF_TRIGGER_LOW | IRQF_ONESHOT, - client->name, ihid); + irqflags | IRQF_ONESHOT, client->name, ihid); if (ret < 0) { dev_warn(&client->dev, "Could not register for %s interrupt, irq = %d,"
Instead of forcing the level triggers of the IRQ, we can count on ACPI or OF to set it up for us. This way, if some vendor decides to not follow the spec, well we can handle those case (I have been requested this once already). Signed-off-by: Benjamin Tissoires <benjamin.tissoires@redhat.com> --- Hi Jiri, I have been requested this once. I was not sure whether it was doable at the time, but it actually appears that both ACPI and OF sets the irqflags for us. So I think it would be good to trust the device description instead of blindly overwriting it. Cheers, Benjamin drivers/hid/i2c-hid/i2c-hid.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-)