• Home
  • Raw
  • Download

Lines Matching refs:ts

256 	struct ad7877 *ts = spi_get_drvdata(spi);  in ad7877_read_adc()  local
270 AD7877_POL(ts->stopacq_polarity) | in ad7877_read_adc()
272 AD7877_ACQ(ts->acquisition_time) | AD7877_FCD(0); in ad7877_read_adc()
284 req->xfer[1].delay_usecs = ts->vref_delay_usecs; in ad7877_read_adc()
289 req->xfer[2].delay_usecs = ts->vref_delay_usecs; in ad7877_read_adc()
296 req->xfer[4].tx_buf = &ts->cmd_crtl2; /*REF OFF*/ in ad7877_read_adc()
300 req->xfer[5].tx_buf = &ts->cmd_crtl1; /*DEFAULT*/ in ad7877_read_adc()
317 static int ad7877_process_data(struct ad7877 *ts) in ad7877_process_data() argument
319 struct input_dev *input_dev = ts->input; in ad7877_process_data()
323 x = ts->conversion_data[AD7877_SEQ_XPOS] & MAX_12BIT; in ad7877_process_data()
324 y = ts->conversion_data[AD7877_SEQ_YPOS] & MAX_12BIT; in ad7877_process_data()
325 z1 = ts->conversion_data[AD7877_SEQ_Z1] & MAX_12BIT; in ad7877_process_data()
326 z2 = ts->conversion_data[AD7877_SEQ_Z2] & MAX_12BIT; in ad7877_process_data()
340 Rt = (z2 - z1) * x * ts->x_plate_ohms; in ad7877_process_data()
348 if (Rt > ts->pressure_max) in ad7877_process_data()
351 if (!timer_pending(&ts->timer)) in ad7877_process_data()
365 static inline void ad7877_ts_event_release(struct ad7877 *ts) in ad7877_ts_event_release() argument
367 struct input_dev *input_dev = ts->input; in ad7877_ts_event_release()
376 struct ad7877 *ts = from_timer(ts, t, timer); in ad7877_timer() local
379 spin_lock_irqsave(&ts->lock, flags); in ad7877_timer()
380 ad7877_ts_event_release(ts); in ad7877_timer()
381 spin_unlock_irqrestore(&ts->lock, flags); in ad7877_timer()
386 struct ad7877 *ts = handle; in ad7877_irq() local
390 error = spi_sync(ts->spi, &ts->msg); in ad7877_irq()
392 dev_err(&ts->spi->dev, "spi_sync --> %d\n", error); in ad7877_irq()
396 spin_lock_irqsave(&ts->lock, flags); in ad7877_irq()
397 error = ad7877_process_data(ts); in ad7877_irq()
399 mod_timer(&ts->timer, jiffies + TS_PEN_UP_TIMEOUT); in ad7877_irq()
400 spin_unlock_irqrestore(&ts->lock, flags); in ad7877_irq()
408 struct ad7877 *ts = data; in ad7877_disable() local
410 mutex_lock(&ts->mutex); in ad7877_disable()
412 if (!ts->disabled) { in ad7877_disable()
413 ts->disabled = true; in ad7877_disable()
414 disable_irq(ts->spi->irq); in ad7877_disable()
416 if (del_timer_sync(&ts->timer)) in ad7877_disable()
417 ad7877_ts_event_release(ts); in ad7877_disable()
425 mutex_unlock(&ts->mutex); in ad7877_disable()
428 static void ad7877_enable(struct ad7877 *ts) in ad7877_enable() argument
430 mutex_lock(&ts->mutex); in ad7877_enable()
432 if (ts->disabled) { in ad7877_enable()
433 ts->disabled = false; in ad7877_enable()
434 enable_irq(ts->spi->irq); in ad7877_enable()
437 mutex_unlock(&ts->mutex); in ad7877_enable()
443 struct ad7877 *ts = dev_get_drvdata(dev); \
444 ssize_t v = ad7877_read_adc(ts->spi, \
463 struct ad7877 *ts = dev_get_drvdata(dev); in SHOW() local
465 return sprintf(buf, "%u\n", ts->disabled); in SHOW()
472 struct ad7877 *ts = dev_get_drvdata(dev); in ad7877_disable_store() local
481 ad7877_disable(ts); in ad7877_disable_store()
483 ad7877_enable(ts); in ad7877_disable_store()
493 struct ad7877 *ts = dev_get_drvdata(dev); in ad7877_dac_show() local
495 return sprintf(buf, "%u\n", ts->dac); in ad7877_dac_show()
502 struct ad7877 *ts = dev_get_drvdata(dev); in ad7877_dac_store() local
510 mutex_lock(&ts->mutex); in ad7877_dac_store()
511 ts->dac = val & 0xFF; in ad7877_dac_store()
512 ad7877_write(ts->spi, AD7877_REG_DAC, (ts->dac << 4) | AD7877_DAC_CONF); in ad7877_dac_store()
513 mutex_unlock(&ts->mutex); in ad7877_dac_store()
523 struct ad7877 *ts = dev_get_drvdata(dev); in ad7877_gpio3_show() local
525 return sprintf(buf, "%u\n", ts->gpio3); in ad7877_gpio3_show()
532 struct ad7877 *ts = dev_get_drvdata(dev); in ad7877_gpio3_store() local
540 mutex_lock(&ts->mutex); in ad7877_gpio3_store()
541 ts->gpio3 = !!val; in ad7877_gpio3_store()
542 ad7877_write(ts->spi, AD7877_REG_EXTWRITE, AD7877_EXTW_GPIO_DATA | in ad7877_gpio3_store()
543 (ts->gpio4 << 4) | (ts->gpio3 << 5)); in ad7877_gpio3_store()
544 mutex_unlock(&ts->mutex); in ad7877_gpio3_store()
554 struct ad7877 *ts = dev_get_drvdata(dev); in ad7877_gpio4_show() local
556 return sprintf(buf, "%u\n", ts->gpio4); in ad7877_gpio4_show()
563 struct ad7877 *ts = dev_get_drvdata(dev); in ad7877_gpio4_store() local
571 mutex_lock(&ts->mutex); in ad7877_gpio4_store()
572 ts->gpio4 = !!val; in ad7877_gpio4_store()
573 ad7877_write(ts->spi, AD7877_REG_EXTWRITE, AD7877_EXTW_GPIO_DATA | in ad7877_gpio4_store()
574 (ts->gpio4 << 4) | (ts->gpio3 << 5)); in ad7877_gpio4_store()
575 mutex_unlock(&ts->mutex); in ad7877_gpio4_store()
618 static void ad7877_setup_ts_def_msg(struct spi_device *spi, struct ad7877 *ts) in ad7877_setup_ts_def_msg() argument
623 ts->cmd_crtl2 = AD7877_WRITEADD(AD7877_REG_CTRL2) | in ad7877_setup_ts_def_msg()
624 AD7877_POL(ts->stopacq_polarity) | in ad7877_setup_ts_def_msg()
625 AD7877_AVG(ts->averaging) | AD7877_PM(1) | in ad7877_setup_ts_def_msg()
626 AD7877_TMR(ts->pen_down_acc_interval) | in ad7877_setup_ts_def_msg()
627 AD7877_ACQ(ts->acquisition_time) | in ad7877_setup_ts_def_msg()
628 AD7877_FCD(ts->first_conversion_delay); in ad7877_setup_ts_def_msg()
630 ad7877_write(spi, AD7877_REG_CTRL2, ts->cmd_crtl2); in ad7877_setup_ts_def_msg()
632 ts->cmd_crtl1 = AD7877_WRITEADD(AD7877_REG_CTRL1) | in ad7877_setup_ts_def_msg()
636 ad7877_write(spi, AD7877_REG_CTRL1, ts->cmd_crtl1); in ad7877_setup_ts_def_msg()
638 ts->cmd_dummy = 0; in ad7877_setup_ts_def_msg()
640 m = &ts->msg; in ad7877_setup_ts_def_msg()
644 m->context = ts; in ad7877_setup_ts_def_msg()
646 ts->xfer[0].tx_buf = &ts->cmd_crtl1; in ad7877_setup_ts_def_msg()
647 ts->xfer[0].len = 2; in ad7877_setup_ts_def_msg()
648 ts->xfer[0].cs_change = 1; in ad7877_setup_ts_def_msg()
650 spi_message_add_tail(&ts->xfer[0], m); in ad7877_setup_ts_def_msg()
652 ts->xfer[1].tx_buf = &ts->cmd_dummy; /* Send ZERO */ in ad7877_setup_ts_def_msg()
653 ts->xfer[1].len = 2; in ad7877_setup_ts_def_msg()
654 ts->xfer[1].cs_change = 1; in ad7877_setup_ts_def_msg()
656 spi_message_add_tail(&ts->xfer[1], m); in ad7877_setup_ts_def_msg()
659 ts->xfer[i + 2].rx_buf = &ts->conversion_data[AD7877_SEQ_YPOS + i]; in ad7877_setup_ts_def_msg()
660 ts->xfer[i + 2].len = 2; in ad7877_setup_ts_def_msg()
662 ts->xfer[i + 2].cs_change = 1; in ad7877_setup_ts_def_msg()
663 spi_message_add_tail(&ts->xfer[i + 2], m); in ad7877_setup_ts_def_msg()
669 struct ad7877 *ts; in ad7877_probe() local
698 ts = devm_kzalloc(&spi->dev, sizeof(struct ad7877), GFP_KERNEL); in ad7877_probe()
699 if (!ts) in ad7877_probe()
706 err = devm_add_action_or_reset(&spi->dev, ad7877_disable, ts); in ad7877_probe()
710 spi_set_drvdata(spi, ts); in ad7877_probe()
711 ts->spi = spi; in ad7877_probe()
712 ts->input = input_dev; in ad7877_probe()
714 timer_setup(&ts->timer, ad7877_timer, 0); in ad7877_probe()
715 mutex_init(&ts->mutex); in ad7877_probe()
716 spin_lock_init(&ts->lock); in ad7877_probe()
718 ts->model = pdata->model ? : 7877; in ad7877_probe()
719 ts->vref_delay_usecs = pdata->vref_delay_usecs ? : 100; in ad7877_probe()
720 ts->x_plate_ohms = pdata->x_plate_ohms ? : 400; in ad7877_probe()
721 ts->pressure_max = pdata->pressure_max ? : ~0; in ad7877_probe()
723 ts->stopacq_polarity = pdata->stopacq_polarity; in ad7877_probe()
724 ts->first_conversion_delay = pdata->first_conversion_delay; in ad7877_probe()
725 ts->acquisition_time = pdata->acquisition_time; in ad7877_probe()
726 ts->averaging = pdata->averaging; in ad7877_probe()
727 ts->pen_down_acc_interval = pdata->pen_down_acc_interval; in ad7877_probe()
729 snprintf(ts->phys, sizeof(ts->phys), "%s/input0", dev_name(&spi->dev)); in ad7877_probe()
732 input_dev->phys = ts->phys; in ad7877_probe()
766 ad7877_setup_ts_def_msg(spi, ts); in ad7877_probe()
772 spi->dev.driver->name, ts); in ad7877_probe()
791 struct ad7877 *ts = dev_get_drvdata(dev); in ad7877_suspend() local
793 ad7877_disable(ts); in ad7877_suspend()
800 struct ad7877 *ts = dev_get_drvdata(dev); in ad7877_resume() local
802 ad7877_enable(ts); in ad7877_resume()