summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorColin Cross <ccross@android.com>2011-01-07 17:16:59 -0800
committerColin Cross <ccross@android.com>2011-01-07 17:16:59 -0800
commitc37bff78783d40d6e604129135c207e279de902f (patch)
treeaa977895b5ef83116af31169427ec633b3d17298
parente7f5fdf7316d97feafc18b8ac00fc69f1dcf45bd (diff)
parent77fc4228f72d803cace13cfec6a4076b38601bd5 (diff)
Merge branch 'android-2.6.36' into android-tegra-2.6.36
-rw-r--r--arch/arm/include/asm/mmu.h4
-rw-r--r--drivers/input/keyreset.c13
-rw-r--r--include/linux/keyreset.h1
3 files changed, 16 insertions, 2 deletions
diff --git a/arch/arm/include/asm/mmu.h b/arch/arm/include/asm/mmu.h
index 68870c776671..b4ffe9d5b526 100644
--- a/arch/arm/include/asm/mmu.h
+++ b/arch/arm/include/asm/mmu.h
@@ -13,6 +13,10 @@ typedef struct {
#ifdef CONFIG_CPU_HAS_ASID
#define ASID(mm) ((mm)->context.id & 255)
+
+/* init_mm.context.id_lock should be initialized. */
+#define INIT_MM_CONTEXT(name) \
+ .context.id_lock = __SPIN_LOCK_UNLOCKED(name.context.id_lock),
#else
#define ASID(mm) (0)
#endif
diff --git a/drivers/input/keyreset.c b/drivers/input/keyreset.c
index b51350602fc3..a5091ac19bbe 100644
--- a/drivers/input/keyreset.c
+++ b/drivers/input/keyreset.c
@@ -33,6 +33,7 @@ struct keyreset_state {
int key_down;
int key_up;
int restart_disabled;
+ int (*reset_fn)(void);
};
int restart_requested;
@@ -88,8 +89,12 @@ static void keyreset_event(struct input_handle *handle, unsigned int type,
if (restart_requested)
panic("keyboard reset failed, %d", restart_requested);
pr_info("keyboard reset\n");
- schedule_work(&restart_work);
- restart_requested = 1;
+ if (state->reset_fn) {
+ restart_requested = state->reset_fn();
+ } else {
+ schedule_work(&restart_work);
+ restart_requested = 1;
+ }
}
done:
spin_unlock_irqrestore(&state->lock, flags);
@@ -187,6 +192,10 @@ static int keyreset_probe(struct platform_device *pdev)
__set_bit(key, state->upbit);
}
}
+
+ if (pdata->reset_fn)
+ state->reset_fn = pdata->reset_fn;
+
state->input_handler.event = keyreset_event;
state->input_handler.connect = keyreset_connect;
state->input_handler.disconnect = keyreset_disconnect;
diff --git a/include/linux/keyreset.h b/include/linux/keyreset.h
index 50c4b952b8f7..a2ac49e5b684 100644
--- a/include/linux/keyreset.h
+++ b/include/linux/keyreset.h
@@ -20,6 +20,7 @@
#define KEYRESET_NAME "keyreset"
struct keyreset_platform_data {
+ int (*reset_fn)(void);
int *keys_up;
int keys_down[]; /* 0 terminated */
};