@ -180,12 +180,6 @@
# define MXT_FWRESET_TIME 175 /* msec */
/* MXT_SPT_GPIOPWM_T19 field */
# define MXT_GPIO0_MASK 0x04
# define MXT_GPIO1_MASK 0x08
# define MXT_GPIO2_MASK 0x10
# define MXT_GPIO3_MASK 0x20
/* Command to unlock bootloader */
# define MXT_UNLOCK_CMD_MSB 0xaa
# define MXT_UNLOCK_CMD_LSB 0xdc
@ -250,7 +244,6 @@ struct mxt_data {
const struct mxt_platform_data * pdata ;
struct mxt_object * object_table ;
struct mxt_info info ;
bool is_tp ;
unsigned int irq ;
unsigned int max_x ;
@ -515,15 +508,16 @@ static int mxt_write_object(struct mxt_data *data,
static void mxt_input_button ( struct mxt_data * data , struct mxt_message * message )
{
struct input_dev * input = data - > input_dev ;
const struct mxt_platform_data * pdata = data - > pdata ;
bool button ;
int i ;
/* Active-low switch */
for ( i = 0 ; i < MXT_NUM_GPIO ; i + + ) {
if ( data - > pdata - > key_ map[ i ] = = KEY_RESERVED )
for ( i = 0 ; i < pdata - > t19_num_keys ; i + + ) {
if ( p data- > t19_key map[ i ] = = KEY_RESERVED )
continue ;
button = ! ( message - > message [ 0 ] & MXT_GPIO0_MASK < < i ) ;
input_report_key ( input , data - > pdata - > key_ map[ i ] , button ) ;
button = ! ( message - > message [ 0 ] & ( 1 < < i ) ) ;
input_report_key ( input , p data- > t19_key map[ i ] , button ) ;
}
}
@ -1084,6 +1078,8 @@ static int mxt_probe(struct i2c_client *client,
struct input_dev * input_dev ;
int error ;
unsigned int num_mt_slots ;
unsigned int mt_flags = 0 ;
int i ;
if ( ! pdata )
return - EINVAL ;
@ -1096,10 +1092,7 @@ static int mxt_probe(struct i2c_client *client,
goto err_free_mem ;
}
data - > is_tp = pdata & & pdata - > is_tp ;
input_dev - > name = ( data - > is_tp ) ? " Atmel maXTouch Touchpad " :
" Atmel maXTouch Touchscreen " ;
input_dev - > name = " Atmel maXTouch Touchscreen " ;
snprintf ( data - > phys , sizeof ( data - > phys ) , " i2c-%u-%04x/input0 " ,
client - > adapter - > nr , client - > addr ) ;
@ -1125,20 +1118,15 @@ static int mxt_probe(struct i2c_client *client,
__set_bit ( EV_KEY , input_dev - > evbit ) ;
__set_bit ( BTN_TOUCH , input_dev - > keybit ) ;
if ( data - > is_tp ) {
int i ;
__set_bit ( INPUT_PROP_POINTER , input_dev - > propbit ) ;
if ( pdata - > t19_num_keys ) {
__set_bit ( INPUT_PROP_BUTTONPAD , input_dev - > propbit ) ;
for ( i = 0 ; i < MXT_NUM_GPIO ; i + + )
if ( pdata - > key_map [ i ] ! = KEY_RESERVED )
__set_bit ( pdata - > key_map [ i ] , input_dev - > keybit ) ;
for ( i = 0 ; i < pdata - > t19_num_keys ; i + + )
if ( pdata - > t19_keymap [ i ] ! = KEY_RESERVED )
input_set_capability ( input_dev , EV_KEY ,
pdata - > t19_keymap [ i ] ) ;
__set_bit ( BTN_TOOL_FINGER , input_dev - > keybit ) ;
__set_bit ( BTN_TOOL_DOUBLETAP , input_dev - > keybit ) ;
__set_bit ( BTN_TOOL_TRIPLETAP , input_dev - > keybit ) ;
__set_bit ( BTN_TOOL_QUADTAP , input_dev - > keybit ) ;
__set_bit ( BTN_TOOL_QUINTTAP , input_dev - > keybit ) ;
mt_flags | = INPUT_MT_POINTER ;
input_abs_set_res ( input_dev , ABS_X , MXT_PIXELS_PER_MM ) ;
input_abs_set_res ( input_dev , ABS_Y , MXT_PIXELS_PER_MM ) ;
@ -1146,6 +1134,8 @@ static int mxt_probe(struct i2c_client *client,
MXT_PIXELS_PER_MM ) ;
input_abs_set_res ( input_dev , ABS_MT_POSITION_Y ,
MXT_PIXELS_PER_MM ) ;
input_dev - > name = " Atmel maXTouch Touchpad " ;
}
/* For single touch */
@ -1158,7 +1148,7 @@ static int mxt_probe(struct i2c_client *client,
/* For multi touch */
num_mt_slots = data - > T9_reportid_max - data - > T9_reportid_min + 1 ;
error = input_mt_init_slots ( input_dev , num_mt_slots , 0 ) ;
error = input_mt_init_slots ( input_dev , num_mt_slots , mt_flags ) ;
if ( error )
goto err_free_object ;
input_set_abs_params ( input_dev , ABS_MT_TOUCH_MAJOR ,