From 1e65c1134a5209b2d99e91e19f983d2d9cbb4352 Mon Sep 17 00:00:00 2001 From: Michael Gernoth Date: Sat, 21 May 2011 18:46:46 +0200 Subject: [PATCH 1/1] restore old state when unloading module --- MS2Debounce/assets/debounce.ko | Bin 69624 -> 70292 bytes debounce.c | 13 ++++++++++++- 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/MS2Debounce/assets/debounce.ko b/MS2Debounce/assets/debounce.ko index cb1a584ee3919ff142ee23517913e02cdd2a8e02..06a947d8e5d3a0f041acf11d8d4afb6e9ed3b685 100644 GIT binary patch delta 24821 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 delta 23956 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 diff --git a/debounce.c b/debounce.c index 845adad..4006cd2 100644 --- a/debounce.c +++ b/debounce.c @@ -7,6 +7,9 @@ static int debounce_delay = 10; +static int old_delay = 0; +static struct gpio_event_matrix_info *gpio_evmi = NULL; + module_param(debounce_delay, int, S_IRUSR | S_IRGRP | S_IROTH); MODULE_PARM_DESC(debounce_delay, "debouncing delay (ms), default: 10"); @@ -24,7 +27,6 @@ static int __init debounce_init(void) struct device *event_dev = NULL; struct gpio_event_platform_data *gpio_epd; struct gpio_event_info *gpio_ei; - struct gpio_event_matrix_info *gpio_evmi; printk(KERN_INFO PREFIX "Searching for " GPIO_EVENT_DEV_NAME "...\n"); @@ -53,6 +55,8 @@ static int __init debounce_init(void) printk(KERN_INFO PREFIX "flags: 0x%x\n", gpio_evmi->flags); } + old_delay = gpio_evmi->debounce_delay.tv.nsec; + if (gpio_evmi->debounce_delay.tv.nsec != debounce_delay * NSEC_PER_MSEC) { printk(KERN_INFO PREFIX "Changing debounce_delay\n"); gpio_evmi->debounce_delay.tv.nsec = debounce_delay * NSEC_PER_MSEC; @@ -64,6 +68,13 @@ static int __init debounce_init(void) static void __exit debounce_exit(void) { + if (gpio_evmi) { + if (gpio_evmi->debounce_delay.tv.nsec != old_delay) { + printk(KERN_INFO PREFIX "Restoring debounce_delay\n"); + gpio_evmi->debounce_delay.tv.nsec = old_delay; + printk(KERN_INFO PREFIX "debounce_delay: %u\n", gpio_evmi->debounce_delay.tv.nsec); + } + } } module_init(debounce_init); -- 2.39.5