Lines Matching refs: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);
279 static void hycon_hy46xx_get_defaults(struct device *dev, struct hycon_hy46xx_data *tsdata)
287 error = regmap_write(tsdata->regmap, HY46XX_THRESHOLD, val);
291 tsdata->threshold = val;
295 error = regmap_write(tsdata->regmap, HY46XX_GLOVE_EN, val_bool);
298 tsdata->glove_enable = val_bool;
302 error = regmap_write(tsdata->regmap, HY46XX_REPORT_SPEED, val);
306 tsdata->report_speed = val;
310 error = regmap_write(tsdata->regmap, HY46XX_PWR_NOISE_EN, val_bool);
313 tsdata->noise_filter_enable = val_bool;
317 error = regmap_write(tsdata->regmap, HY46XX_FILTER_DATA, val);
321 tsdata->filter_data = val;
326 error = regmap_write(tsdata->regmap, HY46XX_GAIN, val);
330 tsdata->gain = val;
335 error = regmap_write(tsdata->regmap, HY46XX_EDGE_OFFSET, val);
339 tsdata->edge_offset = val;
344 dev_err(&tsdata->client->dev, "Failed to set default settings");
347 static void hycon_hy46xx_get_parameters(struct hycon_hy46xx_data *tsdata)
352 error = regmap_read(tsdata->regmap, HY46XX_THRESHOLD, &val);
355 tsdata->threshold = val;
357 error = regmap_read(tsdata->regmap, HY46XX_GLOVE_EN, &val);
360 tsdata->glove_enable = val;
362 error = regmap_read(tsdata->regmap, HY46XX_REPORT_SPEED, &val);
365 tsdata->report_speed = val;
367 error = regmap_read(tsdata->regmap, HY46XX_PWR_NOISE_EN, &val);
370 tsdata->noise_filter_enable = val;
372 error = regmap_read(tsdata->regmap, HY46XX_FILTER_DATA, &val);
375 tsdata->filter_data = val;
377 error = regmap_read(tsdata->regmap, HY46XX_GAIN, &val);
380 tsdata->gain = val;
382 error = regmap_read(tsdata->regmap, HY46XX_EDGE_OFFSET, &val);
385 tsdata->edge_offset = val;
387 error = regmap_read(tsdata->regmap, HY46XX_RX_NR_USED, &val);
390 tsdata->rx_number_used = val;
392 error = regmap_read(tsdata->regmap, HY46XX_TX_NR_USED, &val);
395 tsdata->tx_number_used = val;
397 error = regmap_read(tsdata->regmap, HY46XX_PWR_MODE, &val);
400 tsdata->power_mode = val;
402 error = regmap_read(tsdata->regmap, HY46XX_FW_VERSION, &val);
405 tsdata->fw_version = val;
407 error = regmap_read(tsdata->regmap, HY46XX_LIB_VERSION, &val);
410 tsdata->lib_version = val;
412 error = regmap_read(tsdata->regmap, HY46XX_TP_INFO, &val);
415 tsdata->tp_information = val;
417 error = regmap_read(tsdata->regmap, HY46XX_TP_CHIP_ID, &val);
420 tsdata->tp_chip_id = val;
422 error = regmap_read(tsdata->regmap, HY46XX_BOOT_VER, &val);
425 tsdata->bootloader_version = val;
429 dev_err(&tsdata->client->dev, "Failed to read default settings");
441 struct hycon_hy46xx_data *tsdata;
447 tsdata = devm_kzalloc(&client->dev, sizeof(*tsdata), GFP_KERNEL);
448 if (!tsdata)
451 tsdata->vcc = devm_regulator_get(&client->dev, "vcc");
452 if (IS_ERR(tsdata->vcc)) {
453 error = PTR_ERR(tsdata->vcc);
460 error = regulator_enable(tsdata->vcc);
468 tsdata);
472 tsdata->reset_gpio = devm_gpiod_get_optional(&client->dev,
474 if (IS_ERR(tsdata->reset_gpio)) {
475 error = PTR_ERR(tsdata->reset_gpio);
481 if (tsdata->reset_gpio) {
483 gpiod_set_value_cansleep(tsdata->reset_gpio, 1);
485 gpiod_set_value_cansleep(tsdata->reset_gpio, 0);
495 mutex_init(&tsdata->mutex);
496 tsdata->client = client;
497 tsdata->input = input;
499 tsdata->regmap = devm_regmap_init_i2c(client,
501 if (IS_ERR(tsdata->regmap)) {
503 return PTR_ERR(tsdata->regmap);
506 hycon_hy46xx_get_defaults(&client->dev, tsdata);
507 hycon_hy46xx_get_parameters(tsdata);
516 touchscreen_parse_properties(input, true, &tsdata->prop);
525 i2c_set_clientdata(client, tsdata);
529 client->name, tsdata);
542 tsdata->reset_gpio ? desc_to_gpio(tsdata->reset_gpio) : -1);