From 7ab4c76ca35913d2e200d813356c8dbb03683619 Mon Sep 17 00:00:00 2001 From: Simon Kagstrom Date: Wed, 19 Nov 2008 17:10:51 +0000 Subject: lis302dl-allow-unloading-module.patch This patch fixes module unloading for the accelerometer (actually module loading failed before). The two problems were that the interrupt was not unregistered, and that the device was left in a "strange" state. Signed-off-by: Simon Kagstrom --- drivers/input/misc/lis302dl.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) (limited to 'drivers/input/misc/lis302dl.c') diff --git a/drivers/input/misc/lis302dl.c b/drivers/input/misc/lis302dl.c index 553a731097b..944e5ebcccf 100644 --- a/drivers/input/misc/lis302dl.c +++ b/drivers/input/misc/lis302dl.c @@ -462,11 +462,15 @@ static int __devexit lis302dl_remove(struct spi_device *spi) struct lis302dl_info *lis = dev_get_drvdata(&spi->dev); unsigned long flags; - /* power down the device */ + /* Reset and power down the device */ local_save_flags(flags); + reg_write(lis, LIS302DL_REG_CTRL3, 0x00); + reg_write(lis, LIS302DL_REG_CTRL2, 0x00); reg_write(lis, LIS302DL_REG_CTRL1, 0x00); local_irq_restore(flags); + /* Cleanup resources */ + free_irq(lis->spi_dev->irq, lis); sysfs_remove_group(&spi->dev.kobj, &lis302dl_attr_group); input_unregister_device(lis->input_dev); if (lis->input_dev) -- cgit v1.2.3