Lines Matching refs:data
76 /* Use cache data for mode control register(write only) */
90 static int __mms114_read_reg(struct mms114_data *data, unsigned int reg,
93 struct i2c_client *client = data->client;
107 /* Read data */
124 static int mms114_read_reg(struct mms114_data *data, unsigned int reg)
130 return data->cache_mode_control;
132 error = __mms114_read_reg(data, reg, 1, &val);
136 static int mms114_write_reg(struct mms114_data *data, unsigned int reg,
139 struct i2c_client *client = data->client;
155 data->cache_mode_control = val;
160 static void mms114_process_mt(struct mms114_data *data, struct mms114_touch *touch)
162 struct i2c_client *client = data->client;
163 struct input_dev *input_dev = data->input_dev;
186 touchscreen_report_pos(input_dev, &data->props, x, y, true);
192 static void mms114_process_touchkey(struct mms114_data *data,
195 struct i2c_client *client = data->client;
196 struct input_dev *input_dev = data->input_dev;
202 if (touch->id > data->num_keycodes) {
212 input_report_key(input_dev, data->keycodes[keycode_id], touch->pressed);
217 struct mms114_data *data = dev_id;
218 struct i2c_client *client = data->client;
219 struct input_dev *input_dev = data->input_dev;
233 packet_size = mms114_read_reg(data, MMS114_PACKET_SIZE);
238 if (data->type == TYPE_MMS134S || data->type == TYPE_MMS136)
243 error = __mms114_read_reg(data, MMS114_INFORMATION, packet_size,
251 mms114_process_mt(data, touch + index);
255 mms114_process_touchkey(data, touch + index);
265 input_mt_report_pointer_emulation(data->input_dev, true);
266 input_sync(data->input_dev);
272 static int mms114_set_active(struct mms114_data *data, bool active)
276 val = mms114_read_reg(data, MMS114_MODE_CONTROL);
286 return mms114_write_reg(data, MMS114_MODE_CONTROL, val);
289 static int mms114_get_version(struct mms114_data *data)
291 struct device *dev = &data->client->dev;
296 switch (data->type) {
298 error = __mms114_read_reg(data, MMS152_FW_REV, 3, buf);
307 error = __mms114_read_reg(data, MMS152_FW_REV, 3, buf);
311 group = i2c_smbus_read_byte_data(data->client,
323 error = __mms114_read_reg(data, MMS114_TSP_REV, 6, buf);
335 static int mms114_setup_regs(struct mms114_data *data)
337 const struct touchscreen_properties *props = &data->props;
341 error = mms114_get_version(data);
346 if (data->type != TYPE_MMS114 && data->type != TYPE_MMS134S &&
347 data->type != TYPE_MMS136)
350 error = mms114_set_active(data, true);
356 error = mms114_write_reg(data, MMS114_XY_RESOLUTION_H, val);
361 error = mms114_write_reg(data, MMS114_X_RESOLUTION, val);
366 error = mms114_write_reg(data, MMS114_Y_RESOLUTION, val);
370 if (data->contact_threshold) {
371 error = mms114_write_reg(data, MMS114_CONTACT_THRESHOLD,
372 data->contact_threshold);
377 if (data->moving_threshold) {
378 error = mms114_write_reg(data, MMS114_MOVING_THRESHOLD,
379 data->moving_threshold);
387 static int mms114_start(struct mms114_data *data)
389 struct i2c_client *client = data->client;
392 error = regulator_enable(data->core_reg);
398 error = regulator_enable(data->io_reg);
401 regulator_disable(data->core_reg);
407 error = mms114_setup_regs(data);
409 regulator_disable(data->io_reg);
410 regulator_disable(data->core_reg);
419 static void mms114_stop(struct mms114_data *data)
421 struct i2c_client *client = data->client;
426 error = regulator_disable(data->io_reg);
430 error = regulator_disable(data->core_reg);
437 struct mms114_data *data = input_get_drvdata(dev);
439 return mms114_start(data);
444 struct mms114_data *data = input_get_drvdata(dev);
446 mms114_stop(data);
449 static int mms114_parse_legacy_bindings(struct mms114_data *data)
451 struct device *dev = &data->client->dev;
452 struct touchscreen_properties *props = &data->props;
465 &data->contact_threshold);
467 &data->moving_threshold);
481 struct mms114_data *data;
492 data = devm_kzalloc(&client->dev, sizeof(struct mms114_data),
495 if (!data || !input_dev) {
500 data->client = client;
501 data->input_dev = input_dev;
507 data->type = (enum mms_type)match_data;
509 data->num_keycodes = device_property_count_u32(&client->dev,
511 if (data->num_keycodes == -EINVAL) {
512 data->num_keycodes = 0;
513 } else if (data->num_keycodes < 0) {
516 data->num_keycodes);
517 return data->num_keycodes;
518 } else if (data->num_keycodes > MMS114_MAX_TOUCHKEYS) {
521 data->num_keycodes, MMS114_MAX_TOUCHKEYS);
522 data->num_keycodes = MMS114_MAX_TOUCHKEYS;
525 if (data->num_keycodes > 0) {
528 data->keycodes,
529 data->num_keycodes);
537 input_dev->keycode = data->keycodes;
538 input_dev->keycodemax = data->num_keycodes;
539 input_dev->keycodesize = sizeof(data->keycodes[0]);
540 for (i = 0; i < data->num_keycodes; i++)
542 EV_KEY, data->keycodes[i]);
551 touchscreen_parse_properties(input_dev, true, &data->props);
552 if (!data->props.max_x || !data->props.max_y) {
555 error = mms114_parse_legacy_bindings(data);
560 0, data->props.max_x, 0, 0);
562 0, data->props.max_y, 0, 0);
565 if (data->type == TYPE_MMS114 || data->type == TYPE_MMS134S ||
566 data->type == TYPE_MMS136) {
571 data->moving_threshold = input_abs_get_fuzz(input_dev,
573 data->contact_threshold = input_abs_get_fuzz(input_dev,
582 data->type);
596 input_set_drvdata(input_dev, data);
597 i2c_set_clientdata(client, data);
599 data->core_reg = devm_regulator_get(&client->dev, "avdd");
600 if (IS_ERR(data->core_reg)) {
601 error = PTR_ERR(data->core_reg);
607 data->io_reg = devm_regulator_get(&client->dev, "vdd");
608 if (IS_ERR(data->io_reg)) {
609 error = PTR_ERR(data->io_reg);
618 dev_name(&client->dev), data);
624 error = input_register_device(data->input_dev);
636 struct mms114_data *data = i2c_get_clientdata(client);
637 struct input_dev *input_dev = data->input_dev;
651 mms114_stop(data);
660 struct mms114_data *data = i2c_get_clientdata(client);
661 struct input_dev *input_dev = data->input_dev;
666 error = mms114_start(data);
689 .data = (void *)TYPE_MMS114,
692 .data = (void *)TYPE_MMS134S,
695 .data = (void *)TYPE_MMS136,
698 .data = (void *)TYPE_MMS152,
701 .data = (void *)TYPE_MMS345L,