input: keyreset: Allow reset function to be overriden

Change-Id: Ibb3dda05772b2e89d7b2646689944d309cb1f74e
Signed-off-by: Colin Cross <ccross@android.com>
This commit is contained in:
Colin Cross
2011-01-07 14:52:56 -08:00
parent 9b6f4a382d
commit 677ef29f71
2 changed files with 12 additions and 2 deletions

View File

@@ -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;

View File

@@ -20,6 +20,7 @@
#define KEYRESET_NAME "keyreset"
struct keyreset_platform_data {
int (*reset_fn)(void);
int *keys_up;
int keys_down[]; /* 0 terminated */
};