Commit c7b4a5d5 authored by Jiejing Zhang's avatar Jiejing Zhang Committed by Dmitry Torokhov

Input: mpr121 - improve sensibility of touch key

The Quick Charge bit in Electrode conf register should be set in init
function. This bit was missed in chip's document, which may cause touch
controller charge too slow to generate an interrupt.

Also, adjust the default vlaue of touch and release threshold
to make touch key more sensitive, this fix touch may not sensitive
after setup with plastic case.
Signed-off-by: default avatarJiejing Zhang <jiejing.zhang@freescale.com>
Signed-off-by: default avatarDmitry Torokhov <dtor@mail.ru>
parent 631b16e8
...@@ -43,14 +43,15 @@ ...@@ -43,14 +43,15 @@
* enabled capacitance sensing inputs and its run/suspend mode. * enabled capacitance sensing inputs and its run/suspend mode.
*/ */
#define ELECTRODE_CONF_ADDR 0x5e #define ELECTRODE_CONF_ADDR 0x5e
#define ELECTRODE_CONF_QUICK_CHARGE 0x80
#define AUTO_CONFIG_CTRL_ADDR 0x7b #define AUTO_CONFIG_CTRL_ADDR 0x7b
#define AUTO_CONFIG_USL_ADDR 0x7d #define AUTO_CONFIG_USL_ADDR 0x7d
#define AUTO_CONFIG_LSL_ADDR 0x7e #define AUTO_CONFIG_LSL_ADDR 0x7e
#define AUTO_CONFIG_TL_ADDR 0x7f #define AUTO_CONFIG_TL_ADDR 0x7f
/* Threshold of touch/release trigger */ /* Threshold of touch/release trigger */
#define TOUCH_THRESHOLD 0x0f #define TOUCH_THRESHOLD 0x08
#define RELEASE_THRESHOLD 0x0a #define RELEASE_THRESHOLD 0x05
/* Masks for touch and release triggers */ /* Masks for touch and release triggers */
#define TOUCH_STATUS_MASK 0xfff #define TOUCH_STATUS_MASK 0xfff
/* MPR121 has 12 keys */ /* MPR121 has 12 keys */
...@@ -127,7 +128,7 @@ static int __devinit mpr121_phys_init(const struct mpr121_platform_data *pdata, ...@@ -127,7 +128,7 @@ static int __devinit mpr121_phys_init(const struct mpr121_platform_data *pdata,
struct i2c_client *client) struct i2c_client *client)
{ {
const struct mpr121_init_register *reg; const struct mpr121_init_register *reg;
unsigned char usl, lsl, tl; unsigned char usl, lsl, tl, eleconf;
int i, t, vdd, ret; int i, t, vdd, ret;
/* Set up touch/release threshold for ele0-ele11 */ /* Set up touch/release threshold for ele0-ele11 */
...@@ -163,8 +164,15 @@ static int __devinit mpr121_phys_init(const struct mpr121_platform_data *pdata, ...@@ -163,8 +164,15 @@ static int __devinit mpr121_phys_init(const struct mpr121_platform_data *pdata,
ret = i2c_smbus_write_byte_data(client, AUTO_CONFIG_USL_ADDR, usl); ret = i2c_smbus_write_byte_data(client, AUTO_CONFIG_USL_ADDR, usl);
ret |= i2c_smbus_write_byte_data(client, AUTO_CONFIG_LSL_ADDR, lsl); ret |= i2c_smbus_write_byte_data(client, AUTO_CONFIG_LSL_ADDR, lsl);
ret |= i2c_smbus_write_byte_data(client, AUTO_CONFIG_TL_ADDR, tl); ret |= i2c_smbus_write_byte_data(client, AUTO_CONFIG_TL_ADDR, tl);
/*
* Quick charge bit will let the capacitive charge to ready
* state quickly, or the buttons may not function after system
* boot.
*/
eleconf = mpr121->keycount | ELECTRODE_CONF_QUICK_CHARGE;
ret |= i2c_smbus_write_byte_data(client, ELECTRODE_CONF_ADDR, ret |= i2c_smbus_write_byte_data(client, ELECTRODE_CONF_ADDR,
mpr121->keycount); eleconf);
if (ret != 0) if (ret != 0)
goto err_i2c_write; goto err_i2c_write;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment