Hello, guys.
I'm porting Android to marvell pxa based platform.
and my touch device uses WM9713-touch drvier.
I've followed set up sequence which has been proved in this mailling list,
but can't get touch driver working.
Here's the logcat from my device.
I/EventHub( 45): New device: path=/dev/input/event0 name=wm9713-touch
id=0x10000 (of 0x1) index=1 fd=48 classes=0x2
I/SystemServer( 45): Starting Status Bar Service.
I/EventHub( 45): New device: path=/dev/input/event1 name=pxa27x-keypad
id=0x10001 (of 0x2) index=2 fd=51 classes=0x1
I/EventHub( 45): New keyboard: publicID=65537 device->id=65537
devname='pxa27x-keypad propName='hw.keyboards.65537.devname'
keylayout='/system/usr/keylayout/qwerty.kl'
E/EventHub( 45): could not get driver version for /dev/input/mouse0, Not a
typewriter
I/KeyInputQueue( 45): Device added: id=0x0, name=pxa27x-keypad, classes=1
I/KeyInputQueue( 45): Device added: id=0x10000, name=null, classes=2
I/KeyInputQueue( 45): X: min=150 max=3830 flat=0 fuzz=0
I/KeyInputQueue( 45): Y: min=190 max=3830 flat=0 fuzz=0
I/KeyInputQueue( 45): Pressure: min=0 max=15000 flat=0 fuzz=0
I/KeyInputQueue( 45): Size: unknown values
I/WindowManager( 45): Input configuration changed: { scale=1.0 imsi=0/0
locale=en_US touch=3 key=2/2 nav=3 orien=2 }
I can't figure out what's wrong with my touch device.
Is there any point to check?
Any advice would be helpful.
Thanks in advance.
Daniel Yun.
On Fri, Dec 12, 2008 at 3:23 PM, Reed Huang <[email protected]> wrote:
> In my case, the values are:
>
> static int abs_x[3] = {245,3850,5};
> static int abs_y[3] = {245,3860,40};
>
> I am not sure whether they are applicable for your device.
>
> zhqzh1982 wrote:
>
> thank you reed,now i think the android's touch screen is working ,but
> the code value is not correct ,will you tell me the X /Y value's MAX
> and MIN?
> thank you
>
> On 12月12日, 上午11时31分, Reed Huang <[email protected]> <[email protected]>
> wrote:
>
>
> Try changing this line:
> __set_bit(BTN_TOUCH, codec_ts_input->absbit);
> to:
> __set_bit(BTN_TOUCH, codec_ts_input->keybit);
> And when your pen is up, you should also send an event like:
> input_report_key(wm->input_dev, BTN_TOUCH, 0);
> Qingzhan Zhang wrote:still do not work
>
> my init code is
>
> __set_bit(EV_ABS, codec_ts_input->evbit);
> __set_bit(EV_KEY, codec_ts_input->evbit);
> __set_bit(ABS_X, codec_ts_input->absbit);
> __set_bit(ABS_Y, codec_ts_input->absbit);
> __set_bit(BTN_TOUCH, codec_ts_input->absbit);
> __set_bit(ABS_PRESSURE, codec_ts_input->absbit);
>
> and when pen down
>
> if((x == 0)&&(y == 0)&&(pressure == 0)){
> x = last_x;
> y = last_y;
> } else {
> x = ((x- 80)*480)/(1300-80);
> y = ((y - 380)*640)/(1600-400);
> }
> input_report_key(ts->idev,BTN_TOUCH,1);
> if (x != last_x) {
> printk("the input x value is %d\n",x);
> input_report_abs(ts->idev, ABS_X, x);
> last_x = x;
> }
> if (y != last_y) {
> printk("the input y value is %d\n",y);
> input_report_abs(ts->idev, ABS_Y, y);
> last_y = y;
> }
> if (pressure == last_press)
> pressure--;
> printk("the pressure is %d\n",pressure);
>
> input_report_abs(ts->idev, ABS_PRESSURE, pressure & 0xfff);
> input_sync(ts->idev);
>
>
>
> when pen up
>
> printk("input the release event \n");
> input_report_abs(ts->idev, ABS_PRESSURE, 0);
>
> On Fri, Dec 12, 2008 at 10:49 AM, Reed Huang<[email protected]>
> <[email protected]>wrote:Correct. And only send once when the pen hit the
> touchscreen. like following:
> if(!wm->pen_is_down)
> input_report_key(wm->input_dev, BTN_TOUCH, 1);
> absx = data.x & 0xfff;
> absy = data.y & 0xfff;
> if(absy > wm->input_dev->absmax[ABS_Y])
> absy = wm->input_dev->absmax[ABS_Y];
> if(absx > wm->input_dev->absmax[ABS_X])
> absx = wm->input_dev->absmax[ABS_X];
> input_report_abs(wm->input_dev, ABS_X, absx);
> input_report_abs(wm->input_dev, ABS_Y, (wm->input_dev->absmax[ABS_Y]
> - absy) + wm->input_dev->absmin[ABS_Y]);
> input_report_abs(wm->input_dev, ABS_PRESSURE, data.p & 0xfff);
> input_sync(wm->input_dev);
> zhqzh1982 wrote:you mean i shoul send a BTN_TOUCH pressure event.just like
> input_event(ts->idev, EV_ABS, BTN_TOUCH, pressure);? On 12月12日, 上午9时56分, Reed
> Huang<[email protected]> <[email protected]>wrote:You need to send
> BTN_TOUCH event when the pen is down. Refer
> to:http://androidzaurus.seesaa.net/article/90045743.htmlzhqzh1982 wrote:now i
> modify the simply calibrate way by x = ((x- 80)*480)/(1300-80); mean the x's
> value is from 0 to 480 y = ((y - 380)*640)/(1600-400); the y's value is from
> 0 to 640 the tslib working ok,but android's touchscreen do not work On
> 12月12日, 上午8时58分, zhqzh1982<[email protected]> <[email protected]>wrote:hi
> my touch pannel driver use input system with event interface when pen down ,i
> input the x valuer y value and
> pressure value,just below if((x == 0)&&(y == 0)&&(pressure == 0)){ x =
> last_x; y = last_y;} else { x = ((x- 80)*240)/(1300-80); y = ((y -
> 380)*320)/(1600-400); } if (x != last_x) { printk("the input x value is
> %d\n",x); input_report_abs(ts->idev, ABS_X, x); last_x = x; } if (y !=
> last_y) { printk("the input y value is %d\n",y); input_report_abs(ts->idev,
> ABS_Y, y); last_y = y; } if (pressure == last_press) pressure--;
> input_report_abs(ts->idev, ABS_PRESSURE, pressure & 0xfff); and when pen up i
> input the pressure value as 0,just below input_report_abs(ts->idev,
> ABS_PRESSURE, 0); but ,android's touch function do not work ,who can help me
> thanks
>
>
>
> >
>
--~--~---------~--~----~------------~-------~--~----~
unsubscribe: [email protected]
website: http://groups.google.com/group/android-porting
-~----------~----~----~----~------~----~------~--~---