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.c...@rock-chips.com>

---

Changes in v2:
Improve the commit message.

 drivers/mfd/cros_ec.c | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/drivers/mfd/cros_ec.c b/drivers/mfd/cros_ec.c
index e31ac60..dc6ce90 100644
--- a/drivers/mfd/cros_ec.c
+++ b/drivers/mfd/cros_ec.c
@@ -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);
-- 
2.1.4


Reply via email to