Hi Greg now i splittet the patch into two part 1. part : Simulate a pressure for tslib(input-raw) 2. part: Fix the urb->transfer_flags/dma (as done in hid-core.c)
-------------------------------------------------------------- Jürgen Schindele NENTEC Netzwerktechnologie GmbH Entwicklung Greschbachstrasse 12 76229 Karlsruhe/Germany eMail:[EMAIL PROTECTED] Phone: +49(0)721 94249-<51> Web: www.nentec.de Fax: +49(0)721 94249-10 --------------------------------------------------------------
From: Juergen Schindele <[EMAIL PROTECTED]> This patch simulates a pressure to the input sub-system when touchscreen is touched. With this Patch the input-raw plugin from tslib can be used without modification. Signed-off-by: Juergen Schindele <[EMAIL PROTECTED]> --- --- kernel-2.6.15.orig/drivers/usb/input/touchkitusb.c 2005-12-19 11:56:51.000000000 +0100 +++ kernel-2.6.15/drivers/usb/input/touchkitusb.c 2006-01-04 12:23:51.000000000 +0100 @@ -42,6 +42,8 @@ #define TOUCHKIT_YC_FUZZ 0x0 #define TOUCHKIT_YC_FLAT 0x0 #define TOUCHKIT_REPORT_DATA_SIZE 8 +#define PRESSURE_MIN 0 +#define PRESSURE_MAX 15 #define TOUCHKIT_DOWN 0x01 #define TOUCHKIT_POINT_TOUCH 0x81 @@ -114,10 +116,16 @@ static void touchkit_irq(struct urb *urb } input_regs(touchkit->input, regs); - input_report_key(touchkit->input, BTN_TOUCH, - TOUCHKIT_GET_TOUCHED(touchkit->data)); input_report_abs(touchkit->input, ABS_X, x); input_report_abs(touchkit->input, ABS_Y, y); + if (TOUCHKIT_GET_TOUCHED(touchkit->data)) { + input_report_key(touchkit->input, BTN_TOUCH, 1); + input_report_abs(touchkit->input, ABS_PRESSURE, PRESSURE_MAX); + } + else { + input_report_key(touchkit->input, BTN_TOUCH, 0); + input_report_abs(touchkit->input, ABS_PRESSURE, 0); + } input_sync(touchkit->input); exit: @@ -227,12 +235,16 @@ static int touchkit_probe(struct usb_int TOUCHKIT_XC_FUZZ, TOUCHKIT_XC_FLAT); input_set_abs_params(input_dev, ABS_Y, TOUCHKIT_MIN_YC, TOUCHKIT_MAX_YC, TOUCHKIT_YC_FUZZ, TOUCHKIT_YC_FLAT); + input_set_abs_params(input_dev, ABS_PRESSURE, PRESSURE_MIN, PRESSURE_MAX, 0, 0); usb_fill_int_urb(touchkit->irq, touchkit->udev, usb_rcvintpipe(touchkit->udev, 0x81), touchkit->data, TOUCHKIT_REPORT_DATA_SIZE, touchkit_irq, touchkit, endpoint->bInterval);
From: Juergen Schindele <[EMAIL PROTECTED]> This patch corrects the URB initialisation for transfers like this is done in other drivers too. Without this patch no data was transmitted on a PXA270 OHCI platform. May apply to others too. Signed-off-by: Juergen Schindele <[EMAIL PROTECTED]> --- --- kernel-2.6.15.orig/drivers/usb/input/touchkitusb.c 2005-12-19 11:56:51.000000000 +0100 +++ kernel-2.6.15/drivers/usb/input/touchkitusb.c 2006-01-04 12:23:51.000000000 +0100 @@ -242,6 +242,9 @@ static int touchkit_probe( touchkit->data, TOUCHKIT_REPORT_DATA_SIZE, touchkit_irq, touchkit, endpoint->bInterval); + touchkit->irq->transfer_dma = touchkit->data_dma; + touchkit->irq->transfer_flags |= URB_NO_TRANSFER_DMA_MAP; + input_register_device(touchkit->input); usb_set_intfdata(intf, touchkit);