aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/input/keyboard/cypress/cypress-touchkey.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/input/keyboard/cypress/cypress-touchkey.c')
-rw-r--r--drivers/input/keyboard/cypress/cypress-touchkey.c546
1 files changed, 215 insertions, 331 deletions
diff --git a/drivers/input/keyboard/cypress/cypress-touchkey.c b/drivers/input/keyboard/cypress/cypress-touchkey.c
index 6ccd693..8aafaad 100644
--- a/drivers/input/keyboard/cypress/cypress-touchkey.c
+++ b/drivers/input/keyboard/cypress/cypress-touchkey.c
@@ -37,8 +37,6 @@
#include <linux/regulator/machine.h>
#include "issp_extern.h"
-#include "cypress-touchkey.h"
-
#ifdef CONFIG_TOUCHSCREEN_ATMEL_MXT540E
#include <linux/i2c/mxt540e.h>
#else
@@ -78,11 +76,6 @@ static int touchkey_keycode[] = { 0,
};
static const int touchkey_count = sizeof(touchkey_keycode) / sizeof(int);
-struct touchkey_i2c *tkey_i2c_local;
-struct timer_list touch_led_timer;
-int touch_led_timeout = 3; // timeout for the touchkey backlight in secs
-int touch_led_disabled = 0; // 1= force disable the touchkey backlight
-
#if defined(TK_HAS_AUTOCAL)
static u16 raw_data0;
static u16 raw_data1;
@@ -115,8 +108,8 @@ static bool g_debug_tkey = FALSE;
static int touchkey_i2c_check(struct touchkey_i2c *tkey_i2c);
-static u8 menu_sensitivity;
-static u8 back_sensitivity;
+static u16 menu_sensitivity;
+static u16 back_sensitivity;
#if defined(TK_USE_4KEY)
static u8 home_sensitivity;
static u8 search_sensitivity;
@@ -161,10 +154,10 @@ static ssize_t brightness_control(struct device *dev,
int data;
if (sscanf(buf, "%d\n", &data) == 1) {
- pr_err("[TouchKey] touch_led_brightness: %d\n", data);
+ printk(KERN_ERR "[TouchKey] touch_led_brightness: %d\n", data);
change_touch_key_led_voltage(data);
} else {
- pr_err("[TouchKey] touch_led_brightness Error\n");
+ printk(KERN_ERR "[TouchKey] touch_led_brightness Error\n");
}
return size;
@@ -191,7 +184,7 @@ static int i2c_touchkey_read(struct i2c_client *client,
if ((client == NULL) || !(touchkey_enable == 1)
|| !touchkey_probe) {
- pr_err("[TouchKey] touchkey is not enabled. %d\n",
+ printk(KERN_ERR "[TouchKey] touchkey is not enabled. %d\n",
__LINE__);
return -ENODEV;
}
@@ -210,7 +203,7 @@ static int i2c_touchkey_read(struct i2c_client *client,
if (err >= 0)
return 0;
- pr_err("[TouchKey] %s %d i2c transfer error\n",
+ printk(KERN_ERR "[TouchKey] %s %d i2c transfer error\n",
__func__, __LINE__);
mdelay(10);
}
@@ -229,7 +222,7 @@ static int i2c_touchkey_write(struct i2c_client *client,
if ((client == NULL) || !(touchkey_enable == 1)
|| !touchkey_probe) {
- pr_err("[TouchKey] touchkey is not enabled. %d\n",
+ printk(KERN_ERR "[TouchKey] touchkey is not enabled. %d\n",
__LINE__);
return -ENODEV;
}
@@ -249,7 +242,7 @@ static int i2c_touchkey_write(struct i2c_client *client,
if (err >= 0)
return 0;
- pr_debug("[TouchKey] %s %d i2c transfer error\n",
+ printk(KERN_DEBUG "[TouchKey] %s %d i2c transfer error\n",
__func__, __LINE__);
mdelay(10);
}
@@ -272,10 +265,11 @@ static int touchkey_autocalibration(struct touchkey_i2c *tkey_i2c)
while (retry < 3) {
ret = i2c_touchkey_read(tkey_i2c->client, KEYCODE_REG, data, 4);
if (ret < 0) {
- pr_err("[TouchKey]i2c read fail.\n");
+ printk(KERN_ERR "[TouchKey]i2c read fail.\n");
return ret;
}
- pr_debug("[TouchKey] data[0]=%x data[1]=%x data[2]=%x data[3]=%x\n",
+ printk(KERN_DEBUG
+ "[TouchKey] data[0]=%x data[1]=%x data[2]=%x data[3]=%x\n",
data[0], data[1], data[2], data[3]);
/* Send autocal Command */
@@ -290,23 +284,24 @@ static int touchkey_autocalibration(struct touchkey_i2c *tkey_i2c)
ret = i2c_touchkey_read(tkey_i2c->client, KEYCODE_REG, data, 6);
if ((data[5] & TK_BIT_AUTOCAL)) {
- pr_debug("[Touchkey] autocal Enabled\n");
+ printk(KERN_DEBUG "[Touchkey] autocal Enabled\n");
break;
} else
- pr_debug("[Touchkey] autocal disabled, retry %d\n",
+ printk(KERN_DEBUG
+ "[Touchkey] autocal disabled, retry %d\n",
retry);
retry = retry + 1;
}
if (retry == 3)
- pr_debug("[Touchkey] autocal failed\n");
+ printk(KERN_DEBUG "[Touchkey] autocal failed\n");
return count;
}
#endif
-#if 0 /* CONFIG_TARGET_LOCALE_NAATT */
+#ifdef CONFIG_TARGET_LOCALE_NAATT
static ssize_t set_touchkey_autocal_testmode(struct device *dev,
struct device_attribute *attr,
const char *buf, size_t size)
@@ -317,7 +312,7 @@ static ssize_t set_touchkey_autocal_testmode(struct device *dev,
int on_off;
if (sscanf(buf, "%d\n", &on_off) == 1) {
- pr_err("[TouchKey] Test Mode : %d\n", on_off);
+ printk(KERN_ERR "[TouchKey] Test Mode : %d\n", on_off);
if (on_off == 1) {
set_data = 0x40;
@@ -329,11 +324,11 @@ static ssize_t set_touchkey_autocal_testmode(struct device *dev,
tkey_i2c->pdata->power_on(1);
msleep(50);
#if defined(TK_HAS_AUTOCAL)
- touchkey_autocalibration();
+ touchkey_autocalibration(tkey_i2c);
#endif
}
} else {
- pr_err("[TouchKey] touch_led_brightness Error\n");
+ printk(KERN_ERR "[TouchKey] touch_led_brightness Error\n");
}
return count;
@@ -348,24 +343,24 @@ static ssize_t touchkey_raw_data0_show(struct device *dev,
u8 data[26] = { 0, };
int ret;
- pr_debug("called %s\n", __func__);
+ printk(KERN_DEBUG "called %s\n", __func__);
ret = i2c_touchkey_read(tkey_i2c->client, KEYCODE_REG, data, 26);
#if defined(CONFIG_TARGET_LOCALE_NA)
- pr_debug("called %s data[18] =%d,data[19] = %d\n", __func__,
+ printk(KERN_DEBUG "called %s data[18] =%d,data[19] = %d\n", __func__,
data[18], data[19]);
raw_data0 = ((0x00FF & data[18]) << 8) | data[19];
#elif defined(CONFIG_MACH_M0) || defined(CONFIG_MACH_C1)\
|| defined(CONFIG_MACH_M3)\
|| defined(CONFIG_MACH_T0)
- pr_debug("called %s data[16] =%d,data[17] = %d\n", __func__,
+ printk(KERN_DEBUG "called %s data[16] =%d,data[17] = %d\n", __func__,
data[16], data[17]);
raw_data0 = ((0x00FF & data[16]) << 8) | data[17]; /* menu*/
#elif defined(CONFIG_MACH_Q1_BD)
- pr_debug("called %s data[16] =%d,data[17] = %d\n", __func__,
+ printk(KERN_DEBUG "called %s data[16] =%d,data[17] = %d\n", __func__,
data[16], data[17]);
raw_data0 = ((0x00FF & data[14]) << 8) | data[15];
#else
- pr_debug("called %s data[18] =%d,data[19] = %d\n", __func__,
+ printk(KERN_DEBUG "called %s data[18] =%d,data[19] = %d\n", __func__,
data[10], data[11]);
raw_data0 = ((0x00FF & data[10]) << 8) | data[11];
#endif
@@ -379,24 +374,24 @@ static ssize_t touchkey_raw_data1_show(struct device *dev,
u8 data[26] = { 0, };
int ret;
- pr_debug("called %s\n", __func__);
+ printk(KERN_DEBUG "called %s\n", __func__);
ret = i2c_touchkey_read(tkey_i2c->client, KEYCODE_REG, data, 26);
#if defined(CONFIG_TARGET_LOCALE_NA)
- pr_debug("called %s data[20] =%d,data[21] = %d\n", __func__,
+ printk(KERN_DEBUG "called %s data[20] =%d,data[21] = %d\n", __func__,
data[20], data[21]);
raw_data1 = ((0x00FF & data[20]) << 8) | data[21];
#elif defined(CONFIG_MACH_M0) || defined(CONFIG_MACH_C1)\
|| defined(CONFIG_MACH_M3)\
|| defined(CONFIG_MACH_T0)
- pr_debug("called %s data[14] =%d,data[15] = %d\n", __func__,
+ printk(KERN_DEBUG "called %s data[14] =%d,data[15] = %d\n", __func__,
data[14], data[15]);
raw_data1 = ((0x00FF & data[14]) << 8) | data[15]; /*back*/
#elif defined(CONFIG_MACH_Q1_BD)
- pr_debug("called %s data[14] =%d,data[15] = %d\n", __func__,
+ printk(KERN_DEBUG "called %s data[14] =%d,data[15] = %d\n", __func__,
data[14], data[15]);
raw_data1 = ((0x00FF & data[16]) << 8) | data[17];
#else
- pr_debug("called %s data[20] =%d,data[21] = %d\n", __func__,
+ printk(KERN_DEBUG "called %s data[20] =%d,data[21] = %d\n", __func__,
data[12], data[13]);
raw_data1 = ((0x00FF & data[12]) << 8) | data[13];
#endif /* CONFIG_TARGET_LOCALE_NA */
@@ -410,14 +405,14 @@ static ssize_t touchkey_raw_data2_show(struct device *dev,
u8 data[26] = { 0, };
int ret;
- pr_debug("called %s\n", __func__);
+ printk(KERN_DEBUG "called %s\n", __func__);
ret = i2c_touchkey_read(tkey_i2c->client, KEYCODE_REG, data, 26);
#if defined(CONFIG_TARGET_LOCALE_NA)
- pr_debug("called %s data[22] =%d,data[23] = %d\n", __func__,
+ printk(KERN_DEBUG "called %s data[22] =%d,data[23] = %d\n", __func__,
data[22], data[23]);
raw_data2 = ((0x00FF & data[22]) << 8) | data[23];
#else
- pr_debug("called %s data[22] =%d,data[23] = %d\n", __func__,
+ printk(KERN_DEBUG "called %s data[22] =%d,data[23] = %d\n", __func__,
data[14], data[15]);
raw_data2 = ((0x00FF & data[14]) << 8) | data[15];
#endif /* CONFIG_TARGET_LOCALE_NA */
@@ -431,14 +426,14 @@ static ssize_t touchkey_raw_data3_show(struct device *dev,
u8 data[26] = { 0, };
int ret;
- pr_debug("called %s\n", __func__);
+ printk(KERN_DEBUG "called %s\n", __func__);
ret = i2c_touchkey_read(tkey_i2c->client, KEYCODE_REG, data, 26);
#if defined(CONFIG_TARGET_LOCALE_NA)
- pr_debug("called %s data[24] =%d,data[25] = %d\n", __func__,
+ printk(KERN_DEBUG "called %s data[24] =%d,data[25] = %d\n", __func__,
data[24], data[25]);
raw_data3 = ((0x00FF & data[24]) << 8) | data[25];
#else
- pr_debug("called %s data[24] =%d,data[25] = %d\n", __func__,
+ printk(KERN_DEBUG "called %s data[24] =%d,data[25] = %d\n", __func__,
data[16], data[17]);
raw_data3 = ((0x00FF & data[16]) << 8) | data[17];
#endif /* CONFIG_TARGET_LOCALE_NA */
@@ -456,9 +451,9 @@ static ssize_t touchkey_idac0_show(struct device *dev,
return 0;
#endif
- pr_debug("called %s\n", __func__);
+ printk(KERN_DEBUG "called %s\n", __func__);
ret = i2c_touchkey_read(tkey_i2c->client, KEYCODE_REG, data, 10);
- pr_debug("called %s data[6] =%d\n", __func__, data[6]);
+ printk(KERN_DEBUG "called %s data[6] =%d\n", __func__, data[6]);
idac0 = data[6];
return sprintf(buf, "%d\n", idac0);
}
@@ -474,9 +469,9 @@ static ssize_t touchkey_idac1_show(struct device *dev,
return 0;
#endif
- pr_debug("called %s\n", __func__);
+ printk(KERN_DEBUG "called %s\n", __func__);
ret = i2c_touchkey_read(tkey_i2c->client, KEYCODE_REG, data, 10);
- pr_debug("called %s data[7] = %d\n", __func__, data[7]);
+ printk(KERN_DEBUG "called %s data[7] = %d\n", __func__, data[7]);
idac1 = data[7];
return sprintf(buf, "%d\n", idac1);
}
@@ -492,9 +487,9 @@ static ssize_t touchkey_idac2_show(struct device *dev,
return 0;
#endif
- pr_debug("called %s\n", __func__);
+ printk(KERN_DEBUG "called %s\n", __func__);
ret = i2c_touchkey_read(tkey_i2c->client, KEYCODE_REG, data, 10);
- pr_debug("called %s data[8] =%d\n", __func__, data[8]);
+ printk(KERN_DEBUG "called %s data[8] =%d\n", __func__, data[8]);
idac2 = data[8];
return sprintf(buf, "%d\n", idac2);
}
@@ -510,9 +505,9 @@ static ssize_t touchkey_idac3_show(struct device *dev,
return 0;
#endif
- pr_debug("called %s\n", __func__);
+ printk(KERN_DEBUG "called %s\n", __func__);
ret = i2c_touchkey_read(tkey_i2c->client, KEYCODE_REG, data, 10);
- pr_debug("called %s data[9] = %d\n", __func__, data[9]);
+ printk(KERN_DEBUG "called %s data[9] = %d\n", __func__, data[9]);
idac3 = data[9];
return sprintf(buf, "%d\n", idac3);
}
@@ -524,9 +519,9 @@ static ssize_t touchkey_threshold_show(struct device *dev,
u8 data[10];
int ret;
- pr_debug("called %s\n", __func__);
+ printk(KERN_DEBUG "called %s\n", __func__);
ret = i2c_touchkey_read(tkey_i2c->client, KEYCODE_REG, data, 10);
- pr_debug("called %s data[4] = %d\n", __func__, data[4]);
+ printk(KERN_DEBUG "called %s data[4] = %d\n", __func__, data[4]);
touchkey_threshold = data[4];
return sprintf(buf, "%d\n", touchkey_threshold);
}
@@ -544,12 +539,13 @@ static int touchkey_firmware_update(struct touchkey_i2c *tkey_i2c)
ret = i2c_touchkey_read(tkey_i2c->client, KEYCODE_REG, data, 3);
if (ret < 0) {
- pr_debug("[TouchKey] i2c read fail. do not excute firm update.\n");
+ printk(KERN_DEBUG
+ "[TouchKey] i2c read fail. do not excute firm update.\n");
data[1] = 0;
data[2] = 0;
}
- pr_err("%s F/W version: 0x%x, Module version:0x%x\n", __func__,
+ printk(KERN_ERR "%s F/W version: 0x%x, Module version:0x%x\n", __func__,
data[1], data[2]);
tkey_i2c->firmware_ver = data[1];
@@ -563,34 +559,39 @@ static int touchkey_firmware_update(struct touchkey_i2c *tkey_i2c)
if ((tkey_i2c->firmware_ver < TK_FIRMWARE_VER) &&
(tkey_i2c->module_ver == TK_MODULE_VER)) {
#endif
- pr_debug("[TouchKey] firmware auto update excute\n");
+ printk(KERN_DEBUG "[TouchKey] firmware auto update excute\n");
tkey_i2c->update_status = TK_UPDATE_DOWN;
while (retry--) {
if (ISSP_main(tkey_i2c) == 0) {
- pr_debug("[TouchKey]firmware update succeeded\n");
+ printk(KERN_DEBUG
+ "[TouchKey]firmware update succeeded\n");
tkey_i2c->update_status = TK_UPDATE_PASS;
msleep(50);
break;
}
msleep(50);
- pr_debug("[TouchKey] firmware update failed. retry\n");
+ printk(KERN_DEBUG
+ "[TouchKey] firmware update failed. retry\n");
}
if (retry <= 0) {
tkey_i2c->pdata->power_on(0);
tkey_i2c->update_status = TK_UPDATE_FAIL;
- pr_debug("[TouchKey] firmware update failed.\n");
+ printk(KERN_DEBUG
+ "[TouchKey] firmware update failed.\n");
}
ret = touchkey_i2c_check(tkey_i2c);
if (ret < 0) {
- pr_debug("[TouchKey] i2c read fail.\n");
+ printk(KERN_DEBUG
+ "[TouchKey] i2c read fail.\n");
return TK_UPDATE_FAIL;
}
#if defined(CONFIG_TARGET_LOCALE_KOR)
ret = i2c_touchkey_read(tkey_i2c->client, KEYCODE_REG, data, 3);
if (ret < 0) {
- pr_debug("[TouchKey] i2c read fail. do not excute firm update.\n");
+ printk(KERN_DEBUG
+ "[TouchKey] i2c read fail. do not excute firm update.\n");
}
tkey_i2c->firmware_ver = data[1];
tkey_i2c->module_ver = data[2];
@@ -598,10 +599,13 @@ static int touchkey_firmware_update(struct touchkey_i2c *tkey_i2c)
printk(KERN_DEBUG "[TouchKey] firm ver = %d, module ver = %d\n",
tkey_i2c->firmware_ver, tkey_i2c->module_ver);
} else {
- pr_debug("[TouchKey] firmware auto update do not excute\n");
- pr_debug("[TouchKey] firmware_ver(banary=%d, current=%d)\n",
+ printk(KERN_DEBUG
+ "[TouchKey] firmware auto update do not excute\n");
+ printk(KERN_DEBUG
+ "[TouchKey] firmware_ver(banary=%d, current=%d)\n",
TK_FIRMWARE_VER, tkey_i2c->firmware_ver);
- pr_debug("[TouchKey] module_ver(banary=%d, current=%d)\n",
+ printk(KERN_DEBUG
+ "[TouchKey] module_ver(banary=%d, current=%d)\n",
TK_MODULE_VER, tkey_i2c->module_ver);
}
enable_irq(tkey_i2c->irq);
@@ -616,11 +620,12 @@ static int touchkey_firmware_update(struct touchkey_i2c *tkey_i2c)
ret = i2c_touchkey_read(tkey_i2c->client, KEYCODE_REG, data, 3);
if (ret < 0) {
- pr_debug("[TouchKey] i2c read fail. do not excute firm update.\n");
+ printk(KERN_DEBUG
+ "[TouchKey] i2c read fail. do not excute firm update.\n");
return ret;
}
- pr_err("%s F/W version: 0x%x, Module version:0x%x\n", __func__,
+ printk(KERN_ERR "%s F/W version: 0x%x, Module version:0x%x\n", __func__,
data[1], data[2]);
retry = 3;
@@ -631,11 +636,12 @@ static int touchkey_firmware_update(struct touchkey_i2c *tkey_i2c)
tkey_i2c->update_status = TK_UPDATE_DOWN;
while (retry--) {
if (ISSP_main(tkey_i2c) == 0) {
- pr_err("[TOUCHKEY]Touchkey_update succeeded\n");
+ printk(KERN_ERR
+ "[TOUCHKEY]Touchkey_update succeeded\n");
tkey_i2c->update_status = TK_UPDATE_PASS;
break;
}
- pr_err("touchkey_update failed...retry...\n");
+ printk(KERN_ERR "touchkey_update failed...retry...\n");
}
if (retry <= 0) {
tkey_i2c->pdata->power_on(0);
@@ -644,9 +650,11 @@ static int touchkey_firmware_update(struct touchkey_i2c *tkey_i2c)
}
} else {
if (tkey_i2c->firmware_ver >= 0x0A) {
- pr_err("[TouchKey] Not F/W update. Cypess touch-key F/W version is latest\n");
+ printk(KERN_ERR
+ "[TouchKey] Not F/W update. Cypess touch-key F/W version is latest\n");
} else {
- pr_err("[TouchKey] Not F/W update. Cypess touch-key version(module or F/W) is not valid\n");
+ printk(KERN_ERR
+ "[TouchKey] Not F/W update. Cypess touch-key version(module or F/W) is not valid\n");
}
}
return ret;
@@ -657,7 +665,6 @@ static int touchkey_firmware_update(struct touchkey_i2c *tkey_i2c)
static irqreturn_t touchkey_interrupt(int irq, void *dev_id)
{
struct touchkey_i2c *tkey_i2c = dev_id;
- static const int ledCmd[] = {TK_CMD_LED_ON, TK_CMD_LED_OFF};
u8 data[3];
int ret;
int retry = 10;
@@ -666,13 +673,18 @@ static irqreturn_t touchkey_interrupt(int irq, void *dev_id)
set_touchkey_debug('a');
+ if (!atomic_read(&tkey_i2c->keypad_enable)) {
+ return;
+ }
+
retry = 3;
while (retry--) {
ret = i2c_touchkey_read(tkey_i2c->client, KEYCODE_REG, data, 3);
if (!ret)
break;
else {
- pr_debug("[TouchKey] i2c read failed, ret:%d, retry: %d\n",
+ printk(KERN_DEBUG
+ "[TouchKey] i2c read failed, ret:%d, retry: %d\n",
ret, retry);
continue;
}
@@ -686,58 +698,33 @@ static irqreturn_t touchkey_interrupt(int irq, void *dev_id)
pressed = !(data[0] & TK_BIT_PRESS_EV);
if (keycode_type <= 0 || keycode_type >= touchkey_count) {
- pr_debug("[Touchkey] keycode_type err\n");
+ printk(KERN_DEBUG "[Touchkey] keycode_type err\n");
return IRQ_HANDLED;
}
- if (pressed) {
+ if (pressed)
set_touchkey_debug('P');
- // enable lights on keydown
- if (touch_led_disabled == 0) {
- if (touchkey_led_status == TK_CMD_LED_OFF) {
- pr_debug("[Touchkey] %s: keydown - LED ON\n", __func__);
- i2c_touchkey_write(tkey_i2c->client, (u8 *) &ledCmd[0], 1);
- touchkey_led_status = TK_CMD_LED_ON;
- }
- if (timer_pending(&touch_led_timer) == 1) {
- mod_timer(&touch_led_timer, jiffies + (HZ * touch_led_timeout));
- }
- }
-
- } else {
- // touch led timeout on keyup
- if (touch_led_disabled == 0) {
- if (timer_pending(&touch_led_timer) == 0) {
- pr_debug("[Touchkey] %s: keyup - add_timer\n", __func__);
- touch_led_timer.expires = jiffies + (HZ * touch_led_timeout);
- add_timer(&touch_led_timer);
- } else {
- mod_timer(&touch_led_timer, jiffies + (HZ * touch_led_timeout));
- }
- }
- }
-
if (get_tsp_status() && pressed)
- pr_debug("[TouchKey] touchkey pressed but don't send event because touch is pressed.\n");
+ printk(KERN_DEBUG "[TouchKey] touchkey pressed but don't send event because touch is pressed.\n");
else {
input_report_key(tkey_i2c->input_dev,
touchkey_keycode[keycode_type], pressed);
input_sync(tkey_i2c->input_dev);
#if !defined(CONFIG_SAMSUNG_PRODUCT_SHIP)
- pr_debug("[TouchKey] keycode:%d pressed:%d\n",
+ printk(KERN_DEBUG "[TouchKey] keycode:%d pressed:%d\n",
touchkey_keycode[keycode_type], pressed);
#else
- pr_debug("[TouchKey] pressed:%d\n",
+ printk(KERN_DEBUG "[TouchKey] pressed:%d\n",
pressed);
#endif
#if defined(CONFIG_TARGET_LOCALE_KOR)
if (g_debug_tkey == true) {
- pr_debug("[TouchKey] keycode[%d]=%d pressed:%d\n",
+ printk(KERN_DEBUG "[TouchKey] keycode[%d]=%d pressed:%d\n",
keycode_type, touchkey_keycode[keycode_type], pressed);
} else {
- pr_debug("[TouchKey] pressed:%d\n", pressed);
+ printk(KERN_DEBUG "[TouchKey] pressed:%d\n", pressed);
}
#endif
}
@@ -756,7 +743,7 @@ static irqreturn_t touchkey_interrupt(int irq, void *dev_id)
#if 0
if (gpio_get_value(_3_GPIO_TOUCH_INT)) {
- pr_debug("[TouchKey] Unknown state.\n", __func__);
+ printk(KERN_DEBUG "[TouchKey] Unknown state.\n", __func__);
return IRQ_HANDLED;
}
#endif
@@ -780,7 +767,8 @@ static irqreturn_t touchkey_interrupt(int irq, void *dev_id)
if (!ret)
break;
else {
- pr_debug("[TouchKey] i2c read failed, ret:%d, retry: %d\n",
+ printk(KERN_DEBUG
+ "[TouchKey] i2c read failed, ret:%d, retry: %d\n",
ret, retry);
continue;
}
@@ -821,16 +809,15 @@ static irqreturn_t touchkey_interrupt(int irq, void *dev_id)
pressed = !(data[0] & TK_BIT_PRESS_EV);
if (keycode_type <= 0 || keycode_type >= touchkey_count) {
- pr_debug("[Touchkey] keycode_type err\n");
+ printk(KERN_DEBUG "[Touchkey] keycode_type err\n");
return IRQ_HANDLED;
}
- if (pressed) {
+ if (pressed)
set_touchkey_debug('P');
- }
if (get_tsp_status() && pressed)
- pr_debug("[TouchKey] touchkey pressed"
+ printk(KERN_DEBUG "[TouchKey] touchkey pressed"
" but don't send event because touch is pressed.\n");
else {
input_report_key(touchkey_driver->input_dev,
@@ -844,14 +831,14 @@ static irqreturn_t touchkey_interrupt(int irq, void *dev_id)
printk(KERN_DEBUG "search key sensitivity = %d\n",
search_sensitivity);
if (keycode_type == 2)
- pr_debug("back key sensitivity = %d\n",
+ printk(KERN_DEBUG "back key sensitivity = %d\n",
back_sensitivity);
#ifdef CONFIG_TARGET_LOCALE_NA
if (keycode_type == 3)
- pr_debug("home key sensitivity = %d\n",
+ printk(KERN_DEBUG "home key sensitivity = %d\n",
home_sensitivity);
if (keycode_type == 4)
- pr_debug("menu key sensitivity = %d\n",
+ printk(KERN_DEBUG "menu key sensitivity = %d\n",
menu_sensitivity);
#endif
@@ -871,7 +858,7 @@ static int sec_touchkey_early_suspend(struct early_suspend *h)
disable_irq(tkey_i2c->irq);
ret = cancel_work_sync(&tkey_i2c->update_work);
if (ret) {
- pr_debug("[Touchkey] enable_irq ret=%d\n", ret);
+ printk(KERN_DEBUG "[Touchkey] enable_irq ret=%d\n", ret);
enable_irq(tkey_i2c->irq);
}
@@ -884,9 +871,9 @@ static int sec_touchkey_early_suspend(struct early_suspend *h)
touchkey_enable = 0;
set_touchkey_debug('S');
- pr_debug("[TouchKey] sec_touchkey_early_suspend\n");
+ printk(KERN_DEBUG "[TouchKey] sec_touchkey_early_suspend\n");
if (touchkey_enable < 0) {
- pr_debug("[TouchKey] ---%s---touchkey_enable: %d\n",
+ printk(KERN_DEBUG "[TouchKey] ---%s---touchkey_enable: %d\n",
__func__, touchkey_enable);
return 0;
}
@@ -909,13 +896,13 @@ static int sec_touchkey_late_resume(struct early_suspend *h)
#endif
set_touchkey_debug('R');
- pr_debug("[TouchKey] sec_touchkey_late_resume\n");
+ printk(KERN_DEBUG "[TouchKey] sec_touchkey_late_resume\n");
/* enable ldo11 */
tkey_i2c->pdata->power_on(1);
if (touchkey_enable < 0) {
- pr_debug("[TouchKey] ---%s---touchkey_enable: %d\n",
+ printk(KERN_DEBUG "[TouchKey] ---%s---touchkey_enable: %d\n",
__func__, touchkey_enable);
return 0;
}
@@ -932,7 +919,7 @@ static int sec_touchkey_late_resume(struct early_suspend *h)
touchled_cmd_reversed = 0;
i2c_touchkey_write(tkey_i2c->client,
(u8 *) &touchkey_led_status, 1);
- pr_debug("[Touchkey] LED returned on\n");
+ printk(KERN_DEBUG "[Touchkey] LED returned on\n");
}
#ifdef TEST_JIG_MODE
i2c_touchkey_write(tkey_i2c->client, &get_touch, 1);
@@ -951,7 +938,7 @@ static int touchkey_i2c_check(struct touchkey_i2c *tkey_i2c)
ret = i2c_touchkey_read(tkey_i2c->client, KEYCODE_REG, data, 3);
if (ret < 0) {
- pr_err("[TouchKey] module version read fail\n");
+ printk(KERN_ERR "[TouchKey] module version read fail\n");
return ret;
}
@@ -983,8 +970,8 @@ static ssize_t touch_version_read(struct device *dev,
count = sprintf(buf, "0x%x\n", data[1]);
- pr_debug("[TouchKey] touch_version_read 0x%x\n", data[1]);
- pr_debug("[TouchKey] module_version_read 0x%x\n", data[2]);
+ printk(KERN_DEBUG "[TouchKey] touch_version_read 0x%x\n", data[1]);
+ printk(KERN_DEBUG "[TouchKey] module_version_read 0x%x\n", data[2]);
return count;
}
@@ -1006,15 +993,16 @@ void touchkey_update_func(struct work_struct *work)
#if defined(CONFIG_TARGET_LOCALE_NAATT)
char data[3];
i2c_touchkey_read(tkey_i2c->client, KEYCODE_REG, data, 3);
- pr_debug("[Touchkey] %s: F/W version: 0x%x, Module version:0x%x\n",
+ printk(KERN_DEBUG "[%s] F/W version: 0x%x, Module version:0x%x\n",
__func__, data[1], data[2]);
#endif
tkey_i2c->update_status = TK_UPDATE_DOWN;
- pr_debug("[Touchkey] %s: start\n", __func__);
+ printk(KERN_DEBUG "[TouchKey] %s start\n", __func__);
touchkey_enable = 0;
while (retry--) {
if (ISSP_main(tkey_i2c) == 0) {
- pr_debug("[TouchKey] touchkey_update succeeded\n");
+ printk(KERN_DEBUG
+ "[TouchKey] touchkey_update succeeded\n");
msleep(50);
touchkey_enable = 1;
#if defined(TK_HAS_AUTOCAL)
@@ -1093,13 +1081,13 @@ static ssize_t touchkey_led_control(struct device *dev,
#endif
ret = sscanf(buf, "%d", &data);
if (ret != 1) {
- printk(KERN_DEBUG "[Touchkey] %s: %d err\n",
+ printk(KERN_DEBUG "[TouchKey] %s, %d err\n",
__func__, __LINE__);
return size;
}
if (data != 1 && data != 2) {
- printk(KERN_DEBUG "[Touchkey] %s: wrong cmd %x\n",
+ printk(KERN_DEBUG "[TouchKey] %s wrong cmd %x\n",
__func__, data);
return size;
}
@@ -1111,154 +1099,17 @@ static ssize_t touchkey_led_control(struct device *dev,
data = ledCmd[data-1];
#endif
- if (touch_led_disabled == 0) {
- ret = i2c_touchkey_write(tkey_i2c->client, (u8 *) &data, 1);
- }
-
- if(data == ledCmd[0]) {
- if (touch_led_disabled == 0) {
- if (timer_pending(&touch_led_timer) == 0) {
- pr_debug("[Touchkey] %s: add_timer\n", __func__);
- touch_led_timer.expires = jiffies + (HZ * touch_led_timeout);
- add_timer(&touch_led_timer);
- } else {
- mod_timer(&touch_led_timer, jiffies + (HZ * touch_led_timeout));
- }
- }
- } else {
- if (timer_pending(&touch_led_timer) == 1) {
- pr_debug("[Touchkey] %s: del_timer\n", __func__);
- del_timer(&touch_led_timer);
- }
- }
-
- if (ret == -ENODEV) {
- pr_err("[Touchkey] error to write i2c\n");
+ ret = i2c_touchkey_write(tkey_i2c->client, (u8 *) &data, 1);
+
+ if (ret == -ENODEV)
touchled_cmd_reversed = 1;
- }
- pr_debug("[Touchkey] %s: touchkey_led_status=%d\n", __func__, data);
touchkey_led_status = data;
return size;
}
-static ssize_t touch_led_force_disable_show(struct device *dev,
- struct device_attribute *attr, char *buf)
-{
- int ret;
-
- ret = sprintf(buf, "%d\n", touch_led_disabled);
- pr_info("[Touchkey] %s: touch_led_disabled=%d\n", __func__, touch_led_disabled);
-
- return ret;
-}
-
-static ssize_t touch_led_force_disable_store(struct device *dev,
- struct device_attribute *attr, const char *buf,
- size_t size)
-{
- struct touchkey_i2c *tkey_i2c = dev_get_drvdata(dev);
- static const int ledCmd[] = {TK_CMD_LED_ON, TK_CMD_LED_OFF};
- int data, ret;
-
- ret = sscanf(buf, "%d\n", &data);
- if (unlikely(ret != 1)) {
- pr_err("[Touchkey] %s: err\n", __func__);
- return -EINVAL;
- }
- pr_info("[Touchkey] %s: value=%d\n", __func__, data);
-
- if (data == 1) {
- i2c_touchkey_write(tkey_i2c->client, (u8 *) &ledCmd[1], 1);
- touchkey_led_status = TK_CMD_LED_OFF;
- }
- touch_led_disabled = data;
-
- return size;
-}
-static DEVICE_ATTR(force_disable, S_IRUGO | S_IWUSR | S_IWGRP,
- touch_led_force_disable_show, touch_led_force_disable_store);
-
-static ssize_t touch_led_timeout_show(struct device *dev,
- struct device_attribute *attr, char *buf)
-{
- int ret;
-
- ret = sprintf(buf, "%d\n", touch_led_timeout);
- pr_info("[Touchkey] %s: touch_led_timeout=%d\n", __func__, touch_led_timeout);
-
- return ret;
-}
-
-static ssize_t touch_led_timeout_store(struct device *dev,
- struct device_attribute *attr, const char *buf,
- size_t size)
-{
- int data;
- int ret;
-
- ret = sscanf(buf, "%d\n", &data);
- if (unlikely(ret != 1)) {
- pr_err("[Touchkey] %s: err\n", __func__);
- return -EINVAL;
- }
- pr_info("[Touchkey] %s: new timeout=%d\n", __func__, data);
- touch_led_timeout = data;
-
- return size;
-}
-static DEVICE_ATTR(timeout, S_IRUGO | S_IWUSR | S_IWGRP,
- touch_led_timeout_show, touch_led_timeout_store);
-
-void touch_led_timedout(unsigned long ptr)
-{
- queue_work(tkey_i2c_local->wq, &tkey_i2c_local->work);
-}
-
-void touch_led_timedout_work(struct work_struct *work)
-{
- struct touchkey_i2c *tkey_i2c = container_of(work, struct touchkey_i2c, work);
- static const int ledCmd[] = {TK_CMD_LED_ON, TK_CMD_LED_OFF};
-
- if (touch_led_timeout != 0)
- {
- pr_debug("[Touchkey] %s: disabling touchled\n", __func__);
- i2c_touchkey_write(tkey_i2c->client, (u8 *) &ledCmd[1], 1);
- touchkey_led_status = TK_CMD_LED_OFF;
- }
-}
-
-void touchscreen_state_report(int state)
-{
- static const int ledCmd[] = {TK_CMD_LED_ON, TK_CMD_LED_OFF};
-
- if (touch_led_disabled == 0) {
- if (state == 1) {
- if(touchkey_led_status == TK_CMD_LED_OFF) {
- pr_debug("[Touchkey] %s: enable touchleds\n", __func__);
- i2c_touchkey_write(tkey_i2c_local->client, (u8 *) &ledCmd[0], 1);
- touchkey_led_status = TK_CMD_LED_ON;
- } else {
- if (timer_pending(&touch_led_timer) == 1) {
- pr_debug("[Touchkey] %s: mod_timer\n", __func__);
- mod_timer(&touch_led_timer, jiffies + (HZ * touch_led_timeout));
- }
- }
- } else if (state == 0) {
- if (timer_pending(&touch_led_timer) == 1) {
- pr_debug("[Touchkey] %s: mod_timer\n", __func__);
- mod_timer(&touch_led_timer, jiffies + (HZ * touch_led_timeout));
- } else if (touchkey_led_status == TK_CMD_LED_ON){
- pr_debug("[Touchkey] %s: add_timer\n", __func__);
- touch_led_timer.expires = jiffies + (HZ * touch_led_timeout);
- add_timer(&touch_led_timer);
- }
- }
- }
-}
-
-#if defined(TK_USE_4KEY) || defined(CONFIG_TARGET_LOCALE_NAATT) || defined(CONFIG_TARGET_LOCALE_NA)
+#if defined(TK_USE_4KEY)
static ssize_t touchkey_menu_show(struct device *dev,
struct device_attribute *attr, char *buf)
{
@@ -1266,20 +1117,20 @@ static ssize_t touchkey_menu_show(struct device *dev,
u8 data[18] = { 0, };
int ret;
- pr_debug("[Touchkey] %s called\n", __func__);
+ printk(KERN_DEBUG "called %s\n", __func__);
ret = i2c_touchkey_read(tkey_i2c->client, KEYCODE_REG, data, 18);
#ifdef CONFIG_TARGET_LOCALE_NA
if (tkey_i2c->module_ver < 8) {
- pr_debug("[Touchkey] %s: data[12] =%d,data[13] = %d\n",
+ printk(KERN_DEBUG "called %s data[12] =%d,data[13] = %d\n",
__func__, data[12], data[13]);
menu_sensitivity = ((0x00FF & data[12]) << 8) | data[13];
} else {
- pr_debug("[Touchkey] %s: data[17] =%d\n", __func__,
+ printk(KERN_DEBUG "called %s data[17] =%d\n", __func__,
data[17]);
menu_sensitivity = data[17];
}
#else
- pr_debug("[Touchkey] %s: data[10] =%d,data[11] = %d\n", __func__,
+ printk(KERN_DEBUG "called %s data[10] =%d,data[11] = %d\n", __func__,
data[10], data[11]);
menu_sensitivity = ((0x00FF & data[10]) << 8) | data[11];
#endif /* CONFIG_TARGET_LOCALE_NA */
@@ -1293,20 +1144,20 @@ static ssize_t touchkey_home_show(struct device *dev,
u8 data[18] = { 0, };
int ret;
- pr_debug("[TouchKey] %s called\n", __func__);
+ printk(KERN_DEBUG "called %s\n", __func__);
ret = i2c_touchkey_read(tkey_i2c->client, KEYCODE_REG, data, 18);
#ifdef CONFIG_TARGET_LOCALE_NA
if (tkey_i2c->module_ver < 8) {
- pr_debug("[Touchkey] %s: data[10] =%d,data[11] = %d\n",
+ printk(KERN_DEBUG "called %s data[10] =%d,data[11] = %d\n",
__func__, data[10], data[11]);
home_sensitivity = ((0x00FF & data[10]) << 8) | data[11];
} else {
- pr_debug("[Touchkey] %s: data[15] =%d\n", __func__,
+ printk(KERN_DEBUG "called %s data[15] =%d\n", __func__,
data[15]);
home_sensitivity = data[15];
}
#else
- pr_debug("[Touchkey] %s: data[12] =%d,data[13] = %d\n", __func__,
+ printk(KERN_DEBUG "called %s data[12] =%d,data[13] = %d\n", __func__,
data[12], data[13]);
home_sensitivity = ((0x00FF & data[12]) << 8) | data[13];
#endif /* CONFIG_TARGET_LOCALE_NA */
@@ -1320,20 +1171,20 @@ static ssize_t touchkey_back_show(struct device *dev,
u8 data[18] = { 0, };
int ret;
- pr_debug("[TouchKey] %s called\n", __func__);
+ printk(KERN_DEBUG "called %s\n", __func__);
ret = i2c_touchkey_read(tkey_i2c->client, KEYCODE_REG, data, 18);
#ifdef CONFIG_TARGET_LOCALE_NA
if (tkey_i2c->module_ver < 8) {
- pr_debug("[Touchkey] %s: data[8] =%d,data[9] = %d\n",
+ printk(KERN_DEBUG "called %s data[8] =%d,data[9] = %d\n",
__func__, data[8], data[9]);
back_sensitivity = ((0x00FF & data[8]) << 8) | data[9];
} else {
- pr_debug("[Touchkey] %s: data[13] =%d\n", __func__,
+ printk(KERN_DEBUG "called %s data[13] =%d\n", __func__,
data[13]);
back_sensitivity = data[13];
}
#else
- pr_debug("[Touchkey] %s: data[14] =%d,data[15] = %d\n", __func__,
+ printk(KERN_DEBUG "called %s data[14] =%d,data[15] = %d\n", __func__,
data[14], data[15]);
back_sensitivity = ((0x00FF & data[14]) << 8) | data[15];
#endif /* CONFIG_TARGET_LOCALE_NA */
@@ -1347,20 +1198,20 @@ static ssize_t touchkey_search_show(struct device *dev,
u8 data[18] = { 0, };
int ret;
- pr_debug("[TouchKey] %s called\n", __func__);
+ printk(KERN_DEBUG "called %s\n", __func__);
ret = i2c_touchkey_read(tkey_i2c->client, KEYCODE_REG, data, 18);
#ifdef CONFIG_TARGET_LOCALE_NA
if (tkey_i2c->module_ver < 8) {
- pr_debug("[Touchkey] %s: data[6] =%d,data[7] = %d\n",
+ printk(KERN_DEBUG "called %s data[6] =%d,data[7] = %d\n",
__func__, data[6], data[7]);
search_sensitivity = ((0x00FF & data[6]) << 8) | data[7];
} else {
- pr_debug("[Touchkey] %s: data[11] =%d\n", __func__,
+ printk(KERN_DEBUG "called %s data[11] =%d\n", __func__,
data[11]);
search_sensitivity = data[11];
}
#else
- pr_debug("[Touchkey] %s: data[16] =%d,data[17] = %d\n", __func__,
+ printk(KERN_DEBUG "called %s data[16] =%d,data[17] = %d\n", __func__,
data[16], data[17]);
search_sensitivity = ((0x00FF & data[16]) << 8) | data[17];
#endif /* CONFIG_TARGET_LOCALE_NA */
@@ -1379,13 +1230,17 @@ static ssize_t touchkey_menu_show(struct device *dev,
ret = i2c_touchkey_read(tkey_i2c->client, KEYCODE_REG, data, 14);
- pr_debug("[Touchkey] %s: data[13] =%d\n", __func__, data[13]);
- menu_sensitivity = data[13];
+ printk(KERN_DEBUG "called %s data[12] = %d, data[13] =%d\n", __func__,
+ data[12], data[13]);
+ menu_sensitivity = ((0x00FF & data[12]) << 8) | data[13];
+ printk(KERN_DEBUG "called %s menu_sensitivity =%d\n", __func__,
+ menu_sensitivity);
+
#else
u8 data[10];
int ret;
- pr_debug("[TouchKey] %s called\n", __func__);
+ printk(KERN_DEBUG "called %s\n", __func__);
ret = i2c_touchkey_read(tkey_i2c->client, KEYCODE_REG, data, 10);
menu_sensitivity = data[7];
#endif
@@ -1404,13 +1259,16 @@ static ssize_t touchkey_back_show(struct device *dev,
ret = i2c_touchkey_read(tkey_i2c->client, KEYCODE_REG, data, 14);
- pr_debug("[Touchkey] %s: data[11] =%d\n", __func__, data[11]);
- back_sensitivity = data[11];
+ printk(KERN_DEBUG "called %s data[10] = %d, data[11] =%d\n", __func__,
+ data[10], data[11]);
+ back_sensitivity =((0x00FF & data[10]) << 8) | data[11];
+ printk(KERN_DEBUG "called %s back_sensitivity =%d\n", __func__,
+ back_sensitivity);
#else
u8 data[10];
int ret;
- pr_debug("[TouchKey] %s called\n", __func__);
+ printk(KERN_DEBUG "called %s\n", __func__);
ret = i2c_touchkey_read(tkey_i2c->client, KEYCODE_REG, data, 10);
back_sensitivity = data[9];
#endif
@@ -1441,7 +1299,7 @@ static ssize_t autocalibration_status(struct device *dev,
int ret;
struct touchkey_i2c *tkey_i2c = dev_get_drvdata(dev);
- pr_debug("[Touchkey] %s\n", __func__);
+ printk(KERN_DEBUG "[Touchkey] %s\n", __func__);
ret = i2c_touchkey_read(tkey_i2c->client, KEYCODE_REG, data, 6);
if ((data[5] & TK_BIT_AUTOCAL))
@@ -1487,19 +1345,20 @@ static ssize_t set_touchkey_update_show(struct device *dev,
while (retry--) {
if (ISSP_main(tkey_i2c) == 0) {
- pr_err("[TouchKey] Touchkey_update succeeded\n");
+ printk(KERN_ERR
+ "[TouchKey]Touchkey_update succeeded\n");
tkey_i2c->update_status = TK_UPDATE_PASS;
count = 1;
msleep(50);
break;
}
- pr_err("[TouchKey] touchkey_update failed... retry...\n");
+ printk(KERN_ERR "touchkey_update failed... retry...\n");
}
if (retry <= 0) {
/* disable ldo11 */
tkey_i2c->pdata->power_on(0);
count = 0;
- pr_err("[TouchKey] Touchkey_update fail\n");
+ printk(KERN_ERR "[TouchKey]Touchkey_update fail\n");
tkey_i2c->update_status = TK_UPDATE_FAIL;
enable_irq(tkey_i2c->irq);
return count;
@@ -1530,8 +1389,8 @@ static ssize_t set_touchkey_firm_version_read_show(struct device *dev,
i2c_touchkey_read(tkey_i2c->client, KEYCODE_REG, data, 3);
count = sprintf(buf, "0x%x\n", data[1]);
- pr_debug("[TouchKey] touch_version_read 0x%x\n", data[1]);
- pr_debug("[TouchKey] module_version_read 0x%x\n", data[2]);
+ printk(KERN_DEBUG "[TouchKey] touch_version_read 0x%x\n", data[1]);
+ printk(KERN_DEBUG "[TouchKey] module_version_read 0x%x\n", data[2]);
return count;
}
@@ -1542,7 +1401,8 @@ static ssize_t set_touchkey_firm_status_show(struct device *dev,
struct touchkey_i2c *tkey_i2c = dev_get_drvdata(dev);
int count = 0;
- pr_debug("[TouchKey] touch_update_read: update_status %d\n",
+ printk(KERN_DEBUG
+ "[TouchKey] touch_update_read: update_status %d\n",
tkey_i2c->update_status);
if (tkey_i2c->update_status == TK_UPDATE_PASS)
@@ -1555,6 +1415,40 @@ static ssize_t set_touchkey_firm_status_show(struct device *dev,
return count;
}
+static ssize_t sec_keypad_enable_show(struct device *dev,
+ struct device_attribute *attr, char *buf)
+{
+ struct touchkey_i2c *tkey_i2c = dev_get_drvdata(dev);
+
+ return sprintf(buf, "%d\n", atomic_read(&tkey_i2c->keypad_enable));
+}
+
+static ssize_t sec_keypad_enable_store(struct device *dev,
+ struct device_attribute *attr, const char *buf, size_t count)
+{
+ struct touchkey_i2c *tkey_i2c = dev_get_drvdata(dev);
+
+ unsigned int val = 0;
+ sscanf(buf, "%d", &val);
+ val = (val == 0 ? 0 : 1);
+ atomic_set(&tkey_i2c->keypad_enable, val);
+ if (val) {
+ set_bit(KEY_BACK, tkey_i2c->input_dev->keybit);
+ set_bit(KEY_MENU, tkey_i2c->input_dev->keybit);
+ set_bit(KEY_HOME, tkey_i2c->input_dev->keybit);
+ } else {
+ clear_bit(KEY_BACK, tkey_i2c->input_dev->keybit);
+ clear_bit(KEY_MENU, tkey_i2c->input_dev->keybit);
+ clear_bit(KEY_HOME, tkey_i2c->input_dev->keybit);
+ }
+ input_sync(tkey_i2c->input_dev);
+
+ return count;
+}
+
+static DEVICE_ATTR(keypad_enable, S_IRUGO|S_IWUSR, sec_keypad_enable_show,
+ sec_keypad_enable_store);
+
static DEVICE_ATTR(recommended_version, S_IRUGO | S_IWUSR | S_IWGRP,
touch_version_read, touch_version_write);
static DEVICE_ATTR(updated_version, S_IRUGO | S_IWUSR | S_IWGRP,
@@ -1586,7 +1480,7 @@ static DEVICE_ATTR(touchkey_brightness, S_IRUGO | S_IWUSR | S_IWGRP, NULL,
brightness_control);
#endif
-#if 0 /* #if defined(CONFIG_TARGET_LOCALE_NAATT) */
+#if defined(CONFIG_TARGET_LOCALE_NAATT)
static DEVICE_ATTR(touchkey_autocal_start, S_IRUGO | S_IWUSR | S_IWGRP, NULL,
set_touchkey_autocal_testmode);
#endif
@@ -1625,7 +1519,7 @@ static struct attribute *touchkey_attributes[] = {
#ifdef LED_LDO_WITH_REGULATOR
&dev_attr_touchkey_brightness.attr,
#endif
-#if 0/* defined(CONFIG_TARGET_LOCALE_NAATT) */
+#if defined(CONFIG_TARGET_LOCALE_NAATT)
&dev_attr_touchkey_autocal_start.attr,
#endif
#if defined(TK_HAS_AUTOCAL)
@@ -1640,9 +1534,8 @@ static struct attribute *touchkey_attributes[] = {
&dev_attr_touchkey_threshold.attr,
&dev_attr_autocal_enable.attr,
&dev_attr_autocal_stat.attr,
+ &dev_attr_keypad_enable.attr,
#endif
- &dev_attr_timeout.attr,
- &dev_attr_force_disable.attr,
NULL,
};
@@ -1662,7 +1555,7 @@ static int i2c_touchkey_probe(struct i2c_client *client,
int i;
int ret;
- pr_debug("[TouchKey] i2c_touchkey_probe\n");
+ printk(KERN_DEBUG "[TouchKey] i2c_touchkey_probe\n");
if (pdata == NULL) {
printk(KERN_ERR "%s: no pdata\n", __func__);
@@ -1672,7 +1565,7 @@ static int i2c_touchkey_probe(struct i2c_client *client,
/*Check I2C functionality */
ret = i2c_check_functionality(client->adapter, I2C_FUNC_I2C);
if (ret == 0) {
- pr_err("[Touchkey] No I2C functionality found\n");
+ printk(KERN_ERR "[Touchkey] No I2C functionality found\n");
ret = -ENODEV;
return ret;
}
@@ -1680,15 +1573,14 @@ static int i2c_touchkey_probe(struct i2c_client *client,
/*Obtain kernel memory space for touchkey i2c */
tkey_i2c = kzalloc(sizeof(struct touchkey_i2c), GFP_KERNEL);
if (NULL == tkey_i2c) {
- pr_err("[Touchkey] failed to allocate tkey_i2c.\n");
+ printk(KERN_ERR "[Touchkey] failed to allocate tkey_i2c.\n");
return -ENOMEM;
}
- tkey_i2c_local = tkey_i2c;
input_dev = input_allocate_device();
if (!input_dev) {
- pr_err("[Touchkey] failed to allocate input device\n");
+ printk(KERN_ERR"[Touchkey] failed to allocate input device\n");
kfree(tkey_i2c);
return -ENOMEM;
}
@@ -1710,6 +1602,8 @@ static int i2c_touchkey_probe(struct i2c_client *client,
set_bit(LED_MISC, input_dev->ledbit);
set_bit(EV_KEY, input_dev->evbit);
+ atomic_set(&tkey_i2c->keypad_enable, 1);
+
for (i = 1; i < touchkey_count; i++)
set_bit(touchkey_keycode[i], input_dev->keybit);
@@ -1717,7 +1611,7 @@ static int i2c_touchkey_probe(struct i2c_client *client,
ret = input_register_device(input_dev);
if (ret) {
- pr_err("[Touchkey] failed to register input device\n");
+ printk(KERN_ERR"[Touchkey] failed to register input device\n");
input_free_device(input_dev);
kfree(tkey_i2c);
return err;
@@ -1735,24 +1629,27 @@ static int i2c_touchkey_probe(struct i2c_client *client,
tkey_i2c->dev = device_create(sec_class, NULL, 0, NULL, "sec_touchkey");
if (IS_ERR(tkey_i2c->dev)) {
- pr_err("[TouchKey] Failed to create device(tkey_i2c->dev)!\n");
+ printk(KERN_ERR "Failed to create device(tkey_i2c->dev)!\n");
input_unregister_device(input_dev);
} else {
dev_set_drvdata(tkey_i2c->dev, tkey_i2c);
ret = sysfs_create_group(&tkey_i2c->dev->kobj,
&touchkey_attr_group);
if (ret) {
- pr_err("[TouchKey]: failed to create sysfs group\n");
+ printk(KERN_ERR
+ "[TouchKey]: failed to create sysfs group\n");
}
}
#if defined(CONFIG_MACH_M0) || defined(CONFIG_MACH_C1)
gpio_request(GPIO_OLED_DET, "OLED_DET");
ret = gpio_get_value(GPIO_OLED_DET);
- pr_debug("[TouchKey] OLED_DET = %d\n", ret);
+ printk(KERN_DEBUG
+ "[TouchKey] OLED_DET = %d\n", ret);
if (ret == 0) {
- pr_debug("[TouchKey] device wasn't connected to board\n");
+ printk(KERN_DEBUG
+ "[TouchKey] device wasn't connected to board\n");
input_unregister_device(input_dev);
touchkey_probe = false;
@@ -1761,7 +1658,7 @@ static int i2c_touchkey_probe(struct i2c_client *client,
#else
ret = touchkey_i2c_check(tkey_i2c);
if (ret < 0) {
- pr_debug("[TouchKey] probe failed\n");
+ printk(KERN_DEBUG"[TouchKey] probe failed\n");
input_unregister_device(input_dev);
touchkey_probe = false;
return -EBUSY;
@@ -1773,7 +1670,8 @@ static int i2c_touchkey_probe(struct i2c_client *client,
IRQF_DISABLED | IRQF_TRIGGER_FALLING |
IRQF_ONESHOT, tkey_i2c->name, tkey_i2c);
if (ret < 0) {
- pr_err("[Touchkey]: failed to request irq(%d) - %d\n",
+ printk(KERN_ERR
+ "[Touchkey]: failed to request irq(%d) - %d\n",
tkey_i2c->irq, ret);
input_unregister_device(input_dev);
touchkey_probe = false;
@@ -1785,7 +1683,8 @@ static int i2c_touchkey_probe(struct i2c_client *client,
#if defined(TK_HAS_FIRMWARE_UPDATE)
ret = touchkey_firmware_update(tkey_i2c);
if (ret < 0) {
- pr_err("[Touchkey]: failed firmware updating process (%d)\n",
+ printk(KERN_ERR
+ "[Touchkey]: failed firmware updating process (%d)\n",
ret);
input_unregister_device(input_dev);
touchkey_probe = false;
@@ -1805,17 +1704,6 @@ static int i2c_touchkey_probe(struct i2c_client *client,
touchkey_autocalibration(tkey_i2c);
#endif
set_touchkey_debug('K');
-
- // init workqueue
- tkey_i2c->wq = create_singlethread_workqueue("tkey_i2c_wq");
- if (!tkey_i2c->wq) {
- ret = -ENOMEM;
- pr_err("[Touchkey] %s: could not create workqueue\n", __func__);
- }
-
- /* this is the thread function we run on the work queue */
- INIT_WORK(&tkey_i2c->work, touch_led_timedout_work);
-
return 0;
}
@@ -1833,13 +1721,13 @@ static int __init touchkey_init(void)
#if defined(CONFIG_MACH_M0)
if (system_rev < TOUCHKEY_FW_UPDATEABLE_HW_REV) {
- pr_debug("[Touchkey] Doesn't support this board rev %d\n",
+ printk(KERN_DEBUG "[Touchkey] Doesn't support this board rev %d\n",
system_rev);
return 0;
}
#elif defined(CONFIG_MACH_C1)
if (system_rev < TOUCHKEY_FW_UPDATEABLE_HW_REV) {
- pr_debug("[Touchkey] Doesn't support this board rev %d\n",
+ printk(KERN_DEBUG "[Touchkey] Doesn't support this board rev %d\n",
system_rev);
return 0;
}
@@ -1852,23 +1740,19 @@ static int __init touchkey_init(void)
ret = i2c_add_driver(&touchkey_i2c_driver);
if (ret) {
- pr_err("[TouchKey] registration failed, module not inserted.ret= %d\n",
+ printk(KERN_ERR
+ "[TouchKey] registration failed, module not inserted.ret= %d\n",
ret);
}
#ifdef TEST_JIG_MODE
i2c_touchkey_write(tkey_i2c->client, &get_touch, 1);
#endif
-
- // init the touchled timer
- init_timer(&touch_led_timer);
- touch_led_timer.function = touch_led_timedout;
-
return ret;
}
static void __exit touchkey_exit(void)
{
- pr_debug("[TouchKey] %s\n", __func__);
+ printk(KERN_DEBUG "[TouchKey] %s\n", __func__);
i2c_del_driver(&touchkey_i2c_driver);
}