Lines Matching refs:data
85 static int silead_ts_request_input_dev(struct silead_ts_data *data)
87 struct device *dev = &data->client->dev;
90 data->input = devm_input_allocate_device(dev);
91 if (!data->input) {
97 input_set_abs_params(data->input, ABS_MT_POSITION_X, 0, 4095, 0, 0);
98 input_set_abs_params(data->input, ABS_MT_POSITION_Y, 0, 4095, 0, 0);
99 touchscreen_parse_properties(data->input, true, &data->prop);
101 input_mt_init_slots(data->input, data->max_fingers,
106 input_set_capability(data->input, EV_KEY, KEY_LEFTMETA);
108 data->input->name = SILEAD_TS_NAME;
109 data->input->phys = "input/ts";
110 data->input->id.bustype = BUS_I2C;
112 error = input_register_device(data->input);
124 struct silead_ts_data *data = i2c_get_clientdata(client);
126 if (data->gpio_power) {
127 gpiod_set_value_cansleep(data->gpio_power, state);
134 struct silead_ts_data *data = i2c_get_clientdata(client);
135 struct input_dev *input = data->input;
148 if (buf[0] > data->max_fingers) {
150 buf[0], data->max_fingers);
151 buf[0] = data->max_fingers;
176 data->id[touch_nr] = (bufp[SILEAD_POINT_X_MSB_OFF] &
178 touchscreen_set_mt_pos(&data->pos[touch_nr], &data->prop,
184 input_mt_assign_slots(input, data->slots, data->pos, touch_nr, 0);
187 input_mt_slot(input, data->slots[i]);
189 input_report_abs(input, ABS_MT_POSITION_X, data->pos[i].x);
190 input_report_abs(input, ABS_MT_POSITION_Y, data->pos[i].y);
192 dev_dbg(dev, "x=%d y=%d hw_id=%d sw_id=%d\n", data->pos[i].x,
193 data->pos[i].y, data->id[i], data->slots[i]);
203 struct silead_ts_data *data = i2c_get_clientdata(client);
213 data->max_fingers);
284 struct silead_ts_data *data = i2c_get_clientdata(client);
290 dev_dbg(dev, "Firmware file name: %s", data->fw_name);
292 error = firmware_request_platform(&fw, data->fw_name, dev);
299 fw_data = (struct silead_fw_data *)fw->data;
333 struct silead_ts_data *data = i2c_get_clientdata(client);
342 data->chip_id = le32_to_cpu(chip_id);
343 dev_info(&client->dev, "Silead chip ID: 0x%8X", data->chip_id);
425 struct silead_ts_data *data = id;
426 struct i2c_client *client = data->client;
435 struct silead_ts_data *data = i2c_get_clientdata(client);
441 &data->max_fingers);
444 data->max_fingers = 5; /* Most devices handle up-to 5 fingers */
449 snprintf(data->fw_name, sizeof(data->fw_name),
456 static int silead_ts_set_default_fw_name(struct silead_ts_data *data,
460 struct device *dev = &data->client->dev;
468 snprintf(data->fw_name, sizeof(data->fw_name),
471 for (i = 0; i < strlen(data->fw_name); i++)
472 data->fw_name[i] = tolower(data->fw_name[i]);
474 snprintf(data->fw_name, sizeof(data->fw_name),
481 static int silead_ts_set_default_fw_name(struct silead_ts_data *data,
484 snprintf(data->fw_name, sizeof(data->fw_name),
492 struct silead_ts_data *data = arg;
494 regulator_bulk_disable(ARRAY_SIZE(data->regulators), data->regulators);
500 struct silead_ts_data *data;
512 data = devm_kzalloc(dev, sizeof(*data), GFP_KERNEL);
513 if (!data)
516 i2c_set_clientdata(client, data);
517 data->client = client;
519 error = silead_ts_set_default_fw_name(data, id);
529 data->regulators[0].supply = "vddio";
530 data->regulators[1].supply = "avdd";
531 error = devm_regulator_bulk_get(dev, ARRAY_SIZE(data->regulators),
532 data->regulators);
540 error = regulator_bulk_enable(ARRAY_SIZE(data->regulators),
541 data->regulators);
545 error = devm_add_action_or_reset(dev, silead_disable_regulator, data);
550 data->gpio_power = devm_gpiod_get_optional(dev, "power", GPIOD_OUT_LOW);
551 if (IS_ERR(data->gpio_power)) {
552 if (PTR_ERR(data->gpio_power) != -EPROBE_DEFER)
554 return PTR_ERR(data->gpio_power);
561 error = silead_ts_request_input_dev(data);
567 IRQF_ONESHOT, client->name, data);