Comment 1 by Nikolaus Schaller, Feb 25, 2010
The good thing is that vanilla Linux already has a driver for the TSC2007! drivers/input/touchscreen/tsc2007.c Just needs to be configured into the kernel :) But: the I2C and the TSC driver needs to be initialized in the board.c file. There may be examples to copy from other platforms, e.g. the Touchbook. As far as I understand it needs two changes: a) initialize the I2C bus b) initialize the TSC (tsc2007_init) Finally, I don't know yet how to activate the TSC in user-space (e.g. connect it to the X server).
Comment 2 by Nikolaus Schaller, Feb 26, 2010
It looks as if only this device uses the TSC2007:
gta04-kernel/arch/sh/boards/mach-ecovec24/setup.c
It looks quite simple (just needs to connect the PENIRQ GPIO -
GPIO157 on our GTA04E-Board).
Still open to me is how we configure this to be in the I2C Bus 2.
--- CODE ---
/* TouchScreen */
#define IRQ0 32
static int ts_get_pendown_state(void)
{
int val = 0;
gpio_free(GPIO_FN_INTC_IRQ0);
gpio_request(GPIO_PTZ0, NULL);
gpio_direction_input(GPIO_PTZ0);
val = gpio_get_value(GPIO_PTZ0);
gpio_free(GPIO_PTZ0);
gpio_request(GPIO_FN_INTC_IRQ0, NULL);
return val ? 0 : 1;
}
static int ts_init(void)
{
gpio_request(GPIO_FN_INTC_IRQ0, NULL);
return 0;
}
struct tsc2007_platform_data tsc2007_info = {
.model = 2007,
.x_plate_ohms = 180,
.get_pendown_state = ts_get_pendown_state,
.init_platform_hw = ts_init,
};
static struct i2c_board_info ts_i2c_clients = {
I2C_BOARD_INFO("tsc2007", 0x48),
.type = "tsc2007",
.platform_data = &tsc2007_info,
.irq = IRQ0,
};
Comment 3 by Nikolaus Schaller, Apr 14, 2010
Another quirk: if the TSC driver is to be compiled into the kernel (and not as a loadable module), compilation aborts: CC arch/arm/mach-omap2/board-omap3beagle.o - due to target missing arch/arm/mach-omap2/board-omap3beagle.c:309:5: Warnung: »TODO« ist nicht definiert arch/arm/mach-omap2/board-omap3beagle.c: In Funktion »tsc2007_init«: arch/arm/mach-omap2/board-omap3beagle.c:330: Fehler: »OMAP3_TS_GPIO« nicht deklariert (erste Benutzung in dieser Funktion) arch/arm/mach-omap2/board-omap3beagle.c:330: Fehler: (Jeder nicht deklarierte Bezeichner wird nur einmal aufgeführt arch/arm/mach-omap2/board-omap3beagle.c:330: Fehler: für jede Funktion in der er auftritt.) arch/arm/mach-omap2/board-omap3beagle.c: Auf höchster Ebene: arch/arm/mach-omap2/board-omap3beagle.c:343: Warnung: Initialisierung von inkompatiblem Zeigertyp make[2]: *** [arch/arm/mach-omap2/board-omap3beagle.o] Error 1 make[1]: *** [arch/arm/mach-omap2] Error 2 make: *** [uImage] Error 2
Owner:
hns
Comment 4 by Nikolaus Schaller, Apr 27, 2010
GPIOs and Interrupt connection is fixed. Driver is initializing and shows /sys/devices/virtual/input/input0 but there is no event0 file
Comment 5 by Nikolaus Schaller, May 19, 2010
TSC driver is now working. Only issue is that Y axis is flipped and touch screen calibration does not handle (at least in Angstrom).
Status:
Fixed
Sign in to reply to this comment.
Reported by Nikolaus Schaller, Feb 19, 2010