Something went wrong. Try again.
(I'm so sorry!) Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
Something went wrong. Try again.
2.6 kB · 102 lines
C
at master
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103/* SPDX-License-Identifier: GPL-2.0-only */
/* * Copyright (c) 2008 MtekVision Co., Ltd. * Kwangwoo Lee <kwlee@mtekvision.com> * * Using code from: * - ads7846.c * Copyright (c) 2005 David Brownell * Copyright (c) 2006 Nokia Corporation * - corgi_ts.c * Copyright (C) 2004-2005 Richard Purdie * - omap_ts.[hc], ads7846.h, ts_osk.c * Copyright (C) 2002 MontaVista Software * Copyright (C) 2004 Texas Instruments * Copyright (C) 2005 Dirk Behme */
#ifndef _TSC2007_H#define _TSC2007_H
#include <linux/input/touchscreen.h>struct gpio_desc;
#define TSC2007_MEASURE_TEMP0 (0x0 << 4)#define TSC2007_MEASURE_AUX (0x2 << 4)#define TSC2007_MEASURE_TEMP1 (0x4 << 4)#define TSC2007_ACTIVATE_XN (0x8 << 4)#define TSC2007_ACTIVATE_YN (0x9 << 4)#define TSC2007_ACTIVATE_YP_XN (0xa << 4)#define TSC2007_SETUP (0xb << 4)#define TSC2007_MEASURE_X (0xc << 4)#define TSC2007_MEASURE_Y (0xd << 4)#define TSC2007_MEASURE_Z1 (0xe << 4)#define TSC2007_MEASURE_Z2 (0xf << 4)
#define TSC2007_POWER_OFF_IRQ_EN (0x0 << 2)#define TSC2007_ADC_ON_IRQ_DIS0 (0x1 << 2)#define TSC2007_ADC_OFF_IRQ_EN (0x2 << 2)#define TSC2007_ADC_ON_IRQ_DIS1 (0x3 << 2)
#define TSC2007_12BIT (0x0 << 1)#define TSC2007_8BIT (0x1 << 1)
#define MAX_12BIT ((1 << 12) - 1)
#define ADC_ON_12BIT (TSC2007_12BIT | TSC2007_ADC_ON_IRQ_DIS0)
#define READ_Y (ADC_ON_12BIT | TSC2007_MEASURE_Y)#define READ_Z1 (ADC_ON_12BIT | TSC2007_MEASURE_Z1)#define READ_Z2 (ADC_ON_12BIT | TSC2007_MEASURE_Z2)#define READ_X (ADC_ON_12BIT | TSC2007_MEASURE_X)#define PWRDOWN (TSC2007_12BIT | TSC2007_POWER_OFF_IRQ_EN)
struct ts_event { u16 x; u16 y; u16 z1, z2;};
struct tsc2007 { struct input_dev *input; char phys[32];
struct i2c_client *client;
struct touchscreen_properties prop; u16 model; u16 x_plate_ohms; u16 max_rt; unsigned long poll_period; /* in jiffies */ int fuzzx; int fuzzy; int fuzzz;
struct gpio_desc *gpiod; int irq;
wait_queue_head_t wait; bool stopped;
int (*get_pendown_state)(struct device *); void (*clear_penirq)(void);
struct mutex mlock;};
int tsc2007_xfer(struct tsc2007 *tsc, u8 cmd);u32 tsc2007_calculate_resistance(struct tsc2007 *tsc, struct ts_event *tc);bool tsc2007_is_pen_down(struct tsc2007 *ts);
#if IS_ENABLED(CONFIG_TOUCHSCREEN_TSC2007_IIO)/* defined in tsc2007_iio.c */int tsc2007_iio_configure(struct tsc2007 *ts);#elsestatic inline int tsc2007_iio_configure(struct tsc2007 *ts){ return 0;}#endif /* CONFIG_TOUCHSCREEN_TSC2007_IIO */
#endif /* _TSC2007_H */