[oe-commits] org.oe.dev linux-ezx 2.6.21: update patches to r1995, gives you working ts, keys and some powermanagement

koen commit openembedded-commits at lists.openembedded.org
Tue May 1 21:19:38 UTC 2007


linux-ezx 2.6.21: update patches to r1995, gives you working ts, keys and some powermanagement

Author: koen at openembedded.org
Branch: org.openembedded.dev
Revision: bc5aec3313808a99df2fc763a66773cc8d516338
ViewMTN: http://monotone.openembedded.org/revision.psp?id=bc5aec3313808a99df2fc763a66773cc8d516338
Files:
1
packages/linux/linux-ezx-2.6.21/ezx-kbd.patch
packages/linux/linux-ezx-2.6.21/ezx-pm.patch
packages/linux/linux-ezx-2.6.21/ezx-ts.patch
packages/linux/linux-ezx-2.6.21/mux-linux-2.6.20.7-fix.patch
packages/linux/linux-ezx-2.6.21/pcap_ts.c.patch
packages/linux/linux-ezx-2.6.21/pxa-kbd.patch
packages/linux/linux-ezx-2.6.21/touchscreen-fix-r0.patch
packages/linux/linux-ezx-2.6.21/wyrm-ts.diff
packages/linux/linux-ezx-2.6.21/ezx-core.patch
packages/linux/linux-ezx-2.6.21/ezx-emu.patch
packages/linux/linux-ezx-2.6.21/ezx-pcap.patch
packages/linux/linux-ezx-2.6.21/mux-linux-2.6.21-fix.patch
packages/linux/linux-ezx_2.6.21.bb
Diffs:

