Lines Matching defs:tsdata

82 static bool hycon_hy46xx_check_checksum(struct hycon_hy46xx_data *tsdata, u8 *buf)
93 dev_err_ratelimited(&tsdata->client->dev,
102 struct hycon_hy46xx_data *tsdata = dev_id;
103 struct device *dev = &tsdata->client->dev;
110 error = regmap_bulk_read(tsdata->regmap, 0, rdbuf, sizeof(rdbuf));
117 if (!hycon_hy46xx_check_checksum(tsdata, rdbuf))
132 input_mt_slot(tsdata->input, id);
133 if (input_mt_report_slot_state(tsdata->input, MT_TOOL_FINGER,
135 touchscreen_report_pos(tsdata->input, &tsdata->prop,
139 input_mt_report_pointer_emulation(tsdata->input, false);
140 input_sync(tsdata->input);
180 struct hycon_hy46xx_data *tsdata = i2c_get_clientdata(client);
183 u8 *field = (u8 *)tsdata + attr->field_offset;
188 mutex_lock(&tsdata->mutex);
190 error = regmap_read(tsdata->regmap, attr->address, &val);
192 dev_err(&tsdata->client->dev,
199 dev_warn(&tsdata->client->dev,
208 mutex_unlock(&tsdata->mutex);
217 struct hycon_hy46xx_data *tsdata = i2c_get_clientdata(client);
220 u8 *field = (u8 *)tsdata + attr->field_offset;
224 mutex_lock(&tsdata->mutex);
235 error = regmap_write(tsdata->regmap, attr->address, val);
237 dev_err(&tsdata->client->dev,
245 mutex_unlock(&tsdata->mutex);
282 static void hycon_hy46xx_get_defaults(struct device *dev, struct hycon_hy46xx_data *tsdata)
290 error = regmap_write(tsdata->regmap, HY46XX_THRESHOLD, val);
294 tsdata->threshold = val;
298 error = regmap_write(tsdata->regmap, HY46XX_GLOVE_EN, val_bool);
301 tsdata->glove_enable = val_bool;
305 error = regmap_write(tsdata->regmap, HY46XX_REPORT_SPEED, val);
309 tsdata->report_speed = val;
313 error = regmap_write(tsdata->regmap, HY46XX_PWR_NOISE_EN, val_bool);
316 tsdata->noise_filter_enable = val_bool;
320 error = regmap_write(tsdata->regmap, HY46XX_FILTER_DATA, val);
324 tsdata->filter_data = val;
329 error = regmap_write(tsdata->regmap, HY46XX_GAIN, val);
333 tsdata->gain = val;
338 error = regmap_write(tsdata->regmap, HY46XX_EDGE_OFFSET, val);
342 tsdata->edge_offset = val;
347 dev_err(&tsdata->client->dev, "Failed to set default settings");
350 static void hycon_hy46xx_get_parameters(struct hycon_hy46xx_data *tsdata)
355 error = regmap_read(tsdata->regmap, HY46XX_THRESHOLD, &val);
358 tsdata->threshold = val;
360 error = regmap_read(tsdata->regmap, HY46XX_GLOVE_EN, &val);
363 tsdata->glove_enable = val;
365 error = regmap_read(tsdata->regmap, HY46XX_REPORT_SPEED, &val);
368 tsdata->report_speed = val;
370 error = regmap_read(tsdata->regmap, HY46XX_PWR_NOISE_EN, &val);
373 tsdata->noise_filter_enable = val;
375 error = regmap_read(tsdata->regmap, HY46XX_FILTER_DATA, &val);
378 tsdata->filter_data = val;
380 error = regmap_read(tsdata->regmap, HY46XX_GAIN, &val);
383 tsdata->gain = val;
385 error = regmap_read(tsdata->regmap, HY46XX_EDGE_OFFSET, &val);
388 tsdata->edge_offset = val;
390 error = regmap_read(tsdata->regmap, HY46XX_RX_NR_USED, &val);
393 tsdata->rx_number_used = val;
395 error = regmap_read(tsdata->regmap, HY46XX_TX_NR_USED, &val);
398 tsdata->tx_number_used = val;
400 error = regmap_read(tsdata->regmap, HY46XX_PWR_MODE, &val);
403 tsdata->power_mode = val;
405 error = regmap_read(tsdata->regmap, HY46XX_FW_VERSION, &val);
408 tsdata->fw_version = val;
410 error = regmap_read(tsdata->regmap, HY46XX_LIB_VERSION, &val);
413 tsdata->lib_version = val;
415 error = regmap_read(tsdata->regmap, HY46XX_TP_INFO, &val);
418 tsdata->tp_information = val;
420 error = regmap_read(tsdata->regmap, HY46XX_TP_CHIP_ID, &val);
423 tsdata->tp_chip_id = val;
425 error = regmap_read(tsdata->regmap, HY46XX_BOOT_VER, &val);
428 tsdata->bootloader_version = val;
432 dev_err(&tsdata->client->dev, "Failed to read default settings");
444 struct hycon_hy46xx_data *tsdata;
450 tsdata = devm_kzalloc(&client->dev, sizeof(*tsdata), GFP_KERNEL);
451 if (!tsdata)
454 tsdata->vcc = devm_regulator_get(&client->dev, "vcc");
455 if (IS_ERR(tsdata->vcc)) {
456 error = PTR_ERR(tsdata->vcc);
463 error = regulator_enable(tsdata->vcc);
471 tsdata);
475 tsdata->reset_gpio = devm_gpiod_get_optional(&client->dev,
477 if (IS_ERR(tsdata->reset_gpio)) {
478 error = PTR_ERR(tsdata->reset_gpio);
484 if (tsdata->reset_gpio) {
486 gpiod_set_value_cansleep(tsdata->reset_gpio, 1);
488 gpiod_set_value_cansleep(tsdata->reset_gpio, 0);
498 mutex_init(&tsdata->mutex);
499 tsdata->client = client;
500 tsdata->input = input;
502 tsdata->regmap = devm_regmap_init_i2c(client,
504 if (IS_ERR(tsdata->regmap)) {
506 return PTR_ERR(tsdata->regmap);
509 hycon_hy46xx_get_defaults(&client->dev, tsdata);
510 hycon_hy46xx_get_parameters(tsdata);
519 touchscreen_parse_properties(input, true, &tsdata->prop);
528 i2c_set_clientdata(client, tsdata);
532 client->name, tsdata);
549 tsdata->reset_gpio ? desc_to_gpio(tsdata->reset_gpio) : -1);