aboutsummaryrefslogtreecommitdiff
path: root/drivers/input
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/input')
-rwxr-xr-xdrivers/input/misc/tri_state_key.c40
1 files changed, 15 insertions, 25 deletions
diff --git a/drivers/input/misc/tri_state_key.c b/drivers/input/misc/tri_state_key.c
index ebc4655b4f9..5a104f29029 100755
--- a/drivers/input/misc/tri_state_key.c
+++ b/drivers/input/misc/tri_state_key.c
@@ -36,23 +36,14 @@
4½ÅºÍ3½ÅÁ¬½Ó 1 0 | Normal
*/
-typedef enum {
- MODE_UNKNOWN,
- MODE_MUTE,
- MODE_DO_NOT_DISTURB,
- MODE_NORMAL,
- MODE_MAX_NUM
-} tri_mode_t;
-
-#define MODE_TOTAL_SILENCE 600
-#define MODE_ALARMS_ONLY 601
-#define MODE_PRIORITY_ONLY 602
-#define MODE_NONE 603
+
+#define KEYCODE_BASE 600
+#define TOTAL_KEYCODES 6
static int current_mode = 0;
-static int keyCode_slider_top = MODE_ALARMS_ONLY;
-static int keyCode_slider_middle = MODE_PRIORITY_ONLY;
-static int keyCode_slider_bottom = MODE_NONE;
+static int keyCode_slider_top = KEYCODE_BASE + 1;
+static int keyCode_slider_middle = KEYCODE_BASE + 2;
+static int keyCode_slider_bottom = KEYCODE_BASE + 3;
struct switch_dev_data {
//tri_mode_t last_type;
@@ -103,17 +94,17 @@ static void switch_dev_work(struct work_struct *work)
mutex_lock(&sem);
if(!gpio_get_value(switch_data->key2_gpio))
{
- mode = MODE_NORMAL;
+ mode = 3;
keyCode = keyCode_slider_bottom;
}
else if(gpio_get_value(switch_data->key1_gpio))
{
- mode = MODE_DO_NOT_DISTURB;
+ mode = 2;
keyCode = keyCode_slider_middle;
}
else
{
- mode = MODE_MUTE;
+ mode = 1;
keyCode = keyCode_slider_top;
}
if (current_mode != mode) {
@@ -319,7 +310,7 @@ static ssize_t keyCode_top_write(struct file *file, const char __user *page, siz
if (sscanf(buf, "%d", &data) != 1)
return t;
- if (data < 600 || data > 603)
+ if (data < KEYCODE_BASE || data >= (KEYCODE_BASE + TOTAL_KEYCODES))
return t;
keyCode_slider_top = data;
@@ -363,7 +354,7 @@ static ssize_t keyCode_middle_write(struct file *file, const char __user *page,
if (sscanf(buf, "%d", &data) != 1)
return t;
- if (data < 600 || data > 603)
+ if (data < KEYCODE_BASE || data >= (KEYCODE_BASE + TOTAL_KEYCODES))
return t;
keyCode_slider_middle = data;
@@ -407,7 +398,7 @@ static ssize_t keyCode_bottom_write(struct file *file, const char __user *page,
if (sscanf(buf, "%d", &data) != 1)
return t;
- if (data < 600 || data > 603)
+ if (data < KEYCODE_BASE || data >= (KEYCODE_BASE + TOTAL_KEYCODES))
return t;
keyCode_slider_bottom = data;
@@ -437,6 +428,7 @@ static int tristate_dev_probe(struct platform_device *pdev)
struct device *dev = &pdev->dev;
struct proc_dir_entry *procdir;
int error=0;
+ int i;
//void __iomem *cfg_reg;
@@ -464,10 +456,8 @@ static int tristate_dev_probe(struct platform_device *pdev)
switch_data->input->name = DRV_NAME;
switch_data->input->dev.parent = &pdev->dev;
set_bit(EV_KEY, switch_data->input->evbit);
- set_bit(MODE_TOTAL_SILENCE, switch_data->input->keybit);
- set_bit(MODE_ALARMS_ONLY, switch_data->input->keybit);
- set_bit(MODE_PRIORITY_ONLY, switch_data->input->keybit);
- set_bit(MODE_NONE, switch_data->input->keybit);
+ for (i = KEYCODE_BASE; i < KEYCODE_BASE + TOTAL_KEYCODES; i++)
+ set_bit(i, switch_data->input->keybit);
input_set_drvdata(switch_data->input, switch_data);
error = input_register_device(switch_data->input);
if (error) {