summaryrefslogtreecommitdiffstats
path: root/drivers/i2c
diff options
context:
space:
mode:
authorJakub Kicinski <kubakici@wp.pl>2015-03-11 18:35:36 +0100
committerLuis Henriques <luis.henriques@canonical.com>2015-03-23 15:17:20 +0000
commit4eac57ac03bda1d45082c77604ed4f6752641d82 (patch)
tree4ab229e4262e9032b04633128a981ff3f88a4dd7 /drivers/i2c
parent1cb4aca7fc080bfd1a0be1f053bde254d5a59af2 (diff)
downloadlinux-stable-4eac57ac03bda1d45082c77604ed4f6752641d82.tar.gz
linux-stable-4eac57ac03bda1d45082c77604ed4f6752641d82.tar.bz2
linux-stable-4eac57ac03bda1d45082c77604ed4f6752641d82.zip
Revert "i2c: core: Dispose OF IRQ mapping at client removal time"
commit a49445727014216703a3c28ccee4cef36d41571e upstream. This reverts commit e4df3a0b6228 ("i2c: core: Dispose OF IRQ mapping at client removal time") Calling irq_dispose_mapping() will destroy the mapping and disassociate the IRQ from the IRQ chip to which it belongs. Keeping it is OK, because existent mappings are reused properly. Also, this commit breaks drivers using devm* for IRQ management on OF-based systems because devm* cleanup happens in device code, after bus's remove() method returns. Signed-off-by: Jakub Kicinski <kubakici@wp.pl> Reported-by: Sébastien Szymanski <sebastien.szymanski@armadeus.com> Acked-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Acked-by: Dmitry Torokhov <dmitry.torokhov@gmail.com> [wsa: updated the commit message with findings fromt the other bug report] Signed-off-by: Wolfram Sang <wsa@the-dreams.de> Fixes: e4df3a0b6228 [ luis: backported to 3.16: adjusted context ] Signed-off-by: Luis Henriques <luis.henriques@canonical.com>
Diffstat (limited to 'drivers/i2c')
-rw-r--r--drivers/i2c/i2c-core.c3
1 files changed, 0 insertions, 3 deletions
diff --git a/drivers/i2c/i2c-core.c b/drivers/i2c/i2c-core.c
index 4716eb0bddcd..7c7f4b856bad 100644
--- a/drivers/i2c/i2c-core.c
+++ b/drivers/i2c/i2c-core.c
@@ -297,9 +297,6 @@ static int i2c_device_remove(struct device *dev)
status = driver->remove(client);
}
- if (dev->of_node)
- irq_dispose_mapping(client->irq);
-
acpi_dev_pm_detach(&client->dev, true);
return status;
}