Touchscreen driver, what’s wrong

After digging some more days, i still get nothing related to touchscreen driver with android. What actually wrong ? Touchscreen driver which is mxc_ts.c reads input and parsing it into subsystem. When i try ts_test and ts_calibrate, it seems works properly, it reads correct input and TSLIB passes the input subsystem, then i can see moving cursor on LCD as well. There is no flickering also when xterm running. But, flickering appears very hard when android runs, and also, touchscreen does not work.

So, android seems to be wrong to read input subsystem or has different way to read it. Well, is this gonna be framebuffer related ? technically, i just did not review it. I get response from mail list, said :

This depends.

If you have Android output on the display, e.g. you get Android home screen etc., and just can’t use ts input, it is ts/input related. And *not* “double buffering” related. If “double buffer” doesn’t work, you wouldn’t get anything on the screen.

But if you don’t get anything on the screen (just a blank screen), this is “double buffer” related.

So. i make myself sure, that’s not framebuffer related!!

Well, mxc_ts.c works this way :

* The touchscreen driver is designed as a standard input driver which is a
* wrapper over low level PMIC driver. Most of the hardware configuration and
* touchscreen functionality is implemented in the low level PMIC driver. During
* initialization, this driver creates a kernel thread. This thread then calls
* PMIC driver to obtain touchscreen values continously. These values are then
* passed to the input susbsystem.

which is :

 pmic_adc_get_touch_sample(&ts_sample, !wait);

and let’s take a look into : include/asm/arch/pmic_adc.h

PMIC_STATUS pmic_adc_get_touch_sample(t_touch_screen * ts_value, int wait);

the values returned then passes into subsystem:

input_report_abs(mxc_inputdev, ABS_X, ts_sample.x_position);
input_report_abs(mxc_inputdev, ABS_Y, ts_sample.y_position);
input_report_abs(mxc_inputdev, ABS_PRESSURE,
ts_sample.contact_resistance);
input_sync(mxc_inputdev);
wait = ts_sample.contact_resistance;
msleep(20);

finished! So the problem seems to be in, how does android read those fucking inputs subsystem ? i will do some dirty hack, and will post it soon.

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s