From 399efd68e115b6548fe943a7a9fbf04753970e61 Mon Sep 17 00:00:00 2001 From: Simon Kagstrom Date: Wed, 13 Aug 2008 11:27:11 +0100 Subject: [PATCH] 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 files changed, 5 insertions(+), 1 deletions(-) diff --git a/drivers/input/misc/lis302dl.c b/drivers/input/misc/lis302dl.c index de8478d..b97cae7 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) -- 1.5.6.5