mfd: cros_ec: Free IRQ on exit
authorJeffy Chen <jeffy.chen@rock-chips.com>
Mon, 12 Jun 2017 08:42:46 +0000 (16:42 +0800)
committerLee Jones <lee.jones@linaro.org>
Thu, 6 Jul 2017 07:29:13 +0000 (08:29 +0100)
Currently we request the irq when probing, but never free it. So after
unbind ec driver, this irq will be left requested, which would break
the next bind:

[ 2683.338437] genirq: Flags mismatch irq 64. 00002008 (chromeos-ec) vs. 00002008 (chromeos-ec)
[ 2683.338591] cros-ec-spi spi5.0: request irq 64: error -16
[ 2683.338610] cros-ec-spi spi5.0: cannot register EC
[ 2683.338656] cros-ec-spi: probe of spi5.0 failed with error -16

Signed-off-by: Jeffy Chen <jeffy.chen@rock-chips.com>
Signed-off-by: Lee Jones <lee.jones@linaro.org>
drivers/mfd/cros_ec.c

index e31ac60a76231d1b6cf0582ce143f0e49a56131c..dc6ce90916949d0821ca5d72f27d266a99294dab 100644 (file)
@@ -183,6 +183,9 @@ int cros_ec_remove(struct cros_ec_device *ec_dev)
 
        cros_ec_acpi_remove_gpe_handler();
 
+       if (ec_dev->irq)
+               free_irq(ec_dev->irq, ec_dev);
+
        return 0;
 }
 EXPORT_SYMBOL(cros_ec_remove);