/* 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 (0 x0 << 4 )
#define TSC2007_MEASURE_AUX (0 x2 << 4 )
#define TSC2007_MEASURE_TEMP1 (0 x4 << 4 )
#define TSC2007_ACTIVATE_XN (0 x8 << 4 )
#define TSC2007_ACTIVATE_YN (0 x9 << 4 )
#define TSC2007_ACTIVATE_YP_XN (0 xa << 4 )
#define TSC2007_SETUP (0 xb << 4 )
#define TSC2007_MEASURE_X (0 xc << 4 )
#define TSC2007_MEASURE_Y (0 xd << 4 )
#define TSC2007_MEASURE_Z1 (0 xe << 4 )
#define TSC2007_MEASURE_Z2 (0 xf << 4 )
#define TSC2007_POWER_OFF_IRQ_EN (0 x0 << 2 )
#define TSC2007_ADC_ON_IRQ_DIS0 (0 x1 << 2 )
#define TSC2007_ADC_OFF_IRQ_EN (0 x2 << 2 )
#define TSC2007_ADC_ON_IRQ_DIS1 (0 x3 << 2 )
#define TSC2007_12BIT (0 x0 << 1 )
#define TSC2007_8BIT (0 x1 << 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);
#else
static inline int tsc2007_iio_configure(struct tsc2007 *ts)
{
return 0 ;
}
#endif /* CONFIG_TOUCHSCREEN_TSC2007_IIO */
#endif /* _TSC2007_H */
Messung V0.5 in Prozent C=98 H=98 G=97
¤ Dauer der Verarbeitung: 0.9 Sekunden
(vorverarbeitet am 2026-06-08)
¤
*© Formatika GbR, Deutschland