#
# mt diff -re4e5368d78f868a6909f5a503e76d94322e55564 -rbc5aec3313808a99df2fc763a66773cc8d516338
#
# 
# 
# add_file "packages/linux/linux-ezx-2.6.21/ezx-kbd.patch"
#  content [724853a454c08784072b8035dc3679b37b21f900]
# 
# add_file "packages/linux/linux-ezx-2.6.21/ezx-pm.patch"
#  content [1c6536cb9e6dc5d22dc0a27bef6ad953351fff5b]
# 
# add_file "packages/linux/linux-ezx-2.6.21/ezx-ts.patch"
#  content [5354ce457efeb9d99bcf769a77e5cff4a326f34f]
# 
# add_file "packages/linux/linux-ezx-2.6.21/mux-linux-2.6.20.7-fix.patch"
#  content [c0fe0ce107ef3dce4d11d297ed2626db18086d8a]
# 
# add_file "packages/linux/linux-ezx-2.6.21/pcap_ts.c.patch"
#  content [5b95785d1f124ce80c09593eb585560f9b4b485d]
# 
# add_file "packages/linux/linux-ezx-2.6.21/pxa-kbd.patch"
#  content [5930a7b94449efd11e7c9b72aef7d5a3edf83b69]
# 
# add_file "packages/linux/linux-ezx-2.6.21/touchscreen-fix-r0.patch"
#  content [083cdd46891b18d09826215055299060200903bb]
# 
# add_file "packages/linux/linux-ezx-2.6.21/wyrm-ts.diff"
#  content [fa6dba7838bb6a087fa8be3155927612f706691e]
# 
# patch "packages/linux/linux-ezx-2.6.21/ezx-core.patch"
#  from [0db3853e75c4917300c2e187c16faa9a4180c447]
#    to [e3030d5121623bc3aea1f0de422ef11a498b6298]
# 
# patch "packages/linux/linux-ezx-2.6.21/ezx-emu.patch"
#  from [19577ea60c9a98803017b20e499b5da34c7fa7b2]
#    to [f4e804b0e726b97d66f6fc115e2fd36cfb0e4cf7]
# 
# patch "packages/linux/linux-ezx-2.6.21/ezx-pcap.patch"
#  from [26c2d10358fb03f66e91094c472f12437c1459a9]
#    to [3684c620af09bc2814bbc4820321bb3ff14500de]
# 
# patch "packages/linux/linux-ezx-2.6.21/mux-linux-2.6.21-fix.patch"
#  from [696fc670335135b5f840df7a7eb27f3570a415ad]
#    to [6a78ee277770d5c294930349c9ec3f90ca60289f]
# 
# patch "packages/linux/linux-ezx_2.6.21.bb"
#  from [c4136421b5c2a368273d4f011665dc589a473074]
#    to [6e78410c26a27d00caaf5aab12c7ab16e378ccaf]
# 
============================================================
--- packages/linux/linux-ezx-2.6.21/ezx-kbd.patch	724853a454c08784072b8035dc3679b37b21f900
+++ packages/linux/linux-ezx-2.6.21/ezx-kbd.patch	724853a454c08784072b8035dc3679b37b21f900
@@ -0,0 +1,139 @@
+Index: linux-2.6.21/arch/arm/mach-pxa/ezx-kbd.c
+===================================================================
+--- /dev/null	1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.21/arch/arm/mach-pxa/ezx-kbd.c	2007-04-30 20:33:19.000000000 -0300
+@@ -0,0 +1,109 @@
++#include <linux/input.h>
++#include <asm/arch/kbd.h>
++#include <asm/arch/pxa-regs.h>
++
++extern void __init pxa_set_kbd_info(struct pxakbd_platform_data *);
++
++#if defined(CONFIG_PXA_EZX_E680)
++static unsigned char ezx_keycode[] = {
++	/* row 0 */
++	KEY_UP, KEY_RIGHT, KEY_RESERVED, KEY_PHONE,
++	/* row 1 */
++	KEY_DOWN, KEY_LEFT, KEY_VOLUMEUP, KEY_VOLUMEDOWN,
++	/* row 2 */
++	KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_KPENTER,
++};
++
++static unsigned char ezx_direct_keycode[] = {
++       KEY_CAMERA,
++       KEYPAD_RESERVED,
++       KEYPAD_RESERVED,
++       KEYPAD_HOME,
++       KEY_POWER,
++       KEYPAD_MENU,
++};
++#elif defined(CONFIG_PXA_EZX_A780)
++static unsigned char ezx_keycode[] = {
++       /* row 0 */
++       KEY_KPENTER, KEY_MENU, KEY_CANCEL, KEY_PAGEUP, KEY_UP,
++       /* row 1 */
++       KEY_KP1, KEY_KP2, KEY_KP3, KEY_ENTER, KEY_KPENTER, /*center joypad */
++       /* row 2 */
++       KEY_KP4, KEY_KP5, KEY_KP6, KEY_PAGEDOWN, KEY_PHONE,
++       /* row 3 */
++       KEY_KP7, KEY_KP8, KEY_KP9, KEY_PHONE, KEY_LEFT,
++       /* row 4 */
++       KEY_KPASTERISK, KEY_KP0, KEY_KPDOT, KEY_PAGEDOWN, KEY_DOWN,
++};
++static unsigned char ezx_direct_keycode[] = {
++       KEY_CAMERA,
++};
++#else
++#error "no EZX subarchitecture defined"
++#endif
++
++static int ezx_kbd_init(void)
++{
++#if defined(CONFIG_PXA_EZX_E680)
++       pxa_gpio_mode(93 | GPIO_ALT_FN_1_IN);  /* KP_DKIN<0>, VR Key */
++       pxa_gpio_mode(96 | GPIO_ALT_FN_1_IN);  /* KP_DKIN<3>, GAME_A */
++       pxa_gpio_mode(97 | GPIO_ALT_FN_1_IN);  /* KP_DKIN<4>, power key */
++       pxa_gpio_mode(98 | GPIO_ALT_FN_1_IN);  /* KP_DKIN<5>, GAME_B */
++       pxa_gpio_mode(100 | GPIO_ALT_FN_1_IN);  /* KP_MKIN<0> */
++       pxa_gpio_mode(101 | GPIO_ALT_FN_1_IN);  /* KP_MKIN<1> */
++       pxa_gpio_mode(102 | GPIO_ALT_FN_1_IN);  /* KP_MKIN<2> */
++       pxa_gpio_mode(103 | GPIO_ALT_FN_2_OUT); /* KP_MKOUT<0> */
++       pxa_gpio_mode(104 | GPIO_ALT_FN_2_OUT); /* KP_MKOUT<1> */
++       pxa_gpio_mode(105 | GPIO_ALT_FN_2_OUT); /* KP_MKOUT<2> */
++       pxa_gpio_mode(106 | GPIO_ALT_FN_2_OUT); /* KP_MKOUT<3> */
++       pxa_gpio_mode(GPIO_TC_MM_EN);
++       GPDR(GPIO_TC_MM_EN)   |= GPIO_bit(GPIO_TC_MM_EN);
++       GPSR(GPIO_TC_MM_EN)   = GPIO_bit(GPIO_TC_MM_EN);
++       PGSR3 |= GPIO_bit(GPIO_TC_MM_EN);
++#elif defined(CONFIG_PXA_EZX_A780)
++       pxa_gpio_mode(93 | GPIO_ALT_FN_1_IN);   /* KP_DKIN<0>, voice_rec */
++       pxa_gpio_mode(97 | GPIO_ALT_FN_3_IN);   /* KP_MKIN<3> */
++       pxa_gpio_mode(98 | GPIO_ALT_FN_3_IN);   /* KP_MKIN<4> */
++       pxa_gpio_mode(100 | GPIO_ALT_FN_1_IN);  /* KP_MKIN<0> */
++       pxa_gpio_mode(101 | GPIO_ALT_FN_1_IN);  /* KP_MKIN<1> */
++       pxa_gpio_mode(102 | GPIO_ALT_FN_1_IN);  /* KP_MKIN<2> */
++       pxa_gpio_mode(103 | GPIO_ALT_FN_2_OUT); /* KP_MKOUT<0> */
++       pxa_gpio_mode(104 | GPIO_ALT_FN_2_OUT); /* KP_MKOUT<1> */
++       pxa_gpio_mode(105 | GPIO_ALT_FN_2_OUT); /* KP_MKOUT<2> */
++       pxa_gpio_mode(106 | GPIO_ALT_FN_2_OUT); /* KP_MKOUT<3> */
++       pxa_gpio_mode(107 | GPIO_ALT_FN_2_OUT); /* KP_MKOUT<4> */
++#endif
++	return 0;
++}
++
++static struct pxakbd_platform_data ezx_kbd_platform_data = {
++       .init           = &ezx_kbd_init,
++       .scan_interval  = HZ/40,
++       .matrix         = {
++               .keycode = ezx_keycode,
++#if defined(CONFIG_PXA_EZX_E680)
++               .cols   = 4,
++               .rows   = 3,
++#elif defined(CONFIG_PXA_EZX_A780)
++               .cols   = 5,
++               .rows   = 5,
++#endif
++       },
++       .direct         = {
++               .keycode = ezx_direct_keycode,
++#if defined(CONFIG_PXA_EZX_E680)
++               .num    = 6,
++#elif defined(CONFIG_PXA_EZX_A780)
++               .num    = 1,
++#endif
++       },
++};
++
++
++int __init __ezx_kbd_init (void)
++{
++	pxa_set_kbd_info(&ezx_kbd_platform_data);
++	return 0;
++}
++
++arch_initcall(__ezx_kbd_init);
+Index: linux-2.6.21/arch/arm/mach-pxa/Makefile
+===================================================================
+--- linux-2.6.21.orig/arch/arm/mach-pxa/Makefile	2007-04-30 20:09:21.000000000 -0300
++++ linux-2.6.21/arch/arm/mach-pxa/Makefile	2007-04-30 20:09:34.000000000 -0300
+@@ -18,7 +18,7 @@
+ obj-$(CONFIG_MACH_AKITA)	+= akita-ioexp.o
+ obj-$(CONFIG_MACH_POODLE)	+= poodle.o corgi_ssp.o
+ obj-$(CONFIG_MACH_TOSA)         += tosa.o
+-obj-$(CONFIG_PXA_EZX)		+= ezx.o ezx_lcd.o ezx_ssp.o ezx-pcap.o ezx-mci.o
++obj-$(CONFIG_PXA_EZX)		+= ezx.o ezx_lcd.o ezx_ssp.o ezx-pcap.o ezx-mci.o ezx-kbd.o
+ obj-$(CONFIG_PXA_EZX_EMU)	+= ezx-emu.o
+ 
+ # Support for blinky lights
+Index: linux-2.6.21/drivers/input/keyboard/pxakbd.c
+===================================================================
+--- linux-2.6.21.orig/drivers/input/keyboard/pxakbd.c	2007-04-30 20:47:29.000000000 -0300
++++ linux-2.6.21/drivers/input/keyboard/pxakbd.c	2007-04-30 20:49:32.000000000 -0300
+@@ -213,6 +213,7 @@
+ 	if (!input_dev)
+ 		goto out_pxa;
+ 
++	spin_lock_init(&pxakbd->lock);
+ 	pxakbd->irq = platform_get_irq(pdev, 0);
+ 	r = platform_get_resource(pdev, IORESOURCE_MEM, 0);
+ 	if (!r || pxakbd->irq == NO_IRQ) {
============================================================
--- packages/linux/linux-ezx-2.6.21/ezx-pm.patch	1c6536cb9e6dc5d22dc0a27bef6ad953351fff5b
+++ packages/linux/linux-ezx-2.6.21/ezx-pm.patch	1c6536cb9e6dc5d22dc0a27bef6ad953351fff5b
@@ -0,0 +1,58 @@
+Index: linux-2.6.21/arch/arm/mach-pxa/pxa27x.c
+===================================================================
+--- linux-2.6.21.orig/arch/arm/mach-pxa/pxa27x.c	2007-04-26 00:08:32.000000000 -0300
++++ linux-2.6.21/arch/arm/mach-pxa/pxa27x.c	2007-04-30 18:29:49.000000000 -0300
+@@ -22,6 +22,10 @@
+ #include <asm/arch/pxa-regs.h>
+ #include <asm/arch/ohci.h>
+ 
++#ifdef CONFIG_PXA_EZX
++#include <asm/arch/ezx.h>
++#endif
++
+ #include "generic.h"
+ 
+ /* Crystal clock: 13MHz */
+@@ -156,7 +160,13 @@
+ 		break;
+ 	case PM_SUSPEND_MEM:
+ 		/* set resume return address */
++#ifdef CONFIG_PXA_EZX
++		/* set EZX flags for blob - WM */
++		*(unsigned long *)(phys_to_virt(RESUME_ADDR)) = virt_to_phys(pxa_cpu_resume);
++		*(unsigned long *)(phys_to_virt(FLAG_ADDR)) = SLEEP_FLAG;
++#else
+ 		PSPR = virt_to_phys(pxa_cpu_resume);
++#endif
+ 		pxa_cpu_suspend(PWRMODE_SLEEP);
+ 		break;
+ 	}
+Index: linux-2.6.21/arch/arm/mach-pxa/pm.c
+===================================================================
+--- linux-2.6.21.orig/arch/arm/mach-pxa/pm.c	2007-04-26 00:08:32.000000000 -0300
++++ linux-2.6.21/arch/arm/mach-pxa/pm.c	2007-04-30 18:29:49.000000000 -0300
+@@ -24,6 +24,10 @@
+ #include <asm/arch/lubbock.h>
+ #include <asm/mach/time.h>
+ 
++#ifdef CONFIG_PXA_EZX
++#include <asm/arch/ezx.h>
++#endif
++
+ 
+ /*
+  * Debug macros
+@@ -152,8 +156,12 @@
+ 	}
+ 
+ 	/* ensure not to come back here if it wasn't intended */
++#ifdef CONFIG_PXA_EZX
++        *(unsigned long *)(phys_to_virt(RESUME_ADDR)) = 0;
++        *(unsigned long *)(phys_to_virt(FLAG_ADDR)) = OFF_FLAG;
++#else
+ 	PSPR = 0;
+-
++#endif
+ 	/* restore registers */
+ 	RESTORE_GPLEVEL(0); RESTORE_GPLEVEL(1); RESTORE_GPLEVEL(2);
+ 	RESTORE(GPDR0); RESTORE(GPDR1); RESTORE(GPDR2);
============================================================
--- packages/linux/linux-ezx-2.6.21/ezx-ts.patch	5354ce457efeb9d99bcf769a77e5cff4a326f34f
+++ packages/linux/linux-ezx-2.6.21/ezx-ts.patch	5354ce457efeb9d99bcf769a77e5cff4a326f34f
@@ -0,0 +1,399 @@
+Index: linux-2.6.21/drivers/input/touchscreen/Kconfig
+===================================================================
+--- linux-2.6.21.orig/drivers/input/touchscreen/Kconfig	2007-04-26 05:08:32.000000000 +0200
++++ linux-2.6.21/drivers/input/touchscreen/Kconfig	2007-04-26 23:27:05.000000000 +0200
+@@ -164,4 +164,16 @@
+ 	  To compile this driver as a module, choose M here: the
+ 	  module will be called ucb1400_ts.
+ 
++config TOUCHSCREEN_PCAP
++	tristate "Motorola PCAP touchscreen"
++	depends on PXA_EZX_PCAP
++	help
++	  Say Y here if you have a Motorola EZX (E680, A780) telephone
++	  and want to support the built-in touchscreen.
++
++	  If unsure, say N.
++
++	  To compile this driver as a module, choose M here: the
++	  module will be called hp680_ts_input.
++
+ endif
+Index: linux-2.6.21/drivers/input/touchscreen/Makefile
+===================================================================
+--- linux-2.6.21.orig/drivers/input/touchscreen/Makefile	2007-04-26 05:08:32.000000000 +0200
++++ linux-2.6.21/drivers/input/touchscreen/Makefile	2007-04-26 23:27:52.000000000 +0200
+@@ -16,3 +16,4 @@
+ obj-$(CONFIG_TOUCHSCREEN_TOUCHRIGHT)	+= touchright.o
+ obj-$(CONFIG_TOUCHSCREEN_TOUCHWIN)	+= touchwin.o
+ obj-$(CONFIG_TOUCHSCREEN_UCB1400)	+= ucb1400_ts.o
++obj-$(CONFIG_TOUCHSCREEN_PCAP)	+= pcap_ts.o
+Index: linux-2.6.21/drivers/input/touchscreen/pcap_ts.c
+===================================================================
+--- /dev/null	1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.21/drivers/input/touchscreen/pcap_ts.c	2007-04-26 23:27:05.000000000 +0200
+@@ -0,0 +1,364 @@
++/*
++ * pcap_ts.c - Touchscreen driver for Motorola PCAP2 based touchscreen as found
++ * 	       in the EZX phone platform.
++ *
++ *  Copyright (C) 2006 Harald Welte <laforge at openezx.org>
++ *
++ *  Based on information found in the original Motorola 2.4.x ezx-ts.c driver.
++ *
++ *  This program is free software; you can redistribute it and/or modify
++ *  it under the terms of the GNU General Public License version 2 as
++ *  published by the Free Software Foundation.
++ *
++ * TODO:
++ * 	split this in a hardirq handler and a tasklet/bh
++ * 	suspend/resume support
++ */
++
++#include <linux/module.h>
++#include <linux/init.h>
++#include <linux/fs.h>
++#include <linux/string.h>
++#include <linux/pm.h>
++#include <linux/timer.h>
++#include <linux/config.h>
++#include <linux/interrupt.h>
++#include <linux/platform_device.h>
++#include <linux/input.h>
++
++#include <asm/arch/hardware.h>
++#include <asm/arch/pxa-regs.h>
++
++#include "../../misc/ezx/ssp_pcap.h"
++
++#if 1
++#define DEBUGP(x, args ...) printk(KERN_DEBUG "%s: " x, __FUNCTION__, ## args)
++#else
++#define DEBUGP(x, args ...)
++#endif
++
++#define PRESSURE 1
++#define COORDINATE 2
++
++struct pcap_ts {
++	int irq_xy;
++	int irq_touch;
++	struct input_dev *input;
++	struct timer_list timer;
++
++	u_int16_t x, y;
++	u_int16_t pressure, pressure_last;
++
++	u_int8_t read_state;
++};
++
++#define X_AXIS_MIN	0
++#define X_AXIS_MAX	1023
++
++#define Y_AXIS_MAX	X_AXIS_MAX
++#define Y_AXIS_MIN	X_AXIS_MIN
++
++#define PRESSURE_MAX	X_AXIS_MAX
++#define PRESSURE_MIN	X_AXIS_MIN
++
++static int pcap_ts_mode(u_int32_t mode)
++{
++	int ret;
++
++	u_int32_t tmp;
++
++	ret = ezx_pcap_read(SSP_PCAP_ADJ_ADC1_REGISTER, &tmp);
++	if (ret < 0)
++		return ret;
++
++	tmp &= ~SSP_PCAP_TOUCH_PANEL_POSITION_DETECT_MODE_MASK;
++	tmp |= mode;
++	ret = ezx_pcap_write(SSP_PCAP_ADJ_ADC1_REGISTER, tmp);
++
++	DEBUGP("set ts mode ");
++	if (mode == PCAP_TS_POSITION_XY_MEASUREMENT)
++		DEBUGP("COORD\n");
++	else if (mode == PCAP_TS_PRESSURE_MEASUREMENT)
++		DEBUGP("PRESS\n");
++	else if (mode == PCAP_TS_STANDBY_MODE)
++		DEBUGP("STANDBY\n");
++	else
++		printk("UNKNOWN\n");
++
++	return ret;
++}
++
++/* issue a XY read command to the ADC of PCAP2.  Well get an ADCDONE2 interrupt
++ * once the result of the conversion is available */
++static int pcap_ts_start_xy_read(struct pcap_ts *pcap_ts)
++{
++	int ret;
++	u_int32_t tmp;
++	DEBUGP("start xy read in mode %s\n", 
++		pcap_ts->read_state == COORDINATE ? "COORD" : "PRESS");
++
++	ret = ezx_pcap_read(SSP_PCAP_ADJ_ADC1_REGISTER, &tmp);
++	if (ret < 0)
++		return ret;
++
++	tmp &= SSP_PCAP_ADC_START_VALUE_SET_MASK;
++	tmp |= SSP_PCAP_ADC_START_VALUE;
++
++	ret = ezx_pcap_write(SSP_PCAP_ADJ_ADC1_REGISTER, tmp);
++	if (ret < 0)
++		return ret;
++
++	ret = ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_ADC2_ASC, 1);
++
++	return ret;
++}
++
++/* read the XY result from the ADC of PCAP2 */
++static int pcap_ts_get_xy_value(struct pcap_ts *pcap_ts)
++{
++	int ret;
++	u_int32_t tmp;
++
++	DEBUGP("get xy value in mode %s\n", 
++		pcap_ts->read_state == COORDINATE ? "COORD" : "PRESS");
++
++	ret = ezx_pcap_read(SSP_PCAP_ADJ_ADC2_REGISTER, &tmp);
++	if (ret < 0)
++		return ret;
++
++	if (tmp & 0x00400000)
++		return -EIO;
++
++	if (pcap_ts->read_state == COORDINATE) {
++		pcap_ts->x = (tmp & SSP_PCAP_ADD1_VALUE_MASK);
++		pcap_ts->y = (tmp & SSP_PCAP_ADD2_VALUE_MASK)
++						>>SSP_PCAP_ADD2_VALUE_SHIFT;
++	} else {
++		pcap_ts->pressure_last = pcap_ts->pressure;
++		pcap_ts->pressure = (tmp & SSP_PCAP_ADD2_VALUE_MASK)
++						>>SSP_PCAP_ADD2_VALUE_SHIFT;
++	}
++
++	return 0;
++}
++
++/* PCAP2 interrupts us when ADC conversion result is available */
++static irqreturn_t pcap_ts_irq_xy(int irq, void *dev_id, struct pt_regs *regs)
++{
++	struct pcap_ts *pcap_ts = dev_id;
++
++	if (pcap_ts_get_xy_value(pcap_ts) < 0) {
++		printk("pcap_ts: error reading XY value\n");
++		return IRQ_HANDLED;
++	}
++
++	DEBUGP("%s X=%4d, Y=%4d Z=%4d\n",
++		pcap_ts->read_state == COORDINATE ? "COORD" : "PRESS",
++		pcap_ts->x, pcap_ts->y, pcap_ts->pressure);
++
++	if (pcap_ts->read_state == PRESSURE) {
++		input_report_abs(pcap_ts->input, ABS_PRESSURE,
++				 pcap_ts->pressure);
++		if ((pcap_ts->pressure >= PRESSURE_MAX ||
++		     pcap_ts->pressure <= PRESSURE_MIN ) &&
++		    pcap_ts->pressure == pcap_ts->pressure_last) {
++			/* pen has been released */
++			input_report_key(pcap_ts->input, BTN_TOUCH, 0);
++			input_sync(pcap_ts->input);
++
++			pcap_ts->x = pcap_ts->y = 0;
++
++			/* ask PCAP2 to interrupt us if touch event happens
++			 * again */
++			pcap_ts->read_state = PRESSURE;
++			pcap_ts_mode(PCAP_TS_STANDBY_MODE);
++			ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_MSR_TSM, 0);
++
++			/* no need for timer, we'll get interrupted with
++			 * next touch down event */
++			del_timer(&pcap_ts->timer);
++		} else {
++			/* pen has been touched down */
++			input_report_key(pcap_ts->input, BTN_TOUCH, 1);
++			/* don't input_sync(), we don't know position yet */
++
++			/* switch state machine into coordinate read mode */
++			pcap_ts->%s
>>> DIFF TRUNCATED @ 16K






More information about the Openembedded-commits mailing list