Lines Matching refs:ts

256 	struct ad7877 *ts = spi_get_drvdata(spi);
270 AD7877_POL(ts->stopacq_polarity) |
272 AD7877_ACQ(ts->acquisition_time) | AD7877_FCD(0);
284 req->xfer[1].delay.value = ts->vref_delay_usecs;
290 req->xfer[2].delay.value = ts->vref_delay_usecs;
298 req->xfer[4].tx_buf = &ts->cmd_crtl2; /*REF OFF*/
302 req->xfer[5].tx_buf = &ts->cmd_crtl1; /*DEFAULT*/
319 static int ad7877_process_data(struct ad7877 *ts)
321 struct input_dev *input_dev = ts->input;
325 x = ts->conversion_data[AD7877_SEQ_XPOS] & MAX_12BIT;
326 y = ts->conversion_data[AD7877_SEQ_YPOS] & MAX_12BIT;
327 z1 = ts->conversion_data[AD7877_SEQ_Z1] & MAX_12BIT;
328 z2 = ts->conversion_data[AD7877_SEQ_Z2] & MAX_12BIT;
342 Rt = (z2 - z1) * x * ts->x_plate_ohms;
350 if (Rt > ts->pressure_max)
353 if (!timer_pending(&ts->timer))
367 static inline void ad7877_ts_event_release(struct ad7877 *ts)
369 struct input_dev *input_dev = ts->input;
378 struct ad7877 *ts = from_timer(ts, t, timer);
381 spin_lock_irqsave(&ts->lock, flags);
382 ad7877_ts_event_release(ts);
383 spin_unlock_irqrestore(&ts->lock, flags);
388 struct ad7877 *ts = handle;
392 error = spi_sync(ts->spi, &ts->msg);
394 dev_err(&ts->spi->dev, "spi_sync --> %d\n", error);
398 spin_lock_irqsave(&ts->lock, flags);
399 error = ad7877_process_data(ts);
401 mod_timer(&ts->timer, jiffies + TS_PEN_UP_TIMEOUT);
402 spin_unlock_irqrestore(&ts->lock, flags);
410 struct ad7877 *ts = data;
412 mutex_lock(&ts->mutex);
414 if (!ts->disabled) {
415 ts->disabled = true;
416 disable_irq(ts->spi->irq);
418 if (del_timer_sync(&ts->timer))
419 ad7877_ts_event_release(ts);
427 mutex_unlock(&ts->mutex);
430 static void ad7877_enable(struct ad7877 *ts)
432 mutex_lock(&ts->mutex);
434 if (ts->disabled) {
435 ts->disabled = false;
436 enable_irq(ts->spi->irq);
439 mutex_unlock(&ts->mutex);
445 struct ad7877 *ts = dev_get_drvdata(dev); \
446 ssize_t v = ad7877_read_adc(ts->spi, \
465 struct ad7877 *ts = dev_get_drvdata(dev);
467 return sprintf(buf, "%u\n", ts->disabled);
474 struct ad7877 *ts = dev_get_drvdata(dev);
483 ad7877_disable(ts);
485 ad7877_enable(ts);
495 struct ad7877 *ts = dev_get_drvdata(dev);
497 return sprintf(buf, "%u\n", ts->dac);
504 struct ad7877 *ts = dev_get_drvdata(dev);
512 mutex_lock(&ts->mutex);
513 ts->dac = val & 0xFF;
514 ad7877_write(ts->spi, AD7877_REG_DAC, (ts->dac << 4) | AD7877_DAC_CONF);
515 mutex_unlock(&ts->mutex);
525 struct ad7877 *ts = dev_get_drvdata(dev);
527 return sprintf(buf, "%u\n", ts->gpio3);
534 struct ad7877 *ts = dev_get_drvdata(dev);
542 mutex_lock(&ts->mutex);
543 ts->gpio3 = !!val;
544 ad7877_write(ts->spi, AD7877_REG_EXTWRITE, AD7877_EXTW_GPIO_DATA |
545 (ts->gpio4 << 4) | (ts->gpio3 << 5));
546 mutex_unlock(&ts->mutex);
556 struct ad7877 *ts = dev_get_drvdata(dev);
558 return sprintf(buf, "%u\n", ts->gpio4);
565 struct ad7877 *ts = dev_get_drvdata(dev);
573 mutex_lock(&ts->mutex);
574 ts->gpio4 = !!val;
575 ad7877_write(ts->spi, AD7877_REG_EXTWRITE, AD7877_EXTW_GPIO_DATA |
576 (ts->gpio4 << 4) | (ts->gpio3 << 5));
577 mutex_unlock(&ts->mutex);
621 static void ad7877_setup_ts_def_msg(struct spi_device *spi, struct ad7877 *ts)
626 ts->cmd_crtl2 = AD7877_WRITEADD(AD7877_REG_CTRL2) |
627 AD7877_POL(ts->stopacq_polarity) |
628 AD7877_AVG(ts->averaging) | AD7877_PM(1) |
629 AD7877_TMR(ts->pen_down_acc_interval) |
630 AD7877_ACQ(ts->acquisition_time) |
631 AD7877_FCD(ts->first_conversion_delay);
633 ad7877_write(spi, AD7877_REG_CTRL2, ts->cmd_crtl2);
635 ts->cmd_crtl1 = AD7877_WRITEADD(AD7877_REG_CTRL1) |
639 ad7877_write(spi, AD7877_REG_CTRL1, ts->cmd_crtl1);
641 ts->cmd_dummy = 0;
643 m = &ts->msg;
647 m->context = ts;
649 ts->xfer[0].tx_buf = &ts->cmd_crtl1;
650 ts->xfer[0].len = 2;
651 ts->xfer[0].cs_change = 1;
653 spi_message_add_tail(&ts->xfer[0], m);
655 ts->xfer[1].tx_buf = &ts->cmd_dummy; /* Send ZERO */
656 ts->xfer[1].len = 2;
657 ts->xfer[1].cs_change = 1;
659 spi_message_add_tail(&ts->xfer[1], m);
662 ts->xfer[i + 2].rx_buf = &ts->conversion_data[AD7877_SEQ_YPOS + i];
663 ts->xfer[i + 2].len = 2;
665 ts->xfer[i + 2].cs_change = 1;
666 spi_message_add_tail(&ts->xfer[i + 2], m);
672 struct ad7877 *ts;
701 ts = devm_kzalloc(&spi->dev, sizeof(struct ad7877), GFP_KERNEL);
702 if (!ts)
709 err = devm_add_action_or_reset(&spi->dev, ad7877_disable, ts);
713 spi_set_drvdata(spi, ts);
714 ts->spi = spi;
715 ts->input = input_dev;
717 timer_setup(&ts->timer, ad7877_timer, 0);
718 mutex_init(&ts->mutex);
719 spin_lock_init(&ts->lock);
721 ts->model = pdata->model ? : 7877;
722 ts->vref_delay_usecs = pdata->vref_delay_usecs ? : 100;
723 ts->x_plate_ohms = pdata->x_plate_ohms ? : 400;
724 ts->pressure_max = pdata->pressure_max ? : ~0;
726 ts->stopacq_polarity = pdata->stopacq_polarity;
727 ts->first_conversion_delay = pdata->first_conversion_delay;
728 ts->acquisition_time = pdata->acquisition_time;
729 ts->averaging = pdata->averaging;
730 ts->pen_down_acc_interval = pdata->pen_down_acc_interval;
732 snprintf(ts->phys, sizeof(ts->phys), "%s/input0", dev_name(&spi->dev));
735 input_dev->phys = ts->phys;
769 ad7877_setup_ts_def_msg(spi, ts);
775 spi->dev.driver->name, ts);
790 struct ad7877 *ts = dev_get_drvdata(dev);
792 ad7877_disable(ts);
799 struct ad7877 *ts = dev_get_drvdata(dev);
801 ad7877_enable(ts);