diff options
Diffstat (limited to 'drivers/input')
-rw-r--r-- | drivers/input/touchscreen/atmel_mxt_ts.c | 16 |
1 files changed, 8 insertions, 8 deletions
diff --git a/drivers/input/touchscreen/atmel_mxt_ts.c b/drivers/input/touchscreen/atmel_mxt_ts.c index a9e0b541c638..2746b0dc7f36 100644 --- a/drivers/input/touchscreen/atmel_mxt_ts.c +++ b/drivers/input/touchscreen/atmel_mxt_ts.c | |||
@@ -212,8 +212,6 @@ | |||
212 | /* Touchscreen absolute values */ | 212 | /* Touchscreen absolute values */ |
213 | #define MXT_MAX_AREA 0xff | 213 | #define MXT_MAX_AREA 0xff |
214 | 214 | ||
215 | #define MXT_MAX_FINGER 10 | ||
216 | |||
217 | struct mxt_info { | 215 | struct mxt_info { |
218 | u8 family_id; | 216 | u8 family_id; |
219 | u8 variant_id; | 217 | u8 variant_id; |
@@ -1086,6 +1084,7 @@ static int __devinit mxt_probe(struct i2c_client *client, | |||
1086 | struct mxt_data *data; | 1084 | struct mxt_data *data; |
1087 | struct input_dev *input_dev; | 1085 | struct input_dev *input_dev; |
1088 | int error; | 1086 | int error; |
1087 | unsigned int num_mt_slots; | ||
1089 | 1088 | ||
1090 | if (!pdata) | 1089 | if (!pdata) |
1091 | return -EINVAL; | 1090 | return -EINVAL; |
@@ -1115,6 +1114,10 @@ static int __devinit mxt_probe(struct i2c_client *client, | |||
1115 | 1114 | ||
1116 | mxt_calc_resolution(data); | 1115 | mxt_calc_resolution(data); |
1117 | 1116 | ||
1117 | error = mxt_initialize(data); | ||
1118 | if (error) | ||
1119 | goto err_free_mem; | ||
1120 | |||
1118 | __set_bit(EV_ABS, input_dev->evbit); | 1121 | __set_bit(EV_ABS, input_dev->evbit); |
1119 | __set_bit(EV_KEY, input_dev->evbit); | 1122 | __set_bit(EV_KEY, input_dev->evbit); |
1120 | __set_bit(BTN_TOUCH, input_dev->keybit); | 1123 | __set_bit(BTN_TOUCH, input_dev->keybit); |
@@ -1128,9 +1131,10 @@ static int __devinit mxt_probe(struct i2c_client *client, | |||
1128 | 0, 255, 0, 0); | 1131 | 0, 255, 0, 0); |
1129 | 1132 | ||
1130 | /* For multi touch */ | 1133 | /* For multi touch */ |
1131 | error = input_mt_init_slots(input_dev, MXT_MAX_FINGER); | 1134 | num_mt_slots = data->T9_reportid_max - data->T9_reportid_min + 1; |
1135 | error = input_mt_init_slots(input_dev, num_mt_slots); | ||
1132 | if (error) | 1136 | if (error) |
1133 | goto err_free_mem; | 1137 | goto err_free_object; |
1134 | input_set_abs_params(input_dev, ABS_MT_TOUCH_MAJOR, | 1138 | input_set_abs_params(input_dev, ABS_MT_TOUCH_MAJOR, |
1135 | 0, MXT_MAX_AREA, 0, 0); | 1139 | 0, MXT_MAX_AREA, 0, 0); |
1136 | input_set_abs_params(input_dev, ABS_MT_POSITION_X, | 1140 | input_set_abs_params(input_dev, ABS_MT_POSITION_X, |
@@ -1143,10 +1147,6 @@ static int __devinit mxt_probe(struct i2c_client *client, | |||
1143 | input_set_drvdata(input_dev, data); | 1147 | input_set_drvdata(input_dev, data); |
1144 | i2c_set_clientdata(client, data); | 1148 | i2c_set_clientdata(client, data); |
1145 | 1149 | ||
1146 | error = mxt_initialize(data); | ||
1147 | if (error) | ||
1148 | goto err_free_mem; | ||
1149 | |||
1150 | error = request_threaded_irq(client->irq, NULL, mxt_interrupt, | 1150 | error = request_threaded_irq(client->irq, NULL, mxt_interrupt, |
1151 | pdata->irqflags, client->name, data); | 1151 | pdata->irqflags, client->name, data); |
1152 | if (error) { | 1152 | if (error) { |