Lines Matching refs:ts

270 	struct ad7877 *ts = spi_get_drvdata(spi);  in ad7877_read_adc()  local
284 AD7877_POL(ts->stopacq_polarity) | in ad7877_read_adc()
286 AD7877_ACQ(ts->acquisition_time) | AD7877_FCD(0); in ad7877_read_adc()
298 req->xfer[1].delay_usecs = ts->vref_delay_usecs; in ad7877_read_adc()
303 req->xfer[2].delay_usecs = ts->vref_delay_usecs; in ad7877_read_adc()
310 req->xfer[4].tx_buf = &ts->cmd_crtl2; /*REF OFF*/ in ad7877_read_adc()
314 req->xfer[5].tx_buf = &ts->cmd_crtl1; /*DEFAULT*/ in ad7877_read_adc()
331 static int ad7877_process_data(struct ad7877 *ts) in ad7877_process_data() argument
333 struct input_dev *input_dev = ts->input; in ad7877_process_data()
337 x = ts->conversion_data[AD7877_SEQ_XPOS] & MAX_12BIT; in ad7877_process_data()
338 y = ts->conversion_data[AD7877_SEQ_YPOS] & MAX_12BIT; in ad7877_process_data()
339 z1 = ts->conversion_data[AD7877_SEQ_Z1] & MAX_12BIT; in ad7877_process_data()
340 z2 = ts->conversion_data[AD7877_SEQ_Z2] & MAX_12BIT; in ad7877_process_data()
354 Rt = (z2 - z1) * x * ts->x_plate_ohms; in ad7877_process_data()
362 if (Rt > ts->pressure_max) in ad7877_process_data()
365 if (!timer_pending(&ts->timer)) in ad7877_process_data()
379 static inline void ad7877_ts_event_release(struct ad7877 *ts) in ad7877_ts_event_release() argument
381 struct input_dev *input_dev = ts->input; in ad7877_ts_event_release()
390 struct ad7877 *ts = (void *)handle; in ad7877_timer() local
393 spin_lock_irqsave(&ts->lock, flags); in ad7877_timer()
394 ad7877_ts_event_release(ts); in ad7877_timer()
395 spin_unlock_irqrestore(&ts->lock, flags); in ad7877_timer()
400 struct ad7877 *ts = handle; in ad7877_irq() local
404 error = spi_sync(ts->spi, &ts->msg); in ad7877_irq()
406 dev_err(&ts->spi->dev, "spi_sync --> %d\n", error); in ad7877_irq()
410 spin_lock_irqsave(&ts->lock, flags); in ad7877_irq()
411 error = ad7877_process_data(ts); in ad7877_irq()
413 mod_timer(&ts->timer, jiffies + TS_PEN_UP_TIMEOUT); in ad7877_irq()
414 spin_unlock_irqrestore(&ts->lock, flags); in ad7877_irq()
420 static void ad7877_disable(struct ad7877 *ts) in ad7877_disable() argument
422 mutex_lock(&ts->mutex); in ad7877_disable()
424 if (!ts->disabled) { in ad7877_disable()
425 ts->disabled = true; in ad7877_disable()
426 disable_irq(ts->spi->irq); in ad7877_disable()
428 if (del_timer_sync(&ts->timer)) in ad7877_disable()
429 ad7877_ts_event_release(ts); in ad7877_disable()
437 mutex_unlock(&ts->mutex); in ad7877_disable()
440 static void ad7877_enable(struct ad7877 *ts) in ad7877_enable() argument
442 mutex_lock(&ts->mutex); in ad7877_enable()
444 if (ts->disabled) { in ad7877_enable()
445 ts->disabled = false; in ad7877_enable()
446 enable_irq(ts->spi->irq); in ad7877_enable()
449 mutex_unlock(&ts->mutex); in ad7877_enable()
455 struct ad7877 *ts = dev_get_drvdata(dev); \
456 ssize_t v = ad7877_read_adc(ts->spi, \
475 struct ad7877 *ts = dev_get_drvdata(dev); in SHOW() local
477 return sprintf(buf, "%u\n", ts->disabled); in SHOW()
484 struct ad7877 *ts = dev_get_drvdata(dev); in ad7877_disable_store() local
493 ad7877_disable(ts); in ad7877_disable_store()
495 ad7877_enable(ts); in ad7877_disable_store()
505 struct ad7877 *ts = dev_get_drvdata(dev); in ad7877_dac_show() local
507 return sprintf(buf, "%u\n", ts->dac); in ad7877_dac_show()
514 struct ad7877 *ts = dev_get_drvdata(dev); in ad7877_dac_store() local
522 mutex_lock(&ts->mutex); in ad7877_dac_store()
523 ts->dac = val & 0xFF; in ad7877_dac_store()
524 ad7877_write(ts->spi, AD7877_REG_DAC, (ts->dac << 4) | AD7877_DAC_CONF); in ad7877_dac_store()
525 mutex_unlock(&ts->mutex); in ad7877_dac_store()
535 struct ad7877 *ts = dev_get_drvdata(dev); in ad7877_gpio3_show() local
537 return sprintf(buf, "%u\n", ts->gpio3); in ad7877_gpio3_show()
544 struct ad7877 *ts = dev_get_drvdata(dev); in ad7877_gpio3_store() local
552 mutex_lock(&ts->mutex); in ad7877_gpio3_store()
553 ts->gpio3 = !!val; in ad7877_gpio3_store()
554 ad7877_write(ts->spi, AD7877_REG_EXTWRITE, AD7877_EXTW_GPIO_DATA | in ad7877_gpio3_store()
555 (ts->gpio4 << 4) | (ts->gpio3 << 5)); in ad7877_gpio3_store()
556 mutex_unlock(&ts->mutex); in ad7877_gpio3_store()
566 struct ad7877 *ts = dev_get_drvdata(dev); in ad7877_gpio4_show() local
568 return sprintf(buf, "%u\n", ts->gpio4); in ad7877_gpio4_show()
575 struct ad7877 *ts = dev_get_drvdata(dev); in ad7877_gpio4_store() local
583 mutex_lock(&ts->mutex); in ad7877_gpio4_store()
584 ts->gpio4 = !!val; in ad7877_gpio4_store()
585 ad7877_write(ts->spi, AD7877_REG_EXTWRITE, AD7877_EXTW_GPIO_DATA | in ad7877_gpio4_store()
586 (ts->gpio4 << 4) | (ts->gpio3 << 5)); in ad7877_gpio4_store()
587 mutex_unlock(&ts->mutex); in ad7877_gpio4_store()
630 static void ad7877_setup_ts_def_msg(struct spi_device *spi, struct ad7877 *ts) in ad7877_setup_ts_def_msg() argument
635 ts->cmd_crtl2 = AD7877_WRITEADD(AD7877_REG_CTRL2) | in ad7877_setup_ts_def_msg()
636 AD7877_POL(ts->stopacq_polarity) | in ad7877_setup_ts_def_msg()
637 AD7877_AVG(ts->averaging) | AD7877_PM(1) | in ad7877_setup_ts_def_msg()
638 AD7877_TMR(ts->pen_down_acc_interval) | in ad7877_setup_ts_def_msg()
639 AD7877_ACQ(ts->acquisition_time) | in ad7877_setup_ts_def_msg()
640 AD7877_FCD(ts->first_conversion_delay); in ad7877_setup_ts_def_msg()
642 ad7877_write(spi, AD7877_REG_CTRL2, ts->cmd_crtl2); in ad7877_setup_ts_def_msg()
644 ts->cmd_crtl1 = AD7877_WRITEADD(AD7877_REG_CTRL1) | in ad7877_setup_ts_def_msg()
648 ad7877_write(spi, AD7877_REG_CTRL1, ts->cmd_crtl1); in ad7877_setup_ts_def_msg()
650 ts->cmd_dummy = 0; in ad7877_setup_ts_def_msg()
652 m = &ts->msg; in ad7877_setup_ts_def_msg()
656 m->context = ts; in ad7877_setup_ts_def_msg()
658 ts->xfer[0].tx_buf = &ts->cmd_crtl1; in ad7877_setup_ts_def_msg()
659 ts->xfer[0].len = 2; in ad7877_setup_ts_def_msg()
660 ts->xfer[0].cs_change = 1; in ad7877_setup_ts_def_msg()
662 spi_message_add_tail(&ts->xfer[0], m); in ad7877_setup_ts_def_msg()
664 ts->xfer[1].tx_buf = &ts->cmd_dummy; /* Send ZERO */ in ad7877_setup_ts_def_msg()
665 ts->xfer[1].len = 2; in ad7877_setup_ts_def_msg()
666 ts->xfer[1].cs_change = 1; in ad7877_setup_ts_def_msg()
668 spi_message_add_tail(&ts->xfer[1], m); in ad7877_setup_ts_def_msg()
671 ts->xfer[i + 2].rx_buf = &ts->conversion_data[AD7877_SEQ_YPOS + i]; in ad7877_setup_ts_def_msg()
672 ts->xfer[i + 2].len = 2; in ad7877_setup_ts_def_msg()
674 ts->xfer[i + 2].cs_change = 1; in ad7877_setup_ts_def_msg()
675 spi_message_add_tail(&ts->xfer[i + 2], m); in ad7877_setup_ts_def_msg()
681 struct ad7877 *ts; in ad7877_probe() local
710 ts = kzalloc(sizeof(struct ad7877), GFP_KERNEL); in ad7877_probe()
712 if (!ts || !input_dev) { in ad7877_probe()
717 spi_set_drvdata(spi, ts); in ad7877_probe()
718 ts->spi = spi; in ad7877_probe()
719 ts->input = input_dev; in ad7877_probe()
721 setup_timer(&ts->timer, ad7877_timer, (unsigned long) ts); in ad7877_probe()
722 mutex_init(&ts->mutex); in ad7877_probe()
723 spin_lock_init(&ts->lock); in ad7877_probe()
725 ts->model = pdata->model ? : 7877; in ad7877_probe()
726 ts->vref_delay_usecs = pdata->vref_delay_usecs ? : 100; in ad7877_probe()
727 ts->x_plate_ohms = pdata->x_plate_ohms ? : 400; in ad7877_probe()
728 ts->pressure_max = pdata->pressure_max ? : ~0; in ad7877_probe()
730 ts->stopacq_polarity = pdata->stopacq_polarity; in ad7877_probe()
731 ts->first_conversion_delay = pdata->first_conversion_delay; in ad7877_probe()
732 ts->acquisition_time = pdata->acquisition_time; in ad7877_probe()
733 ts->averaging = pdata->averaging; in ad7877_probe()
734 ts->pen_down_acc_interval = pdata->pen_down_acc_interval; in ad7877_probe()
736 snprintf(ts->phys, sizeof(ts->phys), "%s/input0", dev_name(&spi->dev)); in ad7877_probe()
739 input_dev->phys = ts->phys; in ad7877_probe()
774 ad7877_setup_ts_def_msg(spi, ts); in ad7877_probe()
780 spi->dev.driver->name, ts); in ad7877_probe()
799 free_irq(spi->irq, ts); in ad7877_probe()
802 kfree(ts); in ad7877_probe()
808 struct ad7877 *ts = spi_get_drvdata(spi); in ad7877_remove() local
812 ad7877_disable(ts); in ad7877_remove()
813 free_irq(ts->spi->irq, ts); in ad7877_remove()
815 input_unregister_device(ts->input); in ad7877_remove()
816 kfree(ts); in ad7877_remove()
825 struct ad7877 *ts = dev_get_drvdata(dev); in ad7877_suspend() local
827 ad7877_disable(ts); in ad7877_suspend()
834 struct ad7877 *ts = dev_get_drvdata(dev); in ad7877_resume() local
836 ad7877_enable(ts); in ad7877_resume()